{"version":3,"sources":["./node_modules/moment/locale sync ^\\.\\/.*$","./src/app/app.component.html","./src/app/complete-registration/complete-registration.component.html","./src/app/main/components/aqs-computation-sheet-tab/aqs-computation-sheet-tab.component.html","./src/app/main/components/aqs-computation-sheet-tab/computation-sheet-table/computation-sheet-table.component.html","./src/app/main/components/aqs-flat-storage-tab/aqs-flat-duct-design/aqs-flat-duct-design.component.html","./src/app/main/components/aqs-flat-storage-tab/aqs-flat-duct-design/aqs-flat-duct-view-tab/aqs-flat-duct-view-tab.component.html","./src/app/main/components/aqs-flat-storage-tab/aqs-flat-storage-params/aqs-flat-storage-params.component.html","./src/app/main/components/aqs-flat-storage-tab/aqs-flat-storage-params/aqs-flat-view-tab/aqs-flat-view-tab.component.html","./src/app/main/components/aqs-flat-storage-tab/aqs-flat-storage-tab.component.html","./src/app/main/components/aqs-quotes-tab/aqs-quotes.component.html","./src/app/main/components/aqs-round-storage-tab/aqs-round-configuration-tab/aqs-round-configuration-tab.component.html","./src/app/main/components/aqs-round-storage-tab/aqs-round-configuration-tab/aqs-round-view-tab/aqs-round-view-tab.component.html","./src/app/main/components/aqs-round-storage-tab/aqs-round-duct-design/aqs-round-duct-design-view-tab/aqs-round-duct-design-view-tab.component.html","./src/app/main/components/aqs-round-storage-tab/aqs-round-duct-design/aqs-round-duct-design.component.html","./src/app/main/components/aqs-round-storage-tab/aqs-round-flush-design-tab/aqs-round-flush-design-double-h/aqs-round-flush-design-double-h.component.html","./src/app/main/components/aqs-round-storage-tab/aqs-round-flush-design-tab/aqs-round-flush-design-double-t-special/aqs-round-flush-design-double-t-special.component.html","./src/app/main/components/aqs-round-storage-tab/aqs-round-flush-design-tab/aqs-round-flush-design-double-t/aqs-round-flush-design-double-t.component.html","./src/app/main/components/aqs-round-storage-tab/aqs-round-flush-design-tab/aqs-round-flush-design-double-two-runs/aqs-round-flush-design-double-two-runs.component.html","./src/app/main/components/aqs-round-storage-tab/aqs-round-flush-design-tab/aqs-round-flush-design-four-lane-special/aqs-round-flush-design-four-lane-special.component.html","./src/app/main/components/aqs-round-storage-tab/aqs-round-flush-design-tab/aqs-round-flush-design-six-lane-special/aqs-round-flush-design-six-lane-special.component.html","./src/app/main/components/aqs-round-storage-tab/aqs-round-flush-design-tab/aqs-round-flush-design-tab.component.html","./src/app/main/components/aqs-round-storage-tab/aqs-round-storage-tab.component.html","./src/app/main/components/btx-historical-data-tab/btx-historical-data-tab.component.html","./src/app/main/components/btx-live-data-tab/btx-live-data-equipment-view-tab/btx-equipment-schema/btx-equipment-schema.component.html","./src/app/main/components/btx-live-data-tab/btx-live-data-equipment-view-tab/btx-equipment-sensors-grid/btx-equipment-sensors-grid.component.html","./src/app/main/components/btx-live-data-tab/btx-live-data-equipment-view-tab/btx-live-data-equipment-view-tab.component.html","./src/app/main/components/btx-live-data-tab/btx-live-data-tab.component.html","./src/app/main/components/btx-notifications-tab/btx-notifications-tab.component.html","./src/app/main/components/btx-tab/btx-grid/btx-grid.component.html","./src/app/main/components/btx-tab/btx-tab.component.html","./src/app/main/components/common/aqs-components/aqs-commodities/aqs-commodities.component.html","./src/app/main/components/common/aqs-components/aqs-cover-sheet/aqs-cover-sheet.component.html","./src/app/main/components/common/aqs-components/aqs-exhauster-recommendations/aqs-exhauster-recommendations.component.html","./src/app/main/components/common/aqs-components/aqs-target-airflow/aqs-target-airflow.component.html","./src/app/main/components/common/ktx-components/ktx-temperature-ranges/ktx-temperature-ranges.component.html","./src/app/main/components/companies-tab/companies-grid/companies-grid.component.html","./src/app/main/components/companies-tab/companies-tab.component.html","./src/app/main/components/company-admins-tab/company-admins-grid/company-admins-grid.component.html","./src/app/main/components/company-admins-tab/company-admins-tab.component.html","./src/app/main/components/company-users-tab/company-users-grid/company-users-grid.component.html","./src/app/main/components/company-users-tab/company-users-tab.component.html","./src/app/main/components/device-update-management-tab/device-update-management-tab.component.html","./src/app/main/components/email-management-tab/email-management-tab.component.html","./src/app/main/components/header/header.component.html","./src/app/main/components/itx-alert-tab/itx-alert-tab.component.html","./src/app/main/components/itx-live-data-tab/itx-live-data-tab.component.html","./src/app/main/components/itx-reports-tab/itx-reports-tab.component.html","./src/app/main/components/itx-tab/itx-bins-tab/itx-bin-grid/itx-bin-grid.html","./src/app/main/components/itx-tab/itx-bins-tab/itx-bins-tab.component.html","./src/app/main/components/itx-tab/itx-grid/itx-grid.component.html","./src/app/main/components/itx-tab/itx-tab.component.html","./src/app/main/components/ktx-current-data-tab/ktx-bin-details-tab/ktx-bin-details-tab.component.html","./src/app/main/components/ktx-current-data-tab/ktx-current-data-tab.component.html","./src/app/main/components/ktx-current-data-tab/ktx-location-details-tab/ktx-location-details-tab.component.html","./src/app/main/components/ktx-historical-data-tab/ktx-historical-data-tab.component.html","./src/app/main/components/ktx-notifications-tab/ktx-notifications-tab.component.html","./src/app/main/components/ktx-tab/ktx-grid/ktx-grid.component.html","./src/app/main/components/ktx-tab/ktx-tab.component.html","./src/app/main/components/locations-tab/locations-grid/locations-grid.component.html","./src/app/main/components/locations-tab/locations-tab.component.html","./src/app/main/components/navigation-bar/navigation-bar.component.html","./src/app/main/components/popups/add-edit-equipment-popup/add-edit-equipment-popup.component.html","./src/app/main/components/popups/aqs-computation-sheet-confirm-popup/aqs-computation-sheet-confirm-popup.component.html","./src/app/main/components/popups/aqs-computation-sheet-resave-popup/aqs-computation-sheet-resave-popup.component.html","./src/app/main/components/popups/aqs-confirm-popup/aqs-confirm-popup.component.html","./src/app/main/components/popups/aqs-new-quote-popup/aqs-new-quote-popup.component.html","./src/app/main/components/popups/btx-equipment-details-popup/btx-equipment-details-popup.component.html","./src/app/main/components/popups/btx-live-data-export-report-popup/btx-live-data-export-report-popup.component.html","./src/app/main/components/popups/btx-location-edit-popup/btx-location-edit-popup.component.html","./src/app/main/components/popups/common/base-popup/base-popup.component.html","./src/app/main/components/popups/companies-add-edit-popup/companies-add-edit-popup.component.html","./src/app/main/components/popups/companies-delete-popup/companies-delete-popup.component.html","./src/app/main/components/popups/company-admin-add-popup/company-admin-add-popup.component.html","./src/app/main/components/popups/company-admin-delete-popup/company-admin-delete-popup.component.html","./src/app/main/components/popups/company-admin-edit-popup/company-admin-edit-popup.component.html","./src/app/main/components/popups/company-user-add-popup/company-user-add-popup.component.html","./src/app/main/components/popups/company-user-delete-popup/company-user-delete-popup.component.html","./src/app/main/components/popups/company-user-edit-popup/company-user-edit-popup.component.html","./src/app/main/components/popups/computation-sheet-report-popup/computation-sheet-report-popup.component.html","./src/app/main/components/popups/computation-sheet-share-report-popup/computation-sheet-share-report-popup.component.html","./src/app/main/components/popups/confirmation-popup/confirmation-popup.component.html","./src/app/main/components/popups/device-communication-popup/device-communication-popup.component.html","./src/app/main/components/popups/email-service-add-edit-popup/email-service-add-edit-popup.component.html","./src/app/main/components/popups/email-service-delete-popup/email-service-delete-popup.component.html","./src/app/main/components/popups/equipment-popup/edit-sensor-popup/edit-sensor-popup.component.html","./src/app/main/components/popups/equipment-popup/equipment-menu/equipment-menu.component.html","./src/app/main/components/popups/equipment-popup/equipment-popup.component.html","./src/app/main/components/popups/equipment-popup/equipment-scheme/equipment-scheme.component.html","./src/app/main/components/popups/equipment-popup/equipment-sensor-delete-popup/equipment-sensor-delete-popup.component.html","./src/app/main/components/popups/equipment-popup/equipment-view-data/equipment-view-data.component.html","./src/app/main/components/popups/equipment-popup/view-sensor-popup/view-sensor-popup.component.html","./src/app/main/components/popups/export-notification-popup/export-notification-popup.component.html","./src/app/main/components/popups/firmware-management-popup/firmware-management-popup.component.html","./src/app/main/components/popups/itx-add-edit-popup/itx-add-edit-popup.component.html","./src/app/main/components/popups/itx-bin-add-edit-popup/itx-bin-add-edit-popup.component.html","./src/app/main/components/popups/itx-bin-delete-popup/itx-bin-delete-popup.component.html","./src/app/main/components/popups/itx-delete-radar-popup/itx-delete-radar-popup.component.html","./src/app/main/components/popups/itx-edit-radar-popup/itx-edit-radar-popup.component.html","./src/app/main/components/popups/itx-export-report-popup/itx-export-report-popup.component.html","./src/app/main/components/popups/itx-list-add-radar-popup/itx-list-add-radar-popup.component.html","./src/app/main/components/popups/itx-live-data-setting-popup/itx-live-data-setting-popup.component.html","./src/app/main/components/popups/itx-manage-color-popup/itx-manage-color-popup.component.html","./src/app/main/components/popups/itx-manage-color-popup/itx-range-delete-popup/itx-range-delete-popup.component.html","./src/app/main/components/popups/itx-quick-edit-popup/itx-quick-edit-popup.component.html","./src/app/main/components/popups/itx-storage-radars-popup/itx-storage-radars-popup.component.html","./src/app/main/components/popups/ktx-add-edit-popup/ktx-add-edit-popup.component.html","./src/app/main/components/popups/ktx-bin-details-popup/ktx-bin-details-popup.component.html","./src/app/main/components/popups/ktx-connection-popup/ktx-connection-popup.component.html","./src/app/main/components/popups/ktx-current-data-export-report-popup/ktx-current-data-export-report-popup.component.html","./src/app/main/components/popups/ktx-list-cables-popup/ktx-list-cables-popup.component.html","./src/app/main/components/popups/ktx-location-bins-popup/ktx-location-bins-popup.component.html","./src/app/main/components/popups/ktx-temperature-ranges-popup/ktx-range-delete-popup/ktx-range-delete-popup.component.html","./src/app/main/components/popups/ktx-temperature-ranges-popup/ktx-temperature-ranges-popup.component.html","./src/app/main/components/popups/ktx-unit-details-popup/ktx-unit-details-popup.component.html","./src/app/main/components/popups/ktx-unit-fullscreen-popup/ktx-unit-fullscreen-popup.component.html","./src/app/main/components/popups/location-btx-ktx-delete-popup/location-btx-ktx-delete-popup.component.html","./src/app/main/components/popups/location-changed-popup/location-changed-popup.component.html","./src/app/main/components/popups/location-delete-popup/location-delete-popup.component.html","./src/app/main/components/popups/location-edit-popup/location-edit-popup.component.html","./src/app/main/components/popups/service-user-add-popup/service-user-add-popup.component.html","./src/app/main/components/popups/service-user-delete-popup/service-user-delete-popup.component.html","./src/app/main/components/popups/service-user-edit-popup/service-user-edit-popup.component.html","./src/app/main/components/popups/success-operation-popup/success-operation-popup.component.html","./src/app/main/components/popups/tutorial-popup/tutorial-popup.component.html","./src/app/main/components/popups/tutorial-popup/tutorial/tutorial.component.html","./src/app/main/components/popups/update-firmware-popup/update-firmware-popup.component.html","./src/app/main/components/popups/update-versions-management-popup/update-versions-management-popup.component.html","./src/app/main/components/popups/updater-add-edit-popup/updater-add-edit-popup.component.html","./src/app/main/components/popups/updater-delete-popup/updater-delete-popup.component.html","./src/app/main/components/popups/upload-btx-location-configuration-file-popup/upload-btx-location-configuration-file-popup.component.html","./src/app/main/components/popups/upload-configuration-file-popup/upload-configuration-close-popup/upload-configuration-close-confirmation-popup.component.html","./src/app/main/components/popups/upload-configuration-file-popup/upload-configuration-file-popup.component.html","./src/app/main/components/popups/upload-equipment-popup/delete-equipment-confirmation-popup/delete-equipment-confirmation-popup.component.html","./src/app/main/components/popups/upload-equipment-popup/upload-add-edit-equipment-popup/upload-add-edit-equipment-popup.component.html","./src/app/main/components/popups/upload-equipment-popup/upload-cancellation-popup/upload-cancellation-popup.component.html","./src/app/main/components/popups/upload-equipment-popup/upload-equipment-menu/upload-equipment-menu.component.html","./src/app/main/components/popups/upload-equipment-popup/upload-equipment-popup.component.html","./src/app/main/components/popups/upload-equipment-popup/upload-equipment-scheme/upload-equipment-scheme.component.html","./src/app/main/components/popups/upload-equipment-popup/upload-equipment-sensor-delete-popup/upload-equipment-sensor-delete-popup.component.html","./src/app/main/components/popups/upload-equipment-popup/upload-equipment-view-data/upload-equipment-view-data.component.html","./src/app/main/components/popups/upload-equipment-popup/upload-success-popup/upload-success-popup.component.html","./src/app/main/components/popups/upload-firmware-install-popup/upload-firmware-install-popup.component.html","./src/app/main/components/popups/upload-firmware-popup/upload-firmware-popup.component.html","./src/app/main/components/popups/upload-firmware-rebase-popup/upload-firmware-rebase-popup.component.html","./src/app/main/components/popups/user-profile-popup/user-profile-popup.component.html","./src/app/main/components/popups/vendor-add-popup/vendor-add-popup.component.html","./src/app/main/components/popups/vendor-delete-popup/vendor-delete-popup.component.html","./src/app/main/components/popups/vendor-edit-popup/vendor-edit-popup.component.html","./src/app/main/components/sales-users-tab/sales-users-tab.component.html","./src/app/main/components/service-users-tab/service-users-grid/service-users-grid.component.html","./src/app/main/components/service-users-tab/service-users-tab.component.html","./src/app/main/components/vendors-tab/vendors-grid/vendors-grid.component.html","./src/app/main/components/vendors-tab/vendors-tab.component.html","./src/app/main/main.component.html","./src/app/password-recover/password-recover.component.html","./src/app/password-update/password-update.component.html","./src/app/privacy/privacy.component.html","./src/app/sign-in/sign-in.component.html","./projects/components/src/lib/schemes.constants.ts","./src/$_lazy_route_resource lazy namespace object","./src/app/app.component.ts","./src/app/app.module.ts","./src/app/common/common.module.ts","./src/app/common/constants/api-routes.constants.ts","./src/app/common/constants/index.ts","./src/app/common/constants/local-storage-keys.constants.ts","./src/app/common/constants/route-paths.constants.ts","./src/app/common/enums/error-code.enum.ts","./src/app/common/enums/index.ts","./src/app/common/enums/user-role.enum.ts","./src/app/common/functions/commonFunctions.ts","./src/app/common/functions/convert-data.functions.ts","./src/app/common/functions/index.ts","./src/app/common/index.ts","./src/app/common/models/account-models/complete-registration.model.ts","./src/app/common/models/account-models/index.ts","./src/app/common/models/account-models/password-recover.model.ts","./src/app/common/models/account-models/password-update.model.ts","./src/app/common/models/error.model.ts","./src/app/common/models/index.ts","./src/app/common/models/login-model/index.ts","./src/app/common/models/login-model/login-post.model.ts","./src/app/common/models/login-model/login-view.model.ts","./src/app/common/models/refresh.model.ts","./src/app/common/models/user/index.ts","./src/app/common/models/user/user.model.ts","./src/app/common/services/common/index.ts","./src/app/common/services/common/local-storage.service.ts","./src/app/common/services/http/account.service.ts","./src/app/common/services/http/authorize.service.ts","./src/app/common/services/http/http.service.ts","./src/app/common/services/http/index.ts","./src/app/common/services/index.ts","./src/app/common/validators/common-validators.ts","./src/app/common/validators/index.ts","./src/app/complete-registration/complete-registration.component.ts","./src/app/complete-registration/complete-registration.module.ts","./src/app/complete-registration/index.ts","./src/app/main/access-token.factory.ts","./src/app/main/auth.guard.ts","./src/app/main/auth.interceptor.ts","./src/app/main/components/aqs-computation-sheet-tab/aqs-computation-sheet-tab.component.ts","./src/app/main/components/aqs-computation-sheet-tab/computation-sheet-table/computation-sheet-table.component.ts","./src/app/main/components/aqs-computation-sheet-tab/computation-sheet-table/index.ts","./src/app/main/components/aqs-computation-sheet-tab/index.ts","./src/app/main/components/aqs-flat-storage-tab/aqs-flat-duct-design/aqs-flat-duct-design.component.ts","./src/app/main/components/aqs-flat-storage-tab/aqs-flat-duct-design/aqs-flat-duct-view-tab/aqs-flat-duct-view-tab.component.ts","./src/app/main/components/aqs-flat-storage-tab/aqs-flat-duct-design/aqs-flat-duct-view-tab/index.ts","./src/app/main/components/aqs-flat-storage-tab/aqs-flat-duct-design/index.ts","./src/app/main/components/aqs-flat-storage-tab/aqs-flat-storage-params/aqs-flat-storage-params.component.ts","./src/app/main/components/aqs-flat-storage-tab/aqs-flat-storage-params/aqs-flat-view-tab/aqs-flat-view-tab.component.ts","./src/app/main/components/aqs-flat-storage-tab/aqs-flat-storage-params/aqs-flat-view-tab/index.ts","./src/app/main/components/aqs-flat-storage-tab/aqs-flat-storage-tab.component.ts","./src/app/main/components/aqs-flat-storage-tab/index.ts","./src/app/main/components/aqs-quotes-tab/aqs-quotes.component.ts","./src/app/main/components/aqs-quotes-tab/index.ts","./src/app/main/components/aqs-round-storage-tab/aqs-round-configuration-tab/aqs-round-configuration-tab.component.ts","./src/app/main/components/aqs-round-storage-tab/aqs-round-configuration-tab/aqs-round-view-tab/aqs-round-view-tab.component.ts","./src/app/main/components/aqs-round-storage-tab/aqs-round-configuration-tab/aqs-round-view-tab/index.ts","./src/app/main/components/aqs-round-storage-tab/aqs-round-configuration-tab/index.ts","./src/app/main/components/aqs-round-storage-tab/aqs-round-duct-design/aqs-round-duct-design-view-tab/aqs-round-duct-design-view-tab.component.ts","./src/app/main/components/aqs-round-storage-tab/aqs-round-duct-design/aqs-round-duct-design-view-tab/index.ts","./src/app/main/components/aqs-round-storage-tab/aqs-round-duct-design/aqs-round-duct-design.component.ts","./src/app/main/components/aqs-round-storage-tab/aqs-round-duct-design/index.ts","./src/app/main/components/aqs-round-storage-tab/aqs-round-flush-design-tab/aqs-canvas-flushfloor-support-functions.ts","./src/app/main/components/aqs-round-storage-tab/aqs-round-flush-design-tab/aqs-round-flush-design-double-h/aqs-round-flush-design-double-h.component.ts","./src/app/main/components/aqs-round-storage-tab/aqs-round-flush-design-tab/aqs-round-flush-design-double-h/index.ts","./src/app/main/components/aqs-round-storage-tab/aqs-round-flush-design-tab/aqs-round-flush-design-double-t-special/aqs-round-flush-design-double-t-special.component.ts","./src/app/main/components/aqs-round-storage-tab/aqs-round-flush-design-tab/aqs-round-flush-design-double-t-special/index.ts","./src/app/main/components/aqs-round-storage-tab/aqs-round-flush-design-tab/aqs-round-flush-design-double-t/aqs-round-flush-design-double-t.component.ts","./src/app/main/components/aqs-round-storage-tab/aqs-round-flush-design-tab/aqs-round-flush-design-double-t/index.ts","./src/app/main/components/aqs-round-storage-tab/aqs-round-flush-design-tab/aqs-round-flush-design-double-two-runs/aqs-round-flush-design-double-two-runs.component.ts","./src/app/main/components/aqs-round-storage-tab/aqs-round-flush-design-tab/aqs-round-flush-design-double-two-runs/index.ts","./src/app/main/components/aqs-round-storage-tab/aqs-round-flush-design-tab/aqs-round-flush-design-four-lane-special/aqs-round-flush-design-four-lane-special.component.ts","./src/app/main/components/aqs-round-storage-tab/aqs-round-flush-design-tab/aqs-round-flush-design-four-lane-special/index.ts","./src/app/main/components/aqs-round-storage-tab/aqs-round-flush-design-tab/aqs-round-flush-design-six-lane-special/aqs-round-flush-design-six-lane-special.component.ts","./src/app/main/components/aqs-round-storage-tab/aqs-round-flush-design-tab/aqs-round-flush-design-six-lane-special/index.ts","./src/app/main/components/aqs-round-storage-tab/aqs-round-flush-design-tab/aqs-round-flush-design-tab.component.ts","./src/app/main/components/aqs-round-storage-tab/aqs-round-flush-design-tab/index.ts","./src/app/main/components/aqs-round-storage-tab/aqs-round-storage-tab.component.ts","./src/app/main/components/aqs-round-storage-tab/index.ts","./src/app/main/components/btx-historical-data-tab/btx-historical-data-tab.component.ts","./src/app/main/components/btx-historical-data-tab/index.ts","./src/app/main/components/btx-live-data-tab/btx-live-data-equipment-view-tab/btx-equipment-schema/btx-equipment-schema.component.ts","./src/app/main/components/btx-live-data-tab/btx-live-data-equipment-view-tab/btx-equipment-schema/index.ts","./src/app/main/components/btx-live-data-tab/btx-live-data-equipment-view-tab/btx-equipment-sensors-grid/btx-equipment-sensors-grid.component.ts","./src/app/main/components/btx-live-data-tab/btx-live-data-equipment-view-tab/btx-equipment-sensors-grid/index.ts","./src/app/main/components/btx-live-data-tab/btx-live-data-equipment-view-tab/btx-live-data-equipment-view-tab.component.ts","./src/app/main/components/btx-live-data-tab/btx-live-data-equipment-view-tab/index.ts","./src/app/main/components/btx-live-data-tab/btx-live-data-tab.component.ts","./src/app/main/components/btx-live-data-tab/index.ts","./src/app/main/components/btx-notifications-tab/btx-notifications-tab.component.ts","./src/app/main/components/btx-notifications-tab/index.ts","./src/app/main/components/btx-tab/btx-grid/btx-grid.component.ts","./src/app/main/components/btx-tab/btx-grid/index.ts","./src/app/main/components/btx-tab/btx-tab.component.ts","./src/app/main/components/btx-tab/index.ts","./src/app/main/components/common/aqs-components/aqs-commodities/aqs-commodities.component.ts","./src/app/main/components/common/aqs-components/aqs-commodities/index.ts","./src/app/main/components/common/aqs-components/aqs-cover-sheet/aqs-cover-sheet.component.ts","./src/app/main/components/common/aqs-components/aqs-cover-sheet/index.ts","./src/app/main/components/common/aqs-components/aqs-exhauster-recommendations/aqs-exhauster-recommendations.component.ts","./src/app/main/components/common/aqs-components/aqs-exhauster-recommendations/index.ts","./src/app/main/components/common/aqs-components/aqs-target-airflow/aqs-target-airflow.component.ts","./src/app/main/components/common/aqs-components/aqs-target-airflow/index.ts","./src/app/main/components/common/aqs-components/index.ts","./src/app/main/components/common/index.ts","./src/app/main/components/common/ktx-components/index.ts","./src/app/main/components/common/ktx-components/ktx-temperature-ranges/index.ts","./src/app/main/components/common/ktx-components/ktx-temperature-ranges/ktx-temperature-ranges.component.ts","./src/app/main/components/common/template.functions.ts","./src/app/main/components/common/validation.function.ts","./src/app/main/components/companies-tab/companies-grid/companies-grid.component.ts","./src/app/main/components/companies-tab/companies-grid/index.ts","./src/app/main/components/companies-tab/companies-tab.component.ts","./src/app/main/components/companies-tab/index.ts","./src/app/main/components/company-admins-tab/company-admins-grid/company-admins-grid.component.ts","./src/app/main/components/company-admins-tab/company-admins-grid/index.ts","./src/app/main/components/company-admins-tab/company-admins-tab.component.ts","./src/app/main/components/company-admins-tab/index.ts","./src/app/main/components/company-users-tab/company-users-grid/company-users-grid.component.ts","./src/app/main/components/company-users-tab/company-users-grid/index.ts","./src/app/main/components/company-users-tab/company-users-tab.component.ts","./src/app/main/components/company-users-tab/index.ts","./src/app/main/components/device-update-management-tab/device-update-management-tab.component.ts","./src/app/main/components/device-update-management-tab/index.ts","./src/app/main/components/email-management-tab/email-management-tab.component.ts","./src/app/main/components/email-management-tab/index.ts","./src/app/main/components/header/header.component.ts","./src/app/main/components/header/index.ts","./src/app/main/components/index.ts","./src/app/main/components/itx-alert-tab/index.ts","./src/app/main/components/itx-alert-tab/itx-alert-tab.component.ts","./src/app/main/components/itx-live-data-tab/index.ts","./src/app/main/components/itx-live-data-tab/itx-live-data-tab.component.ts","./src/app/main/components/itx-reports-tab/index.ts","./src/app/main/components/itx-reports-tab/itx-reports-tab.component.ts","./src/app/main/components/itx-tab/index.ts","./src/app/main/components/itx-tab/itx-bins-tab/index.ts","./src/app/main/components/itx-tab/itx-bins-tab/itx-bin-grid/index.ts","./src/app/main/components/itx-tab/itx-bins-tab/itx-bin-grid/itx-bin-grid.ts","./src/app/main/components/itx-tab/itx-bins-tab/itx-bins-tab.component.ts","./src/app/main/components/itx-tab/itx-grid/index.ts","./src/app/main/components/itx-tab/itx-grid/itx-grid.component.ts","./src/app/main/components/itx-tab/itx-tab.component.ts","./src/app/main/components/ktx-current-data-tab/index.ts","./src/app/main/components/ktx-current-data-tab/ktx-bin-details-tab/index.ts","./src/app/main/components/ktx-current-data-tab/ktx-bin-details-tab/ktx-bin-details-tab.component.ts","./src/app/main/components/ktx-current-data-tab/ktx-current-data-tab.component.ts","./src/app/main/components/ktx-current-data-tab/ktx-location-details-tab/index.ts","./src/app/main/components/ktx-current-data-tab/ktx-location-details-tab/ktx-location-details-tab.component.ts","./src/app/main/components/ktx-historical-data-tab/index.ts","./src/app/main/components/ktx-historical-data-tab/ktx-historical-data-tab.component.ts","./src/app/main/components/ktx-notifications-tab/index.ts","./src/app/main/components/ktx-notifications-tab/ktx-notifications-tab.component.ts","./src/app/main/components/ktx-tab/index.ts","./src/app/main/components/ktx-tab/ktx-grid/index.ts","./src/app/main/components/ktx-tab/ktx-grid/ktx-grid.component.ts","./src/app/main/components/ktx-tab/ktx-tab.component.ts","./src/app/main/components/locations-tab/index.ts","./src/app/main/components/locations-tab/locations-grid/index.ts","./src/app/main/components/locations-tab/locations-grid/locations-grid.component.ts","./src/app/main/components/locations-tab/locations-tab.component.ts","./src/app/main/components/navigation-bar/index.ts","./src/app/main/components/navigation-bar/navigation-bar.component.ts","./src/app/main/components/popups/add-edit-equipment-popup/add-edit-equipment-popup.component.ts","./src/app/main/components/popups/add-edit-equipment-popup/index.ts","./src/app/main/components/popups/aqs-computation-sheet-confirm-popup/aqs-computation-sheet-confirm-popup.component.ts","./src/app/main/components/popups/aqs-computation-sheet-confirm-popup/index.ts","./src/app/main/components/popups/aqs-computation-sheet-resave-popup/aqs-computation-sheet-resave-popup.component.ts","./src/app/main/components/popups/aqs-computation-sheet-resave-popup/index.ts","./src/app/main/components/popups/aqs-confirm-popup/aqs-confirm-popup.component.ts","./src/app/main/components/popups/aqs-confirm-popup/index.ts","./src/app/main/components/popups/aqs-new-quote-popup/aqs-new-quote-popup.component.ts","./src/app/main/components/popups/aqs-new-quote-popup/index.ts","./src/app/main/components/popups/btx-equipment-details-popup/btx-equipment-details-popup.component.ts","./src/app/main/components/popups/btx-equipment-details-popup/index.ts","./src/app/main/components/popups/btx-live-data-export-report-popup/btx-live-data-export-report-popup.component.ts","./src/app/main/components/popups/btx-live-data-export-report-popup/index.ts","./src/app/main/components/popups/btx-location-edit-popup/btx-location-edit-popup.component.ts","./src/app/main/components/popups/btx-location-edit-popup/index.ts","./src/app/main/components/popups/common/base-popup.behavior.ts","./src/app/main/components/popups/common/base-popup/base-popup.component.ts","./src/app/main/components/popups/common/base-popup/index.ts","./src/app/main/components/popups/common/index.ts","./src/app/main/components/popups/companies-add-edit-popup/companies-add-edit-popup.component.ts","./src/app/main/components/popups/companies-add-edit-popup/index.ts","./src/app/main/components/popups/companies-delete-popup/companies-delete-popup.component.ts","./src/app/main/components/popups/companies-delete-popup/index.ts","./src/app/main/components/popups/company-admin-add-popup/company-admin-add-popup.component.ts","./src/app/main/components/popups/company-admin-add-popup/index.ts","./src/app/main/components/popups/company-admin-delete-popup/company-admin-delete-popup.component.ts","./src/app/main/components/popups/company-admin-delete-popup/index.ts","./src/app/main/components/popups/company-admin-edit-popup/company-admin-edit-popup.component.ts","./src/app/main/components/popups/company-admin-edit-popup/index.ts","./src/app/main/components/popups/company-user-add-popup/company-user-add-popup.component.ts","./src/app/main/components/popups/company-user-add-popup/index.ts","./src/app/main/components/popups/company-user-delete-popup/company-user-delete-popup.component.ts","./src/app/main/components/popups/company-user-delete-popup/index.ts","./src/app/main/components/popups/company-user-edit-popup/company-user-edit-popup.component.ts","./src/app/main/components/popups/company-user-edit-popup/index.ts","./src/app/main/components/popups/computation-sheet-report-popup/computation-sheet-report-popup.component.ts","./src/app/main/components/popups/computation-sheet-report-popup/index.ts","./src/app/main/components/popups/computation-sheet-share-report-popup/computation-sheet-share-report-popup.component.ts","./src/app/main/components/popups/computation-sheet-share-report-popup/index.ts","./src/app/main/components/popups/confirmation-popup/confirmation-popup.component.ts","./src/app/main/components/popups/confirmation-popup/index.ts","./src/app/main/components/popups/device-communication-popup/device-communication-popup.component.ts","./src/app/main/components/popups/device-communication-popup/index.ts","./src/app/main/components/popups/email-service-add-edit-popup/email-service-add-edit-popup.component.ts","./src/app/main/components/popups/email-service-add-edit-popup/index.ts","./src/app/main/components/popups/email-service-delete-popup/email-service-delete-popup.component.ts","./src/app/main/components/popups/email-service-delete-popup/index.ts","./src/app/main/components/popups/equipment-popup/edit-sensor-popup/edit-sensor-popup.component.ts","./src/app/main/components/popups/equipment-popup/edit-sensor-popup/index.ts","./src/app/main/components/popups/equipment-popup/equipment-menu/equipment-menu.component.ts","./src/app/main/components/popups/equipment-popup/equipment-menu/index.ts","./src/app/main/components/popups/equipment-popup/equipment-popup.component.ts","./src/app/main/components/popups/equipment-popup/equipment-scheme/equipment-scheme.component.ts","./src/app/main/components/popups/equipment-popup/equipment-scheme/index.ts","./src/app/main/components/popups/equipment-popup/equipment-sensor-delete-popup/equipment-sensor-delete-popup.component.ts","./src/app/main/components/popups/equipment-popup/equipment-sensor-delete-popup/index.ts","./src/app/main/components/popups/equipment-popup/equipment-view-data/equipment-view-data.component.ts","./src/app/main/components/popups/equipment-popup/equipment-view-data/index.ts","./src/app/main/components/popups/equipment-popup/index.ts","./src/app/main/components/popups/equipment-popup/view-sensor-popup/index.ts","./src/app/main/components/popups/equipment-popup/view-sensor-popup/view-sensor-popup.component.ts","./src/app/main/components/popups/export-notification-popup/export-notification-popup.component.ts","./src/app/main/components/popups/export-notification-popup/index.ts","./src/app/main/components/popups/firmware-management-popup/firmware-management-popup.component.ts","./src/app/main/components/popups/firmware-management-popup/index.ts","./src/app/main/components/popups/index.ts","./src/app/main/components/popups/itx-add-edit-popup/index.ts","./src/app/main/components/popups/itx-add-edit-popup/itx-add-edit-popup.component.ts","./src/app/main/components/popups/itx-bin-add-edit-popup/index.ts","./src/app/main/components/popups/itx-bin-add-edit-popup/itx-bin-add-edit-popup.component.ts","./src/app/main/components/popups/itx-bin-delete-popup/index.ts","./src/app/main/components/popups/itx-bin-delete-popup/itx-bin-delete-popup.component.ts","./src/app/main/components/popups/itx-delete-radar-popup/index.ts","./src/app/main/components/popups/itx-delete-radar-popup/itx-delete-radar-popup.component.ts","./src/app/main/components/popups/itx-edit-radar-popup/index.ts","./src/app/main/components/popups/itx-edit-radar-popup/itx-edit-radar-popup.component.ts","./src/app/main/components/popups/itx-export-report-popup/index.ts","./src/app/main/components/popups/itx-export-report-popup/itx-export-report-popup.component.ts","./src/app/main/components/popups/itx-list-add-radar-popup/index.ts","./src/app/main/components/popups/itx-list-add-radar-popup/itx-list-add-radar-popup.component.ts","./src/app/main/components/popups/itx-live-data-setting-popup/index.ts","./src/app/main/components/popups/itx-live-data-setting-popup/itx-live-data-setting-popup.component.ts","./src/app/main/components/popups/itx-manage-color-popup/index.ts","./src/app/main/components/popups/itx-manage-color-popup/itx-manage-color-popup.component.ts","./src/app/main/components/popups/itx-manage-color-popup/itx-range-delete-popup/index.ts","./src/app/main/components/popups/itx-manage-color-popup/itx-range-delete-popup/itx-range-delete-popup.component.ts","./src/app/main/components/popups/itx-quick-edit-popup/index.ts","./src/app/main/components/popups/itx-quick-edit-popup/itx-quick-edit-popup.component.ts","./src/app/main/components/popups/itx-storage-radars-popup/index.ts","./src/app/main/components/popups/itx-storage-radars-popup/itx-storage-radars-popup.component.ts","./src/app/main/components/popups/ktx-add-edit-popup/index.ts","./src/app/main/components/popups/ktx-add-edit-popup/ktx-add-edit-popup.component.ts","./src/app/main/components/popups/ktx-bin-details-popup/index.ts","./src/app/main/components/popups/ktx-bin-details-popup/ktx-bin-details-popup.component.ts","./src/app/main/components/popups/ktx-connection-popup/index.ts","./src/app/main/components/popups/ktx-connection-popup/ktx-connection-popup.component.ts","./src/app/main/components/popups/ktx-current-data-export-report-popup/index.ts","./src/app/main/components/popups/ktx-current-data-export-report-popup/ktx-current-data-export-report-popup.component.ts","./src/app/main/components/popups/ktx-list-cables-popup/index.ts","./src/app/main/components/popups/ktx-list-cables-popup/ktx-list-cables-popup.component.ts","./src/app/main/components/popups/ktx-location-bins-popup/index.ts","./src/app/main/components/popups/ktx-location-bins-popup/ktx-location-bins-popup.component.ts","./src/app/main/components/popups/ktx-temperature-ranges-popup/index.ts","./src/app/main/components/popups/ktx-temperature-ranges-popup/ktx-range-delete-popup/index.ts","./src/app/main/components/popups/ktx-temperature-ranges-popup/ktx-range-delete-popup/ktx-range-delete-popup.component.ts","./src/app/main/components/popups/ktx-temperature-ranges-popup/ktx-temperature-ranges-popup.component.ts","./src/app/main/components/popups/ktx-unit-details-popup/index.ts","./src/app/main/components/popups/ktx-unit-details-popup/ktx-unit-details-popup.component.ts","./src/app/main/components/popups/ktx-unit-fullscreen-popup/index.ts","./src/app/main/components/popups/ktx-unit-fullscreen-popup/ktx-unit-fullscreen-popup.component.ts","./src/app/main/components/popups/location-btx-ktx-delete-popup/index.ts","./src/app/main/components/popups/location-btx-ktx-delete-popup/location-btx-ktx-delete-popup.component.ts","./src/app/main/components/popups/location-changed-popup/index.ts","./src/app/main/components/popups/location-changed-popup/location-changed-popup.component.ts","./src/app/main/components/popups/location-delete-popup/index.ts","./src/app/main/components/popups/location-delete-popup/location-delete-popup.component.ts","./src/app/main/components/popups/location-edit-popup/index.ts","./src/app/main/components/popups/location-edit-popup/location-edit-popup.component.ts","./src/app/main/components/popups/service-user-add-popup/index.ts","./src/app/main/components/popups/service-user-add-popup/service-user-add-popup.component.ts","./src/app/main/components/popups/service-user-delete-popup/index.ts","./src/app/main/components/popups/service-user-delete-popup/service-user-delete-popup.component.ts","./src/app/main/components/popups/service-user-edit-popup/index.ts","./src/app/main/components/popups/service-user-edit-popup/service-user-edit-popup.component.ts","./src/app/main/components/popups/success-operation-popup/index.ts","./src/app/main/components/popups/success-operation-popup/success-operation-popup.component.ts","./src/app/main/components/popups/tutorial-popup/index.ts","./src/app/main/components/popups/tutorial-popup/tutorial-popup.component.ts","./src/app/main/components/popups/tutorial-popup/tutorial/tutorial-img-constants.ts","./src/app/main/components/popups/tutorial-popup/tutorial/tutorial.component.ts","./src/app/main/components/popups/update-firmware-popup/index.ts","./src/app/main/components/popups/update-firmware-popup/update-firmware-popup.component.ts","./src/app/main/components/popups/update-versions-management-popup/index.ts","./src/app/main/components/popups/update-versions-management-popup/update-versions-management-popup.component.ts","./src/app/main/components/popups/updater-add-edit-popup/index.ts","./src/app/main/components/popups/updater-add-edit-popup/updater-add-edit-popup.component.ts","./src/app/main/components/popups/updater-delete-popup/index.ts","./src/app/main/components/popups/updater-delete-popup/updater-delete-popup.component.ts","./src/app/main/components/popups/upload-btx-location-configuration-file-popup/index.ts","./src/app/main/components/popups/upload-btx-location-configuration-file-popup/upload-btx-location-configuration-file-popup.component.ts","./src/app/main/components/popups/upload-configuration-file-popup/index.ts","./src/app/main/components/popups/upload-configuration-file-popup/upload-configuration-close-popup/index.ts","./src/app/main/components/popups/upload-configuration-file-popup/upload-configuration-close-popup/upload-configuration-close-confirmation-popup.component.ts","./src/app/main/components/popups/upload-configuration-file-popup/upload-configuration-file-popup.component.ts","./src/app/main/components/popups/upload-equipment-popup/delete-equipment-confirmation-popup/delete-equipment-confirmation-popup.component.ts","./src/app/main/components/popups/upload-equipment-popup/delete-equipment-confirmation-popup/index.ts","./src/app/main/components/popups/upload-equipment-popup/index.ts","./src/app/main/components/popups/upload-equipment-popup/upload-add-edit-equipment-popup/index.ts","./src/app/main/components/popups/upload-equipment-popup/upload-add-edit-equipment-popup/upload-add-edit-equipment-popup.component.ts","./src/app/main/components/popups/upload-equipment-popup/upload-cancellation-popup/index.ts","./src/app/main/components/popups/upload-equipment-popup/upload-cancellation-popup/upload-cancellation-popup.component.ts","./src/app/main/components/popups/upload-equipment-popup/upload-equipment-menu/index.ts","./src/app/main/components/popups/upload-equipment-popup/upload-equipment-menu/upload-equipment-menu.component.ts","./src/app/main/components/popups/upload-equipment-popup/upload-equipment-popup.component.ts","./src/app/main/components/popups/upload-equipment-popup/upload-equipment-scheme/index.ts","./src/app/main/components/popups/upload-equipment-popup/upload-equipment-scheme/upload-equipment-scheme.component.ts","./src/app/main/components/popups/upload-equipment-popup/upload-equipment-sensor-delete-popup/index.ts","./src/app/main/components/popups/upload-equipment-popup/upload-equipment-sensor-delete-popup/upload-equipment-sensor-delete-popup.component.ts","./src/app/main/components/popups/upload-equipment-popup/upload-equipment-view-data/index.ts","./src/app/main/components/popups/upload-equipment-popup/upload-equipment-view-data/upload-equipment-view-data.component.ts","./src/app/main/components/popups/upload-equipment-popup/upload-success-popup/index.ts","./src/app/main/components/popups/upload-equipment-popup/upload-success-popup/upload-success-popup.component.ts","./src/app/main/components/popups/upload-firmware-install-popup/index.ts","./src/app/main/components/popups/upload-firmware-install-popup/upload-firmware-install-popup.component.ts","./src/app/main/components/popups/upload-firmware-popup/index.ts","./src/app/main/components/popups/upload-firmware-popup/upload-firmware-popup.component.ts","./src/app/main/components/popups/upload-firmware-rebase-popup/index.ts","./src/app/main/components/popups/upload-firmware-rebase-popup/upload-firmware-rebase-popup.component.ts","./src/app/main/components/popups/user-profile-popup/index.ts","./src/app/main/components/popups/user-profile-popup/user-profile-popup.component.ts","./src/app/main/components/popups/vendor-add-popup/index.ts","./src/app/main/components/popups/vendor-add-popup/vendor-add-popup.component.ts","./src/app/main/components/popups/vendor-delete-popup/index.ts","./src/app/main/components/popups/vendor-delete-popup/vendor-delete-popup.component.ts","./src/app/main/components/popups/vendor-edit-popup/index.ts","./src/app/main/components/popups/vendor-edit-popup/vendor-edit-popup.component.ts","./src/app/main/components/sales-users-tab/index.ts","./src/app/main/components/sales-users-tab/sales-users-tab.component.ts","./src/app/main/components/service-users-tab/index.ts","./src/app/main/components/service-users-tab/service-users-grid/index.ts","./src/app/main/components/service-users-tab/service-users-grid/service-users-grid.component.ts","./src/app/main/components/service-users-tab/service-users-tab.component.ts","./src/app/main/components/vendors-tab/index.ts","./src/app/main/components/vendors-tab/vendors-grid/index.ts","./src/app/main/components/vendors-tab/vendors-grid/vendors-grid.component.ts","./src/app/main/components/vendors-tab/vendors-tab.component.ts","./src/app/main/constants/api-routes.constants.ts","./src/app/main/constants/aqs-airflow.constants.ts","./src/app/main/constants/aqs-coversheet-types.constants.ts","./src/app/main/constants/aqs-flat-ducting-shapes.constants.ts","./src/app/main/constants/aqs-flat-storage-types.constants.ts","./src/app/main/constants/aqs-flush-floor.constants.ts","./src/app/main/constants/aqs-page.constants.ts","./src/app/main/constants/aqs-report.constants.ts","./src/app/main/constants/aqs-round.constants.ts","./src/app/main/constants/aqs-saved-quote.contants.ts","./src/app/main/constants/btx-device.constants.ts","./src/app/main/constants/btx-notification-type-label.constants.ts","./src/app/main/constants/calendar.constants.ts","./src/app/main/constants/device-update.constants.ts","./src/app/main/constants/email-service.constants.ts","./src/app/main/constants/equipment-options.ts","./src/app/main/constants/equipment-placeholders.constants.ts","./src/app/main/constants/equipment-sensor-labels.constants.ts","./src/app/main/constants/equipment-sensor-mapping.constants.ts","./src/app/main/constants/event.constants.ts","./src/app/main/constants/hub-methods.ts","./src/app/main/constants/index.ts","./src/app/main/constants/itx-bin.constants.ts","./src/app/main/constants/itx-radar.constants.ts","./src/app/main/constants/itx-reports-tab.constants.ts","./src/app/main/constants/ktx-sensor.constants.ts","./src/app/main/constants/main-route-paths.constants.ts","./src/app/main/constants/models-types.constants.ts","./src/app/main/constants/pile-shape.constants.ts","./src/app/main/constants/tutorial.constants.ts","./src/app/main/directives/click-outside/click-outside.directive.ts","./src/app/main/directives/click-outside/index.ts","./src/app/main/directives/index.ts","./src/app/main/directives/ip-mask-fix/index.ts","./src/app/main/directives/ip-mask-fix/ip-mask-fix.directive.ts","./src/app/main/directives/touch-on-focus/index.ts","./src/app/main/directives/touch-on-focus/touch-on-focus.directive.ts","./src/app/main/enums/acquisition-rate.enum.ts","./src/app/main/enums/aqs-airflow.enums.ts","./src/app/main/enums/aqs-coversheet-type.enum.ts","./src/app/main/enums/aqs-duct-type.enum.ts","./src/app/main/enums/aqs-flat-duct.enums.ts","./src/app/main/enums/aqs-flush-floor.enums.ts","./src/app/main/enums/aqs-page.enums.ts","./src/app/main/enums/aqs-round-duct-design-type.enum.ts","./src/app/main/enums/aqs-round.enums.ts","./src/app/main/enums/aqs-session.enums.ts","./src/app/main/enums/aqs-storage-type.enum.ts","./src/app/main/enums/bin-type.enum.ts","./src/app/main/enums/btx-event-type.enum.ts","./src/app/main/enums/btx-notification-filter-type.enum.ts","./src/app/main/enums/btx-notification-type.enum.ts","./src/app/main/enums/calendar.enum.ts","./src/app/main/enums/column-type.enum.ts","./src/app/main/enums/confirmation-dialog.enum.ts","./src/app/main/enums/email-service.enums.ts","./src/app/main/enums/equipment.enum.ts","./src/app/main/enums/flat-storage.enum.ts","./src/app/main/enums/index.ts","./src/app/main/enums/itx-bin.enum.ts","./src/app/main/enums/itx-event-type.enum.ts","./src/app/main/enums/itx-node-types.enum.ts","./src/app/main/enums/itx-radar.enum.ts","./src/app/main/enums/itx-report-format.enum.ts","./src/app/main/enums/itx-report-reading-unit.enum.ts","./src/app/main/enums/ktx-event-type.enum.ts","./src/app/main/enums/ktx-notification-filter-type.enum.ts","./src/app/main/enums/ktx-report-format.enum.ts","./src/app/main/enums/part-type.enum.ts","./src/app/main/enums/pile-shape.enum.ts","./src/app/main/enums/project.enum.ts","./src/app/main/enums/reading-schedule-type.enum.ts","./src/app/main/enums/sensor-status.enum.ts","./src/app/main/enums/switch-type.enum.ts","./src/app/main/enums/tutorial.enum.ts","./src/app/main/enums/updater-device.enums.ts","./src/app/main/enums/user-status.enum.ts","./src/app/main/index.ts","./src/app/main/main.component.ts","./src/app/main/main.module.ts","./src/app/main/main.routes.ts","./src/app/main/models/account.model.ts","./src/app/main/models/aqs-round-storage-duct-design.model.ts","./src/app/main/models/aqs/aqs-airflow.models.ts","./src/app/main/models/aqs/aqs-commodities.model.ts","./src/app/main/models/aqs/aqs-coversheet.model.ts","./src/app/main/models/aqs/aqs-exhauster-fan.model.ts","./src/app/main/models/aqs/aqs-saved-quote.model.ts","./src/app/main/models/aqs/computation-sheet/computation-item.model.ts","./src/app/main/models/aqs/computation-sheet/computation-sheet.model.ts","./src/app/main/models/aqs/computation-sheet/index.ts","./src/app/main/models/aqs/flat-storage/aqs-flat-duct.model.ts","./src/app/main/models/aqs/flat-storage/flat-storage-param.model.ts","./src/app/main/models/aqs/flat-storage/index.ts","./src/app/main/models/aqs/index.ts","./src/app/main/models/aqs/round-storage/aqs-flush-floor-design.model.ts","./src/app/main/models/aqs/round-storage/aqs-round.models.ts","./src/app/main/models/aqs/round-storage/index.ts","./src/app/main/models/bin.model.ts","./src/app/main/models/btx-events.model.ts","./src/app/main/models/btx-reports.model.ts","./src/app/main/models/cable.model.ts","./src/app/main/models/common.model.ts","./src/app/main/models/companies.model.ts","./src/app/main/models/company-admins.model.ts","./src/app/main/models/company-users.model.ts","./src/app/main/models/device-log.model.ts","./src/app/main/models/email-service.model.ts","./src/app/main/models/equipment-btx.model.ts","./src/app/main/models/fullness-range.model.ts","./src/app/main/models/historicalDataTelemetryResponse.model.ts","./src/app/main/models/hub-messages/company-added.hub-message.ts","./src/app/main/models/hub-messages/company-admin-added.hub-message.ts","./src/app/main/models/hub-messages/company-admin-deleted.hub-message.ts","./src/app/main/models/hub-messages/company-admin-in-update.hub-message.ts","./src/app/main/models/hub-messages/company-admin-updated.hub-message.ts","./src/app/main/models/hub-messages/company-deleted.hub-message.ts","./src/app/main/models/hub-messages/company-in-update.hub-message.ts","./src/app/main/models/hub-messages/company-updated.hub-message.ts","./src/app/main/models/hub-messages/company-user-added.hub-message.ts","./src/app/main/models/hub-messages/company-user-deleted.hub-message.ts","./src/app/main/models/hub-messages/company-user-in-update.hub-message.ts","./src/app/main/models/hub-messages/company-user-updated.hub-message.ts","./src/app/main/models/hub-messages/index.ts","./src/app/main/models/hub-messages/itx-bin-added.hub-message.ts","./src/app/main/models/hub-messages/itx-bin-deleted.hub-message.ts","./src/app/main/models/hub-messages/itx-bin-in-update.hub-message.ts","./src/app/main/models/hub-messages/itx-bin-radar-added.hub-message.ts","./src/app/main/models/hub-messages/itx-bin-radar-deleted.hub-message.ts","./src/app/main/models/hub-messages/itx-bin-radar-in-update.hub-message.ts","./src/app/main/models/hub-messages/itx-bin-radar-updated.hub-message.ts","./src/app/main/models/hub-messages/itx-bin-updated.hub-message.ts","./src/app/main/models/hub-messages/location-added.hub-message.ts","./src/app/main/models/hub-messages/location-btx-added.hub-message.ts","./src/app/main/models/hub-messages/location-btx-deleted.hub-message.ts","./src/app/main/models/hub-messages/location-btx-in-update.hub-message.ts","./src/app/main/models/hub-messages/location-btx-updated.hub-message.ts","./src/app/main/models/hub-messages/location-deleted.hub-message.ts","./src/app/main/models/hub-messages/location-device-in-initialization.hub-message.ts","./src/app/main/models/hub-messages/location-device-initialized.hub-message.ts","./src/app/main/models/hub-messages/location-equipments-in-update.hub-message.ts","./src/app/main/models/hub-messages/location-equipments-updated.hub-message.ts","./src/app/main/models/hub-messages/location-in-update.hub-message.ts","./src/app/main/models/hub-messages/location-itx-added.hub-message.ts","./src/app/main/models/hub-messages/location-itx-deleted.hub.message.ts","./src/app/main/models/hub-messages/location-itx-device-in-initialization.hub-message.ts","./src/app/main/models/hub-messages/location-itx-device-initialized.hub-message.ts","./src/app/main/models/hub-messages/location-itx-fullness-range-updated-hub-message.ts","./src/app/main/models/hub-messages/location-itx-in-update.hub-message.ts","./src/app/main/models/hub-messages/location-itx-storages-in-view.ts","./src/app/main/models/hub-messages/location-itx-updated.hub-message.ts","./src/app/main/models/hub-messages/location-ktx-added.hub-message.ts","./src/app/main/models/hub-messages/location-ktx-bins-in-update.hub-message.ts","./src/app/main/models/hub-messages/location-ktx-bins-updated.hub-message.ts","./src/app/main/models/hub-messages/location-ktx-deleted.hub-message.ts","./src/app/main/models/hub-messages/location-ktx-device-in-initialization.hub-message.ts","./src/app/main/models/hub-messages/location-ktx-device-initialized.hub-message.ts","./src/app/main/models/hub-messages/location-ktx-in-update.hub-message.ts","./src/app/main/models/hub-messages/location-ktx-temperature-range-updated-message.ts","./src/app/main/models/hub-messages/location-ktx-updated.hub-message.ts","./src/app/main/models/hub-messages/location-updated.hub-message.ts","./src/app/main/models/hub-messages/sales-user-added.hub-message.ts","./src/app/main/models/hub-messages/sales-user-deleted.hub-message.ts","./src/app/main/models/hub-messages/sales-user-in-update.hub-message.ts","./src/app/main/models/hub-messages/sales-user-updated.hub-message.ts","./src/app/main/models/hub-messages/service-user-added.hub-message.ts","./src/app/main/models/hub-messages/service-user-deleted.hub-message.ts","./src/app/main/models/hub-messages/service-user-in-update.hub-message.ts","./src/app/main/models/hub-messages/service-user-updated.hub-message.ts","./src/app/main/models/hub-messages/updater-update-project.hub-message.ts","./src/app/main/models/hub-messages/vendor-added.hub-message.ts","./src/app/main/models/hub-messages/vendor-delete.hub-message.ts","./src/app/main/models/hub-messages/vendor-in-update.hub-message.ts","./src/app/main/models/hub-messages/vendor-updated.hub-message.ts","./src/app/main/models/index.ts","./src/app/main/models/itx-bin.model.ts","./src/app/main/models/itx-events.model.ts","./src/app/main/models/itx-reports.model.ts","./src/app/main/models/ktx-bin.model.ts","./src/app/main/models/ktx-events.model.ts","./src/app/main/models/ktx-reports.model.ts","./src/app/main/models/locations/index.ts","./src/app/main/models/locations/location-btx-ktx-itx.model.ts","./src/app/main/models/locations/location-btx.model.ts","./src/app/main/models/locations/location-itx.model.ts","./src/app/main/models/locations/location-ktx.model.ts","./src/app/main/models/locations/location.model.ts","./src/app/main/models/navigation-bar.model.ts","./src/app/main/models/notification-report.model.ts","./src/app/main/models/sales-users.model.ts","./src/app/main/models/sensors/index.ts","./src/app/main/models/sensors/sensor-btx.model.ts","./src/app/main/models/sensors/sensor-ktx.model.ts","./src/app/main/models/service-users.model.ts","./src/app/main/models/telemetry-snapshot.model.ts","./src/app/main/models/temperature-range.model.ts","./src/app/main/models/updater-device/index.ts","./src/app/main/models/updater-device/updater-device.models.ts","./src/app/main/models/vendor.model.ts","./src/app/main/pipes/index.ts","./src/app/main/pipes/safe.pipe.ts","./src/app/main/services/data/account.datasource.service.ts","./src/app/main/services/data/aqs-airflow.datasource.service.ts","./src/app/main/services/data/aqs-commodities.datasource.service.ts","./src/app/main/services/data/aqs-quote-storage.datasource.service.ts","./src/app/main/services/data/aqs-report.datasource.service.ts","./src/app/main/services/data/companies.datasource.service.ts","./src/app/main/services/data/company-admins.datasource.service.ts","./src/app/main/services/data/company-users.datasource.service.ts","./src/app/main/services/data/device-log.datasource.service.ts","./src/app/main/services/data/email-service.datasource.service.ts","./src/app/main/services/data/equipment.datasource.service.ts","./src/app/main/services/data/event.datasource.service.ts","./src/app/main/services/data/index.ts","./src/app/main/services/data/itx-bin.datasource.service.ts","./src/app/main/services/data/locations-btx.datasource.service.ts","./src/app/main/services/data/locations-itx.datasource.service.ts","./src/app/main/services/data/locations-ktx.datasource.service.ts","./src/app/main/services/data/locations.datasource.service.ts","./src/app/main/services/data/report.datasource.service.ts","./src/app/main/services/data/sales-users.datasource.service.ts","./src/app/main/services/data/service-users.datasource.service.ts","./src/app/main/services/data/updater-device.datasource.service.ts","./src/app/main/services/data/vendor.datasource.service.ts","./src/app/main/services/helpers/index.ts","./src/app/main/services/helpers/role.helper.service.ts","./src/app/main/services/http/account.api.service.ts","./src/app/main/services/http/aqs-airflow.api.service.ts","./src/app/main/services/http/aqs-commodities.api.service.ts","./src/app/main/services/http/aqs-quote-storage.api.service.ts","./src/app/main/services/http/aqs-report.api.service.ts","./src/app/main/services/http/bin.api.service.ts","./src/app/main/services/http/companies.api.service.ts","./src/app/main/services/http/company-admins.api.service.ts","./src/app/main/services/http/company-users.api.service.ts","./src/app/main/services/http/device-log.api.service.ts","./src/app/main/services/http/email-service.api.service.ts","./src/app/main/services/http/equipment.api.service.ts","./src/app/main/services/http/event.api.service.ts","./src/app/main/services/http/hub.service.ts","./src/app/main/services/http/index.ts","./src/app/main/services/http/itx-bin.api.service.ts","./src/app/main/services/http/locations-btx.api.service.ts","./src/app/main/services/http/locations-itx.api.service.ts","./src/app/main/services/http/locations-ktx.api.service.ts","./src/app/main/services/http/locations.api.service.ts","./src/app/main/services/http/report.api.service.ts","./src/app/main/services/http/sales-users.api.service.ts","./src/app/main/services/http/service-users.api.service.ts","./src/app/main/services/http/updater-device.service.ts","./src/app/main/services/http/vendor.api.service.ts","./src/app/main/services/index.ts","./src/app/password-recover/index.ts","./src/app/password-recover/password-recover.component.ts","./src/app/password-recover/password-recover.module.ts","./src/app/password-update/index.ts","./src/app/password-update/password-update.component.ts","./src/app/password-update/password-update.module.ts","./src/app/privacy/index.ts","./src/app/privacy/privacy.component.ts","./src/app/privacy/privacy.module.ts","./src/app/sign-in/index.ts","./src/app/sign-in/sign-in.component.ts","./src/app/sign-in/sign-in.module.ts","./src/environments/environment.ts","./src/img/tutorial/add-new-Vendor-button.png","./src/img/tutorial/add-new-company-admin-button.png","./src/img/tutorial/add-new-company-admin-popup.png","./src/img/tutorial/add-new-company-user-button.png","./src/img/tutorial/add-new-company-user-popup.png","./src/img/tutorial/add-new-vendor-popup.png","./src/img/tutorial/btx-historical-date-range-setup.png","./src/img/tutorial/btx-historical-equipment-setup.png","./src/img/tutorial/btx-historical-export-button.png","./src/img/tutorial/btx-historical-generate-report-button.png","./src/img/tutorial/btx-historical-plot.png","./src/img/tutorial/btx-live-data-equipment-alerts.png","./src/img/tutorial/btx-live-data-equipment-export-button.png","./src/img/tutorial/btx-live-data-equipment-sensors-table.png","./src/img/tutorial/btx-live-data-equipment-view-button.png","./src/img/tutorial/btx-live-data-equipment-view.png","./src/img/tutorial/btx-live-data-export-popup-equipments-tree.png","./src/img/tutorial/btx-live-data-filter.png","./src/img/tutorial/btx-live-data-locations-view.png","./src/img/tutorial/btx-live-data-search-control.png","./src/img/tutorial/btx-live-data-search-enter.png","./src/img/tutorial/btx-live-equipment-dropdown.png","./src/img/tutorial/btx-live-equipment-schema.png","./src/img/tutorial/btx-notification-active-alert-info-popup.png","./src/img/tutorial/btx-notification-active-button.png","./src/img/tutorial/btx-notification-active-info-button.png","./src/img/tutorial/btx-notification-date-setup.png","./src/img/tutorial/btx-notification-export-alert-type.png","./src/img/tutorial/btx-notification-export-button.png","./src/img/tutorial/btx-notification-export-date.png","./src/img/tutorial/btx-notification-export-equipment.png","./src/img/tutorial/btx-notification-filters.png","./src/img/tutorial/btx-notification-history-alerts.png","./src/img/tutorial/email-service-add-button.png","./src/img/tutorial/email-service-alert-types.png","./src/img/tutorial/email-service-enter-emails.png","./src/img/tutorial/email-service-overview-expand.png","./src/img/tutorial/email-service-overview.png","./src/img/tutorial/email-service-schedule.png","./src/img/tutorial/itx-live-data-export-button-admin.png","./src/img/tutorial/itx-live-data-export-button-user.png","./src/img/tutorial/itx-live-data-export-popup-admin.png","./src/img/tutorial/itx-live-data-export-popup-user.png","./src/img/tutorial/itx-live-data-filter-admin.png","./src/img/tutorial/itx-live-data-filter-user.png","./src/img/tutorial/itx-live-data-profile-button-admin.png","./src/img/tutorial/itx-live-data-profile-button-user.png","./src/img/tutorial/itx-live-data-profile-popup-admin.png","./src/img/tutorial/itx-live-data-profile-popup-user.png","./src/img/tutorial/itx-live-data-radar-button-admin.png","./src/img/tutorial/itx-live-data-radar-button-user.png","./src/img/tutorial/itx-live-data-radar-popup-admin.png","./src/img/tutorial/itx-live-data-radar-popup-user.png","./src/img/tutorial/itx-live-data-search-admin.png","./src/img/tutorial/itx-live-data-search-user.png","./src/img/tutorial/itx-live-data-sort-admin.png","./src/img/tutorial/itx-live-data-sort-user.png","./src/img/tutorial/itx-live-data-storage-edit-button.png","./src/img/tutorial/itx-live-data-storage-edit-popup.png","./src/img/tutorial/itx-live-data-storage-view-admin.png","./src/img/tutorial/itx-live-data-storage-view-user.png","./src/img/tutorial/itx-notification-active-alert-button.png","./src/img/tutorial/itx-notification-active-info-button.png","./src/img/tutorial/itx-notification-active-info-radar.png","./src/img/tutorial/itx-notification-date-setup.png","./src/img/tutorial/itx-notification-export-alert-type.png","./src/img/tutorial/itx-notification-export-bins.png","./src/img/tutorial/itx-notification-export-button.png","./src/img/tutorial/itx-notification-export-date.png","./src/img/tutorial/itx-notification-filters.png","./src/img/tutorial/itx-notification-historical-alert-view.png","./src/img/tutorial/itx-report-date-setup.png","./src/img/tutorial/itx-report-export-button.png","./src/img/tutorial/itx-report-export-popup.png","./src/img/tutorial/itx-report-generate-button.png","./src/img/tutorial/itx-report-location-setup.png","./src/img/tutorial/itx-report-plot.png","./src/img/tutorial/ktx-current-data-bin-details-bin-dropdown.png","./src/img/tutorial/ktx-current-data-bin-details-measure.png","./src/img/tutorial/ktx-current-data-bin-details-read-button.png","./src/img/tutorial/ktx-current-data-bin-details-temperature-legend.png","./src/img/tutorial/ktx-current-data-bin-details-unit-button.png","./src/img/tutorial/ktx-current-data-bin-export-button.png","./src/img/tutorial/ktx-current-data-export-popup-bin-tree-admin.png","./src/img/tutorial/ktx-current-data-export-popup-bin-tree-user.png","./src/img/tutorial/ktx-current-data-export-popup-download-button-admin.png","./src/img/tutorial/ktx-current-data-export-popup-download-button-user.png","./src/img/tutorial/ktx-current-data-location-dropdown-admin.png","./src/img/tutorial/ktx-current-data-location-dropdown-user.png","./src/img/tutorial/ktx-current-data-location-export-button-admin.png","./src/img/tutorial/ktx-current-data-location-export-button-user.png","./src/img/tutorial/ktx-current-data-location-select-menu-admin.png","./src/img/tutorial/ktx-current-data-location-select-menu-user.png","./src/img/tutorial/ktx-current-data-location-select-schema-admin.png","./src/img/tutorial/ktx-current-data-location-select-schema-user.png","./src/img/tutorial/ktx-current-data-scedule-button.png","./src/img/tutorial/ktx-current-data-scedule-popup.png","./src/img/tutorial/ktx-current-data-temperature-button.png","./src/img/tutorial/ktx-current-data-temperature-popup.png","./src/img/tutorial/ktx-current-data-view-all-cables-button-admin.png","./src/img/tutorial/ktx-current-data-view-all-cables-button-user.png","./src/img/tutorial/ktx-current-data-view-all-cables-page.png","./src/img/tutorial/ktx-historical-data-date-dropdown.png","./src/img/tutorial/ktx-historical-data-export-button.png","./src/img/tutorial/ktx-historical-data-location-tree.png","./src/img/tutorial/ktx-historical-data-specific-date-and-measuring.png","./src/img/tutorial/ktx-notification-active-button.png","./src/img/tutorial/ktx-notification-active-info-bin-details.png","./src/img/tutorial/ktx-notification-active-info-button.png","./src/img/tutorial/ktx-notification-date-setup.png","./src/img/tutorial/ktx-notification-export-alert-type.png","./src/img/tutorial/ktx-notification-export-bins.png","./src/img/tutorial/ktx-notification-export-button.png","./src/img/tutorial/ktx-notification-export-date.png","./src/img/tutorial/ktx-notification-filters.png","./src/img/tutorial/ktx-notification-history-alerts.png","./src/img/tutorial/location-management.png","./src/main.ts"],"names":[],"mappings":";;;;;;;;;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6E;;;;;;;;;;;;ACnSA;AAAe,yI;;;;;;;;;;;;ACAf;AAAe,2jBAA4f,qIAAqI,64BAA64B,mJAAmJ,y2BAAy2B,uIAAuI,41BAA41B,kLAAkL,6OAA6O,wBAAwB,8vBAA8vB,+KAA+K,kPAAkP,+BAA+B,wzCAAwzC,cAAc,kI;;;;;;;;;;;;ACAv7M;AAAe,kYAAmU,gCAAgC,goBAAgoB,uEAAuE,wbAAwb,wFAAwF,wWAAwW,4EAA4E,ofAAof,4FAA4F,6kDAA6kD,4EAA4E,4fAA4f,4FAA4F,gjLAAgjL,+EAA+E,0/BAA0/B,4EAA4E,gpBAAgpB,oFAAoF,2iBAA2iB,iFAAiF,ooBAAooB,iFAAiF,8hBAA8hB,8EAA8E,sOAAsO,o7CAAo7C,iDAAiD,kRAAkR,wCAAwC,2QAA2Q,qCAAqC,wQAAwQ,8CAA8C,oQAAoQ,8CAA8C,sVAAsV,8CAA8C,qFAAqF,uDAAuD,mVAAmV,2CAA2C,qFAAqF,oDAAoD,oTAAoT,iCAAiC,+nBAA+nB,+BAA+B,sWAAsW,+BAA+B,ooBAAooB,8BAA8B,6hB;;;;;;;;;;;;ACAlnoB;AAAe,6JAA8F,YAAY,2jCAA2jC,gRAAgR,mdAAmd,8JAA8J,2IAA2I,8DAA8D,0mBAA0mB,kKAAkK,iJAAiJ,uEAAuE,8eAA8e,ocAAoc,maAAma,gSAAgS,+CAA+C,kNAAkN,4CAA4C,22B;;;;;;;;;;;;ACApoK;AAAe,ozEAAqvE,0BAA0B,2zBAA2zB,yBAAyB,2yBAA2yB,2BAA2B,2zBAA2zB,0BAA0B,q/CAAq/C,4BAA4B,6DAA6D,qBAAqB,2MAA2M,+BAA+B,6DAA6D,wBAAwB,8e;;;;;;;;;;;;ACA/qN;AAAe,+H;;;;;;;;;;;;ACAf;AAAe,6LAA8H,iCAAiC,kBAAkB,OAAO,qDAAqD,mCAAmC,OAAO,ykN;;;;;;;;;;;;ACAtS;AAAe,+H;;;;;;;;;;;;ACAf;AAAe,wZAAyV,gCAAgC,44FAA44F,8NAA8N,YAAY,8OAA8O,+DAA+D,oMAAoM,8BAA8B,gUAAgU,8BAA8B,irBAAirB,gEAAgE,yGAAyG,8BAA8B,8c;;;;;;;;;;;;ACAnuK;AAAe,ujBAAwf,ilBAAilB,gBAAgB,o4BAAo4B,YAAY,wdAAwd,0BAA0B,4WAA4W,YAAY,sGAAsG,YAAY,6GAA6G,YAAY,gHAAgH,YAAY,2IAA2I,YAAY,kyBAAkyB,yDAAyD,4uBAA4uB,uCAAuC,qBAAqB,8DAA8D,uHAAuH,wBAAwB,qBAAqB,wBAAwB,iOAAiO,4EAA4E,mUAAmU,0BAA0B,qRAAqR,0BAA0B,mvB;;;;;;;;;;;;ACAtpM;AAAe,mMAAoI,qCAAqC,sBAAsB,SAAS,qDAAqD,uCAAuC,SAAS,4xFAA4xF,4EAA4E,szBAAszB,+BAA+B,2jBAA2jB,qCAAqC,8kBAA8kB,wGAAwG,u3CAAu3C,gCAAgC,q2E;;;;;;;;;;;;ACAtqN;AAAe,2H;;;;;;;;;;;;ACAf;AAAe,2H;;;;;;;;;;;;ACAf;AAAe,mMAAoI,qCAAqC,sBAAsB,SAAS,qDAAqD,uCAAuC,SAAS,w7PAAw7P,gCAAgC,yfAAyf,iCAAiC,2nCAA2nC,cAAc,uEAAuE,aAAa,mUAAmU,cAAc,uEAAuE,aAAa,4c;;;;;;;;;;;;ACAh7U;AAAe,mMAAoI,qCAAqC,sBAAsB,SAAS,qDAAqD,uCAAuC,SAAS,mSAAmS,yDAAyD,ukBAAukB,qBAAqB,0HAA0H,mDAAmD,ukBAAukB,qBAAqB,0HAA0H,mDAAmD,ukBAAukB,4HAA4H,2BAA2B,s+CAAs+C,+BAA+B,uKAAuK,sBAAsB,4uBAA4uB,+BAA+B,uKAAuK,sBAAsB,2uBAA2uB,+BAA+B,uKAAuK,sBAAsB,uPAAuP,yDAAyD,mhBAAmhB,wfAAwf,yDAAyD,ubAAub,qFAAqF,glEAAglE,iCAAiC,gnBAAgnB,6CAA6C,cAAc,8lBAA8lB,uCAAuC,KAAK,wBAAwB,ga;;;;;;;;;;;;ACAvxX;AAAe,mMAAoI,qCAAqC,sBAAsB,SAAS,qDAAqD,uCAAuC,SAAS,wRAAwR,2DAA2D,wkBAAwkB,oBAAoB,wHAAwH,+CAA+C,6iBAA6iB,mBAAmB,wHAAwH,+CAA+C,6iBAA6iB,mBAAmB,+IAA+I,kFAAkF,ohBAAohB,oBAAoB,iFAAiF,oBAAoB,gMAAgM,iiBAAiiB,+BAA+B,uKAAuK,sBAAsB,gRAAgR,8hBAA8hB,+BAA+B,uKAAuK,sBAAsB,uPAAuP,0DAA0D,0iBAA0iB,oBAAoB,u8CAAu8C,6ZAA6Z,6bAA6b,iCAAiC,gnBAAgnB,6CAA6C,cAAc,8lBAA8lB,uCAAuC,KAAK,wBAAwB,ga;;;;;;;;;;;;ACA5+T;AAAe,mMAAoI,qCAAqC,sBAAsB,SAAS,qDAAqD,uCAAuC,SAAS,2QAA2Q,2DAA2D,wkBAAwkB,oBAAoB,wHAAwH,2BAA2B,yhBAAyhB,0DAA0D,ubAAub,oBAAoB,qnCAAqnC,+BAA+B,uKAAuK,sBAAsB,4uBAA4uB,+BAA+B,uKAAuK,sBAAsB,+pBAA+pB,qDAAqD,+yEAA+yE,iCAAiC,gnBAAgnB,6CAA6C,cAAc,8lBAA8lB,uCAAuC,KAAK,wBAAwB,4Z;;;;;;;;;;;;ACAzhS;AAAe,mMAAoI,qCAAqC,sBAAsB,SAAS,qDAAqD,uCAAuC,SAAS,wRAAwR,yDAAyD,skBAAskB,oBAAoB,wHAAwH,2BAA2B,yhBAAyhB,yDAAyD,khBAAkhB,oBAAoB,spBAAspB,+BAA+B,uKAAuK,sBAAsB,67DAA67D,iCAAiC,gnBAAgnB,6CAA6C,cAAc,8lBAA8lB,uCAAuC,KAAK,wBAAwB,4Z;;;;;;;;;;;;ACA/oN;AAAe,mMAAoI,qCAAqC,sBAAsB,SAAS,qDAAqD,uCAAuC,SAAS,wRAAwR,0DAA0D,sfAAsf,2NAA2N,2BAA2B,oiBAAoiB,8CAA8C,ujBAAujB,4HAA4H,+CAA+C,weAAwe,2MAA2M,0DAA0D,kcAAkc,kmBAAkmB,iCAAiC,+mBAA+mB,sDAAsD,yCAAyC,meAAme,+BAA+B,uKAAuK,sBAAsB,2UAA2U,oiBAAoiB,+BAA+B,uKAAuK,sBAAsB,4SAA4S,kfAAkf,+BAA+B,uKAAuK,sBAAsB,yUAAyU,kfAAkf,+BAA+B,uKAAuK,sBAAsB,0qBAA0qB,0DAA0D,25FAA25F,sDAAsD,yCAAyC,qYAAqY,2aAA2a,0ZAA0Z,iZAAiZ,iCAAiC,gnBAAgnB,6CAA6C,cAAc,8lBAA8lB,uCAAuC,KAAK,wBAAwB,ga;;;;;;;;;;;;ACAhnf;AAAe,mMAAoI,qCAAqC,sBAAsB,SAAS,qDAAqD,uCAAuC,SAAS,wRAAwR,0DAA0D,2eAA2e,sBAAsB,oNAAoN,4BAA4B,yhBAAyhB,4BAA4B,yhBAAyhB,gDAAgD,4iBAA4iB,yIAAyI,gDAAgD,4iBAA4iB,yIAAyI,2DAA2D,ubAAub,sBAAsB,oNAAoN,mCAAmC,+xCAA+xC,4DAA4D,wvBAAwvB,0DAA0D,ysBAAysB,kCAAkC,qzHAAqzH,iCAAiC,gnBAAgnB,6CAA6C,cAAc,ujBAAujB,uCAAuC,KAAK,wBAAwB,ieAAie,yJAAyJ,kiBAAkiB,+BAA+B,uKAAuK,sBAAsB,gRAAgR,iiBAAiiB,+BAA+B,uKAAuK,sBAAsB,gRAAgR,kfAAkf,+BAA+B,uKAAuK,sBAAsB,gRAAgR,kfAAkf,+BAA+B,uKAAuK,sBAAsB,6SAA6S,+ZAA+Z,6ZAA6Z,+WAA+W,iU;;;;;;;;;;;;ACAn6kB;AAAe,m6L;;;;;;;;;;;;ACAf;AAAe,saAAuW,gCAAgC,ygHAAygH,2SAA2S,YAAY,yTAAyT,8DAA8D,4PAA4P,8BAA8B,oWAAoW,8BAA8B,ivBAAivB,gEAAgE,mLAAmL,8BAA8B,gd;;;;;;;;;;;;ACA3uM;AAAe,gHAAiD,oFAAoF,m1CAAm1C,oJAAoJ,+BAA+B,YAAY,ySAAyS,iCAAiC,qbAAqb,gCAAgC,q7BAAq7B,iDAAiD,6lBAA6lB,wEAAwE,uRAAuR,4BAA4B,q5FAAq5F,6EAA6E,mU;;;;;;;;;;;;ACAr2O;AAAe,6bAA8X,kBAAkB,ogCAAogC,+JAA+J,yMAAyM,yIAAyI,mLAAmL,uBAAuB,8L;;;;;;;;;;;;ACA9lE;AAAe,0MAA2I,gCAAgC,grBAAgrB,cAAc,mKAAmK,cAAc,4WAA4W,wDAAwD,gPAAgP,6BAA6B,mBAAmB,6BAA6B,mOAAmO,+EAA+E,sE;;;;;;;;;;;;ACA5jE;AAAe,6NAA8J,iBAAiB,mhBAAmhB,kBAAkB,ojCAAojC,kBAAkB,0sB;;;;;;;;;;;;ACAzyD;AAAe,mlBAAohB,wBAAwB,0vCAA0vC,gCAAgC,4VAA4V,aAAa,2HAA2H,iBAAiB,+QAA+Q,cAAc,+QAA+Q,cAAc,mEAAmE,kBAAkB,4EAA4E,oCAAoC,iLAAiL,+CAA+C,gHAAgH,sCAAsC,qLAAqL,iDAAiD,kd;;;;;;;;;;;;ACArqH;AAAe,8iBAA+e,oCAAoC,kXAAkX,mEAAmE,qyBAAqyB,yBAAyB,mPAAmP,oJAAoJ,6BAA6B,YAAY,0RAA0R,gCAAgC,0ZAA0Z,8BAA8B,8jCAA8jC,kCAAkC,0xCAA0xC,cAAc,2oBAA2oB,0BAA0B,wQAAwQ,+DAA+D,uGAAuG,cAAc,oJAAoJ,mdAAmd,+DAA+D,wFAAwF,6CAA6C,6EAA6E,sCAAsC,iKAAiK,6CAA6C,yIAAyI,uCAAuC,kFAAkF,wBAAwB,sEAAsE,wBAAwB,83BAA83B,eAAe,kQAAkQ,iBAAiB,iPAAiP,wVAAwV,8BAA8B,yS;;;;;;;;;;;;ACA3oT;AAAe,0JAA2F,qbAAqb,YAAY,6fAA6f,0BAA0B,sUAAsU,0BAA0B,2WAA2W,YAAY,uUAAuU,YAAY,8cAA8c,iKAAiK,qJAAqJ,uEAAuE,KAAK,sFAAsF,+jBAA+jB,wFAAwF,0aAA0a,4CAA4C,0RAA0R,sHAAsH,wGAAwG,6CAA6C,mRAAmR,yGAAyG,iFAAiF,6CAA6C,iWAAiW,6FAA6F,iEAAiE,6CAA6C,8PAA8P,+FAA+F,mEAAmE,6CAA6C,2RAA2R,gBAAgB,8EAA8E,wc;;;;;;;;;;;;ACAhhN;AAAe,id;;;;;;;;;;;;ACAf;AAAe,2MAA4I,2BAA2B,sPAAsP,mGAAmG,gBAAgB,sY;;;;;;;;;;;;ACA/hB;AAAe,i7BAAk3B,6HAA6H,gpDAAgpD,sHAAsH,qrBAAqrB,oHAAoH,0rBAA0rB,6FAA6F,8mBAA8mB,mGAAmG,u1BAAu1B,8HAA8H,uuBAAuuB,6GAA6G,mqBAAmqB,6GAA6G,uqBAAuqB,mGAAmG,2nB;;;;;;;;;;;;ACAx1Q;AAAe,wcAAyY,aAAa,aAAa,4BAA4B,6FAA6F,aAAa,aAAa,6BAA6B,2rBAA2rB,4BAA4B,uDAAuD,6BAA6B,qTAAqT,8BAA8B,uDAAuD,2BAA2B,sjBAAsjB,YAAY,6VAA6V,oBAAoB,qI;;;;;;;;;;;;ACAruF;AAAe,4hBAA6d,eAAe,qOAAqO,eAAe,gwBAAgwB,0DAA0D,cAAc,8HAA8H,uGAAuG,yBAAyB,q5BAAq5B,wBAAwB,qFAAqF,KAAK,yIAAyI,qBAAqB,0FAA0F,wBAAwB,4dAA4d,wBAAwB,85BAA85B,oCAAoC,yiBAAyiB,iCAAiC,4iCAA4iC,0BAA0B,2nBAA2nB,iCAAiC,oXAAoX,yCAAyC,gKAAgK,0BAA0B,y8E;;;;;;;;;;;;ACAr4O;AAAe,yOAA0K,2CAA2C,+BAA+B,6BAA6B,wDAAwD,GAAG,qBAAqB,4B;;;;;;;;;;;;ACAhX;AAAe,qJAAsF,maAAma,YAAY,ofAAof,0BAA0B,2ZAA2Z,YAAY,8HAA8H,YAAY,gIAAgI,YAAY,iLAAiL,YAAY,upBAAupB,2FAA2F,mFAAmF,4CAA4C,kUAAkU,mSAAmS,+EAA+E,6EAA6E,iKAAiK,mCAAmC,oLAAoL,mCAAmC,qDAAqD,mCAAmC,6KAA6K,wBAAwB,qBAAqB,wBAAwB,yQAAyQ,0EAA0E,8Q;;;;;;;;;;;;ACAtkJ;AAAe,mb;;;;;;;;;;;;ACAf;AAAe,qJAAsF,8dAA8d,YAAY,gfAAgf,0BAA0B,sZAAsZ,YAAY,gIAAgI,YAAY,iLAAiL,YAAY,+lBAA+lB,uEAAuE,qDAAqD,yEAAyE,+KAA+K,uEAAuE,qBAAqB,yEAAyE,iLAAiL,sGAAsG,6EAA6E,iDAAiD,4SAA4S,wGAAwG,+EAA+E,6FAA6F,6UAA6U,uCAAuC,qBAAqB,uCAAuC,iJAAiJ,wBAAwB,qBAAqB,wBAAwB,yQAAyQ,yEAAyE,0R;;;;;;;;;;;;ACAz2J;AAAe,4uB;;;;;;;;;;;;ACAf;AAAe,yiBAA0e,YAAY,gfAAgf,0BAA0B,sZAAsZ,YAAY,gIAAgI,YAAY,iLAAiL,YAAY,8lBAA8lB,+CAA+C,wBAAwB,qBAAqB,wBAAwB,2KAA2K,+CAA+C,uEAAuE,KAAK,yEAAyE,0KAA0K,+CAA+C,sEAAsE,KAAK,uEAAuE,yKAAyK,wEAAwE,KAAK,4EAA4E,0LAA0L,oGAAoG,uGAAuG,gDAAgD,mTAAmT,sGAAsG,yGAAyG,gDAAgD,2RAA2R,+CAA+C,wCAAwC,qBAAqB,wCAAwC,4IAA4I,+CAA+C,yBAAyB,qBAAqB,yBAAyB,yQAAyQ,iFAAiF,sR;;;;;;;;;;;;ACA19K;AAAe,keAAma,iGAAiG,6IAA6I,qLAAqL,0R;;;;;;;;;;;;ACAr1B;AAAe,2tCAA4pC,kBAAkB,swCAAswC,YAAY,spBAAspB,0BAA0B,ybAAyb,YAAY,4IAA4I,YAAY,iMAAiM,YAAY,4tBAA4tB,4CAA4C,KAAK,4CAA4C,+jBAA+jB,+CAA+C,KAAK,+CAA+C,ynBAAynB,yBAAyB,qBAAqB,yBAAyB,smCAAsmC,0BAA0B,ibAAib,YAAY,qkCAAqkC,8BAA8B,saAAsa,mEAAmE,IAAI,gDAAgD,69BAA69B,sGAAsG,0qBAA0qB,qOAAqO,4gBAA4gB,0CAA0C,mlCAAmlC,iCAAiC,wDAAwD,gCAAgC,6LAA6L,sDAAsD,yDAAyD,yIAAyI,yQAAyQ,mIAAmI,4FAA4F,sKAAsK,goCAAgoC,0BAA0B,ibAAib,YAAY,mlBAAmlB,kDAAkD,wDAAwD,iDAAiD,6LAA6L,0CAA0C,wDAAwD,0CAA0C,sNAAsN,kGAAkG,wDAAwD,oIAAoI,oPAAoP,8BAA8B,uRAAuR,uDAAuD,IAAI,oCAAoC,6WAA6W,2FAA2F,8oD;;;;;;;;;;;;ACA1ukB;AAAe,8aAA+W,0BAA0B,0DAA0D,mHAAmH,wLAAwL,YAAY,kkBAAkkB,0BAA0B,4WAA4W,YAAY,sGAAsG,YAAY,sGAAsG,YAAY,2IAA2I,YAAY,2kBAA2kB,qCAAqC,wBAAwB,qBAAqB,wBAAwB,y5BAAy5B,qCAAqC,sBAAsB,qBAAqB,sBAAsB,4HAA4H,qCAAqC,yBAAyB,qBAAqB,yBAAyB,mpBAAmpB,SAAS,2bAA2b,cAAc,2bAA2b,cAAc,2bAA2b,cAAc,mhB;;;;;;;;;;;;ACA3+L;AAAe,2NAA4J,aAAa,iDAAiD,aAAa,0U;;;;;;;;;;;;ACAtP;AAAe,ihBAAkd,oCAAoC,sYAAsY,sDAAsD,+vBAA+vB,yBAAyB,mPAAmP,oJAAoJ,6BAA6B,YAAY,0RAA0R,gCAAgC,0ZAA0Z,8BAA8B,8jCAA8jC,kCAAkC,wuCAAwuC,cAAc,2oBAA2oB,0BAA0B,wQAAwQ,+DAA+D,uGAAuG,cAAc,oJAAoJ,mdAAmd,+DAA+D,wJAAwJ,sCAAsC,8BAA8B,6CAA6C,iKAAiK,6CAA6C,yIAAyI,uCAAuC,2IAA2I,wBAAwB,k3BAAk3B,eAAe,kQAAkQ,iBAAiB,kNAAkN,wVAAwV,8BAA8B,mS;;;;;;;;;;;;ACA99S;AAAe,mgBAAoc,6BAA6B,+TAA+T,yoCAAyoC,gBAAgB,owCAAowC,mGAAmG,gGAAgG,kFAAkF,iOAAiO,cAAc,KAAK,cAAc,oDAAoD,8JAA8J,iDAAiD,sgBAAsgB,kBAAkB,KAAK,kBAAkB,gRAAgR,oIAAoI,GAAG,iDAAiD,2QAA2Q,0GAA0G,GAAG,iDAAiD,2NAA2N,oGAAoG,GAAG,iDAAiD,iQAAiQ,0EAA0E,GAAG,yCAAyC,oQAAoQ,0FAA0F,GAAG,uDAAuD,qvB;;;;;;;;;;;;ACAxgN;AAAe,4GAA6C,oFAAoF,60CAA60C,oJAAoJ,+BAA+B,YAAY,ySAAyS,gCAAgC,qbAAqb,8BAA8B,q7BAAq7B,6BAA6B,2nBAA2nB,8BAA8B,mTAAmT,aAAa,+IAA+I,0BAA0B,wnDAAwnD,6CAA6C,8aAA8a,wCAAwC,uqCAAuqC,wDAAwD,gY;;;;;;;;;;;;ACAt2P;AAAe,6JAA8F,weAAwe,YAAY,seAAse,0BAA0B,wUAAwU,0BAA0B,+UAA+U,cAAc,uUAAuU,cAAc,yyBAAyyB,yCAAyC,KAAK,yCAAyC,8LAA8L,8CAA8C,KAAK,8CAA8C,+IAA+I,wBAAwB,KAAK,wBAAwB,2fAA2f,iKAAiK,kEAAkE,wCAAwC,0PAA0P,mKAAmK,iEAAiE,2CAA2C,6OAA6O,qKAAqK,mEAAmE,2CAA2C,gZAAgZ,gBAAgB,8EAA8E,8O;;;;;;;;;;;;ACArtL;AAAe,+MAAgJ,eAAe,+VAA+V,kCAAkC,yH;;;;;;;;;;;;ACA/iB;AAAe,0JAA2F,uaAAua,cAAc,yfAAyf,0BAA0B,0UAA0U,0BAA0B,+UAA+U,cAAc,uUAAuU,cAAc,gZAAgZ,wBAAwB,qEAAqE,wBAAwB,yEAAyE,wBAAwB,iHAAiH,wBAAwB,gjBAAgjB,4IAA4I,2YAA2Y,2CAA2C,oPAAoP,8KAA8K,iFAAiF,4CAA4C,mPAAmP,qKAAqK,iEAAiE,4CAA4C,+TAA+T,2MAA2M,oFAAoF,gFAAgF,2QAA2Q,gDAAgD,8IAA8I,oZ;;;;;;;;;;;;ACApkM;AAAe,qiB;;;;;;;;;;;;ACAf;AAAe,8MAA+I,iBAAiB,2gBAA2gB,oBAAoB,i6DAAi6D,oBAAoB,qzGAAqzG,iEAAiE,wLAAwL,8CAA8C,2NAA2N,uBAAuB,ytBAAytB,+CAA+C,uYAAuY,cAAc,kKAAkK,qCAAqC,yCAAyC,qCAAqC,qYAAqY,8GAA8G,mMAAmM,+BAA+B,mCAAmC,iQAAiQ,mCAAmC,kaAAka,0BAA0B,kUAAkU,mBAAmB,kBAAkB,ulBAAulB,uCAAuC,2Y;;;;;;;;;;;;ACAh0U;AAAe,yqCAA0mC,+BAA+B,swCAAswC,kCAAkC,6XAA6X,gCAAgC,0rCAA0rC,sCAAsC,qyBAAqyB,uBAAuB,+7B;;;;;;;;;;;;ACAz3J;AAAe,0NAA2J,iBAAiB,8mBAA8mB,gCAAgC,ksCAAksC,qBAAqB,qvDAAqvD,+CAA+C,+fAA+f,cAAc,gOAAgO,qCAAqC,+DAA+D,qCAAqC,6fAA6f,kIAAkI,gOAAgO,qDAAqD,kCAAkC,mXAAmX,mCAAmC,ocAAoc,0BAA0B,iDAAiD,0BAA0B,4aAA4a,mBAAmB,kBAAkB,+xB;;;;;;;;;;;;ACAhgO;AAAe,qvBAAsrB,0BAA0B,kEAAkE,+BAA+B,kRAAkR,uHAAuH,mBAAmB,gEAAgE,mBAAmB,sMAAsM,mBAAmB,uCAAuC,yDAAyD,oEAAoE,qBAAqB,0EAA0E,0BAA0B,yjBAAyjB,6BAA6B,0PAA0P,4FAA4F,wBAAwB,8DAA8D,wBAAwB,8MAA8M,wBAAwB,qCAAqC,+DAA+D,kJAAkJ,wBAAwB,65CAA65C,+DAA+D,ijBAAijB,iBAAiB,omBAAomB,gCAAgC,keAAke,iBAAiB,yKAAyK,0BAA0B,qYAAqY,YAAY,kKAAkK,mCAAmC,yCAAyC,mCAAmC,+UAA+U,uIAAuI,sHAAsH,+BAA+B,kCAAkC,yWAAyW,0BAA0B,iGAAiG,wBAAwB,0sBAA0sB,yFAAyF,uoBAAuoB,aAAa,iCAAiC,oBAAoB,gLAAgL,aAAa,qCAAqC,6CAA6C,wDAAwD,sBAAsB,gEAAgE,sBAAsB,+O;;;;;;;;;;;;ACAr1U;AAAe,6iBAA8e,oCAAoC,uZAAuZ,iEAAiE,+vBAA+vB,yBAAyB,mPAAmP,oJAAoJ,6BAA6B,YAAY,0RAA0R,gCAAgC,0ZAA0Z,8BAA8B,+jCAA+jC,kCAAkC,0xCAA0xC,cAAc,2oBAA2oB,0BAA0B,wQAAwQ,+DAA+D,uGAAuG,cAAc,oJAAoJ,mdAAmd,+DAA+D,wFAAwF,6CAA6C,6EAA6E,sCAAsC,iKAAiK,6CAA6C,kFAAkF,uCAAuC,qFAAqF,uCAAuC,kFAAkF,wBAAwB,sEAAsE,wBAAwB,k5BAAk5B,eAAe,kQAAkQ,iBAAiB,+NAA+N,yVAAyV,8BAA8B,6R;;;;;;;;;;;;ACAhtT;AAAe,0JAA2F,saAAsa,YAAY,6fAA6f,0BAA0B,sUAAsU,0BAA0B,sTAAsT,YAAY,uUAAuU,YAAY,gZAAgZ,wBAAwB,qEAAqE,wBAAwB,yEAAyE,wBAAwB,4FAA4F,wBAAwB,geAAge,kHAAkH,mEAAmE,6CAA6C,qeAAqe,4HAA4H,4cAA4c,4CAA4C,ikBAAikB,yGAAyG,mFAAmF,qEAAqE,0QAA0Q,yGAAyG,iEAAiE,6CAA6C,yPAAyP,+FAA+F,mEAAmE,6CAA6C,mXAAmX,gBAAgB,8EAA8E,+K;;;;;;;;;;;;ACAztN;AAAe,yxC;;;;;;;;;;;;ACAf;AAAe,0JAA2F,saAAsa,YAAY,seAAse,0BAA0B,sUAAsU,0BAA0B,sTAAsT,YAAY,uUAAuU,YAAY,kXAAkX,wBAAwB,KAAK,wBAAwB,iiBAAiiB,6FAA6F,iEAAiE,6CAA6C,+OAA+O,uLAAuL,oFAAoF,wEAAwE,2RAA2R,gBAAgB,8EAA8E,qK;;;;;;;;;;;;ACA/lI;AAAe,yxB;;;;;;;;;;;;ACAf;AAAe,wKAAyG,6QAA6Q,0VAA0V,iHAAiH,8CAA8C,ofAAof,4BAA4B,2DAA2D,cAAc,iOAAiO,4CAA4C,8MAA8M,6DAA6D,uK;;;;;;;;;;;;ACA/+D;AAAe,0MAA2I,QAAQ,0QAA0Q,wKAAwK,6SAA6S,uBAAuB,odAAod,8KAA8K,yVAAyV,kEAAkE,qdAAqd,6QAA6Q,y9BAAy9B,8BAA8B,+GAA+G,uSAAuS,uvDAAuvD,gFAAgF,sKAAsK,0SAA0S,swDAAswD,iFAAiF,+GAA+G,kRAAkR,m7BAAm7B,yEAAyE,2JAA2J,4QAA4Q,+nDAA+nD,mEAAmE,wIAAwI,0NAA0N,yrDAAyrD,sEAAsE,yLAAyL,mTAAmT,k0DAAk0D,gFAAgF,wIAAwI,oPAAoP,+2DAA+2D,mFAAmF,4TAA4T,cAAc,6E;;;;;;;;;;;;ACA/tlB;AAAe,oLAAqH,QAAQ,8EAA8E,WAAW,uS;;;;;;;;;;;;ACArO;AAAe,oLAAqH,YAAY,mZ;;;;;;;;;;;;ACAhJ;AAAe,8WAA+S,0KAA0K,wW;;;;;;;;;;;;ACAxe;AAAe,iVAAkR,2KAA2K,yPAAyP,iKAAiK,sPAAsP,2KAA2K,gaAAga,yBAAyB,uH;;;;;;;;;;;;ACAhsD;AAAe,uNAAwJ,cAAc,mFAAmF,2qB;;;;;;;;;;;;ACAxQ;AAAe,mqCAAomC,6EAA6E,+LAA+L,gCAAgC,8G;;;;;;;;;;;;ACA/5C;AAAe,qMAAsI,2DAA2D,4PAA4P,kHAAkH,ufAAuf,YAAY,uTAAuT,iBAAiB,wbAAwb,mSAAmS,wlCAAwlC,mRAAmR,q8BAAq8B,0LAA0L,o6BAAo6B,0LAA0L,s/BAAs/B,2KAA2K,mPAAmP,yBAAyB,kmBAAkmB,sKAAsK,osBAAosB,0OAA0O,qmDAAqmD,iEAAiE,0HAA0H,0LAA0L,g9BAAg9B,oEAAoE,uKAAuK,mPAAmP,4pDAA4pD,oEAAoE,0HAA0H,gMAAgM,w2BAAw2B,uEAAuE,uKAAuK,4PAA4P,usDAAusD,uEAAuE,0HAA0H,sMAAsM,43BAA43B,0EAA0E,iOAAiO,8BAA8B,kK;;;;;;;;;;;;ACAtxlB;AAAe,kGAAmC,yBAAyB,4EAA4E,iBAAiB,oM;;;;;;;;;;;;ACAxK;AAAe,mMAAoI,8CAA8C,6PAA6P,gNAAgN,8iCAA8iC,sCAAsC,mE;;;;;;;;;;;;ACAluD;AAAe,ypB;;;;;;;;;;;;ACAf;AAAe,sbAAuX,8NAA8N,0xCAA0xC,sNAAsN,6yB;;;;;;;;;;;;ACAplE;AAAe,8kB;;;;;;;;;;;;ACAf;AAAe,mdAAoZ,sNAAsN,m0BAAm0B,mNAAmN,2zBAA2zB,sNAAsN,kyB;;;;;;;;;;;;ACAhqF;AAAe,obAAqX,4NAA4N,mvCAAmvC,qNAAqN,0rBAA0rB,qNAAqN,0rBAA0rB,qNAAqN,4zB;;;;;;;;;;;;ACAt0H;AAAe,8lB;;;;;;;;;;;;ACAf;AAAe,ydAA0Z,qOAAqO,29BAA29B,kOAAkO,68BAA68B,kIAAkI,q1BAAq1B,oIAAoI,q1BAAq1B,gJAAgJ,ggE;;;;;;;;;;;;ACAx1J;AAAe,iyDAAkuD,8BAA8B,+F;;;;;;;;;;;;ACA/wD;AAAe,ywDAA0sD,8BAA8B,+F;;;;;;;;;;;;ACAvvD;AAAe,0RAA2N,KAAK,kBAAkB,yFAAyF,KAAK,oBAAoB,0IAA0I,mBAAmB,+FAA+F,oBAAoB,0D;;;;;;;;;;;;ACAnoB;AAAe,0NAA2J,eAAe,iGAAiG,oBAAoB,yEAAyE,uBAAuB,oEAAoE,sQAAsQ,yBAAyB,gCAAgC,6BAA6B,8CAA8C,uBAAuB,2HAA2H,+IAA+I,mCAAmC,qCAAqC,0DAA0D,6DAA6D,yDAAyD,8BAA8B,+MAA+M,kGAAkG,YAAY,mQAAmQ,2BAA2B,0XAA0X,0BAA0B,weAAwe,YAAY,iNAAiN,YAAY,0cAA0c,kBAAkB,oRAAoR,+bAA+b,oBAAoB,wRAAwR,8BAA8B,4RAA4R,mBAAmB,qBAAqB,mBAAmB,2KAA2K,uDAAuD,wCAAwC,4DAA4D,uCAAuC,qJAAqJ,uDAAuD,wBAAwB,qBAAqB,wBAAwB,yVAAyV,6IAA6I,itBAAitB,8BAA8B,4Q;;;;;;;;;;;;ACAtvN;AAAe,yMAA0I,sCAAsC,oPAAoP,2IAA2I,uwBAAuwB,iMAAiM,23BAA23B,0cAA0c,ktCAAktC,iMAAiM,yzBAAyzB,4JAA4J,20BAA20B,gQAAgQ,+4BAA+4B,2gBAA2gB,4uCAA4uC,gQAAgQ,00BAA00B,4JAA4J,8yBAA8yB,wCAAwC,oG;;;;;;;;;;;;ACAh8V;AAAe,qmB;;;;;;;;;;;;ACAf;AAAe,2eAA4a,8KAA8K,2wBAA2wB,kLAAkL,01BAA01B,8KAA8K,k0BAAk0B,qOAAqO,o4BAAo4B,yDAAyD,6iBAA6iB,0BAA0B,iPAAiP,mPAAmP,66BAA66B,0DAA0D,skBAAskB,0BAA0B,oJAAoJ,oNAAoN,yiCAAyiC,0DAA0D,0kBAA0kB,sBAAsB,6MAA6M,uPAAuP,25BAA25B,wDAAwD,4jBAA4jB,0BAA0B,oJAAoJ,qMAAqM,s/BAAs/B,2DAA2D,+kBAA+kB,sBAAsB,6MAA6M,iSAAiS,4gCAA4gC,sEAAsE,koBAAkoB,0BAA0B,oJAAoJ,4OAA4O,knCAAknC,yEAAyE,qpBAAqpB,sBAAsB,6MAA6M,2RAA2R,0/BAA0/B,oEAAoE,wnBAAwnB,0BAA0B,oJAAoJ,iNAAiN,kmCAAkmC,uEAAuE,2oBAA2oB,sBAAsB,qSAAqS,2BAA2B,mT;;;;;;;;;;;;ACApvsB;AAAe,2GAA4C,yBAAyB,sf;;;;;;;;;;;;ACApF;AAAe,kjBAAmf,wBAAwB,gGAAgG,6GAA6G,cAAc,gBAAgB,kDAAkD,yGAAyG,gBAAgB,q8EAAq8E,gBAAgB,kuC;;;;;;;;;;;;ACAr4G;AAAe,4bAA6X,qOAAqO,m3BAAm3B,2BAA2B,qIAAqI,sLAAsL,oyBAAoyB,8KAA8K,mxBAAmxB,8OAA8O,4/BAA4/B,yDAAyD,yhBAAyhB,0BAA0B,mMAAmM,6PAA6P,ilCAAilC,0DAA0D,kjBAAkjB,0BAA0B,+JAA+J,oNAAoN,+mCAA+mC,6DAA6D,qkBAAqkB,sBAAsB,6QAA6Q,uPAAuP,8hCAA8hC,wDAAwD,wiBAAwiB,0BAA0B,+JAA+J,gNAAgN,0jCAA0jC,2DAA2D,2jBAA2jB,sBAAsB,uNAAuN,iSAAiS,srCAAsrC,sEAAsE,8mBAA8mB,0BAA0B,+JAA+J,4OAA4O,muCAAmuC,yEAAyE,ioBAAioB,sBAAsB,wNAAwN,2RAA2R,kqCAAkqC,oEAAoE,omBAAomB,0BAA0B,+JAA+J,oSAAoS,itCAAitC,uEAAuE,unBAAunB,sBAAsB,8qDAA8qD,8BAA8B,0S;;;;;;;;;;;;ACA56xB;AAAe,6SAA8O,+CAA+C,2T;;;;;;;;;;;;ACA5S;AAAe,sLAAuH,gDAAgD,sCAAsC,uBAAuB,8YAA8Y,gIAAgI,mJAAmJ,0GAA0G,kOAAkO,iLAAiL,kDAAkD,0HAA0H,mDAAmD,+JAA+J,gBAAgB,uEAAuE,8CAA8C,iEAAiE,yBAAyB,0EAA0E,wBAAwB,iiBAAiiB,8CAA8C,iEAAiE,cAAc,qEAAqE,kDAAkD,ipBAAipB,8CAA8C,qEAAqE,cAAc,yEAAyE,iDAAiD,8VAA8V,8CAA8C,qEAAqE,cAAc,yEAAyE,iDAAiD,0jBAA0jB,8CAA8C,qEAAqE,cAAc,yEAAyE,iDAAiD,gWAAgW,8CAA8C,qEAAqE,cAAc,yEAAyE,iDAAiD,gO;;;;;;;;;;;;ACA1tL;AAAe,qfAAsb,YAAY,2PAA2P,gBAAgB,+PAA+P,YAAY,2PAA2P,uBAAuB,2bAA2b,wBAAwB,gSAAgS,2BAA2B,gVAAgV,sBAAsB,8RAA8R,yBAAyB,gVAAgV,0DAA0D,uSAAuS,6DAA6D,gVAAgV,wDAAwD,qSAAqS,2DAA2D,4X;;;;;;;;;;;;ACA1nI;AAAe,gLAAiH,aAAa,mkBAAmkB,yBAAyB,8jEAA8jE,2EAA2E,wGAAwG,8BAA8B,wE;;;;;;;;;;;;ACAx/F;AAAe,ygBAA0c,mCAAmC,iCAAiC,0DAA0D,iNAAiN,mCAAmC,+BAA+B,0DAA0D,8MAA8M,iCAAiC,qEAAqE,8BAA8B,upBAAupB,YAAY,gkBAAgkB,0BAA0B,wcAAwc,YAAY,iMAAiM,YAAY,+iCAA+iC,qCAAqC,sfAAsf,mBAAmB,qBAAqB,mBAAmB,mLAAmL,wCAAwC,wDAAwD,uCAAuC,yJAAyJ,sDAAsD,mDAAmD,wBAAwB,qBAAqB,wBAAwB,muB;;;;;;;;;;;;ACA15K;AAAe,2MAA4I,0EAA0E,2NAA2N,uJAAuJ,oPAAoP,yBAAyB,4mBAA4mB,8LAA8L,62BAA62B,+KAA+K,01BAA01B,gNAAgN,grC;;;;;;;;;;;;ACAptH;AAAe,0MAA2I,uFAAuF,yhBAAyhB,gBAAgB,oSAAoS,kLAAkL,67BAA67B,oMAAoM,0kCAA0kC,0LAA0L,8iCAA8iC,wHAAwH,sdAAsd,YAAY,mVAAmV,eAAe,mdAAmd,6HAA6H,6qBAA6qB,4LAA4L,0qCAA0qC,iHAAiH,wLAAwL,gmCAAgmC,sLAAsL,qlCAAqlC,6OAA6O,69CAA69C,+IAA+I,+LAA+L,olCAAolC,2LAA2L,6mCAA6mC,mCAAmC,oqBAAoqB,8LAA8L,qgCAAqgC,oIAAoI,0eAA0e,YAAY,mVAAmV,eAAe,gdAAgd,sMAAsM,g/BAAg/B,gNAAgN,qlCAAqlC,yIAAyI,mnBAAmnB,wMAAwM,6qCAA6qC,iHAAiH,kMAAkM,omCAAomC,gMAAgM,ylCAAylC,mQAAmQ,+9CAA+9C,+IAA+I,+LAA+L,olCAAolC,2LAA2L,6mCAA6mC,mCAAmC,6NAA6N,+BAA+B,4NAA4N,uDAAuD,6FAA6F,kDAAkD,8I;;;;;;;;;;;;ACAz49B;AAAe,imB;;;;;;;;;;;;ACAf;AAAe,kqBAAmmB,QAAQ,4E;;;;;;;;;;;;ACA1nB;AAAe,8dAA+Z,yDAAyD,w/BAAw/B,sEAAsE,goBAAgoB,mDAAmD,yqBAAyqB,8DAA8D,iQAAiQ,sDAAsD,omBAAomB,0BAA0B,sa;;;;;;;;;;;;ACAp3H;AAAe,24BAA40B,8BAA8B,+F;;;;;;;;;;;;ACAz3B;AAAe,wMAAyI,uBAAuB,inBAAinB,6BAA6B,+VAA+V,cAAc,+lBAA+lB,wBAAwB,KAAK,wBAAwB,mGAAmG,KAAK,0HAA0H,+CAA+C,0HAA0H,mEAAmE,mvBAAmvB,yDAAyD,k/BAAk/B,mDAAmD,qnBAAqnB,+CAA+C,gkBAAgkB,8DAA8D,2QAA2Q,sDAAsD,gnBAAgnB,0BAA0B,2Y;;;;;;;;;;;;ACA10M;AAAe,2aAA4W,gIAAgI,mjBAAmjB,8HAA8H,0kBAA0kB,mIAAmI,wlBAAwlB,uIAAuI,01B;;;;;;;;;;;;ACAxlF;AAAe,2aAA4W,+PAA+P,mvCAAmvC,gNAAgN,2qCAA2qC,YAAY,miBAAmiB,YAAY,yaAAya,wBAAwB,qHAAqH,YAAY,+GAA+G,8BAA8B,6GAA6G,8BAA8B,scAAsc,4CAA4C,2WAA2W,gBAAgB,2BAA2B,sQ;;;;;;;;;;;;ACArgL;AAAe,+jB;;;;;;;;;;;;ACAf;AAAe,yLAA0H,aAAa,+QAA+Q,6MAA6M,g9BAAg9B,yMAAyM,g+BAAg+B,8BAA8B,0Y;;;;;;;;;;;;ACAzwF;AAAe,kMAAmI,UAAU,8CAA8C,gCAAgC,kGAAkG,gDAAgD,+IAA+I,YAAY,g7BAAg7B,6BAA6B,+VAA+V,cAAc,0bAA0b,4CAA4C,iMAAiM,wBAAwB,KAAK,wBAAwB,sHAAsH,mDAAmD,0HAA0H,+CAA+C,0HAA0H,mDAAmD,yHAAyH,8CAA8C,yMAAyM,0BAA0B,aAAa,+BAA+B,mEAAmE,4BAA4B,qOAAqO,yFAAyF,8OAA8O,wFAAwF,8E;;;;;;;;;;;;ACArsI;AAAe,4NAA6J,mEAAmE,iRAAiR,6JAA6J,wQAAwQ,yBAAyB,0qBAA0qB,6CAA6C,sGAAsG,+KAA+K,iaAAia,oKAAoK,84BAA84B,8CAA8C,6cAA6c,+JAA+J,0nFAA0nF,qLAAqL,i4BAAi4B,8BAA8B,mJAAmJ,wCAAwC,mK;;;;;;;;;;;;ACAh6P;AAAe,knCAAmjC,kDAAkD,6VAA6V,wCAAwC,kPAAkP,uCAAuC,kPAAkP,uCAAuC,4SAA4S,uBAAuB,qkIAAqkI,8CAA8C,wPAAwP,uBAAuB,ihCAAihC,YAAY,gLAAgL,mCAAmC,+CAA+C,mCAAmC,6YAA6Y,iJAAiJ,sHAAsH,qCAAqC,kCAAkC,6QAA6Q,iCAAiC,gbAAgb,wBAAwB,8UAA8U,iBAAiB,gBAAgB,wXAAwX,qCAAqC,uM;;;;;;;;;;;;ACA/wU;AAAe,kMAAmI,yBAAyB,yaAAya,gBAAgB,8IAA8I,uRAAuR,qqCAAqqC,kUAAkU,mtCAAmtC,4RAA4R,uuCAAuuC,wBAAwB,mJAAmJ,8BAA8B,oTAAoT,oBAAoB,mJ;;;;;;;;;;;;ACAvtL;AAAe,kjCAAm/B,iEAAiE,gKAAgK,gCAAgC,yF;;;;;;;;;;;;ACAnwC;AAAe,ukCAAwgC,YAAY,8YAA8Y,wBAAwB,sBAAsB,wBAAwB,mEAAmE,wBAAwB,mDAAmD,+CAA+C,mEAAmE,wBAAwB,8CAA8C,+CAA+C,mEAAmE,wBAAwB,6CAA6C,+CAA+C,mEAAmE,wBAAwB,6CAA6C,+CAA+C,mEAAmE,wBAAwB,6CAA6C,+CAA+C,mEAAmE,wBAAwB,8CAA8C,+CAA+C,mEAAmE,wBAAwB,iDAAiD,mCAAmC,iX;;;;;;;;;;;;ACAxvF;AAAe,0MAA2I,yBAAyB,gHAAgH,sbAAsb,YAAY,iiBAAiiB,0BAA0B,kWAAkW,0BAA0B,sVAAsV,YAAY,2WAA2W,YAAY,4aAA4a,wBAAwB,yCAAyC,wBAAwB,mEAAmE,wBAAwB,iEAAiE,kHAAkH,mEAAmE,wBAAwB,gEAAgE,kHAAkH,mEAAmE,wBAAwB,gEAAgE,kHAAkH,mEAAmE,wBAAwB,+DAA+D,uFAAuF,m4BAAm4B,kBAAkB,+HAA+H,uJ;;;;;;;;;;;;ACAv6J;AAAe,+jB;;;;;;;;;;;;ACAf;AAAe,8bAA+X,4NAA4N,iTAAiT,2lBAA2lB,sNAAsN,uSAAuS,83BAA83B,YAAY,miBAAmiB,YAAY,yaAAya,wBAAwB,qHAAqH,YAAY,mHAAmH,iCAAiC,GAAG,6GAA6G,iCAAiC,GAAG,scAAsc,4CAA4C,2WAA2W,gBAAgB,2BAA2B,68BAA68B,wLAAwL,0PAA0P,w9BAAw9B,2RAA2R,0LAA0L,uLAAuL,uPAAuP,0tDAA0tD,wLAAwL,kOAAkO,43BAA43B,mQAAmQ,wf;;;;;;;;;;;;ACA3mX;AAAe,mLAAoH,8DAA8D,+jBAA+jB,YAAY,qnBAAqnB,0BAA0B,kTAAkT,YAAY,oSAAoS,YAAY,4aAA4a,wBAAwB,yCAAyC,wBAAwB,mEAAmE,wBAAwB,iEAAiE,oFAAoF,mEAAmE,wBAAwB,gEAAgE,oFAAoF,mEAAmE,wBAAwB,gEAAgE,oFAAoF,mEAAmE,wBAAwB,+DAA+D,+FAA+F,g8BAAg8B,uCAAuC,uL;;;;;;;;;;;;ACA57I;AAAe,8gB;;;;;;;;;;;;ACAf;AAAe,6sBAA8oB,uBAAuB,4FAA4F,QAAQ,qF;;;;;;;;;;;;ACAxxB;AAAe,+d;;;;;;;;;;;;ACAf;AAAe,ypB;;;;;;;;;;;;ACAf;AAAe,mMAAoI,+BAA+B,gQAAgQ,8KAA8K,uKAAuK,sBAAsB,wkCAAwkC,wKAAwK,wKAAwK,sBAAsB,whCAAwhC,2IAA2I,wnBAAwnB,iLAAiL,44BAA44B,4LAA4L,g7BAAg7B,uLAAuL,g8BAAg8B,sMAAsM,67BAA67B,sMAAsM,w9BAAw9B,uLAAuL,q4BAAq4B,qNAAqN,s+BAAs+B,+BAA+B,+J;;;;;;;;;;;;ACA7zX;AAAe,2KAA4G,kCAAkC,4QAA4Q,kPAAkP,i9CAAi9C,qBAAqB,8G;;;;;;;;;;;;ACAjoE;AAAe,wnB;;;;;;;;;;;;ACAf;AAAe,2MAA4I,kCAAkC,mRAAmR,6PAA6P,w6BAAw6B,0PAA0P,u+D;;;;;;;;;;;;ACA/2D;AAAe,8QAA+M,WAAW,0HAA0H,mBAAmB,wD;;;;;;;;;;;;ACAtX;AAAe,ma;;;;;;;;;;;;ACAf;AAAe,iTAAkP,2CAA2C,8HAA8H,kBAAkB,4fAA4f,oCAAoC,yrCAAyrC,mCAAmC,+tCAA+tC,8BAA8B,goDAAgoD,yCAAyC,+rCAA+rC,uCAAuC,qvFAAqvF,4CAA4C,g8CAAg8C,+CAA+C,mtCAAmtC,gDAAgD,w6DAAw6D,4CAA4C,wiDAAwiD,+CAA+C,0nDAA0nD,kDAAkD,2iCAA2iC,oDAAoD,05CAA05C,qDAAqD,+mDAA+mD,0CAA0C,wiEAAwiE,uCAAuC,89IAA89I,qBAAqB,02EAA02E,8CAA8C,siCAAsiC,iDAAiD,mgCAAmgC,yCAAyC,+jHAA+jH,0CAA0C,0rDAA0rD,4CAA4C,s9CAAs9C,oDAAoD,m6CAAm6C,uDAAuD,+oDAA+oD,0CAA0C,2/DAA2/D,2CAA2C,0YAA0Y,qBAAqB,yCAAyC,oCAAoC,y3BAAy3B,uCAAuC,4mDAA4mD,2CAA2C,+8BAA+8B,yCAAyC,62DAA62D,sCAAsC,s/EAAs/E,sCAAsC,+zEAA+zE,oDAAoD,o7CAAo7C,wDAAwD,ypDAAypD,0CAA0C,2gEAA2gE,uCAAuC,okDAAokD,oCAAoC,gmC;;;;;;;;;;;;ACA1+7D;AAAe,8lBAA+hB,yFAAyF,+BAA+B,gEAAgE,4hCAA4hC,YAAY,gQAAgQ,2BAA2B,8VAA8V,0BAA0B,wcAAwc,YAAY,4IAA4I,YAAY,iMAAiM,YAAY,wzCAAwzC,8GAA8G,iKAAiK,kDAAkD,qNAAqN,yEAAyE,4FAA4F,yEAAyE,2UAA2U,sBAAsB,6LAA6L,0DAA0D,yDAAyD,0DAA0D,yLAAyL,sDAAsD,mDAAmD,wBAAwB,qBAAqB,wBAAwB,miB;;;;;;;;;;;;ACAx0M;AAAe,iRAAkN,eAAe,8DAA8D,cAAc,kpBAAkpB,0BAA0B,8bAA8b,YAAY,2iBAA2iB,wCAAwC,wDAAwD,wCAAwC,6JAA6J,wBAAwB,yBAAyB,wBAAwB,iiB;;;;;;;;;;;;ACA30E;AAAe,+MAAgJ,kFAAkF,wWAAwW,gBAAgB,sLAAsL,sHAAsH,i2BAAi2B,wCAAwC,yE;;;;;;;;;;;;ACA9xD;AAAe,+nBAAgkB,yBAAyB,gGAAgG,QAAQ,2F;;;;;;;;;;;;ACAhtB;AAAe,8QAA+M,0BAA0B,uIAAuI,2BAA2B,2uBAA2uB,eAAe,iQAAiQ,8BAA8B,6W;;;;;;;;;;;;ACAn7C;AAAe,olB;;;;;;;;;;;;ACAf;AAAe,oRAAqN,eAAe,uIAAuI,2BAA2B,yuBAAyuB,eAAe,+WAA+W,cAAc,4HAA4H,kRAAkR,k5BAAk5B,kSAAkS,m6BAAm6B,+RAA+R,+7BAA+7B,wBAAwB,iQAAiQ,8BAA8B,iQ;;;;;;;;;;;;ACApgL;AAAe,wrB;;;;;;;;;;;;ACAf;AAAe,0MAA2I,QAAQ,0QAA0Q,wKAAwK,6SAA6S,uBAAuB,odAAod,8KAA8K,yVAAyV,kEAAkE,qdAAqd,6QAA6Q,y9BAAy9B,8BAA8B,+GAA+G,uSAAuS,uvDAAuvD,4BAA4B,sKAAsK,0SAA0S,swDAAswD,4BAA4B,+GAA+G,kRAAkR,syCAAsyC,4BAA4B,2JAA2J,4QAA4Q,+nDAA+nD,4BAA4B,wIAAwI,0NAA0N,yrDAAyrD,wBAAwB,yLAAyL,mTAAmT,k0DAAk0D,4BAA4B,wIAAwI,oPAAoP,+2DAA+2D,wBAAwB,4TAA4T,cAAc,yE;;;;;;;;;;;;ACAxvlB;AAAe,mqB;;;;;;;;;;;;ACAf;AAAe,2GAA4C,yBAAyB,ghB;;;;;;;;;;;;ACApF;AAAe,gpBAAilB,wBAAwB,uFAAuF,6GAA6G,iBAAiB,gBAAgB,kDAAkD,uLAAuL,gBAAgB,4lEAA4lE,uCAAuC,mKAAmK,8BAA8B,quC;;;;;;;;;;;;ACA15G;AAAe,uWAAwS,kRAAkR,0tBAA0tB,wOAAwO,6WAA6W,oDAAoD,wdAAwd,uUAAuU,mOAAmO,gBAAgB,8yBAA8yB,8BAA8B,uLAAuL,+aAA+a,s+CAAs+C,4BAA4B,yKAAyK,2ZAA2Z,m/CAAm/C,4BAA4B,mHAAmH,2XAA2X,y/BAAy/B,4BAA4B,+JAA+J,+WAA+W,g3CAAg3C,4BAA4B,wIAAwI,gUAAgU,o8CAAo8C,wBAAwB,6LAA6L,maAAma,+mDAA+mD,4BAA4B,wIAAwI,uWAAuW,imDAAimD,wBAAwB,wcAAwc,cAAc,+iCAA+iC,sDAAsD,mVAAmV,eAAe,+UAA+U,oEAAoE,mDAAmD,yEAAyE,gWAAgW,sDAAsD,2VAA2V,eAAe,wcAAwc,4EAA4E,mDAAmD,yFAAyF,wWAAwW,sDAAsD,4SAA4S,eAAe,iZAAiZ,oEAAoE,mDAAmD,yEAAyE,oWAAoW,2GAA2G,qfAAqf,kNAAkN,mDAAmD,uDAAuD,mmBAAmmB,4GAA4G,sfAAsf,sNAAsN,mDAAmD,yDAAyD,smBAAsmB,+GAA+G,iTAAiT,eAAe,oSAAoS,0NAA0N,mDAAmD,+DAA+D,wmBAAwmB,0GAA0G,ofAAof,8MAA8M,mDAAmD,qDAAqD,6lBAA6lB,6GAA6G,+SAA+S,eAAe,oSAAoS,kNAAkN,mDAAmD,2DAA2D,knBAAknB,wHAAwH,qjBAAqjB,0SAA0S,mDAAmD,iFAAiF,kqBAAkqB,2HAA2H,uZAAuZ,eAAe,6PAA6P,8SAA8S,mDAAmD,uFAAuF,uqBAAuqB,sHAAsH,mjBAAmjB,iSAAiS,mDAAmD,6EAA6E,kpBAAkpB,yHAAyH,2TAA2T,eAAe,uVAAuV,sSAAsS,mDAAmD,kFAAkF,k1BAAk1B,eAAe,s6B;;;;;;;;;;;;ACAjrsC;AAAe,6SAA8O,+CAA+C,2T;;;;;;;;;;;;ACA5S;AAAe,sLAAuH,gDAAgD,sCAAsC,uBAAuB,oXAAoX,yGAAyG,oIAAoI,2FAA2F,kOAAkO,iLAAiL,uBAAuB,0HAA0H,wBAAwB,oIAAoI,gBAAgB,uEAAuE,8CAA8C,iEAAiE,yBAAyB,0EAA0E,wBAAwB,6lBAA6lB,8CAA8C,iEAAiE,cAAc,qEAAqE,wDAAwD,wQAAwQ,8CAA8C,iEAAiE,cAAc,qEAAqE,wDAAwD,icAAic,8CAA8C,iEAAiE,cAAc,qEAAqE,wDAAwD,0QAA0Q,8CAA8C,iEAAiE,cAAc,qEAAqE,wDAAwD,8L;;;;;;;;;;;;ACAx8I;AAAe,8hB;;;;;;;;;;;;ACAf;AAAe,gWAAiS,eAAe,8DAA8D,cAAc,uLAAuL,2BAA2B,44BAA44B,eAAe,8HAA8H,8BAA8B,4UAA4U,4CAA4C,qU;;;;;;;;;;;;ACA5gE;AAAe,oRAAqN,gCAAgC,qIAAqI,2BAA2B,8rBAA8rB,eAAe,0FAA0F,8BAA8B,mTAAmT,kEAAkE,sU;;;;;;;;;;;;ACA9lD;AAAe,qVAAsR,gBAAgB,qBAAqB,yBAAyB,+TAA+T,uBAAuB,oF;;;;;;;;;;;;ACAzrB;AAAe,sdAAuZ,kOAAkO,ijCAAijC,oNAAoN,26BAA26B,iNAAiN,8rC;;;;;;;;;;;;ACAzgG;AAAe,+bAAgY,2OAA2O,o/CAAo/C,qKAAqK,gTAAgT,cAAc,ycAAyc,0BAA0B,6H;;;;;;;;;;;;ACApjG;AAAe,0lB;;;;;;;;;;;;ACAf;AAAe,0gBAA2c,qKAAqK,gTAAgT,cAAc,21CAA21C,0BAA0B,kH;;;;;;;;;;;;ACAlzE;AAAe,iZAAkV,YAAY,qfAAqf,0BAA0B,sbAAsb,YAAY,4IAA4I,YAAY,iMAAiM,YAAY,+oBAA+oB,uEAAuE,yDAAyD,yEAAyE,2LAA2L,uEAAuE,yDAAyD,yEAAyE,6LAA6L,gGAAgG,iFAAiF,8CAA8C,wTAAwT,kGAAkG,sHAAsH,0FAA0F,0VAA0V,uCAAuC,qBAAqB,uCAAuC,qLAAqL,wEAAwE,KAAK,4EAA4E,6JAA6J,wBAAwB,qBAAqB,wBAAwB,ssB;;;;;;;;;;;;ACAl3J;AAAe,kLAAmH,YAAY,ydAAyd,0BAA0B,sZAAsZ,YAAY,gIAAgI,YAAY,iLAAiL,YAAY,+lBAA+lB,uEAAuE,qDAAqD,yEAAyE,+KAA+K,uEAAuE,qDAAqD,yEAAyE,iLAAiL,oGAAoG,6EAA6E,gDAAgD,0SAA0S,sGAAsG,8GAA8G,4FAA4F,4UAA4U,uCAAuC,qBAAqB,uCAAuC,iJAAiJ,wBAAwB,qBAAqB,wBAAwB,qjB;;;;;;;;;;;;ACArnI;AAAe,4b;;;;;;;;;;;;ACAf;AAAe,4jBAA6f,YAAY,ifAAif,0BAA0B,sZAAsZ,YAAY,gIAAgI,YAAY,2MAA2M,+BAA+B,qCAAqC,YAAY,sSAAsS,YAAY,+lBAA+lB,wBAAwB,qBAAqB,wBAAwB,gLAAgL,uEAAuE,KAAK,yEAAyE,+KAA+K,sEAAsE,KAAK,uEAAuE,0KAA0K,sEAAsE,KAAK,uEAAuE,yKAAyK,wEAAwE,KAAK,4EAA4E,iKAAiK,+CAA+C,yBAAyB,qBAAqB,yBAAyB,0LAA0L,kGAAkG,uGAAuG,2CAA2C,8SAA8S,mGAAmG,yGAAyG,2CAA2C,2RAA2R,wCAAwC,qBAAqB,wCAAwC,iJAAiJ,yBAAyB,qBAAqB,yBAAyB,qQAAqQ,2EAA2E,0P;;;;;;;;;;;;ACAxtM;AAAe,6cAA8Y,qCAAqC,iFAAiF,2HAA2H,oQ;;;;;;;;;;;;ACA9oB;AAAe,2GAA4C,qCAAqC,qdAAqd,cAAc,shD;;;;;;;;;;;;ACAnkB;AAAe,8sBAA+oB,0IAA0I,gkCAAgkC,YAAY,kcAAkc,cAAc,kI;;;;;;;;;;;;ACAp0E;AAAe,iiBAAke,6IAA6I,kPAAkP,wBAAwB,ytBAAytB,gLAAgL,uPAAuP,+BAA+B,k0CAAk0C,cAAc,0I;;;;;;;;;;;;ACAv3G;AAAe,2rgB;;;;;;;;;;;;ACAf;AAAe,sfAAub,4KAA4K,k8BAAk8B,iNAAiN,2OAA2O,sBAAsB,0pDAA0pD,cAAc,kI;;;;;;;;;;;;;;;;;;;;;;;;;ACA9qH,IAAY,gBAMX;AAND,WAAY,gBAAgB;IACxB,6DAAW;IACX,2DAAU;IACV,mEAAc;IACd,6DAAW;IACX,iEAAa;AACjB,CAAC,EANW,gBAAgB,KAAhB,gBAAgB,QAM3B;AAED,IAAY,aAGX;AAHD,WAAY,aAAa;IACrB,yDAAY;IACZ,mDAAS;AACb,CAAC,EAHW,aAAa,KAAb,aAAa,QAGxB;AAED,IAAY,eAGX;AAHD,WAAY,eAAe;IACvB,mEAAe;IACf,iEAAc;AAClB,CAAC,EAHW,eAAe,KAAf,eAAe,QAG1B;AAED,IAAY,WAIX;AAJD,WAAY,WAAW;IACnB,qDAAY;IACZ,uDAAa;IACb,6CAAQ;AACZ,CAAC,EAJW,WAAW,KAAX,WAAW,QAItB;AAED,IAAY,cAIX;AAJD,WAAY,cAAc;IACtB,qDAAS;IACT,qDAAS;IACT,uDAAU;AACd,CAAC,EAJW,cAAc,KAAd,cAAc,QAIzB;AAEM,MAAM,mBAAmB,GAAG;IAC/B,CAAC,cAAc,CAAC,KAAK,CAAC,EAAE;QACpB,IAAI,EAAE,CAAC;QACP,EAAE,EAAE,GAAG;KACV;IACD,CAAC,cAAc,CAAC,KAAK,CAAC,EAAE;QACpB,IAAI,EAAE,GAAG;QACT,EAAE,EAAE,IAAI;KACX;CACJ,CAAC;AAEK,MAAM,cAAc,GAAG;IAC1B,CAAC,cAAc,CAAC,MAAM,CAAC,EAAE;QACrB,aAAa,EAAE,EAAE;QACjB,cAAc,EAAE,EAAE;KACrB;IACD,CAAC,cAAc,CAAC,KAAK,CAAC,EAAE;QACpB,aAAa,EAAE,EAAE;QACjB,cAAc,EAAE,EAAE;KACrB;IACD,CAAC,cAAc,CAAC,KAAK,CAAC,EAAE;QACpB,aAAa,EAAE,EAAE;QACjB,cAAc,EAAE,EAAE;KACrB;CACJ,CAAC;AAEK,MAAM,cAAc,GAAG;IAC1B,CAAC,cAAc,CAAC,MAAM,CAAC,EAAE;QACrB,SAAS,EAAE,EAAE;QACb,gBAAgB,EAAE,GAAG;QACrB,iBAAiB,EAAE,EAAE;KACxB;IACD,CAAC,cAAc,CAAC,KAAK,CAAC,EAAE;QACpB,SAAS,EAAE,EAAE;QACb,gBAAgB,EAAE,GAAG;QACrB,iBAAiB,EAAE,EAAE;KACxB;IACD,CAAC,cAAc,CAAC,KAAK,CAAC,EAAE;QACpB,SAAS,EAAE,EAAE;QACb,gBAAgB,EAAE,GAAG;QACrB,iBAAiB,EAAE,EAAE;KACxB;CACJ,CAAC;AAEK,MAAM,YAAY,GAAG;IACxB,CAAC,cAAc,CAAC,MAAM,CAAC,EAAE;QACrB,aAAa,EAAE,EAAE;QACjB,cAAc,EAAE,GAAG;KACtB;IACD,CAAC,cAAc,CAAC,KAAK,CAAC,EAAE;QACpB,aAAa,EAAE,EAAE;QACjB,cAAc,EAAE,EAAE;KACrB;IACD,CAAC,cAAc,CAAC,KAAK,CAAC,EAAE;QACpB,aAAa,EAAE,EAAE;QACjB,cAAc,EAAE,GAAG;KACtB;CACJ,CAAC;;;;;;;;;;;;ACvFF;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;AACF;AACA,4CAA4C,WAAW;AACvD;AACA;AACA,4E;;;;;;;;;;;;;;;;;;;;;;;;ACZ0C;AAM1C,IAAa,YAAY,GAAzB,MAAa,YAAY;CACxB;AADY,YAAY;IAJxB,+DAAS,CAAC;QACT,QAAQ,EAAE,mBAAmB;QAC7B,mKAAmC;KACpC,CAAC;GACW,YAAY,CACxB;AADwB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACNiC;AACjB;AACI;AAC8B;AAC5B;AAEK;AACX;AAC4B;AACjC;AACW;AACY;AACF;AACf;AACgB;AA+B1D,IAAa,SAAS,GAAtB,MAAa,SAAS;CAAI;AAAb,SAAS;IA7BrB,8DAAQ,CAAC;QACR,YAAY,EAAE;YACZ,2DAAY;SACb;QACD,OAAO,EAAE;YACP,uEAAa,CAAC,oBAAoB,CAAC,EAAE,KAAK,EAAE,cAAc,EAAE,CAAC;YAC7D,qEAAgB;YAChB,0DAAW;YACX,oDAAY;YACZ,gDAAU;YACV,qDAAY;YACZ,uDAAa;YACb,wEAAqB;YACrB,sEAAoB;YACpB,iFAA0B;YAC1B,4DAAY,CAAC,OAAO,CAAC;gBACnB,EAAE,IAAI,EAAE,EAAE,EAAE,UAAU,EAAE,kDAAU,CAAC,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE;gBAC/D,EAAE,IAAI,EAAE,IAAI,EAAE,UAAU,EAAE,kDAAU,CAAC,OAAO,EAAE;aAC9C,CAAC;SACJ;QACD,SAAS,EAAC;YACR;gBACE,OAAO,EAAE,sEAAiB;gBAC1B,QAAQ,EAAE,uEAAe;gBACzB,KAAK,EAAE,IAAI;aACZ;SACF;QACD,SAAS,EAAE,CAAC,2DAAY,CAAC;KAC1B,CAAC;GACW,SAAS,CAAI;AAAJ;;;;;;;;;;;;;;;;;;;;;;;;;;AC7CmB;AAGuD;AAYhG,IAAa,YAAY,GAAzB,MAAa,YAAY;CAAI;AAAhB,YAAY;IAVxB,8DAAQ,CAAC;QACR,OAAO,EAAE,EACR;QACD,SAAS,EAAE;YACT,qDAAW;YACX,0DAAgB;YAChB,6DAAmB;YACnB,wDAAc;SACf;KACF,CAAC;GACW,YAAY,CAAI;AAAJ;;;;;;;;;;;;;;;;;;;ACflB,MAAM,SAAS;;AACK,kBAAQ,GAAW,MAAM,CAAC;AAEzB,qBAAW,GAAW,OAAO,CAAC;AAE9B,wBAAc,GAAW,UAAU,CAAC;AAEpC,wBAAc,GAAW,UAAU,CAAC;AAErD,cAAI,SAAG;KAIb;IAH0B,QAAK,GAAW,GAAG,SAAS,CAAC,WAAW,WAAY;IACpD,SAAM,GAAW,GAAG,SAAS,CAAC,WAAW,SAAU;IACnD,eAAY,GAAW,GAAG,SAAS,CAAC,WAAW,eAAgB;QACxF;AAEK,iBAAO,SAAG;KAqBhB;IApB0B,gBAAa,GAAW,GAAG,SAAS,CAAC,cAAc,gBAAiB;IACpE,iBAAc,GAAW,GAAG,SAAS,CAAC,cAAc,iBAAkB;IACtE,uBAAoB,GAAW,GAAG,SAAS,CAAC,cAAc,uBAAwB;IAClF,kBAAe,GAAW,GAAG,SAAS,CAAC,cAAc,kBAAmB;IACxE,mBAAgB,GAAW,GAAG,SAAS,CAAC,cAAc,mBAAoB;IAC1E,iBAAc,GAAW,GAAG,SAAS,CAAC,cAAc,iBAAkB;IACtE,kBAAe,GAAW,GAAG,SAAS,CAAC,cAAc,kBAAmB;IACxE,kBAAe,GAAW,GAAG,SAAS,CAAC,cAAc,kBAAmB;IACxE,aAAU,GAAW,GAAG,SAAS,CAAC,cAAc,aAAc;IAC9D,oBAAiB,GAAW,GAAG,SAAS,CAAC,cAAc,qBAAsB;IAC7E,iBAAc,GAAW,GAAG,SAAS,CAAC,cAAc,iBAAkB;IACtE,eAAY,GAAW,GAAG,SAAS,CAAC,cAAc,eAAgB;IAClE,YAAS,GAAW,GAAG,SAAS,CAAC,cAAc,YAAa;IAC5D,6BAA0B,GAAW,GAAG,SAAS,CAAC,cAAc,6BAA8B;IAC9F,uBAAoB,GAAW,GAAG,SAAS,CAAC,cAAc,uBAAwB;IAClF,aAAU,GAAQ,GAAG,SAAS,CAAC,cAAc,aAAc;IAC3D,cAAW,GAAQ,GAAG,SAAS,CAAC,cAAc,cAAe;IAC7D,kBAAe,GAAW,GAAG,SAAS,CAAC,cAAc,mBAAoB;IACzE,gBAAa,GAAW,GAAG,SAAS,CAAC,cAAc,gBAAiB;IACpE,eAAY,GAAW,GAAG,SAAS,CAAC,cAAc,eAAgB;QAC5F;AAEM,iBAAO,SAAG;KAQhB;IAP0B,qBAAkB,GAAW,GAAG,SAAS,CAAC,cAAc,sBAAuB;IAC/E,+BAA4B,GAAW,GAAG,SAAS,CAAC,cAAc,gCAAiC;IACnG,oBAAiB,GAAW,GAAG,SAAS,CAAC,cAAc,qBAAsB;IAC7E,0BAAuB,GAAW,GAAG,SAAS,CAAC,cAAc,0BAA2B;IACxF,4CAAyC,GAAW,GAAG,SAAS,CAAC,cAAc,4CAA6C;IAC5H,4CAAyC,GAAW,GAAG,SAAS,CAAC,cAAc,4CAA6C;IAC5H,2CAAwC,GAAW,GAAG,SAAS,CAAC,cAAc,2CAA4C;QACnJ;;;;;;;;;;;;;;;;;;;;;;;;;;AC9CkC;AACD;AACQ;;;;;;;;;;;;;;;;;;ACFxC,MAAM,gBAAgB,GAAG,MAAM,CAAC,MAAM,CAAC;IAC1C,UAAU,EAAE,YAAY;IACxB,UAAU,EAAE,YAAY;CAC3B,CAAC,CAAC;;;;;;;;;;;;;;;;;;ACHI,MAAM,UAAU,GAAG;IACxB,UAAU,EAAE,OAAO;IACnB,SAAS,EAAE,MAAM;IACjB,OAAO,EAAE,SAAS;IAClB,gBAAgB,EAAE,kBAAkB;IACpC,eAAe,EAAE,iBAAiB;IAClC,qBAAqB,EAAE,uBAAuB;IAC9C,OAAO,EAAE,SAAS;IAClB,YAAY,EAAE,cAAc;IAC5B,MAAM,EAAE,QAAQ;IAChB,UAAU,EAAC,KAAK;CACjB,CAAC;;;;;;;;;;;;;;;;;;ACXF,IAAY,aA0BX;AA1BD,WAAY,aAAa;IACrB,oEAAkB;IAClB,oDAAW;IACX,4DAAe;IACf,4DAAe;IACf,4EAAqB;IACrB,gFAAuB;IACvB,kHAA0C;IAC1C,gEAAiB;IACjB,8EAAwB;IACxB,gGAAiC;IACjC,oEAAiB;IACjB,0EAAsB;IACtB,oEAAiB;IACjB,sFAA4B;IAC5B,oFAA2B;IAC3B,oGAAmC;IACnC,4EAAuB;IACvB,wGAAqC;IACrC,4FAA+B;IAC/B,sHAA4C;IAC5C,4EAAuB;IACvB,gFAAyB;IACzB,gFAAyB;IACzB,0FAA8B;IAC9B,sEAAoB;AACxB,CAAC,EA1BW,aAAa,KAAb,aAAa,QA0BxB;;;;;;;;;;;;;;;;;;;;;;;AC1BgC;AACC;;;;;;;;;;;;;;;;;;ACDlC,IAAY,YAMX;AAND,WAAY,YAAY;IACpB,+DAAgB;IAChB,6DAAe;IACf,6DAAe;IACf,mDAAU;IACV,yDAAa;AACjB,CAAC,EANW,YAAY,KAAZ,YAAY,QAMvB;;;;;;;;;;;;;;;;;;;;;ACNmC;AAEI;AACuB;AAGxD,MAAM,eAAe;IACjB,MAAM,CAAC,qBAAqB,CAAC,SAAiB;QACjD,MAAM,oBAAoB,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC;QAC/C,OAAO,SAAS,GAAG,EAAE,GAAG,oBAAoB,CAAC;IACjD,CAAC;IAEM,MAAM,CAAC,0BAA0B,CAAC,KAAa;QAClD,IAAI;YACA,MAAM,SAAS,GAAG,0DAAU,CAAC,KAAK,CAAC,CAAC;YACpC,OAAO,IAAI,CAAC,+BAA+B,CAAC,SAAS,CAAC,8DAA8D,CAAC,CAAC,CAAC;SAC1H;QACD,OAAO,KAAK,EAAE;YACV,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;YACnB,OAAO,IAAI,CAAC;SACf;IACL,CAAC;IAEM,MAAM,CAAC,eAAe,CAAC,QAAgB,EAAE,OAAoB;QAChE,OAAO,CAAC,QAAQ,GAAG,OAAO,CAAC,KAAK,OAAO,CAAC;IAC5C,CAAC;IAEM,MAAM,CAAC,qBAAqB,CAAC,CAAW,EAAE,CAAW;QACxD,OAAO,CAAC,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,EAAE,SAAS,EAAE;YAC7C,OAAO,EAAE,IAAI;YACb,WAAW,EAAE,MAAM;SACtB,CAAC,CAAC;IACP,CAAC;IAEM,MAAM,CAAC,cAAc,CAAC,CAAS,EAAE,CAAS;QAC7C,OAAO,CAAC,CAAC,aAAa,CAAC,CAAC,EAAE,SAAS,EAAE;YACjC,OAAO,EAAE,IAAI;YACb,WAAW,EAAE,MAAM;SACtB,CAAC,CAAC;IACP,CAAC;IAEO,MAAM,CAAC,+BAA+B,CAAC,IAAY;QACvD,IAAI,IAAI,KAAK,QAAQ,EAAE;YACnB,OAAO,mDAAY,CAAC,MAAM,CAAC;SAC9B;aACI,IAAI,IAAI,KAAK,cAAc,EAAE;YAC9B,OAAO,mDAAY,CAAC,YAAY,CAAC;SACpC;aACI,IAAI,IAAI,KAAK,aAAa,EAAE;YAC7B,OAAO,mDAAY,CAAC,WAAW,CAAC;SACnC;aACI,IAAI,IAAI,KAAK,aAAa,EAAE;YAC7B,OAAO,mDAAY,CAAC,WAAW,CAAC;SACnC;aACI,IAAI,IAAI,KAAK,WAAW,EAAE;YAC3B,OAAO,mDAAY,CAAC,SAAS;SAChC;IACL,CAAC;IAEM,MAAM,CAAC,mBAAmB,CAAC,UAA0B;QACxD,QAAQ,UAAU,EAAE;YAChB,KAAK,0DAAc,CAAC,iBAAiB;gBACjC,OAAO,IAAI,CAAC;YAChB,KAAK,0DAAc,CAAC,cAAc;gBAC9B,OAAO,IAAI,CAAC;YAChB,KAAK,0DAAc,CAAC,SAAS;gBACzB,OAAO,SAAS,CAAC;YACrB,KAAK,0DAAc,CAAC,KAAK;gBACrB,OAAO,MAAM;YACjB,KAAK,0DAAc,CAAC,UAAU;gBAC1B,OAAO,KAAK,CAAC;YACjB;gBACI,OAAO,KAAK,CAAC;SACpB;IACL,CAAC;CACJ;;;;;;;;;;;;;;;;;;;AC3EoF;AAE9E,MAAM,oBAAoB;IAC/B,4BAA4B;IACrB,MAAM,CAAC,eAAe,CAAC,YAAoB,EAAE,cAAwB;QAC1E,IAAI,YAAY,KAAK,CAAC,EAAE;YACtB,OAAO,EAAE,CAAC;SACX;QAED,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,GAAG,IAAI,CAAC,CAAC;QAC9C,YAAY,IAAI,IAAI,CAAC;QACrB,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,GAAG,EAAE,CAAC,CAAC;QAC9C,MAAM,OAAO,GAAG,YAAY,GAAG,EAAE,CAAC;QAElC,OAAO,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,CAAC;aAC7B,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;YACZ,IAAI,CAAC,KAAK,CAAC,IAAI,cAAc,EAAE;gBAC7B,QAAQ,IAAI,EAAE;oBACZ,KAAK,CAAC,CAAC,GAAG,EAAE,CAAC;wBACX,OAAO,KAAK,GAAG,CAAC,CAAC;oBACnB,KAAK,CAAC,CAAC,GAAG,GAAG,CAAC;wBACZ,OAAO,IAAI,GAAG,CAAC,CAAC;oBAClB,KAAK,CAAC,CAAC,GAAG,IAAI,CAAC;wBACb,OAAO,GAAG,GAAG,CAAC,CAAC;oBACjB;wBACE,OAAO,CAAC,CAAC;iBACZ;aACF;YACD,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QAC7B,CAAC,CAAC;aACD,IAAI,CAAC,GAAG,CAAC;IACd,CAAC;IAEM,MAAM,CAAC,eAAe,CAAC,KAAa,EAAE,IAAU;QACrD,MAAM,GAAG,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAC7B,IAAI,MAAM,GAAG,CAAC,CAAC;QACf,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,GAAG,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE;YAC/C,IAAI,GAAG,CAAC,KAAK,CAAC,KAAK,IAAI,EAAE;gBACvB,SAAS;aACV;YACD,QAAQ,KAAK,EAAE;gBACb,KAAK,CAAC;oBACJ,MAAM,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC;oBAChC,MAAM;gBACR,KAAK,CAAC;oBACJ,MAAM,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC;oBAC3B,MAAM;gBACR,KAAK,CAAC;oBACJ,MAAM,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;aACzB;SACF;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;IAEM,MAAM,CAAC,mBAAmB,CAAC,OAAe;QAC/C,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,OAAO,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC;IAC7C,CAAC;IAEM,MAAM,CAAC,mBAAmB,CAAC,UAAkB,EAAE,YAAsB;QAC1E,MAAM,MAAM,GAAG,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,UAAU,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;QACpG,OAAO,MAAM,CAAC;IAChB,CAAC;IAEM,MAAM,CAAC,6BAA6B,CAAC,YAAoB;QAC9D,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;QAChD,OAAO,MAAM,CAAC;IAChB,CAAC;IAEM,MAAM,CAAC,6BAA6B,CAAC,eAAuB;QACjE,MAAM,MAAM,GAAG,eAAe,GAAG,CAAC,GAAG,CAAC,CAAC;QACvC,OAAO,MAAM;IACf,CAAC;IAEM,MAAM,CAAC,iBAAiB,CAAC,KAAa,EAAE,SAA0B;QACvE,IAAI,MAAc,CAAC;QACnB,QAAQ,SAAS,EAAE;YACjB,KAAK,2DAAe,CAAC,CAAC,CAAC,CAAC;gBACtB,MAAM,GAAG,KAAK,GAAG,MAAM,CAAC;gBACxB,MAAM;aACP;YACD,KAAK,2DAAe,CAAC,EAAE,CAAC,CAAC;gBACvB,MAAM,GAAG,KAAK,GAAG,EAAE,CAAC;gBACpB,MAAM;aACP;YACD;gBACE,MAAM,GAAG,KAAK,CAAC;SAClB;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;IAEM,MAAM,CAAC,eAAe,CAAC,KAAa,EAAE,QAAyB;QACpE,IAAI,MAAc,CAAC;QACnB,QAAQ,QAAQ,EAAE;YAChB,KAAK,2DAAe,CAAC,EAAE;gBACrB,MAAM,GAAG,KAAK,GAAG,EAAE,CAAC;gBACpB,MAAM;YACR,KAAK,2DAAe,CAAC,CAAC;gBACpB,MAAM,GAAG,KAAK,GAAG,MAAM,CAAC;gBACxB,MAAM;YACR;gBACE,MAAM,GAAG,KAAK,CAAC;SAClB;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;IAEM,MAAM,CAAC,cAAc,CAAC,KAAa,EAAE,YAA8B;QACxE,IAAI,MAAc,CAAC;QACnB,QAAQ,YAAY,EAAE;YACpB,KAAK,4DAAgB,CAAC,GAAG;gBACvB,MAAM,GAAG,KAAK,GAAG,EAAE,CAAC;gBACpB,MAAM;YACR,KAAK,4DAAgB,CAAC,EAAE;gBACtB,MAAM,GAAG,KAAK,GAAG,YAAY,CAAC;gBAC9B,MAAM;YACR,KAAK,4DAAgB,CAAC,EAAE;gBACtB,MAAM,GAAG,KAAK,GAAG,YAAY,CAAC;gBAC9B,MAAM;YACR,KAAK,4DAAgB,CAAC,CAAC;gBACrB,MAAM,GAAG,KAAK,GAAG,QAAQ,CAAC;gBAC1B,MAAM;YACR;gBACE,MAAM,GAAG,KAAK,CAAC;SAClB;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;IAEM,MAAM,CAAC,YAAY,CAAC,KAAa,EAAE,YAA8B;QACtE,IAAI,MAAc,CAAC;QACnB,QAAQ,YAAY,EAAE;YACpB,KAAK,4DAAgB,CAAC,GAAG;gBACvB,MAAM,GAAG,KAAK,GAAG,EAAE,CAAC;gBACpB,MAAM;YACR,KAAK,4DAAgB,CAAC,EAAE;gBACtB,MAAM,GAAG,KAAK,GAAG,YAAY,CAAC;gBAC9B,MAAM;YACR,KAAK,4DAAgB,CAAC,EAAE;gBACtB,MAAM,GAAG,KAAK,GAAG,YAAY,CAAC;gBAC9B,MAAM;YACR,KAAK,4DAAgB,CAAC,CAAC;gBACrB,MAAM,GAAG,KAAK,GAAG,QAAQ,CAAC;gBAC1B,MAAM;YACR;gBACE,MAAM,GAAG,KAAK,CAAC;SAClB;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;IAEM,MAAM,CAAC,cAAc,CAAC,KAAa,EAAE,YAA8B;QACxE,IAAI,MAAc,CAAC;QACnB,QAAQ,YAAY,EAAE;YACpB,KAAK,4DAAgB,CAAC,GAAG;gBACvB,MAAM,GAAG,KAAK,GAAG,OAAO,CAAC;gBACzB,MAAM;YACR,KAAK,4DAAgB,CAAC,GAAG;gBACvB,MAAM,GAAG,KAAK,GAAG,gBAAgB,CAAC;gBAClC,MAAM;YACR;gBACE,MAAM,GAAG,KAAK,CAAC;SAClB;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;IACM,MAAM,CAAC,YAAY,CAAC,KAAa,EAAE,YAA8B;QACtE,IAAI,MAAc,CAAC;QACnB,QAAQ,YAAY,EAAE;YACpB,KAAK,4DAAgB,CAAC,GAAG;gBACvB,MAAM,GAAG,KAAK,GAAG,OAAO,CAAC;gBACzB,MAAM;YACR,KAAK,4DAAgB,CAAC,GAAG;gBACvB,MAAM,GAAG,KAAK,GAAG,gBAAgB,CAAC;gBAClC,MAAM;YACR;gBACE,MAAM,GAAG,KAAK,CAAC;SAClB;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;IAEM,MAAM,CAAC,gBAAgB,CAAC,GAAW,EAAE,MAAc;QACxD,QAAQ,MAAM,EAAE;YACd,KAAK,CAAC;gBACJ,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;YAC7D,KAAK,CAAC;gBACJ,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;YAC/D;gBACE,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;SAClE;IACH,CAAC;IAEM,MAAM,CAAC,yBAAyB,CAAC,SAAS;QAC/C,IAAI,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,GAAG,EAAE,CAAC,CAAC;QACpC,IAAI,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,GAAG,EAAE,CAAC,CAAC;QACtC,IAAI,IAAI,IAAI,EAAE,EAAE;YACd,EAAE,EAAE,CAAC;YACL,IAAI,GAAG,CAAC,CAAC;SACV;QACD,OAAO,GAAG,EAAE,IAAI,IAAI,EAAE,CAAC;QACvB,6DAA6D;IAC/D,CAAC;IAEM,MAAM,CAAC,mBAAmB,CAAC,YAAoB,EAAE,cAAwB;QAC9E,IAAI,YAAY,KAAK,CAAC,EAAE;YACtB,OAAO,OAAO,CAAC;SAChB;QACD,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,GAAG,IAAI,CAAC,CAAC;QAC9C,YAAY,IAAI,IAAI,CAAC;QACrB,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,GAAG,EAAE,CAAC,CAAC;QAC9C,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC;aACpB,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;YACZ,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QAC7B,CAAC,CAAC;aACD,IAAI,CAAC,GAAG,CAAC;IACd,CAAC;CACF;;;;;;;;;;;;;;;;;;;;;;;ACnNiC;AACO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACDb;AACD;AACK;AACR;AACC;AACG;AACC;;;;;;;;;;;;;;;;;;;ACNtB,MAAM,yBAAyB;IACpC,YACS,KAAa,EACb,SAAiB,EACjB,QAAgB,EAChB,QAAgB,EAChB,eAAuB;QAJvB,UAAK,GAAL,KAAK,CAAQ;QACb,cAAS,GAAT,SAAS,CAAQ;QACjB,aAAQ,GAAR,QAAQ,CAAQ;QAChB,aAAQ,GAAR,QAAQ,CAAQ;QAChB,oBAAe,GAAf,eAAe,CAAQ;IAAI,CAAC;CACtC;AAEM,MAAM,+BAAgC,SAAQ,yBAAyB;IAC5E,YACS,WAAmB,EACnB,KAAa,EACb,SAAiB,EACjB,QAAgB,EAChB,QAAgB,EAChB,eAAuB;QAAI,KAAK,CAAC,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,QAAQ,EAAE,eAAe,CAAC,CAAC;QALxF,gBAAW,GAAX,WAAW,CAAQ;QACnB,UAAK,GAAL,KAAK,CAAQ;QACb,cAAS,GAAT,SAAS,CAAQ;QACjB,aAAQ,GAAR,QAAQ,CAAQ;QAChB,aAAQ,GAAR,QAAQ,CAAQ;QAChB,oBAAe,GAAf,eAAe,CAAQ;IAAkE,CAAC;CACpG;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACjB6C;AACL;AACD;;;;;;;;;;;;;;;;;;ACFjC,MAAM,oBAAoB;IAC7B,YACS,KAAa;QAAb,UAAK,GAAL,KAAK,CAAQ;IACpB,CAAC;CACJ;;;;;;;;;;;;;;;;;;ACJI,MAAM,mBAAmB;IAC5B,YACS,KAAa,EACb,QAAgB,EAChB,eAAuB;QAFvB,UAAK,GAAL,KAAK,CAAQ;QACb,aAAQ,GAAR,QAAQ,CAAQ;QAChB,oBAAe,GAAf,eAAe,CAAQ;IAC9B,CAAC;CACJ;;;;;;;;;;;;;;;;;;ACJI,MAAM,UAAU;CAItB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACNsB;AACO;AACA;AACG;AACD;;;;;;;;;;;;;;;;;;;;;;;;;ACJG;AACA;;;;;;;;;;;;;;;;;;ACD5B,MAAM,cAAc;IACzB,YACS,KAAa,EACb,QAAgB;QADhB,UAAK,GAAL,KAAK,CAAQ;QACb,aAAQ,GAAR,QAAQ,CAAQ;IACvB,CAAC;CACJ;;;;;;;;;;;;;;;;;;;ACHM,MAAM,cAAc;CAQ1B;AAEM,MAAM,aAAa;IASjB,MAAM,CAAC,WAAW,CAAC,QAAuB;QAC/C,MAAM,SAAS,GAAG,IAAI,cAAc,EAAE,CAAC;QAEvC,SAAS,CAAC,EAAE,GAAG,QAAQ,CAAC,EAAE,CAAC;QAC3B,SAAS,CAAC,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAC;QAC/B,SAAS,CAAC,SAAS,GAAG,QAAQ,CAAC,SAAS,CAAC;QACzC,SAAS,CAAC,YAAY,GAAG,QAAQ,CAAC,YAAY,CAAC;QAC/C,SAAS,CAAC,SAAS,GAAG,QAAQ,CAAC,SAAS,CAAC;QACzC,SAAS,CAAC,SAAS,GAAG,QAAQ,CAAC,SAAS,CAAC;QACzC,SAAS,CAAC,QAAQ,GAAG,QAAQ,CAAC,QAAQ,CAAC;QAEvC,OAAO,SAAS,CAAC;IACnB,CAAC;CACF;;;;;;;;;;;;;;;;;;;;AClCM,MAAM,gBAAgB;IACzB,YACW,SAAiB,EACjB,YAAoB,EACpB,SAAiB;QAFjB,cAAS,GAAT,SAAS,CAAQ;QACjB,iBAAY,GAAZ,YAAY,CAAQ;QACpB,cAAS,GAAT,SAAS,CAAQ;IACxB,CAAC;CACR;AAEM,MAAM,eAAe;IAKjB,MAAM,CAAC,WAAW,CAAC,QAAyB;QAC/C,MAAM,SAAS,GAAG,IAAI,gBAAgB,CAAC,QAAQ,CAAC,SAAS,EAAE,QAAQ,CAAC,YAAY,EAAE,QAAQ,CAAC,SAAS,CAAC,CAAC;QACtG,OAAO,SAAS,CAAC;IACnB,CAAC;CACN;AAEM,MAAM,gBAAgB;IACzB,YACW,SAAiB,EACjB,YAAoB;QADpB,cAAS,GAAT,SAAS,CAAQ;QACjB,iBAAY,GAAZ,YAAY,CAAQ;IAC3B,CAAC;CACR;;;;;;;;;;;;;;;;;;;;ACxB4B;;;;;;;;;;;;;;;;;;ACAtB,MAAM,IAAI;CAIhB;;;;;;;;;;;;;;;;;;;;ACJuC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACAG;AAEQ;AAInD,IAAa,mBAAmB,GAAhC,MAAa,mBAAmB;IAC9B,gBAAe,CAAC;IAET,YAAY;QACjB,MAAM,aAAa,GAAG,YAAY,CAAC,OAAO,CAAC,2DAAgB,CAAC,UAAU,CAAC,CAAC;QACxE,IAAI,aAAa,KAAK,IAAI,EAAE;YAC1B,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;YAC3C,OAAuB,QAAQ,CAAC;SACjC;QAED,OAAO,IAAI,CAAC;IACd,CAAC;IAEM,YAAY,CAAC,KAAqB;QACvC,MAAM,WAAW,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;QAC1C,YAAY,CAAC,OAAO,CAAC,2DAAgB,CAAC,UAAU,EAAE,WAAW,CAAC,CAAC;QAC/D,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;IACtC,CAAC;IAEM,YAAY;QACjB,MAAM,aAAa,GAAG,YAAY,CAAC,OAAO,CAAC,2DAAgB,CAAC,UAAU,CAAC,CAAC;QACxE,IAAI,aAAa,KAAK,IAAI,EAAE;YAC1B,OAAO,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;SAClC;QAED,OAAO,IAAI,CAAC;IACd,CAAC;IAEM,YAAY,CAAC,KAAa;QAC/B,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;IAC5B,CAAC;IAEM,KAAK;QACV,YAAY,CAAC,KAAK,EAAE,CAAC;IACvB,CAAC;IAEO,aAAa,CAAC,KAAa;QACjC,MAAM,WAAW,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;QAC1C,YAAY,CAAC,OAAO,CAAC,2DAAgB,CAAC,UAAU,EAAE,WAAW,CAAC,CAAC;IACjE,CAAC;CACF;AAxCY,mBAAmB;IAD/B,gEAAU,EAAE;;GACA,mBAAmB,CAwC/B;AAxC+B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACNW;AACF;AAEE;AACK;AACH;AAI7C,IAAa,cAAc,GAA3B,MAAa,cAAc;IAGzB,YACU,YAAyB,EACzB,oBAAyC,EACzC,OAAe;QAFf,iBAAY,GAAZ,YAAY,CAAa;QACzB,yBAAoB,GAApB,oBAAoB,CAAqB;QACzC,YAAO,GAAP,OAAO,CAAQ;QALlB,gBAAW,GAAW,IAAI,CAAC;IAMlC,CAAC;IAEY,oBAAoB,CAAC,yBAAqD;;YACrF,IAAI;gBACF,MAAM,MAAM,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,oDAAS,CAAC,OAAO,CAAC,oBAAoB,EAAE,yBAAyB,CAAC,CAAC;aAC1G;YAAC,OAAM,KAAK,EAAE;gBACb,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;gBACnB,OAAO,IAAI,CAAC;aACb;QACH,CAAC;KAAA;IAEY,0BAA0B,CAAC,+BAAiE;;YACvG,IAAI;gBACF,MAAM,MAAM,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,oDAAS,CAAC,OAAO,CAAC,0BAA0B,EAAE,+BAA+B,CAAC,CAAC;aACtH;YAAC,OAAM,KAAK,EAAE;gBACb,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;gBACnB,OAAO,IAAI,CAAC;aACb;QACH,CAAC;KAAA;IACY,eAAe,CAAC,oBAA2C;;YACtE,IAAI;gBACF,MAAM,MAAM,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,oDAAS,CAAC,OAAO,CAAC,aAAa,EAAE,oBAAoB,CAAC,CAAC;aAC9F;YAAC,OAAM,KAAK,EAAE;gBACb,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;gBACnB,OAAO,IAAI,CAAC;aACb;QACH,CAAC;KAAA;IAEY,cAAc,CAAC,mBAAyC;;YACnE,IAAI;gBACF,MAAM,MAAM,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,oDAAS,CAAC,OAAO,CAAC,cAAc,EAAE,mBAAmB,CAAC,CAAC;aAC9F;YAAC,OAAM,KAAK,EAAE;gBACb,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;gBACnB,OAAO,IAAI,CAAC;aACb;QACH,CAAC;KAAA;CACF;;YAvCyB,yDAAW;YACH,2DAAmB;YAChC,sDAAM;;AANd,cAAc;IAD1B,gEAAU,EAAE;qCAKa,yDAAW;QACH,2DAAmB;QAChC,sDAAM;GANd,cAAc,CA2C1B;AA3C0B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACTgB;AACF;AAEe;AACR;AACH;AAC+E;AAClE;AACR;AAGlD,IAAa,gBAAgB,GAA7B,MAAa,gBAAgB;IAG3B,YACU,YAAyB,EACzB,oBAAyC,EACzC,OAAe;QAFf,iBAAY,GAAZ,YAAY,CAAa;QACzB,yBAAoB,GAApB,oBAAoB,CAAqB;QACzC,YAAO,GAAP,OAAO,CAAQ;QALlB,gBAAW,GAAW,IAAI,CAAC;IAMlC,CAAC;IAEY,KAAK,CAAC,SAAiB,EAAE,QAAgB;;YACpD,IAAI;gBACF,MAAM,YAAY,GAAG,IAAI,sDAAc,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;gBAC7D,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,oDAAS,CAAC,IAAI,CAAC,KAAK,EAAE,YAAY,CAAC,CAAC;gBAChF,MAAM,cAAc,GAAG,qDAAa,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;gBAEzD,IAAI,CAAC,oBAAoB,CAAC,YAAY,CAAC,cAAc,CAAC,CAAC;gBACvD,IAAI,CAAC,+BAA+B,CAAC,cAAc,CAAC,CAAC;gBAErD,OAAO,cAAc,CAAC;aACvB;YAAC,OAAO,KAAK,EAAE;gBACd,IAAI,KAAK,YAAY,kDAAU,EAAE;oBAC/B,OAAO,KAAK,CAAC;iBACd;gBAED,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;gBACnB,OAAO,IAAI,CAAC;aACb;QACH,CAAC;KAAA;IAEM,4BAA4B;QACjC,MAAM,cAAc,GAAG,IAAI,CAAC,oBAAoB,CAAC,YAAY,EAAE,CAAC;QAEhE,IAAI,cAAc,IAAI,0DAAe,CAAC,qBAAqB,CAAC,cAAc,CAAC,SAAS,CAAC,EAAE;YACrF,IAAI,CAAC,+BAA+B,CAAC,cAAc,CAAC,CAAC;YACrD,OAAO,IAAI,CAAC;SACb;IACH,CAAC;IAEY,MAAM;;YACjB,IAAI;gBACF,MAAM,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,oDAAS,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;gBACxD,IAAI,CAAC,oBAAoB,CAAC,KAAK,EAAE,CAAC;gBAClC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,qDAAU,CAAC,OAAO,CAAC,CAAC,CAAC;aAC7C;YAAC,OAAO,KAAK,EAAE;gBACd,IAAI,KAAK,YAAY,kDAAU,EAAE;oBAC/B,OAAO,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;iBAC9B;gBAED,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;gBACnB,OAAO,IAAI,CAAC;aACb;QACH,CAAC;KAAA;IAEM,QAAQ;QACb,OAAO,IAAI,CAAC,oBAAoB,CAAC,YAAY,EAAE,CAAC;IAClD,CAAC;IAEY,aAAa;;YACxB,IAAI;gBACF,MAAM,cAAc,GAAG,IAAI,CAAC,oBAAoB,CAAC,YAAY,EAAE,CAAC;gBAChE,MAAM,YAAY,GAAG,IAAI,wDAAgB,CAAC,cAAc,CAAC,SAAS,EAAE,cAAc,CAAC,YAAY,CAAC,CAAC;gBACjG,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,oDAAS,CAAC,IAAI,CAAC,YAAY,EAAE,YAAY,CAAC,CAAC;gBACvF,MAAM,gBAAgB,GAAG,uDAAe,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;gBAE7D,cAAc,CAAC,SAAS,GAAG,gBAAgB,CAAC,SAAS,CAAC;gBACtD,cAAc,CAAC,YAAY,GAAG,gBAAgB,CAAC,YAAY,CAAC;gBAC5D,cAAc,CAAC,SAAS,GAAG,gBAAgB,CAAC,SAAS,CAAC;gBAEtD,IAAI,CAAC,oBAAoB,CAAC,YAAY,CAAC,cAAc,CAAC,CAAC;gBAEvD,OAAO,gBAAgB,CAAC;aACzB;YAAC,OAAO,KAAK,EAAE;gBACd,IAAI,KAAK,YAAY,kDAAU,EAAE;oBAC/B,IAAI,KAAK,CAAC,IAAI,IAAI,oDAAa,CAAC,YAAY,EAAE;wBAC5C,IAAI,CAAC,oBAAoB,CAAC,KAAK,EAAE,CAAC;wBAClC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,qDAAU,CAAC,OAAO,CAAC,CAAC,CAAC;qBAC7C;oBACD,OAAO,KAAK,CAAC;iBACd;gBAED,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;gBACnB,OAAO,IAAI,CAAC;aACb;QACH,CAAC;KAAA;IAEO,+BAA+B,CAAC,cAA8B;QACpE,IAAI,IAAI,CAAC,WAAW,EAAE;YACpB,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;SAC9C;aAAM;YACL,QAAQ,cAAc,CAAC,IAAI,EAAE;gBAC3B,KAAK,CAAC,mDAAY,CAAC,YAAY,CAAC;oBAC9B,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,qDAAU,CAAC,UAAU,CAAC,CAAC,CAAC;oBAC/C,MAAM;gBACR,KAAK,CAAC,mDAAY,CAAC,WAAW,CAAC;oBAC7B,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,qDAAU,CAAC,SAAS,CAAC,CAAC,CAAC;oBAC9C,MAAM;gBACR,KAAK,CAAC,mDAAY,CAAC,WAAW,CAAC;oBAC7B,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,qDAAU,CAAC,YAAY,CAAC,CAAC,CAAC;oBACjD,MAAM;gBACR,KAAK,CAAC,mDAAY,CAAC,MAAM,CAAC;oBACxB,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,qDAAU,CAAC,MAAM,CAAC,CAAC,CAAC;oBAC3C,MAAM;gBACN,KAAK,CAAC,mDAAY,CAAC,SAAS,CAAC;oBAC3B,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,qDAAU,CAAC,UAAU,CAAC,CAAC,CAAC;oBAC/C,MAAM;aACX;SACF;QACD,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;IAC1B,CAAC;CACF;;YAzGyB,yDAAW;YACH,2DAAmB;YAChC,sDAAM;;AANd,gBAAgB;IAD5B,gEAAU,EAAE;qCAKa,yDAAW;QACH,2DAAmB;QAChC,sDAAM;GANd,gBAAgB,CA6G5B;AA7G4B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACXc;AACuC;AAEtC;AACF;AAG1C,IAAa,WAAW,GAAxB,MAAa,WAAW;IACpB,YACU,KAAiB;QAAjB,UAAK,GAAL,KAAK,CAAY;IACrB,CAAC;IAEM,IAAI,CAAC,GAAW,EAAE,IAAS;;YACtC,MAAM,OAAO,GAAG,EAAE,OAAO,EAAE,IAAI,CAAC,mBAAmB,EAAE,EAAE,CAAC;YACxD,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;YAClC,OAAO,MAAM,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,oDAAS,CAAC,QAAQ,GAAG,GAAG,EAAE,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC,SAAS,EAAE;iBACrF,IAAI,CAAC,CAAC,QAAQ,EAAE,EAAE;gBAChB,OAAO,QAAQ,CAAC;YACnB,CAAC,CAAC;iBACD,KAAK,CAAC,CAAO,KAAwB,EAAE,EAAE;gBACxC,MAAM,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,CAAC;YACxC,CAAC,EAAC,CAAC;QACL,CAAC;KAAA;IAEY,GAAG,CAAC,GAAW,EAAE,IAAS;;YACrC,MAAM,OAAO,GAAG,EAAE,OAAO,EAAE,IAAI,CAAC,mBAAmB,EAAE,EAAE,CAAC;YACxD,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;YAClC,OAAO,MAAM,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,oDAAS,CAAC,QAAQ,GAAG,GAAG,EAAE,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC,SAAS,EAAE;iBACpF,IAAI,CAAC,CAAC,QAAQ,EAAE,EAAE;gBACjB,OAAO,QAAQ,CAAC;YAClB,CAAC,CAAC;iBACD,KAAK,CAAC,CAAO,KAAwB,EAAE,EAAE;gBACxC,MAAM,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,CAAC;YACxC,CAAC,EAAC,CAAC;QACL,CAAC;KAAA;IAEY,QAAQ,CAAC,GAAW,EAAE,IAAc;;YAC/C,MAAM,OAAO,GAAG,EAAE,OAAO,EAAE,IAAI,CAAC,mBAAmB,EAAE,EAAE,CAAC;YACxD,OAAO,MAAM,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,oDAAS,CAAC,QAAQ,GAAG,GAAG,EAAE,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC,SAAS,EAAE;iBACrF,IAAI,CAAC,CAAC,QAAQ,EAAE,EAAE;gBACjB,OAAO,QAAQ,CAAC;YAClB,CAAC,CAAC;iBACD,KAAK,CAAC,CAAO,KAAwB,EAAE,EAAE;gBACxC,MAAM,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,CAAC;YACxC,CAAC,EAAC,CAAC;QACL,CAAC;KAAA;IAEY,mBAAmB,CAAC,GAAW,EAAE,IAAc;;YAC1D,MAAM,OAAO,GAAG,EAAE,OAAO,EAAE,IAAI,gEAAW,EAAE,EAAE,CAAC;YAC/C,OAAO,MAAM,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,oDAAS,CAAC,QAAQ,GAAG,GAAG,EAAE,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC,SAAS,EAAE;iBACrF,IAAI,CAAC,CAAC,QAAQ,EAAE,EAAE;gBACjB,OAAO,QAAQ,CAAC;YAClB,CAAC,CAAC;iBACD,KAAK,CAAC,CAAO,KAAwB,EAAE,EAAE;gBACxC,MAAM,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,CAAC;YACxC,CAAC,EAAC,CAAC;QACL,CAAC;KAAA;IAEY,GAAG,CAAC,GAAW,EAAE,SAA0C,EAAE;;YACxE,MAAM,OAAO,GAAG,EAAE,OAAO,EAAE,IAAI,CAAC,mBAAmB,EAAE,EAAE,MAAM,EAAE,CAAC;YAChE,OAAO,MAAM,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,oDAAS,CAAC,QAAQ,GAAG,GAAG,EAAE,EAAE,OAAO,CAAC,CAAC,SAAS,EAAE;iBAC9E,IAAI,CAAC,CAAC,QAAQ,EAAE,EAAE;gBACjB,OAAO,QAAQ,CAAC;YAClB,CAAC,CAAC;iBACD,KAAK,CAAC,CAAO,KAAwB,EAAE,EAAE;gBACxC,MAAM,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,CAAC;YACxC,CAAC,EAAC,CAAC;QACL,CAAC;KAAA;IAEY,cAAc,CAAC,GAAW,EAAE,SAA0C,EAAE;;YACnF,OAAO,MAAM,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,oDAAS,CAAC,QAAQ,GAAG,GAAG,EAAE,EAAE,EAAE,OAAO,EAAE,IAAI,CAAC,mBAAmB,EAAE,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,EAAE,CAAC,CAAC,SAAS,EAAE;iBACnJ,IAAI,CAAC,CAAC,QAAQ,EAAE,EAAE;gBACjB,OAAO,QAAQ,CAAC;YAClB,CAAC,CAAC;iBACD,KAAK,CAAC,CAAO,KAAwB,EAAE,EAAE;gBACxC,MAAM,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,CAAC;YACxC,CAAC,EAAC,CAAC;QACL,CAAC;KAAA;IAEY,eAAe,CAAC,GAAW,EAAE,IAAS;;YACjD,OAAO,MAAM,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,oDAAS,CAAC,QAAQ,GAAG,GAAG,EAAE,EAAE,IAAI,EAAE,EAAE,OAAO,EAAE,IAAI,CAAC,mBAAmB,EAAE,EAAE,YAAY,EAAE,aAAa,EAAC,CAAC,CAAC,SAAS,EAAE;iBACjJ,IAAI,CAAC,CAAC,QAAQ,EAAE,EAAE;gBACjB,OAAO,QAAQ,CAAC;YAClB,CAAC,CAAC;iBACD,KAAK,CAAC,CAAO,KAAwB,EAAE,EAAE;gBACxC,MAAM,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,CAAC;YACxC,CAAC,EAAC,CAAC;QACL,CAAC;KAAA;IAEY,MAAM,CAAC,GAAW,EAAE,SAA0C,EAAE;;YAC3E,MAAM,OAAO,GAAG,EAAE,OAAO,EAAE,IAAI,CAAC,mBAAmB,EAAE,EAAE,MAAM,EAAE,CAAC;YAChE,OAAO,MAAM,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,oDAAS,CAAC,QAAQ,GAAG,GAAG,EAAE,EAAE,OAAO,CAAC,CAAC,SAAS,EAAE;iBACjF,IAAI,CAAC,CAAC,QAAQ,EAAE,EAAE;gBACjB,OAAO,QAAQ,CAAC;YAClB,CAAC,CAAC;iBACD,KAAK,CAAC,CAAO,KAAwB,EAAE,EAAE;gBACxC,MAAM,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,CAAC;YACxC,CAAC,EAAC,CAAC;QACL,CAAC;KAAA;IAEa,mBAAmB,CAAC,KAAwB;;YACxD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;YAEnB,IAAI,KAAK,CAAC,KAAK,EAAE;gBACf,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,kDAAU,EAAE,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC;gBAChE,MAAM,UAAU,CAAC;aAClB;YAED,MAAM,KAAK,CAAC;QACd,CAAC;KAAA;IAEO,mBAAmB;QACzB,IAAI,OAAO,GAAG,IAAI,gEAAW,EAAE,CAAC;QAChC,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,cAAc,EAAE,iCAAiC,CAAC,CAAC;QAEzE,OAAO,OAAO,CAAC;IACjB,CAAC;CACJ;;YA5GoB,+DAAU;;AAFlB,WAAW;IADvB,gEAAU,EAAE;qCAGQ,+DAAU;GAFlB,WAAW,CA8GvB;AA9GuB;;;;;;;;;;;;;;;;;;;;;;;;;;ACPY;AACL;AACG;;;;;;;;;;;;;;;;;;;;;;;;;;;ACFT;AACF;;;;;;;;;;;;;;;;;;;;;;ACChB,SAAS,eAAe,CAAC,OAAoB;IAChD,OAAO,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,iBAAiB,EAAE,4BAA4B,EAAE,CAAC;AACvG,CAAC;AAEM,SAAS,yBAAyB,CAAC,OAAoB;IAC1D,OAAO,gCAAgC,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,iBAAiB,EAAE,4BAA4B,EAAE,CAAC;AAC7H,CAAC;AAEM,SAAS,cAAc,CAAC,UAAiF,IAAI;IAChH,MAAM,EAAE,OAAO,EAAE,aAAa,EAAE,eAAe,EAAE,iBAC1C,EAAE,OAAO,EAAE,iBAAiB,EAAE,eAAe,EAAE,GAAG,EAAE,aAAa,EAAE,EAAE,EAAE,EACvE,OAAO,CACb,CAAC;IACF,MAAM,WAAW,GAAG,SAAS,aAAa,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,aAAa,GAAG,CAAC,CAAC,CAAC,GAAG,KAAK,eAAe,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,eAAe,GAAG,CAAC,CAAC,CAAC,GAAG,0KAA0K,CAAC;IACjT,MAAM,MAAM,GAAG,IAAI,MAAM,CAAC,WAAW,CAAC,CAAC;IACvC,OAAO,CAAC,OAAoB,EAAE,EAAE;QAC5B,OAAO,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,gBAAgB,EAAE,OAAO,EAAE,CAAC;IAC7E,CAAC;AACL,CAAC;AAEM,SAAS,iBAAiB,CAAC,OAAoB;IAClD,OAAO,OAAO,CAAC,KAAK,IAAI,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAC,mBAAmB,EAAE,wCAAwC,EAAC,CAAC;AACpI,CAAC;AAEM,SAAS,WAAW,CAAC,OAAoB;IAC5C,MAAM,MAAM,GAAG,IAAI,MAAM,CAAC,+MAA+M,CACxO,CAAC;IACF,OAAO,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAC,aAAa,EAAE,sBAAsB,EAAC;AACtF,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC9BmC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACAoC;AACtB;AACkB;AACX;AAE6C;AAEtG,MAAM;AACN,wBAAwB;AAMxB,IAAa,6BAA6B,GAA1C,MAAa,6BAA6B;IAYxC,YACU,WAAwB,EACxB,KAAqB,EACrB,MAAc,EACd,cAA8B,EAC9B,eAA+B;QAJ/B,gBAAW,GAAX,WAAW,CAAa;QACxB,UAAK,GAAL,KAAK,CAAgB;QACrB,WAAM,GAAN,MAAM,CAAQ;QACd,mBAAc,GAAd,cAAc,CAAgB;QAC9B,oBAAe,GAAf,eAAe,CAAgB;QAdzC,cAAS,GAAG,KAAK,CAAC;QAGlB,iBAAY,GAAG,kDAAU,CAAC,OAAO,CAAC;IAY9B,CAAC;IATL,IAAI,SAAS;QACX,OAAO,IAAI,CAAC,SAAS,KAAK,oDAAY,CAAC,MAAM,CAAC;IAChD,CAAC;IASD,QAAQ;QACN,IAAI,CAAC,cAAc,CAAC,WAAW,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE;YACjD,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC;QAChC,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,SAAS,GAAG,iFAAe,CAAC,0BAA0B,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAEzE,IAAI,CAAC,8BAA8B,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC;YAC3D,WAAW,EAAE,CAAC,IAAI,CAAC,SAAS,EAAC,GAAE,EAAC,QAAO,EAAE,yDAAU,CAAC,OAAO,CAAC,CAAC,yDAAU,CAAC,QAAQ,EAAE,yDAAU,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,yDAAU,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;YACtI,SAAS,EAAE,CAAC,EAAE,EAAE,yDAAU,CAAC,OAAO,CAAC,CAAC,yDAAU,CAAC,QAAQ,EAAE,yDAAU,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,yDAAU,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;YAC7G,QAAQ,EAAE,CAAC,EAAE,EAAE,yDAAU,CAAC,OAAO,CAAC,CAAC,yDAAU,CAAC,QAAQ,EAAE,yDAAU,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,yDAAU,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;YAC5G,QAAQ,EAAE,CAAC,EAAE,EAAE,yDAAU,CAAC,OAAO,CAAC,CAAC,yDAAU,CAAC,QAAQ,EAAE,yDAAU,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,yDAAU,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;YAC5G,OAAO,EAAE,CAAC,EAAE,EAAE,yDAAU,CAAC,OAAO,CAAC,CAAC,yDAAU,CAAC,QAAQ,EAAE,yDAAU,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,yDAAU,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;SAC5G,CAAC,CAAC;IACL,CAAC;IAED,IAAI,CAAC,KAAK,OAAO,IAAI,CAAC,8BAA8B,CAAC,QAAQ,CAAC,CAAC,CAAC;IAEhE,QAAQ;QACN,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;QACtB,MAAM,WAAW,GAAG,IAAI,CAAC,SAAS,EAAC,KAAI,CAAC,CAAC,CAAC,WAAW,CAAC,KAAK,CAAC,IAAI,EAAE,EAAC,GAAE,CAAC;QACtE,MAAM,SAAS,GAAG,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;QAChD,MAAM,QAAQ,GAAG,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;QAC9C,MAAM,QAAQ,GAAG,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;QAC9C,MAAM,OAAO,GAAG,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;QAE5C,IAAI,IAAI,CAAC,8BAA8B,CAAC,OAAO,EAAE;YAC/C,OAAO;SACR;QACD,IAAI,QAAQ,IAAI,OAAO,EAAE;YACvB,OAAO;SACR;QAED,MAAM,yBAAyB,GAAG,IAAI,uEAA+B,CAAC,WAAW,EAAC,IAAI,CAAC,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC;QACtI,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,EAAC,KAAI,CAAC,eAAe,CAAC,0BAA0B,CAAC,yBAAyB,CAAC;YAC3E,CAAC,KAAI,CAAC,eAAe,CAAC,oBAAoB,CAAC,yBAAyB,CAAC,CAAC;QACnG,IAAI,MAAM,IAAI,IAAI,EAAE;YAClB,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,kDAAU,CAAC,OAAO,CAAC,CAAC;SAC/C;IACL,CAAC;IAED,wBAAwB;QACtB,IAAI,CAAC,eAAe,GAAG,CAAC,IAAI,CAAC,eAAe,CAAC;IAC/C,CAAC;IAED,oCAAoC;QAClC,IAAI,CAAC,sBAAsB,GAAG,CAAC,IAAI,CAAC,sBAAsB,CAAC;IAC7D,CAAC;CACF;;YAtDwB,0DAAW;YACjB,8DAAc;YACb,sDAAM;YACE,8DAAc;YACb,sDAAc;;AAjB9B,6BAA6B;IALzC,+DAAS,CAAC;QACT,QAAQ,EAAE,2BAA2B;QACrC,6NAAqD;KACtD,CAAC;qCAeuB,0DAAW;QACjB,8DAAc;QACb,sDAAM;QACE,8DAAc;QACb,sDAAc;GAjB9B,6BAA6B,CAmEzC;AAnEyC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACdK;AACW;AACjB;AACM;AACmB;AAEgB;AAC3C;AAiBvC,IAAa,0BAA0B,GAAvC,MAAa,0BAA0B;CAAI;AAA9B,0BAA0B;IAftC,8DAAQ,CAAC;QACR,YAAY,EAAE;YACZ,8FAA6B;SAC9B;QACD,OAAO,EAAE;YACP,uEAAa;YACb,4DAAY;YACZ,0DAAW;YACX,kEAAmB;YACnB,4DAAY,CAAC,QAAQ,CAAC;gBACpB,EAAE,IAAI,EAAE,kDAAU,CAAC,qBAAqB,EAAE,SAAS,EAAE,8FAA6B,EAAE;aACrF,CAAC;SACH;KACF,CAAC;GAEW,0BAA0B,CAAI;AAAJ;;;;;;;;;;;;;;;;;;;;ACxBQ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACAJ;AACF;AAEyB;AACtB;AACL;AAGvC,IAAa,kBAAkB,GAA/B,MAAa,kBAAkB;IAC3B,YACY,iBAAmC,EACnC,oBAAyC,EACzC,OAAe;QAFf,sBAAiB,GAAjB,iBAAiB,CAAkB;QACnC,yBAAoB,GAApB,oBAAoB,CAAqB;QACzC,YAAO,GAAP,OAAO,CAAQ;IACnB,CAAC;IAEI,8BAA8B;;YACvC,IAAI,SAAS,GAAG,IAAI,CAAC,oBAAoB,CAAC,YAAY,EAAE,CAAC;YACzD,MAAM,YAAY,GAAG,uDAAe,CAAC,qBAAqB,CAAC,SAAS,CAAC,SAAS,CAAC;YAC/E,IAAI,CAAC,YAAY,EAAE;gBACf,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,iBAAiB,CAAC,aAAa,EAAE,CAAC;gBAC5D,IAAI,CAAC,MAAM,EAAE;oBACX,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,kDAAU,CAAC,OAAO,CAAC,CAAC,CAAC;iBAC7C;gBAED,SAAS,GAAG,IAAI,CAAC,oBAAoB,CAAC,YAAY,EAAE,CAAC;aACxD;YAED,OAAO,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;QAChD,CAAC;KAAA;CACJ;;YAnBkC,wDAAgB;YACb,2DAAmB;YAChC,sDAAM;;AAJlB,kBAAkB;IAD9B,gEAAU,EAAE;qCAGsB,wDAAgB;QACb,2DAAmB;QAChC,sDAAM;GAJlB,kBAAkB,CAqB9B;AArB8B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACRY;AAEF;AAEF;AAC2B;AACtB;AAG5C,IAAa,SAAS,GAAtB,MAAa,SAAS;IACpB,YACW,OAAe,EACf,YAA+B,EAC/B,oBAAyC;QAFzC,YAAO,GAAP,OAAO,CAAQ;QACf,iBAAY,GAAZ,YAAY,CAAmB;QAC/B,yBAAoB,GAApB,oBAAoB,CAAqB;IAAI,CAAC;IAEnD,WAAW,CACf,IAA4B,EAC5B,KAA0B;;YACxB,IAAI,OAAO,GAAG,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC;YAE1C,IAAI,OAAO,EAAE;gBACX,OAAO,IAAI,CAAC;aACb;iBAAM;gBACL,MAAM,IAAI,CAAC,YAAY,CAAC,aAAa,EAAE,CAAC;gBACxC,OAAO,GAAG,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC;gBAEtC,IAAI,OAAO,EAAE;oBACX,OAAO,IAAI,CAAC;iBACb;gBAED,IAAI,CAAC,YAAY,CAAC,WAAW,GAAG,KAAK,CAAC,GAAG,CAAC;gBAC1C,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,kDAAU,CAAC,OAAO,CAAC,CAAC,CAAC;gBAC5C,OAAO,KAAK,CAAC;aACd;QACL,CAAC;KAAA;IAEO,gBAAgB,CAAC,IAA4B;QACnD,MAAM,SAAS,GAAG,IAAI,CAAC,oBAAoB,CAAC,YAAY,EAAE,CAAC;QAC3D,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC;QAE5C,OAAO,SAAS,IAAI,SAAS,CAAC,IAAI,KAAK,YAAY,IAAI,uDAAe,CAAC,qBAAqB,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;IACpH,CAAC;CACF;;YA/BqB,sDAAM;YACA,wDAAgB;YACT,2DAAmB;;AAJzC,SAAS;IADrB,gEAAU,EAAE;qCAGS,sDAAM;QACA,wDAAgB;QACT,2DAAmB;GAJzC,SAAS,CAiCrB;AAjCqB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACTqB;AACoE;AACzE;AACiB;AACd;AACwB;AAEd;AACe;AAGlE,IAAa,eAAe,GAA5B,MAAa,eAAe;IAC1B,YACU,oBAAyC,EACzC,iBAAmC,EACnC,OAAe;QAFf,yBAAoB,GAApB,oBAAoB,CAAqB;QACzC,sBAAiB,GAAjB,iBAAiB,CAAkB;QACnC,YAAO,GAAP,OAAO,CAAQ;IACrB,CAAC;IAEL,SAAS,CACP,OAAyB,EACzB,IAAiB;QAEjB,MAAM,eAAe,GAAG,IAAI,CAAC,uBAAuB,CAAC,OAAO,CAAC,CAAC;QAC9D,OAAO,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC;aAChC,IAAI,CACH,iEAAU,CAAC,KAAK,CAAC,EAAE;YACjB,IAAI,KAAK,YAAY,sEAAiB,IAAI,KAAK,CAAC,MAAM,KAAK,GAAG,EAAE;gBAC9D,OAAO,IAAI,CAAC,uBAAuB,CAAC,OAAO,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;aAC3D;iBAAM;gBACL,OAAO,sFAAU,CAAC,KAAK,CAAC,CAAC;aAC1B;QACH,CAAC,CAAC,EACF,gEAAS,CAAC,CAAC,KAAqB,EAAE,EAAE;YAClC,OAAO,+CAAE,CAAC,KAAK,CAAC,CAAC;QACnB,CAAC,CAAC,CACH,CAAC;IACN,CAAC;IAEa,uBAAuB,CAAC,OAAyB,EAAE,IAAiB,EAAE,KAAU;;YAC5F,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,iBAAiB,CAAC,aAAa,EAAE,CAAC;YAC5D,IAAI,CAAC,MAAM,IAAI,MAAM,YAAY,kDAAU,EAAE;gBAC3C,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,kDAAU,CAAC,OAAO,CAAC,CAAC,CAAC;aAC7C;YAED,MAAM,eAAe,GAAG,IAAI,CAAC,uBAAuB,CAAC,OAAO,CAAC,CAAC;YAC9D,OAAO,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC,SAAS,EAAE,CAAC;QAClD,CAAC;KAAA;IAEO,uBAAuB,CAAC,OAAyB;QACvD,IAAI,eAAe,GAAG,OAAO,CAAC;QAC9B,MAAM,KAAK,GAAG,IAAI,CAAC,oBAAoB,CAAC,YAAY,EAAE,CAAC;QACvD,IAAI,KAAK,EAAE;YACT,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,eAAe,EAAE,UAAU,KAAK,EAAE,CAAC,CAAC;YACxE,eAAe,GAAG,OAAO,CAAC,KAAK,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC;SAC9C;QACD,OAAO,eAAe,CAAC;IACzB,CAAC;CACF;;YA5CiC,2DAAmB;YACtB,wDAAgB;YAC1B,sDAAM;;AAJd,eAAe;IAD3B,gEAAU,EAAE;qCAGqB,2DAAmB;QACtB,wDAAgB;QAC1B,sDAAM;GAJd,eAAe,CA8C3B;AA9C2B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACX2B;AACM;AACrB;AACS;AAGiP;AAC/I;AACtG;AACF;AACiD;AACjB;AAO3E,IAAa,+BAA+B,GAA5C,MAAa,+BAA+B;IAqC1C,YACU,cAAwC,EACxC,wBAA0D,EAC1D,MAAsB;QAFtB,mBAAc,GAAd,cAAc,CAA0B;QACxC,6BAAwB,GAAxB,wBAAwB,CAAkC;QAC1D,WAAM,GAAN,MAAM,CAAgB;QAhBhC,eAAU,GAAG,KAAK,CAAC;QACnB,oBAAe,GAAG,KAAK,CAAC;QACxB,qBAAgB,GAAG,KAAK,CAAC;QACzB,gBAAW,GAAY,KAAK,CAAC;QAC7B,YAAO,GAAY,KAAK,CAAC;QAEzB,eAAU,GAAG;YACX,IAAI,EAAE,sBAAsB;YAC5B,IAAI,EAAE,sBAAsB;YAC5B,QAAQ,EAAE,0BAA0B;YACpC,aAAa,EAAE,yBAAyB;SACzC;IAMD,CAAC;IAED,QAAQ;QACN,IAAI,OAAe,CAAC;QACpB,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC,UAAe,EAAE,EAAE;YACpD,OAAO,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC;QAC7B,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,eAAe,EAAE,CAAC;QACvB,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE;YACnB,IAAI,CAAC,4BAA4B,CAAC,OAAO,CAAC,CAAC;SAC5C;IACH,CAAC;IAED,eAAe,CAAC,SAAkB;QAChC,IAAI,CAAC,gBAAgB,GAAG,SAAS,CAAC;QAClC,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;IAC3B,CAAC;IAED,qBAAqB;QACnB,IAAI,CAAC,4EAAc,CAAC,IAAI,CAAC,iBAAiB,CAAC,kBAAkB,CAAC,EAAE;YAC9D,IAAI,CAAC,iBAAiB,CAAC,kBAAkB,GAAG,CAAC,CAAC;SAC/C;IACH,CAAC;IAED,kBAAkB;QAChB,IAAI,CAAC,4EAAc,CAAC,IAAI,CAAC,iBAAiB,CAAC,eAAe,CAAC,EAAE;YAC3D,IAAI,CAAC,iBAAiB,CAAC,eAAe,GAAG,CAAC,CAAC;SAC5C;IACH,CAAC;IAED,eAAe,CAAC,eAAuB;QACrC,IAAI,KAAK,GAAG,kCAAkC;QAE9C,QAAQ,eAAe,EAAE;YACvB,KAAK,kBAAkB;gBACrB,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,0BAA0B,CAAC,QAAQ,EAAE,CAAC,EAAE;oBAC7E,IAAI,CAAC,iBAAiB,CAAC,0BAA0B,GAAG,CAAC,CAAC;iBACvD;gBACD,MAAM;YACR,KAAK,eAAe;gBAClB,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,uBAAuB,CAAC,QAAQ,EAAE,CAAC,EAAE;oBAC1E,IAAI,CAAC,iBAAiB,CAAC,uBAAuB,GAAG,CAAC,CAAC;iBACpD;gBACD,MAAM;YACR,KAAK,aAAa;gBAChB,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,qBAAqB,CAAC,QAAQ,EAAE,CAAC,EAAE;oBACxE,IAAI,CAAC,iBAAiB,CAAC,qBAAqB,GAAG,CAAC,CAAC;iBAClD;gBACD,MAAM;YACR,KAAK,UAAU;gBACb,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,kBAAkB,CAAC,QAAQ,EAAE,CAAC,EAAE;oBACrE,IAAI,CAAC,iBAAiB,CAAC,kBAAkB,GAAG,CAAC,CAAC;iBAC/C;gBACD,MAAM;YACR,KAAK,eAAe;gBAClB,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,uBAAuB,CAAC,QAAQ,EAAE,CAAC,EAAE;oBAC1E,IAAI,CAAC,iBAAiB,CAAC,uBAAuB,GAAG,CAAC,CAAC;iBACpD;gBACD,MAAM;YACR,KAAK,YAAY;gBACf,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,oBAAoB,CAAC,QAAQ,EAAE,CAAC,EAAE;oBACvE,IAAI,CAAC,iBAAiB,CAAC,oBAAoB,GAAG,CAAC,CAAC;iBACjD;gBACD,MAAM;YACR;gBACE,MAAM;SACT;IACH,CAAC;IAED,2BAA2B;QACzB,IAAI,MAAM,GAAG,CAAC,CAAC;QAEf,IAAI,CAAC,iBAAiB,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;YAC9C,IAAI,CAAC,GAAG,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC;YACpC,MAAM,IAAI,CAAC,CAAC;QACd,CAAC,CAAC;QAEF,IAAI,CAAC,iBAAiB,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;YAC9C,IAAI,CAAC,GAAG,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC;YACpC,MAAM,IAAI,CAAC,CAAC;QACd,CAAC,CAAC;QAEF,IAAI,CAAC,iBAAiB,CAAC,aAAa,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;YAClD,IAAI,CAAC,GAAG,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC;YACpC,MAAM,IAAI,CAAC,CAAC;QACd,CAAC,CAAC;QAEF,IAAI,CAAC,iBAAiB,CAAC,2BAA2B,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;YAChE,IAAI,CAAC,GAAG,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC;YACpC,MAAM,IAAI,CAAC,CAAC;QACd,CAAC,CAAC;QAEF,IAAI,CAAC,iBAAiB,CAAC,kBAAkB,GAAG,MAAM,CAAC;QAEnD,OAAO,IAAI,CAAC,iBAAiB,CAAC,kBAAkB,CAAC;IACnD,CAAC;IAED,wCAAwC;QACtC,IAAI,kBAAkB,GAAG,IAAI,CAAC,yBAAyB,EAAE,CAAC;QAE1D,IAAI,QAAQ,GAAG,CAAC,kBAAkB,GAAG,IAAI,CAAC,iBAAiB,CAAC,0BAA0B,CAAC,GAAG,GAAG,CAAC;QAC9F,IAAI,yBAAyB,GAAG,kBAAkB,GAAG,QAAQ,CAAC;QAE9D,IAAI,GAAG,GAAG,CAAC,yBAAyB,GAAG,IAAI,CAAC,iBAAiB,CAAC,qBAAqB,CAAC,GAAG,GAAG,CAAC;QAE3F,IAAI,CAAC,iBAAiB,CAAC,+BAA+B,GAAG,IAAI,CAAC,uBAAuB,CAAC,yBAAyB,GAAG,GAAG,CAAC,CAAC;QAEvH,OAAO,IAAI,CAAC,iBAAiB,CAAC,+BAA+B,CAAC;IAChE,CAAC;IAED,yBAAyB;QACvB,IAAI,kBAAkB,GAAG,CAAC,CAAC;QAE3B,IAAI,CAAC,iBAAiB,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;YAC9C,kBAAkB,IAAI,IAAI,CAAC,kBAAkB,CAAC;QAChD,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,iBAAiB,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;YAC9C,kBAAkB,IAAI,IAAI,CAAC,kBAAkB,CAAC;QAChD,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,iBAAiB,CAAC,aAAa,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;YAClD,kBAAkB,IAAI,IAAI,CAAC,kBAAkB,CAAC;QAChD,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,iBAAiB,CAAC,2BAA2B,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;YAChE,kBAAkB,IAAI,IAAI,CAAC,kBAAkB,CAAC;QAChD,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,iBAAiB,CAAC,sBAAsB,GAAG,IAAI,CAAC,uBAAuB,CAAC,kBAAkB,CAAC,CAAC;QACjG,OAAO,kBAAkB,CAAC;IAC5B,CAAC;IAED,qCAAqC;QACnC,IAAI,eAAe,GAAG,IAAI,CAAC,sBAAsB,EAAE,CAAC;QAEpD,IAAI,QAAQ,GAAG,CAAC,eAAe,GAAG,IAAI,CAAC,iBAAiB,CAAC,uBAAuB,CAAC,GAAG,GAAG,CAAC;QACxF,IAAI,sBAAsB,GAAG,eAAe,GAAG,QAAQ,CAAC;QAExD,IAAI,GAAG,GAAG,CAAC,sBAAsB,GAAG,IAAI,CAAC,iBAAiB,CAAC,kBAAkB,CAAC,GAAG,GAAG,CAAC;QAErF,IAAI,CAAC,iBAAiB,CAAC,4BAA4B,GAAG,IAAI,CAAC,uBAAuB,CAAC,sBAAsB,GAAG,GAAG,CAAC,CAAC;QAEjH,OAAO,IAAI,CAAC,iBAAiB,CAAC,4BAA4B,CAAC;IAC7D,CAAC;IAED,sBAAsB;QACpB,IAAI,eAAe,GAAG,CAAC,CAAC;QAExB,IAAI,CAAC,iBAAiB,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;YAC9C,eAAe,IAAI,IAAI,CAAC,eAAe,CAAC;QAC1C,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,iBAAiB,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;YAC9C,eAAe,IAAI,IAAI,CAAC,eAAe,CAAC;QAC1C,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,iBAAiB,CAAC,aAAa,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;YAClD,eAAe,IAAI,IAAI,CAAC,eAAe,CAAC;QAC1C,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,iBAAiB,CAAC,2BAA2B,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;YAChE,eAAe,IAAI,IAAI,CAAC,eAAe,CAAC;QAC1C,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,iBAAiB,CAAC,mBAAmB,GAAG,IAAI,CAAC,uBAAuB,CAAC,eAAe,CAAC,CAAC;QAC3F,OAAO,eAAe,CAAC;IACzB,CAAC;IAED,+BAA+B;QAC7B,IAAI,MAAc,CAAC;QAEnB,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC,iBAAiB,CAAC,kBAAkB,GAAG,IAAI,CAAC,iBAAiB,CAAC,uBAAuB,CAAC,GAAG,GAAG,CAAC;QAE7G,IAAI,GAAG,KAAK,CAAC,EAAE;YACb,MAAM,GAAG,IAAI,CAAC,iBAAiB,CAAC,kBAAkB,CAAC;SACpD;aAAM;YACL,MAAM,GAAG,IAAI,CAAC,iBAAiB,CAAC,kBAAkB,GAAG,GAAG,CAAC;SAC1D;QAED,IAAI,CAAC,iBAAiB,CAAC,oBAAoB,GAAG,IAAI,CAAC,uBAAuB,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC;QAE3F,OAAO,IAAI,CAAC,iBAAiB,CAAC,oBAAoB,CAAC;IACrD,CAAC;IAED,+BAA+B;QAC7B,IAAI,MAAc,CAAC;QAEnB,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC,iBAAiB,CAAC,eAAe,GAAG,IAAI,CAAC,iBAAiB,CAAC,oBAAoB,CAAC,GAAG,GAAG,CAAC;QAEvG,IAAI,GAAG,KAAK,CAAC,EAAE;YACb,MAAM,GAAG,IAAI,CAAC,iBAAiB,CAAC,eAAe,CAAC;SACjD;aAAM;YACL,MAAM,GAAG,IAAI,CAAC,iBAAiB,CAAC,eAAe,GAAG,GAAG,CAAC;SACvD;QAED,IAAI,CAAC,iBAAiB,CAAC,iBAAiB,GAAG,IAAI,CAAC,uBAAuB,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC;QAExF,OAAO,IAAI,CAAC,iBAAiB,CAAC,iBAAiB,CAAC;IAClD,CAAC;IAED,mBAAmB;QACjB,IAAI,MAAM,GAAG,IAAI,CAAC,iBAAiB,CAAC,+BAA+B;YACjE,IAAI,CAAC,iBAAiB,CAAC,4BAA4B;YACnD,IAAI,CAAC,iBAAiB,CAAC,oBAAoB;YAC3C,IAAI,CAAC,iBAAiB,CAAC,iBAAiB,CAAC;QAE3C,IAAI,CAAC,iBAAiB,CAAC,UAAU,GAAG,IAAI,CAAC,uBAAuB,CAAC,MAAM,CAAC,CAAC;QAEzE,OAAO,MAAM,CAAC;IAChB,CAAC;IAEM,kBAAkB;QACvB,IAAI,KAAK,GAAG,IAAI,CAAC,gBAAgB,EAAE;QACnC,IAAI,CAAC,iBAAiB,CAAC,kCAAkC,CAAC,KAAK,CAAC,CAAC;IACnE,CAAC;IAED,mBAAmB;QACjB,IAAI,KAAK,GAAG,IAAI,CAAC,gBAAgB,EAAE;QACnC,IAAI,CAAC,kBAAkB,CAAC,kCAAkC,CAAC,KAAK,CAAC,CAAC;IACpE,CAAC;IAED,2BAA2B;QACzB,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;QAExB,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,EAAE;YAC9C,OAAO;SACR;QAED,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,EAAE,EAAE;YAC9B,IAAI,CAAC,oBAAoB,EAAE,CAAC;SAC7B;aAAM;YACL,IAAI,CAAC,WAAW,CAAC,gBAAgB,EAAE,CAAC;SACrC;IACH,CAAC;IAEK,oBAAoB;;YACxB,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;YAEvB,IAAI,aAAa,GAAG,IAAI,CAAC,kBAAkB,EAAE,CAAC;YAE9C,IAAI,KAAK,GAAG,IAAI,CAAC,iCAAiC,CAAC,IAAI,CAAC,CAAC;YACzD,KAAK,CAAC,qBAAqB,GAAG,aAAa,CAAC;YAC5C,IAAI,MAAM,GAAG,MAAM,IAAI,CAAC,wBAAwB,CAAC,oBAAoB,CAAC,KAAK,CAAkC,CAAC;YAC9G,IAAI,CAAC,uBAAuB,CAAC,MAAM,CAAC,CAAC;QACvC,CAAC;KAAA;IAEO,kBAAkB;QACxB,IAAI,aAAa,GAAa,EAAE,CAAC;QAEjC,IAAI,IAAI,CAAC,SAAS,CAAC,kBAAkB,CAAC,MAAM,GAAG,CAAC,EAAE;YAChD,aAAa,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,kBAAkB,CAAC,CAAC;SACzE;QAED,IAAI,IAAI,CAAC,SAAS,CAAC,kBAAkB,CAAC,MAAM,GAAG,CAAC,EAAE;YAChD,aAAa,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,kBAAkB,CAAC,CAAC;SACzE;QAED,IAAI,IAAI,CAAC,aAAa,CAAC,kBAAkB,CAAC,MAAM,GAAG,CAAC,EAAE;YACpD,aAAa,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,kBAAkB,CAAC,CAAC;SAC7E;QAED,IAAI,IAAI,CAAC,2BAA2B,CAAC,kBAAkB,CAAC,MAAM,GAAG,CAAC,EAAE;YAClE,aAAa,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,2BAA2B,CAAC,kBAAkB,CAAC,CAAC;SAC3F;QAED,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,MAAM,IAAI,CAAC;YACnC,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC,CAAC;eACzB,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE;YAChC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;SAChD;QAED,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,MAAM,IAAI,CAAC;YACnC,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC,CAAC;eACzB,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE;YAChC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;SAChD;QAED,IAAI,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,MAAM,IAAI,CAAC;YACvC,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC,CAAC;eAC7B,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE;YACpC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;SACpD;QAED,IAAI,IAAI,CAAC,2BAA2B,CAAC,MAAM,CAAC,MAAM,IAAI,CAAC;YACrD,IAAI,CAAC,2BAA2B,CAAC,UAAU,CAAC,CAAC,CAAC;eAC3C,IAAI,CAAC,2BAA2B,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE;YAClD,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,2BAA2B,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;SAClE;QAED,OAAO,aAAa,CAAC;IACvB,CAAC;IAEK,4BAA4B,CAAC,EAAU;;YAC3C,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;YACpB,IAAI,MAAM,GAAG,MAAM,IAAI,CAAC,wBAAwB,CAAC,uBAAuB,CAAC,EAAE,CAAkC,CAAC;YAE9G,IAAI,CAAC,CAAC,MAAM,YAAY,kDAAU,CAAC,EAAE;gBACnC,IAAI,CAAC,iBAAiB,GAAG,IAAI,6DAAqB,EAAE;gBACpD,IAAI,CAAC,iBAAiB,CAAC,EAAE,GAAG,MAAM,CAAC,EAAE,CAAC;gBACtC,IAAI,CAAC,iBAAiB,CAAC,eAAe,GAAG,IAAI,uDAAe,EAAE,CAAC;gBAC/D,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,iBAAiB,CAAC,eAAe,EAAE,MAAM,CAAC,eAAe,CAAC,CAAC;gBAC9E,IAAI,CAAC,iBAAiB,CAAC,uBAAuB,GAAG,IAAI,+DAAuB,EAAE,CAAC;gBAC/E,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,iBAAiB,CAAC,uBAAuB,EAAE,MAAM,CAAC,uBAAuB,CAAC,CAAC;gBAC9F,IAAI,CAAC,iBAAiB,CAAC,WAAW,GAAG,IAAI,mEAA2B,EAAE,CAAC;gBACvE,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,iBAAiB,CAAC,WAAW,EAAE,MAAM,CAAC,WAAW,CAAC,CAAC;gBACtE,IAAI,CAAC,iBAAiB,CAAC,kBAAkB,GAAG,MAAM,CAAC,kBAAkB,CAAC;gBACtE,IAAI,CAAC,iBAAiB,CAAC,eAAe,GAAG,MAAM,CAAC,eAAe,CAAC;gBAChE,IAAI,CAAC,iBAAiB,CAAC,0BAA0B,GAAG,MAAM,CAAC,0BAA0B,CAAC;gBACtF,IAAI,CAAC,iBAAiB,CAAC,uBAAuB,GAAG,MAAM,CAAC,uBAAuB,CAAC;gBAChF,IAAI,CAAC,iBAAiB,CAAC,qBAAqB,GAAG,MAAM,CAAC,qBAAqB,CAAC;gBAC5E,IAAI,CAAC,iBAAiB,CAAC,kBAAkB,GAAG,MAAM,CAAC,kBAAkB,CAAC;gBACtE,IAAI,CAAC,iBAAiB,CAAC,uBAAuB,GAAG,MAAM,CAAC,uBAAuB,CAAC;gBAChF,IAAI,CAAC,iBAAiB,CAAC,oBAAoB,GAAG,MAAM,CAAC,oBAAoB,CAAC;gBAC1E,IAAI,CAAC,iBAAiB,CAAC,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC;gBACtD,IAAI,CAAC,iBAAiB,CAAC,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;gBAClD,IAAI,CAAC,iBAAiB,CAAC,SAAS,GAAG,EAAE,CAAC;gBACtC,IAAI,CAAC,iBAAiB,CAAC,SAAS,GAAG,EAAE,CAAC;gBACtC,IAAI,CAAC,iBAAiB,CAAC,aAAa,GAAG,EAAE,CAAC;gBAC1C,IAAI,CAAC,iBAAiB,CAAC,2BAA2B,GAAG,EAAE,CAAC;gBAExD,MAAM,CAAC,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC;gBAE5E,MAAM,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;oBAC9B,IAAI,QAAQ,GAAG,IAAI,qDAAa,EAAE,CAAC;oBACnC,MAAM,CAAC,MAAM,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;oBAE9B,QAAQ,IAAI,CAAC,QAAQ,EAAE;wBACrB,KAAK,mDAAY,CAAC,IAAI;4BACpB,IAAI,CAAC,iBAAiB,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;4BAChD,MAAM;wBACR,KAAK,mDAAY,CAAC,IAAI;4BACpB,IAAI,CAAC,iBAAiB,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;4BAChD,MAAM;wBACR,KAAK,mDAAY,CAAC,QAAQ;4BACxB,IAAI,CAAC,iBAAiB,CAAC,aAAa,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;4BACpD,MAAM;wBACR,KAAK,mDAAY,CAAC,sBAAsB;4BACtC,IAAI,CAAC,iBAAiB,CAAC,2BAA2B,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;4BAClE,MAAM;wBACR;4BACE,MAAM;qBACT;gBACH,CAAC,CAAC;gBAEF,IAAI,CAAC,SAAS,CAAC,MAAM,GAAG,IAAI,CAAC,iBAAiB,CAAC,SAAS,CAAC;gBACzD,IAAI,CAAC,SAAS,CAAC,MAAM,GAAG,IAAI,CAAC,iBAAiB,CAAC,SAAS,CAAC;gBACzD,IAAI,CAAC,aAAa,CAAC,MAAM,GAAG,IAAI,CAAC,iBAAiB,CAAC,aAAa,CAAC;gBACjE,IAAI,CAAC,2BAA2B,CAAC,MAAM,GAAG,IAAI,CAAC,iBAAiB,CAAC,2BAA2B,CAAC;gBAE7F,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE;gBACzB,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE;gBACzB,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE;gBAC7B,IAAI,CAAC,2BAA2B,CAAC,QAAQ,EAAE;aAC5C;YAED,IAAI,CAAC,gBAAgB,GAAG,KAAK,CAAC;YAC9B,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC;YAChC,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;QACvB,CAAC;KAAA;IAEK,oBAAoB;;YACxB,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;YACvB,IAAI,KAAK,GAAG,IAAI,CAAC,iCAAiC,EAAE,CAAC;YACrD,IAAI,MAAM,GAAG,MAAM,IAAI,CAAC,wBAAwB,CAAC,mBAAmB,CAAC,KAAK,CAAkC,CAAC;YAC7G,IAAI,CAAC,uBAAuB,CAAC,MAAM,CAAC,CAAC;QACvC,CAAC;KAAA;IAAA,CAAC;IAEF,aAAa;QACX,OAAO,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,iBAAiB,CAAC,SAAS,CAAC;YACxD,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,iBAAiB,CAAC,SAAS,CAAC;YACnD,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,iBAAiB,CAAC,aAAa,CAAC;YACvD,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,iBAAiB,CAAC,2BAA2B,CAAC;IACzE,CAAC;IAED,kBAAkB;QAChB,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,IAAI,IAAI,CAAC,gBAAgB,CAAC;IAChG,CAAC;IAEO,uBAAuB,CAAC,MAAqC;QACnE,IAAI,MAAM,YAAY,kDAAU,EAAE;YAChC,OAAO;SACR;aAAM,IAAI,MAAM,EAAE;YACjB,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC;YAC5B,UAAU,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,eAAe,GAAG,KAAK,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;YAE1D,IAAI,CAAC,iBAAiB,CAAC,EAAE,GAAG,MAAM,CAAC,EAAE,CAAC;YACtC,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;YAEvC,IAAI,CAAC,gBAAgB,GAAG,KAAK,CAAC;YAC9B,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC;SACjC;QAED,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;IAC1B,CAAC;IAEO,eAAe,CAAC,SAAkC;QACxD,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;YAEvB,QAAQ,IAAI,CAAC,QAAQ,EAAE;gBACrB,KAAK,mDAAY,CAAC,IAAI;oBACpB,IAAI,CAAC,iBAAiB,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,CAAC;oBAC7D,MAAM;gBACR,KAAK,mDAAY,CAAC,IAAI;oBACpB,IAAI,CAAC,iBAAiB,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,CAAC;oBAC7D,MAAM;gBACR,KAAK,mDAAY,CAAC,QAAQ;oBACxB,IAAI,CAAC,iBAAiB,CAAC,aAAa,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,CAAC;oBACjE,MAAM;gBACR,KAAK,mDAAY,CAAC,sBAAsB;oBACtC,IAAI,CAAC,iBAAiB,CAAC,2BAA2B,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,CAAC;oBAC/E,MAAM;gBACR;oBACE,MAAM;aACT;QACH,CAAC,CAAC,CAAC;IACL,CAAC;IAEO,gBAAgB;QACtB,IAAI,WAAW,GAAG,IAAI,mEAA2B,EAAE,CAAC;QAEpD,WAAW,CAAC,EAAE,GAAG,IAAI,CAAC,iBAAiB,CAAC,EAAE,CAAC;QAC3C,WAAW,CAAC,eAAe,GAAG,IAAI,uDAAe,EAAE,CAAC;QACpD,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,eAAe,EAAE,IAAI,CAAC,iBAAiB,CAAC,eAAe,CAAC,CAAC;QACnF,WAAW,CAAC,uBAAuB,GAAG,IAAI,+DAAuB,EAAE,CAAC;QACpE,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,uBAAuB,EAAE,IAAI,CAAC,iBAAiB,CAAC,uBAAuB,CAAC,CAAC;QACnG,WAAW,CAAC,WAAW,GAAG,IAAI,mEAA2B,EAAE,CAAC;QAC5D,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,WAAW,EAAE,IAAI,CAAC,iBAAiB,CAAC,WAAW,CAAC,CAAC;QAC3E,WAAW,CAAC,kBAAkB,GAAG,IAAI,CAAC,iBAAiB,CAAC,kBAAkB,CAAC;QAC3E,WAAW,CAAC,eAAe,GAAG,IAAI,CAAC,iBAAiB,CAAC,eAAe,CAAC;QACrE,WAAW,CAAC,0BAA0B,GAAG,IAAI,CAAC,iBAAiB,CAAC,0BAA0B,CAAC;QAC3F,WAAW,CAAC,uBAAuB,GAAG,IAAI,CAAC,iBAAiB,CAAC,uBAAuB,CAAC;QACrF,WAAW,CAAC,qBAAqB,GAAG,IAAI,CAAC,iBAAiB,CAAC,qBAAqB,CAAC;QACjF,WAAW,CAAC,kBAAkB,GAAG,IAAI,CAAC,iBAAiB,CAAC,kBAAkB,CAAC;QAC3E,WAAW,CAAC,uBAAuB,GAAG,IAAI,CAAC,iBAAiB,CAAC,uBAAuB,CAAC;QACrF,WAAW,CAAC,oBAAoB,GAAG,IAAI,CAAC,iBAAiB,CAAC,oBAAoB,CAAC;QAC/E,WAAW,CAAC,UAAU,GAAG,IAAI,CAAC,iBAAiB,CAAC,UAAU,CAAC;QAC3D,WAAW,CAAC,SAAS,GAAG,IAAI,CAAC,wBAAwB,EAAE,CAAC;QACxD,WAAW,CAAC,kBAAkB,GAAG,IAAI,CAAC,iBAAiB,CAAC,kBAAkB,CAAC;QAC3E,WAAW,CAAC,sBAAsB,GAAG,IAAI,CAAC,iBAAiB,CAAC,sBAAsB,CAAC;QACnF,WAAW,CAAC,mBAAmB,GAAG,IAAI,CAAC,iBAAiB,CAAC,mBAAmB,CAAC;QAC7E,WAAW,CAAC,+BAA+B,GAAG,IAAI,CAAC,iBAAiB,CAAC,+BAA+B,CAAC;QACrG,WAAW,CAAC,4BAA4B,GAAG,IAAI,CAAC,iBAAiB,CAAC,4BAA4B,CAAC;QAC/F,WAAW,CAAC,oBAAoB,GAAG,IAAI,CAAC,iBAAiB,CAAC,oBAAoB,CAAC;QAC/E,WAAW,CAAC,iBAAiB,GAAG,IAAI,CAAC,iBAAiB,CAAC,iBAAiB,CAAC;QACzE,WAAW,CAAC,UAAU,GAAG,IAAI,CAAC,iBAAiB,CAAC,UAAU,CAAC;QAC3D,WAAW,CAAC,QAAQ,GAAG,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC;QACvD,OAAO,WAAW,CAAC;IACrB,CAAC;IAEO,wBAAwB;QAC9B,IAAI,CAAC,aAAa,EAAE,CAAC;QACrB,IAAI,SAAS,GAAoB,EAAE,CAAC;QAEpC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,iBAAiB,CAAC,SAAS,CAAC,EAAE;YACxD,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,EAAE,IAAI,CAAC,iBAAiB,CAAC,SAAS,CAAC,CAAC;SACzE;QAED,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,iBAAiB,CAAC,SAAS,CAAC,EAAE;YACxD,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,EAAE,IAAI,CAAC,iBAAiB,CAAC,SAAS,CAAC,CAAC;SACzE;QAED,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,iBAAiB,CAAC,aAAa,CAAC,EAAE;YAC5D,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,EAAE,IAAI,CAAC,iBAAiB,CAAC,aAAa,CAAC,CAAC;SAC7E;QAED,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,iBAAiB,CAAC,2BAA2B,CAAC,EAAE;YAC1E,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,EAAE,IAAI,CAAC,iBAAiB,CAAC,2BAA2B,CAAC,CAAC;SAC3F;QAED,OAAO,SAAS,CAAC;IACnB,CAAC;IAEO,aAAa;QACnB,IAAI,CAAC,iBAAiB,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;YAC9C,IAAI,CAAC,QAAQ,GAAG,mDAAY,CAAC,IAAI,CAAC;QACpC,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,iBAAiB,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;YAC9C,IAAI,CAAC,QAAQ,GAAG,mDAAY,CAAC,IAAI,CAAC;QACpC,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,iBAAiB,CAAC,aAAa,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;YAClD,IAAI,CAAC,QAAQ,GAAG,mDAAY,CAAC,QAAQ,CAAC;QACxC,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,iBAAiB,CAAC,2BAA2B,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;YAChE,IAAI,CAAC,QAAQ,GAAG,mDAAY,CAAC,sBAAsB,CAAC;QACtD,CAAC,CAAC,CAAC;IACL,CAAC;IAEO,uBAAuB,CAAC,MAAc;QAC5C,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC;IAC3D,CAAC;IAEO,YAAY,CAAC,KAAsB;QACzC,IAAI,OAAO,GAAY,IAAI,CAAC;QAE5B,KAAK,IAAI,IAAI,IAAI,KAAK,EAAE;YACtB,IAAI,IAAI,CAAC,QAAQ,IAAI,CAAC,IAAI,IAAI,CAAC,WAAW,IAAI,EAAE,EAAE;gBAChD,OAAO,GAAG,KAAK,CAAC;aACjB;SACF;QAED,OAAO,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,IAAI,OAAO,CAAC;IAC7C,CAAC;IAEO,YAAY,CAAC,KAAsB;QACzC,OAAO,KAAK,CAAC,MAAM,KAAK,CAAC;YACvB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,UAAU,KAAK,SAAS,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,UAAU,KAAK,EAAE,CAAC;YACjE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,QAAQ,KAAK,CAAC,IAAI,CAAC,4EAAc,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;YAC/D,KAAK,CAAC,CAAC,CAAC,CAAC,WAAW,KAAK,EAAE;YAC3B,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,4EAAc,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;YAC3D,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,iBAAiB,KAAK,CAAC,IAAI,CAAC,4EAAc,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC;YACjF,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,cAAc,KAAK,CAAC,IAAI,CAAC,4EAAc,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC;IAC/E,CAAC;IAEO,iCAAiC,CAAC,cAAuB,KAAK;QACpE,IAAI,CAAC,aAAa,EAAE,CAAC;QACrB,IAAI,4BAA4B,GAAG,IAAI,oEAA4B,EAAE,CAAC;QAEtE,IAAI,WAAW,EAAE;YACf,4BAA4B,CAAC,EAAE,GAAG,IAAI,CAAC,iBAAiB,CAAC,EAAE,CAAC;SAC7D;QAED,4BAA4B,CAAC,eAAe,GAAG,IAAI,uDAAe,EAAE,CAAC;QACrE,MAAM,CAAC,MAAM,CAAC,4BAA4B,CAAC,eAAe,EAAE,IAAI,CAAC,iBAAiB,CAAC,eAAe,CAAC,CAAC;QACpG,4BAA4B,CAAC,uBAAuB,GAAG,IAAI,+DAAuB,EAAE,CAAC;QACrF,MAAM,CAAC,MAAM,CAAC,4BAA4B,CAAC,uBAAuB,EAAE,IAAI,CAAC,iBAAiB,CAAC,uBAAuB,CAAC,CAAC;QACpH,4BAA4B,CAAC,WAAW,GAAG,IAAI,mEAA2B,EAAE,CAAC;QAC7E,MAAM,CAAC,MAAM,CAAC,4BAA4B,CAAC,WAAW,EAAE,IAAI,CAAC,iBAAiB,CAAC,WAAW,CAAC,CAAC;QAC5F,4BAA4B,CAAC,kBAAkB,GAAG,IAAI,CAAC,iBAAiB,CAAC,kBAAkB,CAAC;QAC5F,4BAA4B,CAAC,eAAe,GAAG,IAAI,CAAC,iBAAiB,CAAC,eAAe,CAAC;QACtF,4BAA4B,CAAC,0BAA0B,GAAG,IAAI,CAAC,iBAAiB,CAAC,0BAA0B,CAAC;QAC5G,4BAA4B,CAAC,uBAAuB,GAAG,IAAI,CAAC,iBAAiB,CAAC,uBAAuB,CAAC;QACtG,4BAA4B,CAAC,qBAAqB,GAAG,IAAI,CAAC,iBAAiB,CAAC,qBAAqB,CAAC;QAClG,4BAA4B,CAAC,kBAAkB,GAAG,IAAI,CAAC,iBAAiB,CAAC,kBAAkB,CAAC;QAC5F,4BAA4B,CAAC,uBAAuB,GAAG,IAAI,CAAC,iBAAiB,CAAC,uBAAuB,CAAC;QACtG,4BAA4B,CAAC,oBAAoB,GAAG,IAAI,CAAC,iBAAiB,CAAC,oBAAoB,CAAC;QAChG,4BAA4B,CAAC,UAAU,GAAG,IAAI,CAAC,iBAAiB,CAAC,UAAU,CAAC;QAC5E,4BAA4B,CAAC,QAAQ,GAAG,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC;QAExE,4BAA4B,CAAC,SAAS,GAAG,EAAE,CAAC;QAE5C,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,iBAAiB,CAAC,SAAS,CAAC,EAAE;YACxD,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,4BAA4B,CAAC,SAAS,EAAE,IAAI,CAAC,+BAA+B,CAAC,IAAI,CAAC,iBAAiB,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC,CAAC;SACzJ;QAED,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,iBAAiB,CAAC,SAAS,CAAC,EAAE;YACxD,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,4BAA4B,CAAC,SAAS,EAAE,IAAI,CAAC,+BAA+B,CAAC,IAAI,CAAC,iBAAiB,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC,CAAC;SACzJ;QAED,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,iBAAiB,CAAC,aAAa,CAAC,EAAE;YAC5D,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,4BAA4B,CAAC,SAAS,EAAE,IAAI,CAAC,+BAA+B,CAAC,IAAI,CAAC,iBAAiB,CAAC,aAAa,EAAE,WAAW,CAAC,CAAC,CAAC;SAC7J;QAED,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,iBAAiB,CAAC,2BAA2B,CAAC,EAAE;YAC1E,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,4BAA4B,CAAC,SAAS,EAAE,IAAI,CAAC,+BAA+B,CAAC,IAAI,CAAC,iBAAiB,CAAC,2BAA2B,EAAE,WAAW,CAAC,CAAC,CAAC;SAC3K;QAED,OAAO,4BAA4B,CAAC;IACtC,CAAC;IAEO,+BAA+B,CAAC,SAA0B,EAAE,WAAW;QAC7E,IAAI,MAAM,GAA2B,EAAE,CAAC;QAExC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YACzC,IAAI,QAAQ,GAAG,IAAI,4DAAoB,EAAE,CAAC;YAE1C,IAAI,WAAW,EAAE;gBACf,QAAQ,CAAC,EAAE,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;aAC/B;YAED,QAAQ,CAAC,UAAU,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC;YAC9C,QAAQ,CAAC,QAAQ,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC;YAC1C,QAAQ,CAAC,WAAW,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC;YAChD,QAAQ,CAAC,MAAM,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;YACtC,QAAQ,CAAC,iBAAiB,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC,iBAAiB,CAAC;YAC5D,QAAQ,CAAC,cAAc,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC;YACtD,QAAQ,CAAC,QAAQ,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC;YAC1C,QAAQ,CAAC,QAAQ,GAAG,CAAC,CAAC;YAEtB,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;SACvB;QAED,OAAO,MAAM,CAAC;IAChB,CAAC;IAEO,eAAe;QACrB,IAAI,CAAC,iBAAiB,GAAG,IAAI,6DAAqB,EAAE,CAAC;QACrD,IAAI,CAAC,iBAAiB,CAAC,eAAe,GAAG,IAAI,uDAAe,EAAE,CAAC;QAC/D,IAAI,CAAC,iBAAiB,CAAC,eAAe,CAAC,IAAI,GAAG,EAAE,CAAC;QACjD,IAAI,CAAC,iBAAiB,CAAC,eAAe,CAAC,WAAW,GAAG,EAAE,CAAC;QACxD,IAAI,CAAC,iBAAiB,CAAC,eAAe,CAAC,IAAI,GAAG,EAAE,CAAC;QACjD,IAAI,CAAC,iBAAiB,CAAC,eAAe,CAAC,OAAO,GAAG,EAAE,CAAC;QAEpD,IAAI,CAAC,iBAAiB,CAAC,uBAAuB,GAAG,IAAI,+DAAuB,EAAE,CAAC;QAC/E,IAAI,CAAC,iBAAiB,CAAC,uBAAuB,CAAC,WAAW,GAAG,EAAE,CAAC;QAChE,IAAI,CAAC,iBAAiB,CAAC,uBAAuB,CAAC,IAAI,GAAG,EAAE,CAAC;QACzD,IAAI,CAAC,iBAAiB,CAAC,uBAAuB,CAAC,IAAI,GAAG,EAAE,CAAC;QACzD,IAAI,CAAC,iBAAiB,CAAC,uBAAuB,CAAC,WAAW,GAAG,EAAE,CAAC;QAEhE,IAAI,CAAC,iBAAiB,CAAC,WAAW,GAAG,IAAI,mEAA2B,EAAE,CAAC;QACvE,IAAI,CAAC,iBAAiB,CAAC,WAAW,CAAC,oBAAoB,GAAG,EAAE,CAAC;QAC7D,IAAI,CAAC,iBAAiB,CAAC,WAAW,CAAC,mBAAmB,GAAG,EAAE,CAAC;QAE5D,IAAI,CAAC,iBAAiB,CAAC,SAAS,GAAG,EAAE,CAAC;QACtC,IAAI,CAAC,iBAAiB,CAAC,SAAS,GAAG,EAAE,CAAC;QACtC,IAAI,CAAC,iBAAiB,CAAC,aAAa,GAAG,EAAE,CAAC;QAC1C,IAAI,CAAC,iBAAiB,CAAC,2BAA2B,GAAG,EAAE,CAAC;QAExD,IAAI,CAAC,iBAAiB,CAAC,kBAAkB,GAAG,CAAC,CAAC;QAC9C,IAAI,CAAC,iBAAiB,CAAC,eAAe,GAAG,CAAC,CAAC;QAC3C,IAAI,CAAC,iBAAiB,CAAC,0BAA0B,GAAG,CAAC,CAAC;QACtD,IAAI,CAAC,iBAAiB,CAAC,uBAAuB,GAAG,CAAC,CAAC;QACnD,IAAI,CAAC,iBAAiB,CAAC,qBAAqB,GAAG,CAAC,CAAC;QACjD,IAAI,CAAC,iBAAiB,CAAC,kBAAkB,GAAG,CAAC,CAAC;QAC9C,IAAI,CAAC,iBAAiB,CAAC,uBAAuB,GAAG,CAAC,CAAC;QACnD,IAAI,CAAC,iBAAiB,CAAC,oBAAoB,GAAG,CAAC,CAAC;QAChD,IAAI,CAAC,iBAAiB,CAAC,kBAAkB,GAAG,CAAC,CAAC;QAC9C,IAAI,CAAC,iBAAiB,CAAC,sBAAsB,GAAG,CAAC,CAAC;QAClD,IAAI,CAAC,iBAAiB,CAAC,mBAAmB,GAAG,CAAC,CAAC;QAC/C,IAAI,CAAC,iBAAiB,CAAC,+BAA+B,GAAG,CAAC,CAAC;QAC3D,IAAI,CAAC,iBAAiB,CAAC,4BAA4B,GAAG,CAAC,CAAC;QACxD,IAAI,CAAC,iBAAiB,CAAC,oBAAoB,GAAG,CAAC,CAAC;QAChD,IAAI,CAAC,iBAAiB,CAAC,iBAAiB,GAAG,CAAC,CAAC;QAC7C,IAAI,CAAC,iBAAiB,CAAC,UAAU,GAAG,CAAC,CAAC;QACtC,IAAI,CAAC,iBAAiB,CAAC,QAAQ,GAAG,EAAE,CAAC;QAErC,IAAI,CAAC,cAAc,CAAC,UAAU,EAAE,CAAC,IAAI,CAAC,CAAC,OAA4B,EAAE,EAAE;YACrE,IAAI,QAAQ,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC;YAC1D,IAAI,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,GAAG,OAAO,CAAC,QAAQ,CAAE,CAAC,CAAC,EAAE;YAC9D,IAAI,CAAC,iBAAiB,CAAC,UAAU,GAAG,QAAQ,GAAG,QAAQ,CAAC;QAC1D,CAAC,CAAC,CAAC;IACL,CAAC;CACF;;YA/nB2B,kEAAwB;YACd,0EAAgC;YAClD,8DAAc;;AAtChC;IADC,+DAAS,CAAC,WAAW,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;8BAC3B,qDAAM;6DAAC;AAGrB;IADC,+DAAS,CAAC,4EAAoC,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;8BACpD,4EAAoC;2EAAC;AAGjE;IADC,+DAAS,CAAC,iFAAyC,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;8BAC1D,iFAAyC;0EAAC;AAGrE;IADC,+DAAS,CAAC,+EAAuC,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;8BAC9D,+EAAuC;oEAAC;AAG7D;IADC,+DAAS,CAAC,WAAW,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;8BACpC,uFAA8B;kEAAC;AAElD;IADC,+DAAS,CAAC,WAAW,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;8BACpC,uFAA8B;kEAAC;AAElD;IADC,+DAAS,CAAC,eAAe,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;8BACpC,uFAA8B;sEAAC;AAEtD;IADC,+DAAS,CAAC,6BAA6B,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;8BACpC,uFAA8B;oFAAC;AApBzD,+BAA+B;IAL3C,+DAAS,CAAC;QACT,QAAQ,EAAE,wCAAwC;QAClD,yPAAyD;KAE1D,CAAC;qCAuC0B,kEAAwB;QACd,0EAAgC;QAClD,8DAAc;GAxCrB,+BAA+B,CAqqB3C;AArqB2C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AClBW;AAUhC;AAEiB;AAC2B;AAQnE,IAAa,8BAA8B,GAA3C,MAAa,8BAA8B;IAiBzC,YAAoB,MAAyB;QAAzB,WAAM,GAAN,MAAM,CAAmB;QAfpC,WAAM,GAAoB,EAAE,CAAC;QAE5B,oBAAe,GAAG,IAAI,0DAAY,EAAW;QAE/C,iBAAY,GAAG,YAAY,CAAC;QAI5B,qBAAgB,GAAG,eAAe,CAAC;QACnC,wBAAmB,GAAG,wCAAwC,CAAC;QAEvE,uBAAkB,GAAa,EAAE,CAAC;QAElC,qBAAgB,GAAoB,EAAE,CAAC;QACvC,iBAAY,GAAG,KAAK,CAAC;IAC4B,CAAC;IAElD,QAAQ;QACN,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE;YAC1B,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;gBACzB,IAAI,OAAO,GAAG,IAAI,qDAAa,EAAE,CAAC;gBAClC,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;gBACvC,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YACtC,CAAC,CAAC;SACH;aAAM;YACL,IAAI,CAAC,YAAY,EAAE,CAAC;SACrB;IACH,CAAC;IAED,QAAQ;QACN,IAAI,CAAC,gBAAgB,GAAG,EAAE,CAAC;QAC3B,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;YACzB,IAAI,OAAO,GAAG,IAAI,qDAAa,EAAE,CAAC;YAClC,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;YACvC,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACtC,CAAC,CAAC;IACJ,CAAC;IAED,qBAAqB;QACnB,IAAI,CAAC,MAAM,CAAC,aAAa,EAAE,CAAC;IAC9B,CAAC;IAED,YAAY;QACV,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,qDAAa,EAAE,CAAC,CAAC;QAEhD,IAAI,iBAAiB,GAAG,IAAI,qDAAa,EAAE,CAAC;QAC5C,iBAAiB,CAAC,UAAU,GAAG,EAAE,CAAC;QAClC,iBAAiB,CAAC,QAAQ,GAAG,CAAC,CAAC;QAC/B,iBAAiB,CAAC,WAAW,GAAG,EAAE,CAAC;QACnC,iBAAiB,CAAC,MAAM,GAAG,CAAC,CAAC;QAC7B,iBAAiB,CAAC,iBAAiB,GAAG,CAAC,CAAC;QACxC,iBAAiB,CAAC,cAAc,GAAG,CAAC,CAAC;QACrC,iBAAiB,CAAC,kBAAkB,GAAG,CAAC,CAAC;QACzC,iBAAiB,CAAC,eAAe,GAAG,CAAC,CAAC;QAEtC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;QACpC,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAClC,CAAC;IAED,eAAe,CAAC,KAAa;QAC3B,IAAI,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE;YAC1B,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC;SACtB;aAAM;YACL,IAAI,CAAC,YAAY,CAAC,gBAAgB,CAAC,IAAI,CAAC,gBAAgB,EAAE,IAAI,CAAC,mBAAmB,EAAE,KAAK,CAAC,CAAC;SAC5F;IACH,CAAC;IAED,SAAS,CAAC,KAAa;QACrB,IAAI,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE;YACzB,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC;SACrD;QACD,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;QACvC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;QAC7B,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAClC,CAAC;IAED,kBAAkB,CAAC,KAAa;QAC9B,IAAI,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC,UAAU,KAAK,IAAI;YAClD,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC,UAAU,KAAK,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,UAAU,EAAE;YAE3E,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,UAAU,GAAG,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC,UAAU,CAAC;SACzE;IACH,CAAC;IAED,gBAAgB,CAAC,KAAa;QAC5B,IAAI,CAAC,4EAAc,CAAC,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,EAAE;YAC1D,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,QAAQ,GAAG,CAAC,CAAC;SACjC;QAED,IAAI,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC,QAAQ,KAAK,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,QAAQ,EAAE;YAEzE,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,CAAC;SAC7E;IACH,CAAC;IAED,mBAAmB,CAAC,KAAa;QAC/B,IAAI,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC,WAAW,KAAK,IAAI;YACnD,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC,WAAW,KAAK,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,WAAW,EAAE;YAE7E,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,WAAW,GAAG,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC,WAAW,CAAC;SAC3E;IACH,CAAC;IAED,cAAc,CAAC,KAAa;QAC1B,IAAI,CAAC,4EAAc,CAAC,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,EAAE;YACxD,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC;SAC/B;QAED,IAAI,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC,MAAM,KAAK,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,MAAM,EAAE;YACrE,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC;SACzE;IACH,CAAC;IAED,yBAAyB,CAAC,KAAa;QACrC,IAAI,CAAC,4EAAc,CAAC,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC,iBAAiB,CAAC,EAAE;YACnE,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,iBAAiB,GAAG,CAAC,CAAC;SAC1C;QAED,IAAI,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC,iBAAiB,KAAK,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,iBAAiB,EAAE;YAC3F,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,iBAAiB,GAAG,MAAM,CAAC,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC,iBAAiB,CAAC,CAAC;SAC/F;IACH,CAAC;IAED,sBAAsB,CAAC,KAAa;QAClC,IAAI,CAAC,4EAAc,CAAC,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC,cAAc,CAAC,EAAE;YAChE,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,cAAc,GAAG,CAAC;SACtC;QAED,IAAI,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC,cAAc,KAAK,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,cAAc,EAAE;YACrF,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,cAAc,GAAG,MAAM,CAAC,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC,cAAc,CAAC,CAAC;SACzF;IACH,CAAC;IAED,mBAAmB,CAAC,KAAa,EAAE,SAAiB;QAClD,IAAI,UAAkB,CAAC;QAEvB,QAAQ,SAAS,EAAE;YACjB,KAAK,UAAU;gBACb,IAAI,aAAa,GAAG,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC,iBAAiB,GAAG,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC;gBAE3G,IAAI,4EAAc,CAAC,aAAa,CAAC,EAAE;oBACjC,UAAU,GAAG,IAAI,CAAC,uBAAuB,CAAC,aAAa,CAAC,CAAC;oBACzD,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,kBAAkB,GAAG,UAAU,CAAC;iBACpD;gBACD,MAAM;YACR,KAAK,OAAO;gBACV,IAAI,UAAU,GAAG,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC,cAAc,GAAG,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC;gBAErG,IAAI,4EAAc,CAAC,UAAU,CAAC,EAAE;oBAC9B,UAAU,GAAG,IAAI,CAAC,uBAAuB,CAAC,UAAU,CAAC,CAAC;oBACtD,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,eAAe,GAAG,UAAU,CAAC;iBACjD;gBACD,MAAM;YACR;gBACE,MAAM;SACT;QAED,IAAI,UAAU,KAAK,CAAC,IAAI,CAAC,4EAAc,CAAC,UAAU,CAAC,EAAE;YACnD,OAAO,IAAI,CAAC;SACb;QAED,OAAO,UAAU,CAAC;IACpB,CAAC;IAED,UAAU,CAAC,KAAK;QACd,IAAI,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,KAAK,GAAG,MAAM,CAAC,YAAY,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;QAErE,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;YAClC,KAAK,CAAC,cAAc,EAAE,CAAC;SACxB;IACH,CAAC;IAED,WAAW,CAAC,KAAK;QACf,IAAI,aAAa,GAAG,KAAK,CAAC,aAAa,CAAC;QACxC,IAAI,UAAU,GAAG,aAAa,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QAC/C,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE;YACvC,KAAK,CAAC,cAAc,EAAE,CAAC;SACxB;IACH,CAAC;IAEO,uBAAuB,CAAC,MAAc;QAC5C,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC;IAC3D,CAAC;IAED,UAAU,CAAC,KAAa;QACtB,OAAO,CAAC,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC,UAAU,IAAI,EAAE,IAAI,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC,UAAU,IAAI,IAAI,CAAC;eACpG,CAAC,MAAM,CAAC,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC,QAAQ,IAAI,CAAC,CAAC,IAAI,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC,QAAQ,IAAI,IAAI,CAAC;eACrG,CAAC,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC,WAAW,IAAI,EAAE,IAAI,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC,WAAW,IAAI,IAAI,CAAC;eACpG,CAAC,MAAM,CAAC,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC,MAAM,IAAI,IAAI,CAAC;eACjG,CAAC,MAAM,CAAC,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC,iBAAiB,IAAI,IAAI,CAAC;eACvH,CAAC,MAAM,CAAC,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC,cAAc,IAAI,IAAI,CAAC;IACxH,CAAC;CAEF;;YAlL6B,+DAAiB;;AAhBpC;IAAR,2DAAK,EAAE;;kEAAoB;AACnB;IAAR,2DAAK,EAAE;;8DAA8B;AAC7B;IAAR,2DAAK,EAAE;;mEAAsB;AACpB;IAAT,4DAAM,EAAE;;uEAA8C;AAKvD;IADC,+DAAS,CAAC,gFAAwC,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;8BAC9D,gFAAwC;oEAAC;AATpD,8BAA8B;IAN1C,+DAAS,CAAC;QACT,QAAQ,EAAE,sCAAsC;QAChD,6QAAuD;KAExD,CAAC;qCAmB4B,+DAAiB;GAjBlC,8BAA8B,CAmM1C;AAnM0C;;;;;;;;;;;;;;;;;;;;ACrBS;;;;;;;;;;;;;;;;;;;;;;;ACAV;AACY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACDsE;AACrE;AAEiF;AACG;AACzE;AACK;AAOvE,IAAa,0BAA0B,GAAvC,MAAa,0BAA0B;IA4CrC;QA3CU,2BAAsB,GAAG,IAAI,0DAAY,EAAE,CAAC;QA4BtD,oBAAe,GAA4D,EAAE,CAAC;QAY9E,YAAO,GAAa,CAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,CAAC,CAAC,CAAC,SAAS;IAGxB,CAAC;IAEjB,QAAQ;QACN,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,uEAA4B,CAAC,EAAE;YACvE,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,CAAC,GAAG,CAAC,EAAC,CAAC,CAAC;SAChE;QAED,IAAI,CAAC,gBAAgB,GAAG,IAAI,wDAAgB,EAAE,CAAC;QAC/C,IAAI,CAAC,QAAQ,GAAG;YACd,CAAC,CAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,GAAG,CAAC;YACnC,CAAC,IAAI,EAAC,KAAK,EAAC,MAAM,EAAC,MAAM,EAAC,MAAM,EAAC,MAAM,EAAC,MAAM,EAAC,MAAM,EAAC,MAAM,EAAC,MAAM,EAAC,MAAM,CAAC;YAC3E,CAAC,KAAK,EAAC,MAAM,EAAC,MAAM,EAAC,MAAM,EAAC,MAAM,EAAC,MAAM,EAAC,MAAM,EAAC,MAAM,EAAC,MAAM,EAAC,MAAM,EAAC,MAAM,CAAC;SAC9E,CAAC;QACF,IAAI,CAAC,KAAK,GAAG;YACX,CAAC,EAAE,EAAC,KAAK,CAAC;YACV,CAAC,EAAE,EAAC,GAAG,CAAC;YACR,CAAC,EAAE,EAAC,GAAG,CAAC;YACR,CAAC,EAAE,EAAC,GAAG,CAAC;YACR,CAAC,EAAE,EAAC,KAAK,CAAC;YACV,CAAC,EAAE,EAAC,GAAG,CAAC;YACR,CAAC,EAAE,EAAC,GAAG,CAAC;YACR,CAAC,EAAE,EAAC,KAAK,CAAC;SACX,CAAC;QACF,IAAI,CAAC,KAAK,GAAG;YACX,CAAC,EAAE,EAAC,KAAK,CAAC;YACV,CAAC,EAAE,EAAC,GAAG,CAAC;YACR,CAAC,IAAI,EAAC,KAAK,CAAC;YACZ,CAAC,EAAE,EAAC,KAAK,CAAC;YACV,CAAC,EAAE,EAAC,KAAK,CAAC;YACV,CAAC,EAAE,EAAC,CAAC,CAAC;YACN,CAAC,EAAE,EAAC,GAAG,CAAC;YACR,CAAC,EAAE,EAAC,IAAI,CAAC;SACV,CAAC;IACJ,CAAC;IAEA,eAAe;QACd,IAAI,CAAC,aAAa,EAAE,CAAC;QACrB,IAAI,CAAC,+BAA+B,EAAE,CAAC;QACvC,UAAU,CAAC,GAAG,EAAE;YACd,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,EAAE,KAAK,SAAS,IAAI,IAAI,CAAC,cAAc,CAAC,EAAE,IAAI,CAAC,CAAC,IAAI,IAAI,CAAC,iCAAiC,EAAE,EAAE;gBACrH,IAAI,CAAC,uBAAuB,EAAE,CAAC;gBAC/B,IAAI,CAAC,0BAA0B,EAAE,CAAC;aACnC;iBAAM;gBACL,IAAI,CAAC,sBAAsB,EAAE,CAAC;gBAC9B,IAAI,CAAC,mBAAmB,EAAE,CAAC;gBAC3B,IAAI,CAAC,oBAAoB,EAAE,CAAC;gBAC5B,IAAI,CAAC,iBAAiB,EAAE,CAAC;aAC1B;QACH,CAAC,CAAC,CAAC;IACJ,CAAC;IAEO,iCAAiC;QACxC,OAAO,CACL,CAAC,IAAI,CAAC,cAAc,CAAC,YAAY,IAAI,SAAS,IAAI,IAAI,CAAC,cAAc,CAAC,YAAY,IAAI,CAAC,CAAC;YACxF,CAAC,IAAI,CAAC,cAAc,CAAC,eAAe,IAAI,SAAS,IAAI,IAAI,CAAC,cAAc,CAAC,eAAe,IAAI,CAAC,CAAC;YAC9F,IAAI,CAAC,gBAAgB,CAAC,YAAY,IAAI,SAAS;YAC/C,IAAI,CAAC,gBAAgB,CAAC,eAAe,IAAI,SAAS,CACnD;IACF,CAAC;IAEM,oBAAoB;QAC1B,IAAI,CAAC,cAAc,CAAC,YAAY,GAAG,IAAI,CAAC,gBAAgB,CAAC,YAAY,CAAC;QACtE,IAAI,CAAC,cAAc,CAAC,QAAQ,GAAG,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC;QAC9D,IAAI,CAAC,cAAc,CAAC,eAAe,GAAG,IAAI,CAAC,gBAAgB,CAAC,eAAe,CAAC;QAE5E,IAAI,CAAC,+BAA+B,CAAC,IAAI,CAAC,gBAAgB,CAAC,GAAG,EAAE,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC;QACzF,IAAI,CAAC,+BAA+B,CAAC,IAAI,CAAC,gBAAgB,CAAC,IAAI,EAAE,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;QAC3F,IAAI,CAAC,+BAA+B,CAAC,IAAI,CAAC,gBAAgB,CAAC,KAAK,EAAE,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;QAC7F,IAAI,CAAC,+BAA+B,CAAC,IAAI,CAAC,gBAAgB,CAAC,IAAI,EAAE,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;IAC7F,CAAC;IAED,YAAY;IACZ,+BAA+B;QAC7B,IAAI,CAAS,CAAC;QACd,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YAC5C,IAAI,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,EAAE;gBACnC,IAAI,CAAC,OAAO,GAAG,CAAC,CAAC;gBACjB,MAAM;aACP;SACF;QAED,KAAK,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YACpD,IAAI,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE;gBAClE,IAAI,CAAC,OAAO,GAAG,CAAC,CAAC;aAClB;SACF;QAED,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,IAAI,GAAG,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;IACjF,CAAC;IAED,wDAAwD;IAExD,uBAAuB;QACrB,IAAI,CAAC,aAAa,EAAE,CAAC;QACrB,IAAI,CAAC,2BAA2B,EAAE,CAAC;QACnC,IAAI,CAAC,sCAAsC,EAAE,CAAC;QAC9C,IAAI,CAAC,kCAAkC,EAAE,CAAC;QAC1C,IAAI,CAAC,wBAAwB,EAAE,CAAC;QAChC,IAAI,CAAC,wBAAwB,EAAE,CAAC;QAChC,IAAI,CAAC,0BAA0B,EAAE,CAAC;QAClC,IAAI,CAAC,gCAAgC,EAAE,CAAC;QACxC,IAAI,CAAC,yBAAyB,EAAE,CAAC;QACjC,IAAI,CAAC,qBAAqB,EAAE,CAAC;IAC/B,CAAC;IAED,mBAAmB;QACjB,IAAI,CAAC,aAAa,EAAE,CAAC;QACrB,IAAI,CAAC,2BAA2B,EAAE,CAAC;QACnC,IAAI,CAAC,gCAAgC,EAAE,CAAC;QACxC,IAAI,CAAC,sCAAsC,EAAE,CAAC;QAC9C,IAAI,CAAC,kCAAkC,EAAE,CAAC;QAC1C,IAAI,CAAC,wBAAwB,EAAE,CAAC;QAChC,IAAI,CAAC,wBAAwB,EAAE,CAAC;QAChC,IAAI,CAAC,0BAA0B,EAAE,CAAC;QAClC,IAAI,CAAC,gCAAgC,EAAE,CAAC;QACxC,IAAI,CAAC,yBAAyB,EAAE,CAAC;QACjC,IAAI,CAAC,iCAAiC,EAAE,CAAC;IAC3C,CAAC;IAED,yCAAyC;IACzC,2BAA2B;QACzB,IAAI,IAAI,CAAC,YAAY,KAAK,4DAAqB,CAAC,KAAK,EAAE;YACrD,IAAI,CAAC,0BAA0B,GAAG,IAAI,CAAC;YACvC,IAAI,CAAC,mBAAmB,GAAG,EAAE,CAAC;SAC/B;aAAM;YACL,IAAI,CAAC,0BAA0B,GAAG,IAAI,CAAC;YACvC,IAAI,CAAC,mBAAmB,GAAG,EAAE,CAAC;SAC/B;QAED,IACE,IAAI,CAAC,YAAY,KAAK,4DAAqB,CAAC,eAAe;YAC3D,IAAI,CAAC,WAAW,CAAC,OAAO,KAAK,MAAM;YACnC,IAAI,CAAC,WAAW,CAAC,OAAO,KAAK,MAAM;YACnC,IAAI,CAAC,WAAW,CAAC,OAAO,KAAK,MAAM,EACjC;YACA,IAAI,CAAC,0BAA0B,GAAG,IAAI,CAAC;YACvC,IAAI,CAAC,mBAAmB,GAAG,EAAE,CAAC;SACjC;QAED,IAAI,UAAU,GAAG,IAAI,CAAC,UAAU,GAAG,CAAC,IAAI,CAAC,0BAA0B,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC;QACvF,IAAI,CAAC,OAAO,GAAG,CAAC;QAChB,IAAI,IAAI,CAAC,cAAc,CAAC,QAAQ,KAAK,kEAA2B,CAAC,SAAS,EAAE;YAC1E,IAAI,OAAO,GAAG,KAAK,CAAC;YACpB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE;gBAC3B,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC,IAAI,UAAU,EAAE;oBACtE,IAAI,CAAC,cAAc,CAAC,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;oBACpD,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;oBAChC,OAAO,GAAG,IAAI,CAAC;oBACf,MAAM;iBACP;aACF;YACD,IAAI,CAAC,OAAO,EAAE;gBACZ,IAAI,CAAC,cAAc,CAAC,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;gBACpD,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;aACjC;SACF;aAAM;YACL,IAAI,QAAQ,GAAG,KAAK,CAAC;YACrB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE;gBAC3B,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC,IAAI,UAAU,EAAE;oBAClE,IAAI,CAAC,cAAc,CAAC,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;oBACpD,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;oBAChC,QAAQ,GAAG,IAAI,CAAC;oBAChB,MAAM;iBACP;aACF;YACD,IAAI,CAAC,QAAQ,EAAE;gBACb,IAAI,CAAC,cAAc,CAAC,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;gBACpD,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;aACjC;SACF;QAED,IAAI,CAAC,cAAc,CAAC,eAAe,GAAG,IAAI,CAAC,cAAc,CAAC,YAAY,CAAC,CAAC,gCAAgC;QACxG,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,2BAA2B,CAAC,IAAI,CAAC,cAAc,CAAC,YAAY,CAAC,CAAC;QACxF,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,2BAA2B,CAAC,IAAI,CAAC,cAAc,CAAC,eAAe,CAAC,CAAC;IAChG,CAAC;IAED,gCAAgC;QAC5B,IAAI,IAAI,CAAC,gBAAgB,CAAC,QAAQ,IAAI,kEAA2B,CAAC,SAAS,EAAE;YAC3E,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE;gBACtD,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,gBAAgB,CAAC,YAAY,EAAE;oBAC9D,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;oBACpC,MAAM;iBACP;aACF;SACF;aAAM;YACL,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE;gBACtD,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,gBAAgB,CAAC,YAAY,EAAE;oBAC9D,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;oBACpC,MAAM;iBACP;aACF;SACF;IACL,CAAC;IAED,sDAAsD;IACtD,sCAAsC;QACpC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE;YAC3B,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,iBAAiB,GAAG,CAAC,CAAC;YACzC,IAAI,CAAC,yBAAyB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;SACpD;QAED,IAAI,IAAI,CAAC,YAAY,CAAC,KAAK,GAAG,GAAG,EAAE;YACjC,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,iBAAiB,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC;YAC5E,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,iBAAiB,CAAC;SAC1G;aAAM;YACL,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,UAAU,CAAC;SAC9D;IACH,CAAC;IAED,wDAAwD;IACxD,kCAAkC;QAChC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE;YAC3B,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,OAAO,GAAG,CAAC,CAAC;YAC/B,IAAI,CAAC,yBAAyB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;SACpD;QAED,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE;YAC3B,IAAI,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,iBAAiB,IAAI,CAAC,IAAI,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,iBAAiB,IAAI,CAAC,EAAE;gBAC1F,IAAI,CAAC,GAAG,CAAC,EAAE;oBACT,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,OAAO,GAAG,IAAI,CAAC,YAAY,CAAC,MAAM,GAAG,EAAE,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,iBAAiB,CAAC;iBACnG;qBAAM;oBACL,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,OAAO,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK,GAAG,EAAE,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,iBAAiB,CAAC;iBAClG;gBACD,IAAI,CAAC,yBAAyB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;aACpD;SACF;QAED,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE;YAC3B,IAAI,CAAC,yBAAyB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;SACpD;QAED,IAAI,CAAC,mBAAmB,EAAE,CAAC;IAC7B,CAAC;IAED,gDAAgD;IAChD,wBAAwB;QACtB,IAAI,CAAC,sBAAsB,GAAG,IAAI,CAAC,UAAU,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,eAAe,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC;QACtI,IAAI,OAAO,GAAG,CAAC,CAAC,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC,OAAO,CAAC,GAAI,EAAE,CAAC;QACpG,IAAI,IAAI,GAAG,OAAO,CAAC;QACnB,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,GAAG,EAAE,CAAC,GAAG,EAAE,GAAG,GAAG,CAAC,CAAC;QAC1D,IAAI,OAAO,GAAG,IAAI,EAAE;YAClB,OAAO,IAAI,EAAE,CAAC;SACf;QAED,KAAM,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE;YAC5B,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC;SAC3B;IACH,CAAC;IAED,2CAA2C;IAC3C,wBAAwB;QACtB,IAAI,YAAY,GAAG,CAAC,CAAC;QACrB,KAAK,IAAI,MAAM,GAAG,CAAC,EAAE,MAAM,IAAI,CAAC,EAAE,MAAM,EAAE,EAAE;YAC1C,IAAI,MAAM,GAAG,CAAC,EAAE;gBACd,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC,MAAM;aACxC;iBAAM;gBACL,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK;aACvC;YAED,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,gBAAgB;gBACxC,YAAY,GAAG,CAAC;sBACd,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,iBAAiB,GAAG,CAAC,CAAC,GAAI,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,OAAO,GAAG,CAAC,CAAC;SAC1F;IACH,CAAC;IAED,+CAA+C;IAC/C,0BAA0B;QACxB,IAAI,SAAS,GAAG,CAAC,CAAC;QAClB,IAAI,GAAG,GAAG,CAAC,CAAC;QACZ,IAAI,KAAK,GAAG,CAAC,CAAC;QAEd,IACE,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,iBAAiB,IAAI,CAAC;YAC3F,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,iBAAiB,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,iBAAiB,IAAI,CAAC,EAAE;YAC7F,SAAS,GAAG,CAAC,CAAC;SACjB;QAED,IAAI,KAAK,GAAG,CAAC,CAAC,EAAC,CAAC,CAAC,CAAC;QAElB,KAAK,IAAI,MAAM,GAAG,CAAC,EAAE,MAAM,IAAI,CAAC,EAAE,MAAM,IAAE,CAAC,EAAE;YAC3C,IAAI,gBAAgB,GAAG,KAAK,CAAC;YAE7B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,iBAAiB,EAAE,CAAC,EAAE,EAAE;gBAClE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,iBAAiB,EAAE,CAAC,EAAE,EAAE;oBACtE,IAAI,IAAI,CAAC,GAAG,CACR,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,gBAAgB,GAAG,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC;0BAC9E,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,gBAAgB,GAAG,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;0BACzF,IAAI,CAAC,cAAc,CAAC,YAAY,EAAE;wBAClC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;wBACtB,gBAAgB,GAAG,IAAI,CAAC;qBAC3B;oBAEH,IAAI,gBAAgB,EAAE;wBACpB,MAAM;qBACP;iBACF;gBAED,IAAI,gBAAgB,EAAE;oBACpB,MAAM;iBACP;aACF;SACF;QAED,KAAK,IAAI,MAAM,GAAG,CAAC,EAAE,MAAM,IAAI,CAAC,EAAE,MAAM,EAAE,EAAE;YAC1C,IAAI,QAAQ,GAAG,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC;YACxC,IAAI,MAAM,GAAG,CAAC,EAAE;gBACd,QAAQ,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK;aACnC;YAED,IAAI,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE;gBACtC,GAAG,GAAG,QAAQ,GAAG,CAAC,CAAC;gBACnB,KAAK,GAAG,QAAQ,GAAG,CAAC,CAAC;aACtB;iBAAM;gBACL,GAAG,GAAG,QAAQ,GAAG,EAAE,CAAC;gBACpB,KAAK,GAAG,CAAC,QAAQ,GAAG,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;aAC3E;YAED,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,EAAE,CAAC,GAAG,EAAE,GAAG,GAAG,CAAC,CAAC;YAClD,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,EAAE,CAAC,GAAG,EAAE,GAAG,GAAG,CAAC,CAAC;YAEtD,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,aAAa,GAAG,GAAG,CAAC;YAC5C,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,eAAe,GAAG,KAAK,CAAC;SACjD;QAED,IAAI,SAAS,IAAI,CAAC,EAAE;YAClB,IAAI,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,iBAAiB,IAAI,CAAC,EAAE;gBACnD,GAAG,GAAG,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,gBAAgB,GAAG,IAAI,CAAC,cAAc,CAAC,YAAY,GAAG,CAAC,CAAC;aACvF;iBACI,IAAI,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,iBAAiB,IAAI,CAAC,EAAE;gBACvD,GAAG,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,cAAc,CAAC,YAAY,GAAG,CAAC,CAAC;aACxF;iBACI,IAAI,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,gBAAgB,EAAE;gBAC7F,GAAG,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,cAAc,CAAC,YAAY,GAAG,CAAC,CAAC;aACxF;iBACI;gBACH,GAAG,GAAG,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,gBAAgB,GAAG,IAAI,CAAC,cAAc,CAAC,YAAY,GAAG,CAAC,CAAC;aACvF;SACF;QAED,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,EAAE,CAAC,GAAG,EAAE,GAAG,GAAG,CAAC,CAAC;QAElD,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,aAAa,GAAG,GAAG,CAAC;QAC9C,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,aAAa,GAAG,GAAG,CAAC;IAC/C,CAAC;IAED,YAAY;IACZ,gCAAgC;QAC9B,KAAK,IAAI,MAAM,GAAG,CAAC,EAAE,MAAM,IAAI,CAAC,EAAE,MAAM,EAAE,EAAE;YAC1C,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,aAAa,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE;gBACjE,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC;aAC1D;iBACK,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,aAAa,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE;gBACtE,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,aAAa,CAAC;aAC5E;iBACI;gBACH,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,UAAU,GAAG,CAAC,CAAC;aACxC;SACF;QAED,IAAI,CAAC,oBAAoB,EAAE,CAAC;IAC9B,CAAC;IAED,mDAAmD;IACnD,yBAAyB;QACvB,KAAK,IAAI,MAAM,GAAG,CAAC,EAAE,MAAM,IAAI,CAAC,EAAE,MAAM,EAAE,EAAE;YAC1C,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,WAAW,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,eAAe,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,UAAU,CAAC;YAEnH,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,WAAW,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,aAAa,EAAE;gBACpH,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,WAAW,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,aAAa,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,UAAU,CAAC;aAClH;SACF;QAED,IAAI,CAAC,qBAAqB,EAAE,CAAC;IAC/B,CAAC;IAED,2DAA2D;IAE3D,uCAAuC;IAEvC,6EAA6E;IAC7E,qBAAqB;QACnB,IACA,IAAI,CAAC,cAAc,CAAC,QAAQ,IAAI,kEAA2B,CAAC,SAAS;YACrE,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,cAAc,CAAC,eAAe,EAAE,CAAC,CAAC,IAAI,IAAI,CAAC,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,cAAc,CAAC,YAAY,EAAE,CAAC,CAAC,EACvH;YACA,IAAI,CAAC,6BAA6B,GAAG,IAAI,CAAC,UAAU,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,cAAc,CAAC,eAAe,GAAG,EAAE,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC;YAC3I,wHAAwH;SACzH;aACI,IACL,IAAI,CAAC,cAAc,CAAC,QAAQ,IAAI,kEAA2B,CAAC,SAAS;YACrE,IAAI,CAAC,cAAc,CAAC,eAAe,IAAI,IAAI,CAAC,cAAc,CAAC,YAAY,EACrE;YACA,IAAI,CAAC,6BAA6B,GAAG,IAAI,CAAC,UAAU,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,cAAc,CAAC,eAAe,GAAG,EAAE,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC;YAC3I,0GAA0G;SAC3G;aACI,IAAI,IAAI,CAAC,cAAc,CAAC,QAAQ,IAAI,kEAA2B,CAAC,SAAS,EAAE;YAC9E,IAAI,CAAC,6BAA6B,GAAG,IAAI,CAAC,UAAU,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,cAAc,CAAC,YAAY,GAAG,EAAE,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC;YACxI,iFAAiF;SAClF;aACI,IAAI,IAAI,CAAC,cAAc,CAAC,QAAQ,IAAI,kEAA2B,CAAC,SAAS,EAAE;YAC9E,IAAI,CAAC,6BAA6B,GAAG,IAAI,CAAC,UAAU,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,cAAc,CAAC,YAAY,GAAG,EAAE,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC;YAC5I,2EAA2E;SAC5E;QAED,IAAI,CAAC,6BAA6B,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,6BAA6B,GAAG,EAAE,CAAC,CAAC;QACzF,sBAAsB;QAEtB,IAAI,CAAC,sBAAsB,GAAG,CAAC,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC;QACjF,oCAAoC;QAEpC,IAAI,YAAY,GAAG,CAAC,CAAC;QACrB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE;YAC3B,IACA,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,iBAAiB,IAAI,CAAC;;oBAEzC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,UAAU,GAAG,EAAE,GAAI,YAAY;2BAChD,YAAY,IAAI,CAAC,CAAC,EACnB;gBACA,YAAY,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,UAAU,GAAG,EAAE,CAAC;gBAClD,sGAAsG;aACvG;SACF;QAED,IAAI,CAAC,sBAAsB,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,sBAAsB,GAAG,YAAY,GAAG,EAAE,GAAG,EAAE,CAAC,GAAG,EAAE,CAAC;QACpG,uCAAuC;IACzC,CAAC;IACD,0CAA0C;IAE1C,gFAAgF;IAEhF,0BAA0B;QACxB,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,2BAA2B,CAAC,IAAI,CAAC,cAAc,CAAC,YAAY,CAAC,CAAC;QACxF,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,2BAA2B,CAAC,IAAI,CAAC,cAAc,CAAC,eAAe,CAAC,CAAC;QAC9F,IAAI,CAAC,gBAAgB,EAAE,CAAC;QACxB,IAAI,CAAC,eAAe,EAAE,CAAC;QACvB,IAAI,CAAC,iBAAiB,EAAE,CAAC;QACzB,IAAI,CAAC,gBAAgB,EAAE,CAAC;QAExB,IAAI,CAAC,mBAAmB,EAAE,CAAC;QAC3B,IAAI,CAAC,oBAAoB,EAAE,CAAC;QAC5B,IAAI,CAAC,qBAAqB,EAAE,CAAC;IAC/B,CAAC;IAED,iBAAiB;QACf,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,2BAA2B,CAAC,IAAI,CAAC,cAAc,CAAC,YAAY,CAAC,CAAC;QACxF,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,2BAA2B,CAAC,IAAI,CAAC,cAAc,CAAC,eAAe,CAAC,CAAC;QAC9F,IAAI,CAAC,gCAAgC,EAAE,CAAC;QACxC,IAAI,CAAC,mBAAmB,EAAE,CAAC;QAC3B,IAAI,CAAC,oBAAoB,EAAE,CAAC;QAC5B,IAAI,CAAC,qBAAqB,EAAE,CAAC;QAC7B,IAAI,CAAC,QAAQ,EAAE,CAAC;IAClB,CAAC;IAEO,mBAAmB;QACzB,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,wBAAwB,CAC9C,IAAI,CAAC,4BAA4B,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,EACnE,IAAI,CAAC,4BAA4B,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAC9E,CAAC;QACF,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,wBAAwB,CAC7C,IAAI,CAAC,4BAA4B,CAAC,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,OAAO,CAAC,EAClE,IAAI,CAAC,4BAA4B,CAAC,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAC7E,CAAC;QACF,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,wBAAwB,CAC/C,IAAI,CAAC,4BAA4B,CAAC,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,OAAO,CAAC,EACpE,IAAI,CAAC,4BAA4B,CAAC,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAC/E,CAAC;QACF,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,wBAAwB,CAC9C,IAAI,CAAC,4BAA4B,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,EACnE,IAAI,CAAC,4BAA4B,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAC9E,CAAC;IACJ,CAAC;IAEO,oBAAoB;QAC1B,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,yBAAyB,CAC7C,IAAI,CAAC,4BAA4B,CAAC,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,EACjG,IAAI,CAAC,4BAA4B,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAC9E,CAAC;QACF,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,yBAAyB,CAC5C,IAAI,CAAC,4BAA4B,CAAC,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,EAChG,IAAI,CAAC,4BAA4B,CAAC,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAC7E,CAAC;QACF,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,yBAAyB,CAC9C,IAAI,CAAC,4BAA4B,CAAC,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,EAClG,IAAI,CAAC,4BAA4B,CAAC,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAC/E,CAAC;QACF,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,yBAAyB,CAC7C,IAAI,CAAC,4BAA4B,CAAC,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,EACjG,IAAI,CAAC,4BAA4B,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAC9E,CAAC;IACJ,CAAC;IAEO,qBAAqB;QAC3B,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,yBAAyB,CAC9C,IAAI,CAAC,4BAA4B,CAAC,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,EAClG,IAAI,CAAC,4BAA4B,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAC9E,CAAC;QACF,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,yBAAyB,CAC7C,IAAI,CAAC,4BAA4B,CAAC,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,EACjG,IAAI,CAAC,4BAA4B,CAAC,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAC7E,CAAC;QACF,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,yBAAyB,CAC/C,IAAI,CAAC,4BAA4B,CAAC,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,EACnG,IAAI,CAAC,4BAA4B,CAAC,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAC/E,CAAC;QACF,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,yBAAyB,CAC9C,IAAI,CAAC,4BAA4B,CAAC,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,EAClG,IAAI,CAAC,4BAA4B,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAC9E,CAAC;IACJ,CAAC;IAEO,+BAA+B,CAAC,UAA8C;QACpF,QAAQ,UAAU,EAAE;YAClB,KAAK,yEAAkC,CAAC,YAAY;gBAClD,IAAI,CAAC,sCAAsC,EAAE,CAAC;gBAC9C,IAAI,CAAC,+BAA+B,CAAC,yEAAkC,CAAC,UAAU,CAAC,CAAC;gBACpF,MAAM;YACR,KAAK,yEAAkC,CAAC,UAAU;gBAChD,IAAI,CAAC,kCAAkC,EAAE,CAAC;gBAC1C,IAAI,CAAC,+BAA+B,CAAC,yEAAkC,CAAC,MAAM,CAAC,CAAC;gBAChF,MAAM;YACR,KAAK,yEAAkC,CAAC,MAAM;gBAC5C,IAAI,CAAC,wBAAwB,EAAE,CAAC;gBAChC,IAAI,CAAC,wBAAwB,EAAE,CAAC;gBAChC,IAAI,CAAC,+BAA+B,CAAC,yEAAkC,CAAC,OAAO,CAAC,CAAC;gBACjF,MAAM;YACR,KAAK,yEAAkC,CAAC,OAAO;gBAC7C,IAAI,CAAC,0BAA0B,EAAE,CAAC;gBAClC,IAAI,CAAC,gCAAgC,EAAE,CAAC;gBACxC,IAAI,CAAC,yBAAyB,EAAE,CAAC;gBACjC,IAAI,CAAC,qBAAqB,EAAE,CAAC;gBAC7B,MAAM;SACT;IACH,CAAC;IAEO,gBAAgB;QACtB,IAAI,CAAC,YAAY,GAAG,EAAE,CAAC;QACvB,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC;QACnD,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC;QAClD,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC;QACpD,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC;IACrD,CAAC;IAEO,aAAa;QACnB,IAAI,CAAC,UAAU,GAAG,EAAE,CAAC;QACrB,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;QAC/C,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC;QAC9C,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;QAChD,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;IACjD,CAAC;IAEO,QAAQ;QACd,IAAI,CAAC,SAAS,CAAC,SAAS,EAAE,CAAC;QAC3B,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC;IAC5B,CAAC;IAED,gBAAgB;QACd,IAAI,CAAC,2BAA2B,EAAE,CAAC;QACnC,IAAI,CAAC,+BAA+B,CAAC,yEAAkC,CAAC,YAAY,CAAC,CAAC;QACtF,IAAI,CAAC,QAAQ,EAAE,CAAC;IAClB,CAAC;IAED,mCAAmC;IACnC,oBAAoB;QAClB,IAAI,IAAI,CAAC,aAAa,KAAK,SAAS,IAAI,IAAI,CAAC,aAAa,IAAI,EAAE,EAAE;YAChE,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,2BAA2B,CAAC,IAAI,CAAC,cAAc,CAAC,YAAY,CAAC,CAAC;SACzF;QAED,IAAI,mBAAmB,GAAG,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;QACrE,IAAI,mBAAmB,KAAK,SAAS,IAAI,mBAAmB,IAAI,EAAE,EAAE;YAClE,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,2BAA2B,CAAC,IAAI,CAAC,cAAc,CAAC,YAAY,CAAC,CAAC;SACzF;QAED,IAAI,YAAY,GAAG,mBAAmB,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QACrD,IAAI,eAAe,GAAG,mBAAmB,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QACxD,IAAI,YAAY,KAAK,SAAS,IAAI,YAAY,KAAK,EAAE,EAAE;YACrD,IAAI,eAAe,KAAK,SAAS,IAAI,eAAe,IAAI,EAAE,EAAE;gBAC1D,eAAe,GAAG,eAAe,CAAC,OAAO,CAAC,SAAS,EAAC,EAAE,CAAC,CAAC;gBACxD,mBAAmB,GAAG,YAAY,GAAG,GAAG,GAAG,eAAe,CAAC;aAC5D;iBAAM;gBACL,mBAAmB,GAAG,YAAY,CAAC;aACpC;SACF;aAAM;YACL,mBAAmB,GAAG,GAAG,CAAC;SAC3B;QAED,IAAI,CAAC,cAAc,CAAC,YAAY,GAAG,MAAM,CAAC,mBAAmB,CAAC,CAAC;QAC/D,IAAI,IAAI,CAAC,cAAc,CAAC,QAAQ,KAAK,kEAA2B,CAAC,SAAS,EAAE;YAC1E,IAAI,YAAY,GAAG,KAAK,CAAC;YACzB,IAAI,CAAS,CAAC;YACd,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE;gBACvB,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,cAAc,CAAC,YAAY,EAAE;oBACxD,IAAI,CAAC,cAAc,CAAC,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;oBACpD,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;oBAChC,YAAY,GAAG,IAAI,CAAC;oBACpB,MAAM;iBACP;aACF;YAED,CAAC,GAAG,CAAC,CAAC;YACN,IAAI,CAAC,YAAY,EAAE;gBACjB,IAAI,CAAC,cAAc,CAAC,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;gBACpD,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;aACjC;SACF;aACI;YACH,IAAI,YAAY,GAAG,KAAK,CAAC;YACzB,IAAI,CAAS,CAAC;YACd,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE;gBACvB,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,cAAc,CAAC,YAAY,EAAE;oBACxD,IAAI,CAAC,cAAc,CAAC,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;oBACpD,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;oBAChC,YAAY,GAAG,IAAI,CAAC;oBACpB,MAAM;iBACP;aACF;YAED,CAAC,GAAG,CAAC,CAAC;YACN,IAAI,CAAC,YAAY,EAAE;gBACjB,IAAI,CAAC,cAAc,CAAC,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;gBACpD,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;aACjC;SACF;QAED,IAAI,CAAC,iBAAiB,EAAE,CAAC;QAEzB,mBAAmB;QACnB,IAAI,CAAC,cAAc,CAAC,eAAe,GAAG,IAAI,CAAC,cAAc,CAAC,YAAY,CAAC;QACvE,IAAI,CAAC,qBAAqB,EAAE,CAAC;QAC7B,IAAI,CAAC,+BAA+B,CAAC,yEAAkC,CAAC,YAAY,CAAC,CAAC;QACtF,IAAI,CAAC,QAAQ,EAAE,CAAC;QAChB,IAAI,CAAC,mBAAmB,EAAE,CAAC;IAC7B,CAAC;IAEO,iBAAiB;QACvB,IAAI,CAAC,gBAAgB,CAAC,YAAY,GAAG,IAAI,CAAC,cAAc,CAAC,YAAY,CAAC;QACtE,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,2BAA2B,CAAC,IAAI,CAAC,cAAc,CAAC,YAAY,CAAC,CAAC;IAC1F,CAAC;IAED,oCAAoC;IACpC,uBAAuB;QACrB,IAAI,IAAI,CAAC,gBAAgB,KAAK,SAAS,IAAI,IAAI,CAAC,gBAAgB,KAAK,EAAE,EAAE;YACvE,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,2BAA2B,CAAC,IAAI,CAAC,cAAc,CAAC,eAAe,CAAC,CAAC;SAC/F;QAED,IAAI,mBAAmB,GAAG,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;QACxE,IAAI,mBAAmB,KAAK,SAAS,IAAI,mBAAmB,IAAI,EAAE,EAAE;YAClE,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,2BAA2B,CAAC,IAAI,CAAC,cAAc,CAAC,eAAe,CAAC,CAAC;SAC/F;QAED,IAAI,YAAY,GAAG,mBAAmB,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QACrD,IAAI,eAAe,GAAG,mBAAmB,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QACxD,IAAI,YAAY,KAAK,SAAS,IAAI,YAAY,KAAK,EAAE,EAAE;YACrD,IAAI,eAAe,KAAK,SAAS,IAAI,eAAe,IAAI,EAAE,EAAE;gBAC1D,eAAe,GAAG,eAAe,CAAC,OAAO,CAAC,SAAS,EAAC,EAAE,CAAC,CAAC;gBACxD,mBAAmB,GAAG,YAAY,GAAG,GAAG,GAAG,eAAe,CAAC;aAC5D;iBAAM;gBACL,mBAAmB,GAAG,YAAY,CAAC;aACpC;SACF;aAAM;YACL,mBAAmB,GAAG,GAAG,CAAC;SAC3B;QAED,IAAI,CAAC,cAAc,CAAC,eAAe,GAAG,MAAM,CAAC,mBAAmB,CAAC,CAAC;QAElE,IAAI,IAAI,CAAC,cAAc,CAAC,eAAe,GAAG,CAAC,IAAI,IAAI,CAAC,cAAc,CAAC,eAAe,GAAG,EAAE,EAAC;YACtF,IAAI,CAAC,cAAc,CAAC,eAAe,GAAG,IAAI,CAAC,gBAAgB,CAAC,eAAe,CAAC;SAC7E;QAED,IAAI,CAAC,qBAAqB,EAAE,CAAC;QAC7B,mBAAmB;QACnB,IAAI,CAAC,+BAA+B,CAAC,yEAAkC,CAAC,YAAY,CAAC,CAAC;QACtF,IAAI,CAAC,QAAQ,EAAE,CAAC;QAChB,IAAI,CAAC,mBAAmB,EAAE,CAAC;IAC7B,CAAC;IAEO,qBAAqB;QAC3B,IAAI,CAAC,gBAAgB,CAAC,eAAe,GAAG,IAAI,CAAC,cAAc,CAAC,eAAe,CAAC;QAC5E,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,2BAA2B,CAAC,IAAI,CAAC,cAAc,CAAC,eAAe,CAAC,CAAC;IAChG,CAAC;IAED,4CAA4C;IAC5C,gBAAgB;QACd,IACA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,iBAAiB,GAAG,CAAC;eAC3C,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,UAAU;eAC5D,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,iBAAiB,IAAI,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,iBAAiB,EAC3F;YACA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,iBAAiB,CAAC;SAC3F;aAAM;YACL,IAAI,QAAQ,GAAG,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,iBAAiB,CAAC;YAC5D,IAAI,IAAI,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,iBAAiB,CAAC;YACtD,IAAI,MAAM,GAAG,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,iBAAiB,CAAC;YAE1E,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE;gBAC3B,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,iBAAiB,GAAG,CAAC,CAAC;gBACzC,IAAI,CAAC,yBAAyB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;aACpD;YAED,IAAI,MAAM,IAAI,CAAC,EAAE;gBACf,IAAI,IAAI,IAAI,MAAM,EAAE;oBAClB,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,iBAAiB,GAAG,IAAI,CAAC;oBACjD,MAAM,IAAI,IAAI,CAAC;iBAChB;qBAAM;oBACL,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,iBAAiB,GAAG,MAAM,CAAC;oBACnD,MAAM,GAAG,CAAC,CAAC;iBACZ;gBAED,IAAI,MAAM,IAAI,CAAC,EAAE;oBACf,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;oBAC9B,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,iBAAiB,GAAG,IAAI,CAAC;oBACnD,MAAM,IAAI,IAAI,CAAC;oBAEf,IAAI,MAAM,IAAI,CAAC,EAAE;wBACf,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,iBAAiB,GAAG,MAAM,CAAC;qBACrD;iBACF;aACF;YAED,IAAI,CAAC,gCAAgC,EAAE,CAAC;YAExC,mBAAmB;YACnB,IAAI,CAAC,+BAA+B,CAAC,yEAAkC,CAAC,UAAU,CAAC,CAAC;YACpF,IAAI,CAAC,QAAQ,EAAE,CAAC;YAChB,IAAI,CAAC,mBAAmB,EAAE,CAAC;SAC5B;IACH,CAAC;IAED,qCAAqC;IACrC,eAAe;QACb,IACE,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,iBAAiB,GAAG,CAAC;eAC1C,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,iBAAiB,GAAG,IAAI,CAAC,UAAU;eAC3D,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,iBAAiB,IAAI,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,iBAAiB,EACzF;YACA,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,iBAAiB,GAAG,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,iBAAiB,CAAC;SACzF;aAAM;YACP,IAAI,QAAQ,GAAG,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,iBAAiB,CAAC;YAC3D,IAAI,IAAI,GAAG,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,iBAAiB,CAAC;YACrD,IAAI,MAAM,GAAG,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,iBAAiB,CAAC;YAEzE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE;gBAC3B,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,iBAAiB,GAAG,CAAC,CAAC;gBACzC,IAAI,CAAC,yBAAyB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;aACpD;YAED,IAAI,MAAM,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,iBAAiB,EAAE;gBACvD,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,iBAAiB,GAAG,MAAM,CAAC;aACrD;iBAAM;gBACL,MAAM,IAAI,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,iBAAiB,CAAC;gBACrD,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;gBAC9B,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,iBAAiB,GAAG,IAAI,CAAC;gBACnD,MAAM,IAAI,IAAI,CAAC;gBAEf,IAAI,MAAM,IAAI,CAAC,EAAE;oBACf,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,iBAAiB,GAAG,MAAM,CAAC;iBACrD;aACF;YACD,IAAI,CAAC,gCAAgC,EAAE,CAAC;YAExC,mBAAmB;YACnB,IAAI,CAAC,+BAA+B,CAAC,yEAAkC,CAAC,UAAU,CAAC,CAAC;YACpF,IAAI,CAAC,QAAQ,EAAE,CAAC;YAChB,IAAI,CAAC,mBAAmB,EAAE,CAAC;SAC5B;IACH,CAAC;IAED,uCAAuC;IACvC,iBAAiB;QACf,IACE,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,iBAAiB,GAAG,CAAC;eAC5C,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,iBAAiB,GAAG,IAAI,CAAC,UAAU;eAC7D,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,iBAAiB,IAAI,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,iBAAiB,EAC7F;YACA,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,iBAAiB,GAAG,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,iBAAiB,CAAC;SAC7F;aAAM;YACP,IAAI,QAAQ,GAAG,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,iBAAiB,CAAC;YAC7D,IAAI,IAAI,GAAG,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,iBAAiB,CAAC;YACvD,IAAI,MAAM,GAAG,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,iBAAiB,CAAC;YAE3E,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,iBAAiB,GAAG,IAAI,CAAC;YACnD,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,iBAAiB,GAAG,CAAC,CAAC;YAE/C,IAAI,MAAM,IAAI,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,iBAAiB,EAAE;gBACpG,MAAM,IAAI,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,iBAAiB;gBAChG,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,iBAAiB,GAAG,MAAM,CAAC;aACrD;iBAAM;gBACL,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE;oBAC3B,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,iBAAiB,GAAG,CAAC,CAAC;oBACzC,IAAI,CAAC,yBAAyB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;iBACpD;gBAED,IAAI,MAAM,IAAI,CAAC,EAAE;oBACf,IAAI,IAAI,IAAI,MAAM,EAAE;wBAClB,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC;wBAClD,MAAM,IAAI,IAAI,CAAC;qBAChB;yBAAM;wBACL,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,iBAAiB,GAAG,MAAM,CAAC;wBACpD,MAAM,GAAG,CAAC,CAAC;qBACZ;oBAED,IAAI,MAAM,IAAI,CAAC,EAAE;wBACf,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;wBAC9B,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC;wBAClD,MAAM,GAAG,MAAM,GAAG,IAAI,CAAC;wBAEvB,IAAI,MAAM,IAAI,CAAC,EAAE;4BACf,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,iBAAiB,GAAG,MAAM,CAAC;yBACpD;qBACF;iBACF;aACF;YAED,IAAI,CAAC,gCAAgC,EAAE,CAAC;YAExC,mBAAmB;YACnB,IAAI,CAAC,+BAA+B,CAAC,yEAAkC,CAAC,UAAU,CAAC,CAAC;YACpF,IAAI,CAAC,QAAQ,EAAE,CAAC;YAChB,IAAI,CAAC,mBAAmB,EAAE,CAAC;SAC5B;IACH,CAAC;IAED,wBAAwB;IACxB,gBAAgB;QACd,IACE,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,iBAAiB,GAAG,CAAC;eAC3C,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,UAAU;eAC5D,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,iBAAiB,IAAI,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,iBAAiB,EAC3F;YACA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,iBAAiB,CAAC;SAC3F;aAAM;YACP,IAAI,QAAQ,GAAG,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,iBAAiB,CAAC;YAC5D,IAAI,IAAI,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,iBAAiB,CAAC;YACtD,IAAI,MAAM,GAAG,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,iBAAiB,CAAC;YAE1E,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE;gBAC3B,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,iBAAiB,GAAG,CAAC,CAAC;aAC1C;YAED,IAAI,MAAM,IAAI,CAAC,EAAE;gBACf,IAAI,IAAI,IAAI,MAAM,EAAE;oBAClB,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC;oBAClD,MAAM,IAAI,IAAI,CAAC;iBAChB;qBAAM;oBACL,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,iBAAiB,GAAG,MAAM,CAAC;oBACpD,MAAM,GAAG,CAAC,CAAC;iBACZ;gBAED,IAAI,MAAM,IAAI,CAAC,EAAE;oBACf,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;oBAC9B,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC;oBAClD,MAAM,IAAI,IAAI,CAAC;oBAEf,IAAI,MAAM,IAAI,CAAC,EAAE;wBACf,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,iBAAiB,GAAG,MAAM,CAAC;qBACrD;iBACF;aACF;YACD,IAAI,CAAC,gCAAgC,EAAE,CAAC;YAExC,mBAAmB;YACnB,IAAI,CAAC,+BAA+B,CAAC,yEAAkC,CAAC,UAAU,CAAC,CAAC;YACpF,IAAI,CAAC,QAAQ,EAAE,CAAC;YAChB,IAAI,CAAC,mBAAmB,EAAE,CAAC;SAC5B;IACH,CAAC;IAED,uCAAuC;IAC/B,cAAc,CAAC,WAAmB,EAAE,UAAsC,EAAE,aAAyC,EAAE,MAAyB;QACtJ,IAAI,UAAU,CAAC,iBAAiB,GAAG,CAAC,EAAE;YACpC,IAAI,WAAW,GAAG,CAAC,CAAC;YACpB,IAAI,MAAM,GAAG,CAAC,EAAE;gBACd,WAAW,GAAG,IAAI,CAAC,YAAY,CAAC,MAAM,GAAG,EAAE,CAAC;aAC7C;iBAAM;gBACL,WAAW,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK,GAAG,EAAE,CAAC;aAC5C;YAED,WAAW,GAAG,CAAC,WAAW,GAAG,IAAI,CAAC,cAAc,CAAC,YAAY,CAAC,GAAG,CAAC,UAAU,CAAC,iBAAiB,GAAG,CAAC,CAAC,CAAC;YACpG,IAAI,WAAW,GAAG,IAAI,CAAC,cAAc,CAAC,YAAY,CAAC;YACnD,WAAW,GAAG,WAAW,CAAC,OAAO,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC;YACnD,IAAI,SAAS,GAAG,WAAW,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;YAC1C,IAAI,iBAAiB,GAAG,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;YAChD,IAAI,mBAAmB,GAAG,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;YAClD,IAAI,WAAW,GAAG,WAAW,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;YAC5C,IAAI,WAAW,KAAK,SAAS,IAAI,WAAW,KAAK,EAAE,EAAE;gBACnD,WAAW,GAAG,GAAG,CAAC;aACnB;YAED,WAAW,GAAG,WAAW,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;YACxC,IAAI,WAAW,KAAK,SAAS,IAAI,WAAW,KAAK,EAAE,EAAE;gBACnD,WAAW,GAAG,GAAG,CAAC;aACnB;YAED,IAAI,iBAAiB,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,WAAW,CAAC,GAAG,GAAG,CAAC,CAAC;YAC9D,IAAI,MAAM,GAAG,CAAC,CAAC;YACf,IAAI,iBAAiB,KAAK,SAAS,EAAE;gBACnC,MAAM,GAAG,IAAI,CAAC,oBAAoB,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAC,CAAC;gBAE9D,IAAI,mBAAmB,KAAK,SAAS,IAAI,mBAAmB,KAAK,EAAE,EAAE;oBACnE,iBAAiB,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,GAAG,mBAAmB,CAAC,GAAG,EAAE,GAAG,GAAG,CAAC,CAAC;iBAChF;gBAED,MAAM,IAAI,iBAAiB,CAAC;aAC7B;YAED,IAAI,MAAM,IAAI,WAAW,IAAI,MAAM,IAAI,WAAW,IAAI,MAAM,KAAK,UAAU,CAAC,OAAO,EAAE;gBACnF,UAAU,CAAC,OAAO,GAAG,MAAM,CAAC;gBAC5B,aAAa,CAAC,OAAO,GAAG,UAAU,CAAC,OAAO,CAAC;aAC5C;SACF;IACH,CAAC;IAED,gFAAgF;IAChF,wBAAwB,CAAC,SAAiB,EAAE,UAAkB;QAC5D,IAAI,SAAS,KAAK,CAAC,IAAI,UAAU,IAAI,CAAC,EAAE;YACtC,OAAO,KAAK,CAAC;SACd;QAED,IAAI,sBAAsB,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,oBAAoB,CAAC,SAAS,CAAC,CAAC,CAAC;QAC9E,IAAI,yBAAyB,GAAG,SAAS,GAAG,EAAE,CAAC;QAC/C,IAAI,yBAAyB,GAAG,EAAE,EAAE;YAClC,OAAO,sBAAsB,CAAC,QAAQ,EAAE,GAAG,OAAO,GAAG,yBAAyB,CAAC,QAAQ,EAAE,GAAG,GAAG,CAAC;SACjG;aACI,IAAI,yBAAyB,IAAI,EAAE,EAAE;YACxC,sBAAsB,IAAI,IAAI,CAAC,KAAK,CAAC,yBAAyB,GAAG,EAAE,CAAC,CAAC;YACrE,yBAAyB,IAAI,EAAE,CAAC;SACjC;QAED,OAAO,sBAAsB,CAAC,QAAQ,EAAE,GAAG,MAAM,GAAG,yBAAyB,CAAC,QAAQ,EAAE,GAAG,GAAG,CAAC;IACjG,CAAC;IAED,eAAe;QACb,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE,IAAI,CAAC,gBAAgB,CAAC,IAAI,EAAE,wDAAiB,CAAC,IAAI,CAAC,CAAC;QACpH,IAAI,CAAC,+BAA+B,CAAC,yEAAkC,CAAC,MAAM,CAAC,CAAC;QAChF,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,wBAAwB,CAC9C,IAAI,CAAC,4BAA4B,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,EACnE,IAAI,CAAC,4BAA4B,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAC9E,CAAC;QACF,IAAI,CAAC,QAAQ,EAAE,CAAC;QAChB,IAAI,CAAC,mBAAmB,EAAE,CAAC;IAC7B,CAAC;IAED,cAAc;QACZ,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,cAAc,CAAC,GAAG,EAAE,IAAI,CAAC,gBAAgB,CAAC,GAAG,EAAE,wDAAiB,CAAC,GAAG,CAAC,CAAC;QAChH,IAAI,CAAC,+BAA+B,CAAC,yEAAkC,CAAC,MAAM,CAAC,CAAC;QAChF,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,wBAAwB,CAC7C,IAAI,CAAC,4BAA4B,CAAC,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,OAAO,CAAC,EAClE,IAAI,CAAC,4BAA4B,CAAC,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAC7E,CAAC;QACF,IAAI,CAAC,QAAQ,EAAE,CAAC;QAChB,IAAI,CAAC,mBAAmB,EAAE,CAAC;IAC7B,CAAC;IAED,gBAAgB;QACd,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,IAAI,CAAC,gBAAgB,CAAC,KAAK,EAAE,wDAAiB,CAAC,KAAK,CAAC,CAAC;QACxH,IAAI,CAAC,+BAA+B,CAAC,yEAAkC,CAAC,MAAM,CAAC,CAAC;QAChF,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,wBAAwB,CAC/C,IAAI,CAAC,4BAA4B,CAAC,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,OAAO,CAAC,EACpE,IAAI,CAAC,4BAA4B,CAAC,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAC/E,CAAC;QACF,IAAI,CAAC,QAAQ,EAAE,CAAC;QAChB,IAAI,CAAC,mBAAmB,EAAE,CAAC;IAC7B,CAAC;IAED,eAAe;QACb,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE,IAAI,CAAC,gBAAgB,CAAC,IAAI,EAAE,wDAAiB,CAAC,IAAI,CAAC,CAAC;QACpH,IAAI,CAAC,+BAA+B,CAAC,yEAAkC,CAAC,MAAM,CAAC,CAAC;QAChF,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,wBAAwB,CAC9C,IAAI,CAAC,4BAA4B,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,EACnE,IAAI,CAAC,4BAA4B,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAC9E,CAAC;QACF,IAAI,CAAC,QAAQ,EAAE,CAAC;QAChB,IAAI,CAAC,mBAAmB,EAAE,CAAC;IAC7B,CAAC;IAED,2CAA2C;IAC3C,gBAAgB;QACd,IAAI,IAAI,CAAC,SAAS,KAAK,SAAS,IAAI,IAAI,CAAC,SAAS,KAAK,EAAE,EAAE;YACzD,IAAI,iBAAiB,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;YAC/D,iBAAiB,GAAG,iBAAiB,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;YACpD,IAAI,iBAAiB,KAAK,SAAS,IAAI,iBAAiB,KAAK,EAAE,EAAE;gBAC/D,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,UAAU,GAAG,MAAM,CAAC,iBAAiB,CAAC,CAAC;gBAChE,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;gBACrG,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,UAAU,GAAG,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC;gBAEjH,IAAI,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,UAAU,IAAI,CAAC,EAAE;oBAC5C,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,UAAU,CAAC;iBAC7E;qBACI,IAAI,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,UAAU,KAAK,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,UAAU,EAAE;oBACtF,IAAI,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,aAAa,EAAE;wBAChF,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,aAAa,CAAC;qBAC9E;oBAED,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,UAAU,CAAC;oBAEtD,kCAAkC;oBAClC,IAAI,CAAC,+BAA+B,CAAC,yEAAkC,CAAC,OAAO,CAAC,CAAC;iBAClF;aACF;SACF;QAED,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,yBAAyB,CAAC,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;QAC5J,IAAI,CAAC,QAAQ,EAAE,CAAC;QAChB,IAAI,CAAC,mBAAmB,EAAE,CAAC;IAC7B,CAAC;IAED,2CAA2C;IAC3C,eAAe;QACb,IAAI,IAAI,CAAC,QAAQ,KAAK,SAAS,IAAI,IAAI,CAAC,QAAQ,KAAK,EAAE,EAAE;YACvD,IAAI,iBAAiB,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;YAC9D,iBAAiB,GAAG,iBAAiB,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;YACpD,IAAI,iBAAiB,KAAK,SAAS,IAAI,iBAAiB,KAAK,EAAE,EAAE;gBAC/D,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,UAAU,GAAG,MAAM,CAAC,iBAAiB,CAAC,CAAC;gBAC/D,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,UAAU,GAAG,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;gBACnG,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,UAAU,GAAG,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC;gBAE/G,IAAI,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,UAAU,IAAI,CAAC,EAAE;oBAC3C,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,UAAU,GAAG,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,UAAU,CAAC;iBAC3E;qBACI,IAAI,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,UAAU,KAAK,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,UAAU,EAAE;oBACpF,IAAI,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,UAAU,GAAG,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,aAAa,EAAE;wBAC9E,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,UAAU,GAAG,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,aAAa,CAAC;qBAC5E;oBAED,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,UAAU,CAAC;oBAErD,kCAAkC;oBAClC,IAAI,CAAC,+BAA+B,CAAC,yEAAkC,CAAC,OAAO,CAAC,CAAC;iBAClF;aACF;SACF;QAED,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,yBAAyB,CAAC,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC;QACzJ,IAAI,CAAC,QAAQ,EAAE,CAAC;QAChB,IAAI,CAAC,mBAAmB,EAAE,CAAC;IAC7B,CAAC;IAED,2CAA2C;IAC3C,iBAAiB;QACf,IAAI,IAAI,CAAC,UAAU,KAAK,SAAS,IAAI,IAAI,CAAC,UAAU,KAAK,EAAE,EAAE;YAC3D,IAAI,iBAAiB,GAAG,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;YAChE,iBAAiB,GAAG,iBAAiB,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;YACpD,IAAI,iBAAiB,KAAK,SAAS,IAAI,iBAAiB,KAAK,EAAE,EAAE;gBAC/D,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,UAAU,GAAG,MAAM,CAAC,iBAAiB,CAAC,CAAC;gBACjE,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,UAAU,GAAG,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;gBACvG,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,UAAU,GAAG,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC;gBAEnH,IAAI,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,UAAU,IAAI,CAAC,EAAE;oBAC7C,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,UAAU,GAAG,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,UAAU,CAAC;iBAC/E;qBACI,IAAI,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,UAAU,KAAK,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,UAAU,EAAE;oBACxF,IAAI,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,UAAU,GAAG,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,aAAa,EAAE;wBAClF,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,UAAU,GAAG,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,aAAa,CAAC;qBAChF;oBAED,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,UAAU,CAAC;oBAEvD,kCAAkC;oBAClC,IAAI,CAAC,+BAA+B,CAAC,yEAAkC,CAAC,OAAO,CAAC,CAAC;iBAClF;aACF;SACF;QAED,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,yBAAyB,CAAC,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,UAAU,CAAC,EAAE,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC;QAC/J,IAAI,CAAC,QAAQ,EAAE,CAAC;QAChB,IAAI,CAAC,mBAAmB,EAAE,CAAC;IAC7B,CAAC;IAED,2CAA2C;IAC3C,gBAAgB;QACd,IAAI,IAAI,CAAC,SAAS,KAAK,SAAS,IAAI,IAAI,CAAC,SAAS,KAAK,EAAE,EAAE;YACzD,IAAI,iBAAiB,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;YAC/D,iBAAiB,GAAG,iBAAiB,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;YACpD,IAAI,iBAAiB,KAAK,SAAS,IAAI,iBAAiB,KAAK,EAAE,EAAE;gBAC/D,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,UAAU,GAAG,MAAM,CAAC,iBAAiB,CAAC,CAAC;gBAChE,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;gBACrG,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,UAAU,GAAG,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC;gBAEjH,IAAI,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,UAAU,IAAI,CAAC,EAAE;oBAC5C,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,UAAU,CAAC;iBAC7E;qBACI,IAAI,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,UAAU,KAAK,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,UAAU,EAAE;oBACtF,IAAI,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,aAAa,EAAE;wBAChF,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,aAAa,CAAC;qBAC9E;oBAED,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,UAAU,CAAC;oBAEtD,kCAAkC;oBAClC,IAAI,CAAC,+BAA+B,CAAC,yEAAkC,CAAC,OAAO,CAAC,CAAC;iBAClF;aACF;SACF;QAED,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,yBAAyB,CAAC,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;QAC5J,IAAI,CAAC,QAAQ,EAAE,CAAC;QAChB,IAAI,CAAC,mBAAmB,EAAE,CAAC;IAC7B,CAAC;IAED,yCAAyC;IACzC,iBAAiB;QACd,IAAI,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,iBAAiB,KAAK,CAAC,IAAI,IAAI,CAAC,UAAU,KAAK,SAAS,IAAI,IAAI,CAAC,UAAU,KAAK,EAAE,EAAE;YAChH,IAAI,iBAAiB,GAAG,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;YAChE,iBAAiB,GAAG,iBAAiB,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;YACpD,IAAI,iBAAiB,KAAK,SAAS,IAAI,iBAAiB,KAAK,EAAE,EAAE;gBAC/D,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,WAAW,GAAG,MAAM,CAAC,iBAAiB,CAAC,CAAC;gBACjE,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;gBACvG,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,WAAW,GAAG,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC;gBAEnH,IACE,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,WAAW,IAAI,CAAC;oBACzC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,WAAW,KAAK,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,WAAW;oBAC/E,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,aAAa,GAAG,EAAE,EAAE;oBAClF,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,WAAW,CAAC;iBACjF;qBAAM;oBACL,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,WAAW,CAAC;oBAE9E,IAAI,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,aAAa,EAAE;wBACvH,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,WAAW,CAAC;qBACrH;iBACF;aACF;SACD;QAED,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,yBAAyB,CAAC,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;QAC9J,IAAI,CAAC,QAAQ,EAAE,CAAC;QAChB,IAAI,CAAC,mBAAmB,EAAE,CAAC;IAC9B,CAAC;IAED,yCAAyC;IACzC,gBAAgB;QACd,IAAI,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,iBAAiB,KAAK,CAAC,IAAI,IAAI,CAAC,SAAS,KAAK,SAAS,IAAI,IAAI,CAAC,SAAS,KAAK,EAAE,EAAE;YAC5G,IAAI,iBAAiB,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;YAC/D,iBAAiB,GAAG,iBAAiB,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;YACpD,IAAI,iBAAiB,KAAK,SAAS,IAAI,iBAAiB,KAAK,EAAE,EAAE;gBAC/D,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,WAAW,GAAG,MAAM,CAAC,iBAAiB,CAAC,CAAC;gBAChE,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,WAAW,GAAG,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;gBACrG,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,WAAW,GAAG,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC;gBAEjH,IACE,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,WAAW,IAAI,CAAC;oBACxC,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,WAAW,KAAK,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,WAAW;oBAC7E,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,WAAW,GAAG,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,aAAa,GAAG,EAAE,EAAE;oBAChF,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,WAAW,GAAG,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,WAAW,CAAC;iBAC/E;qBAAM;oBACL,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,WAAW,GAAG,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,WAAW,CAAC;oBAE5E,IAAI,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,WAAW,GAAG,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,UAAU,GAAG,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,aAAa,EAAE;wBACpH,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,UAAU,GAAG,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,aAAa,GAAG,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,WAAW,CAAC;qBAClH;iBACF;aACF;SACD;QAED,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,yBAAyB,CAAC,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,WAAW,CAAC,EAAE,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC;QAC3J,IAAI,CAAC,QAAQ,EAAE,CAAC;QAChB,IAAI,CAAC,mBAAmB,EAAE,CAAC;IAC9B,CAAC;IAED,yCAAyC;IACzC,kBAAkB;QAChB,IAAI,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,iBAAiB,KAAK,CAAC,IAAI,IAAI,CAAC,WAAW,KAAK,SAAS,IAAI,IAAI,CAAC,WAAW,KAAK,EAAE,EAAE;YAClH,IAAI,iBAAiB,GAAG,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;YACjE,iBAAiB,GAAG,iBAAiB,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;YACpD,IAAI,iBAAiB,KAAK,SAAS,IAAI,iBAAiB,KAAK,EAAE,EAAE;gBAC/D,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,WAAW,GAAG,MAAM,CAAC,iBAAiB,CAAC,CAAC;gBAClE,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,WAAW,GAAG,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;gBACzG,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,WAAW,GAAG,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC;gBAErH,IACE,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,WAAW,IAAI,CAAC;oBAC1C,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,WAAW,KAAK,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,WAAW;oBACjF,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,WAAW,GAAG,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,aAAa,GAAG,EAAE,EAAE;oBACpF,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,WAAW,GAAG,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,WAAW,CAAC;iBACnF;qBAAM;oBACL,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,WAAW,GAAG,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,WAAW,CAAC;oBAEhF,IAAI,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,WAAW,GAAG,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,UAAU,GAAG,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,aAAa,EAAE;wBAC1H,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,UAAU,GAAG,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,aAAa,GAAG,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,WAAW,CAAC;qBACxH;iBACF;aACF;SACD;QAED,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,yBAAyB,CAAC,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,WAAW,CAAC,EAAE,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC;QACjK,IAAI,CAAC,QAAQ,EAAE,CAAC;QAChB,IAAI,CAAC,mBAAmB,EAAE,CAAC;IAC9B,CAAC;IAED,yCAAyC;IACzC,iBAAiB;QACf,IAAI,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,iBAAiB,KAAK,CAAC,IAAI,IAAI,CAAC,UAAU,KAAK,SAAS,IAAI,IAAI,CAAC,UAAU,KAAK,EAAE,EAAE;YAC/G,IAAI,iBAAiB,GAAG,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;YAChE,iBAAiB,GAAG,iBAAiB,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;YACpD,IAAI,iBAAiB,KAAK,SAAS,IAAI,iBAAiB,KAAK,EAAE,EAAE;gBAC/D,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,WAAW,GAAG,MAAM,CAAC,iBAAiB,CAAC,CAAC;gBACjE,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;gBACvG,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,WAAW,GAAG,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC;gBAEnH,IACE,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,WAAW,IAAI,CAAC;oBACzC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,WAAW,KAAK,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,WAAW;oBAC/E,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,aAAa,GAAG,EAAE,EAAE;oBAClF,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,WAAW,CAAC;iBACjF;qBAAM;oBACL,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,WAAW,CAAC;oBAE9E,IAAI,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,aAAa,EAAE;wBACvH,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,WAAW,CAAC;qBACrH;iBACF;aACF;SACD;QAED,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,yBAAyB,CAAC,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;QAC9J,IAAI,CAAC,QAAQ,EAAE,CAAC;QAChB,IAAI,CAAC,mBAAmB,EAAE,CAAC;IAC9B,CAAC;IACD,YAAY;IAEZ,yBAAyB;IAEjB,yBAAyB,CAAC,KAAa,EAAE,UAAkB;QACjE,IAAI,KAAK,IAAI,SAAS,IAAI,KAAK,IAAI,CAAC,IAAI,UAAU,IAAI,SAAS,IAAI,UAAU,IAAI,CAAC,EAAE;YAClF,OAAO,KAAK;SACb;QAED,OAAO,KAAK,CAAC,QAAQ,EAAE,GAAG,GAAG,CAAC;IAChC,CAAC;IAEO,2BAA2B,CAAC,WAAmB;QACrD,OAAO,WAAW,CAAC,QAAQ,EAAE,GAAG,GAAG,CAAC;IACtC,CAAC;IAEO,oBAAoB,CAAC,IAAY;QACvC,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,4BAA4B,CAAC,IAAI,CAAC,GAAI,EAAE,CAAC,GAAG,EAAE,CAAC;IACxE,CAAC;IAEO,oBAAoB,CAAC,IAAY;QACvC,OAAO,IAAI,GAAG,EAAE,CAAC;IACnB,CAAC;IAEO,yBAAyB,CAAC,UAAsC;QACtE,QAAQ,UAAU,CAAC,IAAI,EAAC;YACtB,KAAK,MAAM;gBACT,IAAI,CAAC,cAAc,CAAC,IAAI,GAAG,UAAU,CAAC;gBACtC,MAAM;YACR,KAAK,KAAK;gBACR,IAAI,CAAC,cAAc,CAAC,GAAG,GAAG,UAAU,CAAC;gBACrC,MAAM;YACR,KAAK,OAAO;gBACV,IAAI,CAAC,cAAc,CAAC,KAAK,GAAG,UAAU,CAAC;gBACvC,MAAM;YACR,KAAK,MAAM;gBACT,IAAI,CAAC,cAAc,CAAC,IAAI,GAAG,UAAU,CAAC;gBACtC,MAAM;SACT;IACH,CAAC;IAED,UAAU,CAAC,KAAK;QACd,IAAI,CAAC,4EAAc,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,GAAG,KAAK,GAAG,IAAI,KAAK,CAAC,GAAG,KAAK,OAAO,EAAE;YAC5E,KAAK,CAAC,cAAc,EAAE,CAAC;SACxB;IACH,CAAC;IAED,kBAAkB,CAAC,KAAK;QACtB,IAAI,CAAC,4EAAc,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,GAAG,KAAK,GAAG,IAAI,KAAK,CAAC,GAAG,KAAK,OAAO,IAAI,KAAK,CAAC,GAAG,KAAK,GAAG,EAAE;YACjG,KAAK,CAAC,cAAc,EAAE,CAAC;SACxB;IACH,CAAC;IAEO,+BAA+B,CAAC,IAAgC,EAAE,SAAqC;QAC7G,SAAS,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;QACjC,SAAS,CAAC,gBAAgB,GAAG,IAAI,CAAC,gBAAgB,CAAC;QACnD,SAAS,CAAC,eAAe,GAAG,IAAI,CAAC,eAAe,CAAC;QACjD,SAAS,CAAC,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC;QAC7C,SAAS,CAAC,iBAAiB,GAAG,IAAI,CAAC,iBAAiB,CAAC;QACrD,SAAS,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC;QACvC,SAAS,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC;IAC3C,CAAC;IAEO,sBAAsB;QAC5B,IAAI,CAAC,gBAAgB,CAAC,YAAY,GAAG,IAAI,CAAC,cAAc,CAAC,YAAY,CAAC;QACtE,IAAI,CAAC,gBAAgB,CAAC,QAAQ,GAAG,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC;QAC9D,IAAI,CAAC,gBAAgB,CAAC,eAAe,GAAG,IAAI,CAAC,cAAc,CAAC,eAAe,CAAC;QAE5E,IAAI,CAAC,+BAA+B,CAAC,IAAI,CAAC,cAAc,CAAC,GAAG,EAAE,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC;QACzF,IAAI,CAAC,+BAA+B,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC;QAC3F,IAAI,CAAC,+BAA+B,CAAC,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC;QAC7F,IAAI,CAAC,+BAA+B,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC;IAC7F,CAAC;IAEO,gCAAgC;QACtC,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,iBAAiB,CAAC;QAC1F,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,iBAAiB,GAAG,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,iBAAiB,CAAC;QACxF,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,iBAAiB,GAAG,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,iBAAiB,CAAC;QAC5F,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,iBAAiB,CAAC;IAC5F,CAAC;IAEO,4BAA4B,CAAC,MAAc;QACjD,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;IACvD,CAAC;IACD,YAAY;IAEZ,mBAAmB;QACjB,IAAI,CAAC,sBAAsB,CAAC,IAAI,EAAE,CAAC;IACrC,CAAC;IAED,iCAAiC;QAC/B,IACE,IAAI,CAAC,gBAAgB,CAAC,QAAQ,IAAI,kEAA2B,CAAC,SAAS;YACvE,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,gBAAgB,CAAC,eAAe,EAAE,CAAC,CAAC,IAAI,IAAI,CAAC,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,gBAAgB,CAAC,YAAY,EAAE,CAAC,CAAC,EAC3H;YACA,IAAI,CAAC,6BAA6B,GAAG,IAAI,CAAC,UAAU,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,gBAAgB,CAAC,eAAe,GAAG,EAAE,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC;YAC7I,wHAAwH;SACzH;aACI,IACL,IAAI,CAAC,gBAAgB,CAAC,QAAQ,IAAI,kEAA2B,CAAC,SAAS;YACvE,IAAI,CAAC,gBAAgB,CAAC,eAAe,IAAI,IAAI,CAAC,gBAAgB,CAAC,YAAY,EACzE;YACA,IAAI,CAAC,6BAA6B,GAAG,IAAI,CAAC,UAAU,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,gBAAgB,CAAC,eAAe,GAAG,EAAE,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC;YAC7I,0GAA0G;SAC3G;aACI,IAAI,IAAI,CAAC,gBAAgB,CAAC,QAAQ,IAAI,kEAA2B,CAAC,SAAS,EAAE;YAChF,IAAI,CAAC,6BAA6B,GAAG,IAAI,CAAC,UAAU,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,gBAAgB,CAAC,YAAY,GAAG,EAAE,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC;YAC1I,iFAAiF;SAClF;aACI,IAAI,IAAI,CAAC,gBAAgB,CAAC,QAAQ,IAAI,kEAA2B,CAAC,SAAS,EAAE;YAChF,IAAI,CAAC,6BAA6B,GAAG,IAAI,CAAC,UAAU,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,gBAAgB,CAAC,YAAY,GAAG,EAAE,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC;YAC9I,2EAA2E;SAC5E;QAED,IAAI,CAAC,6BAA6B,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,6BAA6B,GAAG,EAAE,CAAC,CAAC;QACzF,sBAAsB;QAEtB,IAAI,CAAC,sBAAsB,GAAG,CAAC,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC;QACjF,oCAAoC;QAEpC,IAAI,CAAC,gBAAgB,EAAE,CAAC;QACxB,IAAI,YAAY,GAAG,CAAC,CAAC;QACrB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE;YAC3B,IACA,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,iBAAiB,IAAI,CAAC;;oBAE3C,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,UAAU,GAAG,EAAE,GAAI,YAAY;2BAClD,YAAY,IAAI,CAAC,CAAC,EACnB;gBACA,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,UAAU,GAAG,EAAE,CAAC;gBACpD,sGAAsG;aACvG;SACF;QAED,IAAI,CAAC,sBAAsB,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,sBAAsB,GAAG,YAAY,GAAG,EAAE,GAAG,EAAE,CAAC,GAAG,EAAE,CAAC;QACpG,uCAAuC;QAEvC,IAAI,CAAC,aAAa,EAAE,CAAC;IACzB,CAAC;CACF;AAv3CW;IAAT,4DAAM,EAAE;;0EAA6C;AAE7C;IAAR,2DAAK,EAAE;8BAAiB,wDAAgB;kEAAC;AACjC;IAAR,2DAAK,EAAE;8BAAe,yDAAiB;gEAAC;AAChC;IAAR,2DAAK,EAAE;;+DAAwC;AACvC;IAAR,2DAAK,EAAE;;8DAAoB;AACnB;IAAR,2DAAK,EAAE;;gEAAqC;AACpC;IAAR,2DAAK,EAAE;8BAAc,2DAAmB;+DAAC;AAG1C;IADC,+DAAS,CAAC,mFAA2B,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;8BACpD,mFAA2B;6DAAC;AAXpC,0BAA0B;IALtC,+DAAS,CAAC;QACT,QAAQ,EAAE,mCAAmC;QAC7C,+PAAoD;KAErD,CAAC;;GACW,0BAA0B,CAw3CtC;AAx3CsC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACbyC;AAElB;AAO9D,IAAa,2BAA2B,GAAxC,MAAa,2BAA2B;IAStC,gBAAgB,CAAC;IAEjB,QAAQ;QACN,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;QACtD,IAAI,CAAC,QAAQ,EAAE,CAAC;IAClB,CAAC;IAED,SAAS;QACP,IAAI,IAAI,CAAC,GAAG,KAAK,SAAS,EAAE;YAC1B,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;SAC5C;QAED,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;IACrC,CAAC;IAED,QAAQ;QACN,IAAI,CAAC,GAAG,CAAC,SAAS,GAAG,UAAU,CAAC;QAChC,IAAI,CAAC,SAAS,EAAE,CAAC;QAEjB,IAAI,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,GAAG,CAAC,CAAC;QACxC,IAAI,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC;QACzC,IAAI,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC;QAC9G,IAAI,KAAK,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,GAAG,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,GAAG,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,GAAG,EAAE,CAAC,GAAG,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,GAAG,EAAE,CAAC,GAAG,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;QAElP,IAAI,QAAQ,GAAG,EAAE,CAAC;QAClB,IAAI,CAAC,GAAG,CAAC,IAAI,GAAG,GAAG,QAAQ,UAAU,CAAC;QACtC,IAAI,CAAC,GAAG,OAAO,GAAG,IAAI,CAAC,cAAc,CAAC,MAAM,GAAG,CAAC,GAAG,KAAK,CAAC;QACzD,IAAI,CAAC,GAAG,OAAO,GAAG,IAAI,CAAC,cAAc,CAAC,KAAK,GAAG,KAAK,GAAG,CAAC,CAAC;QACxD,IAAI,CAAC,GAAI,OAAO,GAAG,IAAI,CAAC,cAAc,CAAC,MAAM,GAAG,CAAC,GAAG,KAAK,GAAG,CAAC,CAAC;QAC9D,IAAI,CAAC,GAAG,OAAO,GAAG,IAAI,CAAC,cAAc,CAAC,KAAK,GAAG,KAAK,GAAG,CAAC,GAAG,CAAC,CAAC;QAE5D,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC;QACrB,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;QAC1B,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC;QAElB,IAAI,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,iBAAiB,KAAK,CAAC,EAAE;YAChD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,iBAAiB,EAAE,CAAC,EAAE,EAAE;gBAC/D,IAAI,EAAE,GAAG,OAAO,GAAG,IAAI,CAAC,cAAc,CAAC,MAAM,GAAG,CAAC,GAAG,KAAK,CAAC;gBAC1D,IAAI,EAAE,GAAG,OAAO,GAAG,IAAI,CAAC,cAAc,CAAC,KAAK,GAAG,KAAK,GAAG,CAAC,CAAC;gBACzD,EAAE,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,gBAAgB,GAAG,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC,YAAY,GAAG,CAAC,CAAC,GAAG,EAAE,GAAG,KAAK,CAAC;gBAClI,IAAI,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,WAAW,CAAC,YAAY,GAAG,EAAE,GAAG,KAAK,CAAC;gBACzD,IAAI,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,WAAW,GAAG,EAAE,GAAG,KAAK,CAAC;gBAC5D,IAAI,EAAE,GAAG,EAAE,CAAC;gBACZ,IAAI,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,UAAU,GAAG,EAAE,GAAG,KAAK,CAAC;gBAE3D,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC;gBACrB,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;gBACxB,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;gBACxB,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;gBACxB,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;gBACxB,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;gBACxB,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC;gBAElB,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC;gBACrB,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;gBACxB,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;gBACxB,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;gBACxB,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;gBACxB,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;gBACxB,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC;gBAChB,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC;aACnB;SACF;QAED,IAAI,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,iBAAiB,KAAK,CAAC,EAAE;YACjD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,iBAAiB,EAAE,CAAC,EAAE,EAAE;gBAChE,IAAI,EAAE,GAAG,OAAO,GAAG,IAAI,CAAC,cAAc,CAAC,MAAM,GAAG,CAAC,GAAG,KAAK,CAAC;gBAC1D,IAAI,EAAE,GAAG,OAAO,GAAG,IAAI,CAAC,cAAc,CAAC,KAAK,GAAG,KAAK,GAAG,CAAC,CAAC;gBACzD,EAAE,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,gBAAgB,GAAG,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC,YAAY,GAAG,CAAC,CAAC,GAAG,EAAE,GAAG,KAAK,CAAC;gBACpI,IAAI,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,WAAW,CAAC,YAAY,GAAG,EAAE,GAAG,KAAK,CAAC;gBACzD,IAAI,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,WAAW,GAAG,EAAE,GAAG,KAAK,CAAC;gBAC7D,IAAI,EAAE,GAAG,EAAE,CAAC;gBACZ,IAAI,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,UAAU,GAAG,EAAE,GAAG,KAAK,CAAC;gBAE5D,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC;gBACrB,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;gBACxB,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;gBACxB,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;gBACxB,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;gBACxB,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;gBACxB,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC;gBAElB,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC;gBACrB,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;gBACxB,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;gBACxB,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;gBACxB,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;gBACxB,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;gBACxB,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC;gBAChB,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC;aACnB;SACF;QAED,IAAI,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,iBAAiB,KAAK,CAAC,EAAE;YAClD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,iBAAiB,EAAE,CAAC,EAAE,EAAE;gBACjE,IAAI,EAAE,GAAG,OAAO,GAAG,IAAI,CAAC,cAAc,CAAC,MAAM,GAAG,CAAC,GAAG,KAAK,CAAC;gBAC1D,IAAI,EAAE,GAAG,OAAO,GAAG,IAAI,CAAC,cAAc,CAAC,KAAK,GAAG,CAAC,GAAG,KAAK,CAAC;gBACzD,EAAE,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,gBAAgB,GAAG,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC,YAAY,GAAE,CAAC,CAAC,GAAG,EAAE,GAAG,KAAK,CAAC;gBACrI,IAAI,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,WAAW,CAAC,YAAY,GAAG,EAAE,GAAG,KAAK,CAAC;gBACzD,IAAI,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,WAAW,GAAG,EAAE,GAAG,KAAK,CAAC;gBAC9D,IAAI,EAAE,GAAG,EAAE,CAAC;gBACZ,IAAI,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,UAAU,GAAG,EAAE,GAAG,KAAK,CAAC;gBAE7D,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC;gBACrB,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;gBACxB,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;gBACxB,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;gBACxB,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;gBACxB,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;gBACxB,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC;gBAElB,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC;gBACrB,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;gBACxB,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;gBACxB,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;gBACxB,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;gBACxB,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;gBACxB,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC;gBAChB,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC;aACnB;SACF;QAED,IAAI,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,iBAAiB,KAAK,CAAC,EAAE;YACjD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,iBAAiB,EAAE,CAAC,EAAE,EAAE;gBAChE,IAAI,EAAE,GAAG,OAAO,GAAG,IAAI,CAAC,cAAc,CAAC,MAAM,GAAG,CAAC,GAAG,KAAK,CAAC;gBAC1D,IAAI,EAAE,GAAG,OAAO,GAAG,IAAI,CAAC,cAAc,CAAC,KAAK,GAAG,CAAC,GAAG,KAAK,CAAC;gBACzD,EAAE,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,gBAAgB,GAAG,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC,YAAY,GAAE,CAAC,CAAC,GAAG,EAAE,GAAG,KAAK,CAAC;gBACnI,IAAI,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,WAAW,CAAC,YAAY,GAAG,EAAE,GAAG,KAAK,CAAC;gBACzD,IAAI,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,WAAW,GAAG,EAAE,GAAG,KAAK,CAAC;gBAC7D,IAAI,EAAE,GAAG,EAAE,CAAC;gBACZ,IAAI,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,UAAU,GAAG,EAAE,GAAG,KAAK,CAAC;gBAE5D,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC;gBACrB,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;gBACxB,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;gBACxB,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;gBACxB,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;gBACxB,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;gBACxB,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC;gBAElB,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC;gBACrB,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;gBACxB,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;gBACxB,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;gBACxB,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;gBACxB,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;gBACxB,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC;gBAChB,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC;aACnB;SACF;QAED,IAAI,WAAW,GAAG,WAAW,CAAC;QAC9B,IAAI,SAAS,GAAG,OAAO,CAAC;QACxB,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC;QAChB,IAAI,CAAC,GAAG,CAAC,SAAS,GAAG,OAAO,CAAC;QAC7B,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,WAAW,EAAE,OAAO,GAAG,WAAW,CAAC,MAAM,GAAG,CAAC,GAAG,QAAQ,GAAG,CAAC,EAAE,OAAO,GAAG,IAAI,CAAC,cAAc,CAAC,KAAK,GAAG,CAAC,GAAG,KAAK,GAAG,QAAQ,CAAC,CAAC;QAC5I,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC,MAAM,GAAG,CAAC,GAAG,QAAQ,GAAG,CAAC,CAAC,CAAC;QACzE,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,GAAG,CAAC,CAAC,CAAC;QACvC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,SAAS,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;QACnC,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;IACrB,CAAC;CACF;AAxKC;IADC,+DAAS,CAAC,YAAY,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;8BAClC,wDAAU;2DAAoB;AAE7B;IAAR,2DAAK,EAAE;8BAAc,wDAAgB;gEAAC;AAC9B;IAAR,2DAAK,EAAE;8BAAiB,yDAAiB;mEAAC;AALhC,2BAA2B;IALvC,+DAAS,CAAC;QACT,QAAQ,EAAE,qCAAqC;QAC/C,0RAAsD;KAEvD,CAAC;;GACW,2BAA2B,CA0KvC;AA1KuC;;;;;;;;;;;;;;;;;;;;ACTW;;;;;;;;;;;;;;;;;;;;;;;ACAF;AACyB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACD0C;AAEnC;AAC9B;AACP;AACU;AACG;AACK;AAQ9D,IAAa,6BAA6B,GAA1C,MAAa,6BAA6B;IA+BxC,YAAoB,YAAyB;QAAzB,iBAAY,GAAZ,YAAY,CAAa;QA5BnC,+BAA0B,GAAG,IAAI,0DAAY,EAAE,CAAC;QAQ1D,sBAAiB,GAAuD,EAAE,CAAC;IAoB1B,CAAC;IAElD,QAAQ;QACN,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,2DAAgB,CAAC,EAAE;YAC3D,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,CAAC,GAAG,CAAC,EAAC,CAAC,CAAC;SAClE;QAED,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,cAAc,CAAC,WAAW,CAAC;QACpD,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,2BAA2B,CAAC,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;QAC1E,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,2BAA2B,CAAC,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;QAC5E,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,2BAA2B,CAAC,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;QAC5E,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,2BAA2B,CAAC,IAAI,CAAC,cAAc,CAAC,cAAc,CAAC,CAAC;QAC5F,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,2BAA2B,CAAC,IAAI,CAAC,cAAc,CAAC,cAAc,CAAC,CAAC;QAC5F,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,2BAA2B,CAAC,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;QAC5E,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,2BAA2B,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;QACxE,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,2BAA2B,CAAC,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC;QACpF,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,2BAA2B,CAAC,IAAI,CAAC,cAAc,CAAC,YAAY,CAAC,CAAC;QACxF,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,2BAA2B,CAAC,IAAI,CAAC,cAAc,CAAC,WAAW,CAAC,CAAC;QACtF,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,2BAA2B,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;QAExE,IAAI,CAAC,qBAAqB,EAAE,CAAC;QAC7B,IAAI,CAAC,QAAQ,EAAE,CAAC;IAClB,CAAC;IAED,qBAAqB;QACnB,IAAI,CAAC,0BAA0B,GAAG,IAAI,yDAAiB,EAAE,CAAC;QAC1D,IAAI,CAAC,0BAA0B,CAAC,KAAK,GAAG,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC;QAClE,IAAI,CAAC,0BAA0B,CAAC,MAAM,GAAG,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC;QACpE,IAAI,CAAC,0BAA0B,CAAC,MAAM,GAAG,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC;QACpE,IAAI,CAAC,0BAA0B,CAAC,YAAY,GAAG,IAAI,CAAC,cAAc,CAAC,YAAY,CAAC;QAChF,IAAI,CAAC,0BAA0B,CAAC,WAAW,GAAG,IAAI,CAAC,cAAc,CAAC,WAAW,CAAC;QAC9E,IAAI,CAAC,0BAA0B,CAAC,IAAI,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC;QAEhE,IAAI,CAAC,0BAA0B,CAAC,oBAAoB,EAAE,CAAC;IACzD,CAAC;IAED,eAAe;QACb,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE;YACvE,IAAI,CAAC,OAAO,EAAE;gBACZ,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,2BAA2B,CAAC,IAAI,CAAC,cAAc,CAAC,cAAc,CAAC,CAAC;gBAC5F,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,2BAA2B,CAAC,IAAI,CAAC,cAAc,CAAC,cAAc,CAAC,CAAC;aAC7F;iBAAM;gBACL,IAAI,CAAC,cAAc,CAAC,cAAc,GAAG,IAAI,CAAC,eAAe,CAAC;gBAC1D,IAAI,CAAC,cAAc,CAAC,cAAc,GAAG,IAAI,CAAC,eAAe,CAAC;aAC3D;QACH,CAAC,CAAC,CAAC;IACL,CAAC;IAED,WAAW;QACT,IAAI,CAAC,mBAAmB,CAAC,WAAW,EAAE,CAAC;IACzC,CAAC;IAED,mBAAmB;QACjB,IAAI,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,cAAc,CAAC,WAAW,EAAC;YACvD,IAAI,CAAC,cAAc,CAAC,WAAW,GAAG,IAAI,CAAC,YAAY,CAAC;SACrD;QAED,sDAAsD;QACtD,IAAI,CAAC,cAAc,CAAC,mBAAmB,EAAE,CAAC;QAC1C,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,2BAA2B,CAAC,IAAI,CAAC,cAAc,CAAC,cAAc,CAAC,CAAC;QAC5F,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,2BAA2B,CAAC,IAAI,CAAC,cAAc,CAAC,cAAc,CAAC,CAAC;QAC5F,IAAI,CAAC,0BAA0B,CAAC,cAAc,GAAG,IAAI,CAAC,cAAc,CAAC,cAAc,CAAC;QACpF,IAAI,CAAC,0BAA0B,CAAC,cAAc,GAAG,IAAI,CAAC,cAAc,CAAC,cAAc,CAAC;QACpF,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,2BAA2B,CAAC,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC;QACpF,IAAI,CAAC,OAAO,GAAI,IAAI,CAAC,2BAA2B,CAAC,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;QAC7E,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,2BAA2B,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;QACxE,IAAI,CAAC,MAAM,GAAE,IAAI,CAAC,2BAA2B,CAAC,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;QACzE,IAAI,CAAC,OAAO,GAAE,IAAI,CAAC,2BAA2B,CAAC,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;QAC3E,IAAI,CAAC,OAAO,GAAE,IAAI,CAAC,2BAA2B,CAAC,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;QAE3E,IAAI,CAAC,WAAW,EAAE;QAClB,IAAI,CAAC,uBAAuB,EAAE,CAAC;IACjC,CAAC;IAED,kBAAkB,CAAC,KAA8B;QAC/C,OAAO,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC,CAAC,KAAK,CAAC;IACnE,CAAC;IAED,aAAa;QACX,IAAI,IAAI,CAAC,MAAM,IAAI,IAAI,IAAI,IAAI,CAAC,MAAM,IAAI,CAAC,EAAC;YAC1C,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,2BAA2B,CAAC,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;SAC3E;aACI,IAAI,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE;YACjD,IAAI,IAAI,CAAC,MAAM,GAAG,MAAM,EAAE;gBACxB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;aACtB;YAED,IAAI,CAAC,cAAc,CAAC,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC;YACxC,IAAI,CAAC,cAAc,CAAC,aAAa,EAAE,CAAC;YAEpC,IAAI,IAAI,CAAC,YAAY,KAAK,8DAAuB,CAAC,IAAI,EAAE;gBACtD,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,2BAA2B,CAAC,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC;aACrF;YAED,IAAI,CAAC,oBAAoB,EAAE,CAAC;YAC5B,IAAI,CAAC,WAAW,EAAE,CAAC;YACnB,IAAI,CAAC,uBAAuB,EAAE,CAAC;SAChC;IACH,CAAC;IAED,cAAc;QACZ,IAAI,IAAI,CAAC,OAAO,IAAI,IAAI,IAAI,IAAI,CAAC,OAAO,IAAI,CAAC,EAAC;YAC5C,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,2BAA2B,CAAC,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;SAC7E;aACI,IAAI,IAAI,CAAC,cAAc,CAAC,MAAM,IAAI,IAAI,CAAC,OAAO,EAAE;YACnD,IAAI,IAAI,CAAC,OAAO,GAAG,MAAM,EAAE;gBACzB,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;aACvB;YAED,IAAI,CAAC,cAAc,CAAC,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC;YAC1C,IAAI,CAAC,cAAc,CAAC,cAAc,EAAE,CAAC;YAErC,IAAI,IAAI,CAAC,YAAY,KAAK,8DAAuB,CAAC,IAAI,EAAE;gBACtD,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,2BAA2B,CAAC,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC;aACrF;YAED,IAAI,CAAC,oBAAoB,EAAE,CAAC;YAC5B,IAAI,CAAC,WAAW,EAAE,CAAC;YACnB,IAAI,CAAC,uBAAuB,EAAE,CAAC;SAChC;IACH,CAAC;IAED,cAAc;QACZ,IAAI,IAAI,CAAC,OAAO,IAAI,IAAI,IAAI,IAAI,CAAC,OAAO,IAAI,CAAC,EAAC;YAC5C,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,2BAA2B,CAAC,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;SAC7E;aACI,IAAI,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE;YACnD,IAAI,IAAI,CAAC,OAAO,GAAG,MAAM,EAAE;gBACzB,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;aACvB;YAED,gDAAgD;YAChD,IAAI,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,cAAc,CAAC,MAAM,EAAC;gBAC7C,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,2BAA2B,CAAC,IAAI,CAAC,cAAc,CAAC,UAAU,GAAG,IAAI,CAAC,OAAO,GAAG,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,CAAC;aACpI;iBACI;gBACH,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,2BAA2B,CAAC,IAAI,CAAC,cAAc,CAAC,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC;aACjG;YAED,gDAAgD;YAChD,IAAI,CAAC,cAAc,CAAC,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC;YAC1C,IAAI,CAAC,kBAAkB,EAAE,CAAC;YAC1B,IAAI,CAAC,WAAW,EAAE,CAAC;YACnB,IAAI,CAAC,uBAAuB,EAAE,CAAC;SAChC;IACH,CAAC;IAED,kBAAkB;QAChB,IAAI,IAAI,CAAC,eAAe,IAAI,IAAI,IAAI,IAAI,CAAC,eAAe,IAAI,CAAC,EAAC;YAC5D,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,2BAA2B,CAAC,IAAI,CAAC,cAAc,CAAC,cAAc,CAAC,CAAC;SAC7F;aACI,IAAI,IAAI,CAAC,eAAe,IAAI,IAAI,CAAC,2BAA2B,CAAC,IAAI,CAAC,cAAc,CAAC,cAAc,CAAC,EAAE;YACrG,OAAO;YACP,IAAI,CAAC,YAAY,CAAC,iCAAiC,CACjD,IAAI,CAAC,eAAe,EACpB,IAAI,CAAC,0BAA0B,CAAC,cAAc,EAC9C,IAAI,CAAC,eAAe,EACpB,IAAI,CAAC,0BAA0B,CAAC,cAAc,CAC/C,CAAC;YACF,IAAI,CAAC,uBAAuB,EAAE,CAAC;SAChC;IACH,CAAC;IAED,sBAAsB;QACpB,IAAI,IAAI,CAAC,eAAe,IAAI,IAAI,IAAI,IAAI,CAAC,eAAe,IAAI,CAAC,EAAC;YAC5D,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,2BAA2B,CAAC,IAAI,CAAC,cAAc,CAAC,cAAc,CAAC,CAAC;SAC7F;aACI,IAAI,IAAI,CAAC,eAAe,IAAI,IAAI,CAAC,2BAA2B,CAAC,IAAI,CAAC,cAAc,CAAC,cAAc,CAAC,EAAE;YACrG,OAAO;YACP,IAAI,CAAC,YAAY,CAAC,iCAAiC,CACjD,IAAI,CAAC,eAAe,EACpB,IAAI,CAAC,0BAA0B,CAAC,cAAc,EAC9C,IAAI,CAAC,eAAe,EACpB,IAAI,CAAC,0BAA0B,CAAC,cAAc,CAC/C,CAAC;YACF,IAAI,CAAC,uBAAuB,EAAE,CAAC;SAChC;IACH,CAAC;IAED,YAAY;QACV,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,IAAI,IAAI,CAAC,KAAK,IAAI,CAAC,IAAI,IAAI,CAAC,KAAK,GAAG,EAAE,EAAC;YAC3D,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,2BAA2B,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;SACzE;aACI,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE;YAC/C,IAAI,CAAC,cAAc,CAAC,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC;YACtC,IAAI,CAAC,cAAc,CAAC,YAAY,EAAE,CAAC;YACnC,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,2BAA2B,CAAC,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC;YACpF,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,2BAA2B,CAAC,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;YAC5E,IAAI,CAAC,oBAAoB,EAAE,CAAC;YAC5B,IAAI,CAAC,WAAW,EAAE,CAAC;YACnB,IAAI,CAAC,uBAAuB,EAAE,CAAC;SAChC;IACH,CAAC;IAED,cAAc;QACZ,IAAI,IAAI,CAAC,OAAO,IAAI,IAAI,IAAI,IAAI,CAAC,OAAO,IAAI,CAAC,IAAI,IAAI,CAAC,OAAO,GAAG,EAAE,EAAC;YACjE,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,2BAA2B,CAAC,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC;SAC5E;aACI,IAAI,IAAI,CAAC,cAAc,CAAC,MAAM,IAAI,IAAI,CAAC,OAAO,EAAE;YACnD,IAAI,CAAC,cAAc,CAAC,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC;YAC1C,IAAI,CAAC,cAAc,CAAC,cAAc,EAAE,CAAC;YACrC,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,2BAA2B,CAAC,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC;YACpF,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,2BAA2B,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;YACxE,IAAI,CAAC,oBAAoB,EAAE,CAAC;YAC5B,IAAI,CAAC,WAAW,EAAE,CAAC;YACnB,IAAI,CAAC,uBAAuB,EAAE,CAAC;SAChC;IACH,CAAC;IAED,kBAAkB;QAChB,IAAI,IAAI,CAAC,WAAW,IAAI,IAAI,IAAI,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,OAAO,EAAC;YAC/D,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,2BAA2B,CAAC,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC;SACrF;aACI,IAAI,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,cAAc,CAAC,UAAU,EAAE;YAC3D,IAAI,CAAC,cAAc,CAAC,UAAU,GAAG,IAAI,CAAC,2BAA2B,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;YACpF,IAAI,CAAC,cAAc,CAAC,kBAAkB,EAAE,CAAC;YACzC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,2BAA2B,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;YACxE,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,2BAA2B,CAAC,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;YAC5E,IAAI,CAAC,oBAAoB,EAAE,CAAC;YAC5B,IAAI,CAAC,WAAW,EAAE,CAAC;YACnB,IAAI,CAAC,uBAAuB,EAAE,CAAC;SAChC;IACH,CAAC;IAED,oBAAoB;QAClB,IAAI,CAAC,cAAc,CAAC,oBAAoB,EAAE,CAAC;QAC3C,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,2BAA2B,CAAC,IAAI,CAAC,cAAc,CAAC,cAAc,CAAC,CAAC;QAC5F,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,2BAA2B,CAAC,IAAI,CAAC,cAAc,CAAC,cAAc,CAAC,CAAC;IAC9F,CAAC;IAED,sBAAsB;QACpB,IAAI,CAAC,cAAc,CAAC,sBAAsB,EAAE,CAAC;QAC7C,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,2BAA2B,CAAC,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC;QACpF,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,2BAA2B,CAAC,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;QAC5E,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,2BAA2B,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;IAC1E,CAAC;IAEO,QAAQ;QACd,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC;YAC9C,KAAK,EAAE,IAAI,0DAAW,CAAC,GAAG,EAAE,yDAAU,CAAC,OAAO,CAAC;gBAC7C,yDAAU,CAAC,QAAQ;gBACnB,yDAAU,CAAC,GAAG,CAAC,KAAK,CAAC;aACtB,CAAC,CAAC;YACH,MAAM,EAAE,IAAI,0DAAW,CAAC,GAAG,EAAE,yDAAU,CAAC,OAAO,CAAC;gBAC9C,yDAAU,CAAC,QAAQ;gBACnB,yDAAU,CAAC,GAAG,CAAC,KAAK,CAAC;aACtB,CAAC,CAAC;YACH,MAAM,EAAE,IAAI,0DAAW,CAAC,EAAE,EAAE,yDAAU,CAAC,OAAO,CAAC;gBAC7C,yDAAU,CAAC,QAAQ;gBACnB,yDAAU,CAAC,GAAG,CAAC,KAAK,CAAC;aACtB,CAAC,CAAC;SACJ,CAAC,CAAC;IACL,CAAC;IAED,WAAW;QACT,IAAI,CAAC,gBAAgB,CAAC,SAAS,EAAE,CAAC;QAClC,IAAI,CAAC,gBAAgB,CAAC,WAAW,EAAE,CAAC;IACtC,CAAC;IAEO,2BAA2B,CAAC,MAAc;QAChD,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,GAAG,EAAE,CAAC;IACzD,CAAC;IACO,4BAA4B,CAAC,MAAc;QACjD,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC;IAC/C,CAAC;IAED,uBAAuB;QACrB,IAAI,CAAC,0BAA0B,CAAC,IAAI,EAAE,CAAC;IACzC,CAAC;CACF;;YA7QmC,0DAAW;;AA9BpC;IAAR,2DAAK,EAAE;8BAAiB,yDAAiB;qEAAC;AAEjC;IAAT,4DAAM,EAAE;;iFAAiD;AAG1D;IADC,+DAAS,CAAC,gEAAwB,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;8BAC9C,gEAAwB;mEAAC;AAG/C;IADC,+DAAS,CAAC,0EAAuB,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;8BACzC,0EAAuB;uEAAC;AATvC,6BAA6B;IANzC,+DAAS,CAAC;QACT,QAAQ,EAAE,sCAAsC;QAChD,wQAAuD;KAExD,CAAC;qCAiCkC,0DAAW;GA/BlC,6BAA6B,CA4SzC;AA5SyC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACfsC;AACpC;AACgB;AAO5D,IAAa,uBAAuB,GAApC,MAAa,uBAAuB;IAOlC,gBAAgB,CAAC;IAEjB,QAAQ;QACN,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;QACtD,IAAI,CAAC,WAAW,EAAE,CAAC;IACrB,CAAC;IAEO,gBAAgB;QACtB,IAAI,WAAW,GAAG,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC;QAC5C,IAAI,WAAW,GAAG,IAAI,CAAC,cAAc,CAAC,MAAM;YAAE,WAAW,GAAG,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC;QACvF,IAAI,WAAW,GAAG,IAAI,CAAC,cAAc,CAAC,MAAM;YAAE,WAAW,GAAG,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC;QAEvF,IAAI,IAAI,CAAC,cAAc,CAAC,MAAM,IAAI,WAAW,EAAE;YAC7C,IAAI,IAAI,CAAC,cAAc,CAAC,MAAM,GAAG,CAAC,IAAI,IAAI,CAAC,cAAc,CAAC,KAAK,IAAI,IAAI,CAAC,cAAc,CAAC,KAAK,GAAG,CAAC,IAAI,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE;gBAC9H,OAAO,IAAI,CAAC,cAAc,CAAC,MAAM,GAAG,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,WAAW,GAAG,CAAC,GAAG,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,WAAW,GAAG,CAAC,GAAG,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;aACxN;YACD,OAAO,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,WAAW,GAAG,IAAI,CAAC,cAAc,CAAC,MAAM,GAAG,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;SAC3G;;YACI,OAAO,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,GAAG,CAAC,WAAW,GAAG,IAAI,CAAC,cAAc,CAAC,MAAM,GAAG,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;IAC7G,CAAC;IAED,SAAS;QACP,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC,UAAU,EAAE,MAAM,CAAC,WAAW,CAAC,CAAC;IAClE,CAAC;IAED,WAAW;QACT,IAAI,CAAC,SAAS,EAAE,CAAC;QAEjB,IAAI,CAAC,GAAG,IAAI,CAAC,gBAAgB,EAAE,CAAC;QAChC,IACE,IAAI,CAAC,cAAc,CAAC,KAAK,GAAG,IAAI,CAAC,cAAc,CAAC,MAAM,GAAG,IAAI,CAAC,cAAc,CAAC,MAAM,GAAC,CAAC;eAClF,IAAI,CAAC,cAAc,CAAC,KAAK,GAAG,IAAI,CAAC,cAAc,CAAC,MAAM,GAAG,IAAI,CAAC,cAAc,CAAC,MAAM,GAAC,CAAC,EAAE;YAC1F,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;SACf;QACD,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;QACxC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;QACzC,IAAI,EAAE,GAAG,IAAI,CAAC,cAAc,CAAC,KAAK,GAAG,CAAC,CAAC;QACvC,IAAI,EAAE,GAAG,IAAI,CAAC,cAAc,CAAC,MAAM,GAAG,CAAC,CAAC;QACxC,IAAI,CAAC,GAAG,IAAI,CAAC,cAAc,CAAC,MAAM,GAAG,CAAC,CAAC;QACvC,IAAI,KAAK,GAAG,CAAC,IAAI,CAAC,cAAc,CAAC,UAAU,GAAG,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QAC9E,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC;QAEjB,IAAI,EAAE,GAAG,EAAE,EAAE;YACX,CAAC,IAAI,EAAE,GAAG,GAAG,CAAC;SACf;QAGD,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC;QACrB,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QACtB,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,EAAE,GAAG,GAAG,CAAC,CAAC;QACtC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,GAAG,CAAC,CAAC;QAC1C,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;QAC1B,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC;QACrB,IAAI,CAAC,GAAG,CAAC,WAAW,GAAG,SAAS,CAAC;QACjC,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC;QAElB,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC;QACrB,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QACtB,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,EAAE,GAAG,GAAG,CAAC,CAAC;QACtC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,GAAG,CAAC,CAAC;QAC1C,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;QAC1B,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC;QACrB,IAAI,CAAC,GAAG,CAAC,WAAW,GAAG,SAAS,CAAC;QACjC,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC;QAElB,IAAI,IAAI,CAAC,cAAc,CAAC,WAAW,IAAI,8DAAuB,CAAC,IAAI,EAAE;YACnE,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC;YACrB,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;YAC1B,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,GAAG,CAAC,CAAC;YAC1C,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,CAAC,CAAC,CAAC;YAC5D,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,GAAG,CAAC,CAAC;YAC1C,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC;YACrB,IAAI,CAAC,GAAG,CAAC,WAAW,GAAG,SAAS,CAAC;YACjC,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC;SACnB;QAED,IAAI,IAAI,CAAC,cAAc,CAAC,WAAW,IAAI,8DAAuB,CAAC,MAAM,EAAE;YACrE,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC;YACrB,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;YAC1B,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,GAAG,CAAC,CAAC;YAC1C,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,CAAC,CAAC,CAAC;YAE5D,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;YAC1B,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC;YACpD,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,GAAG,CAAC,CAAC;YAC1C,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC;YACpD,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC;YAClE,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,GAAG,CAAC,CAAC;YAC1C,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC;YAClE,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,CAAC,CAAC,CAAC;YAE5D,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC;SACnB;QAED,IAAI,IAAI,CAAC,cAAc,CAAC,WAAW,IAAI,8DAAuB,CAAC,MAAM,EAAE;YACrE,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC;YACrB,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;YAC1B,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,GAAG,CAAC,CAAC;YAC1C,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,CAAC,CAAC,CAAC;YAC5D,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,GAAG,CAAC,CAAC;YAE1C,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;YAC1B,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC;YACtE,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,GAAG,CAAC,CAAC;YAC1C,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC;YACtE,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC;YAClF,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,CAAC,CAAC,CAAC;YAC5D,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC;YAClF,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,GAAG,CAAC,CAAC;YAE1C,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC;SACnB;QAED,IAAI,IAAI,CAAC,cAAc,CAAC,WAAW,IAAI,8DAAuB,CAAC,SAAS,EAAE;YACxE,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC;YACrB,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;YAC1B,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,GAAG,CAAC,CAAC;YAC1C,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,CAAC,CAAC,CAAC;YAC5D,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,GAAG,CAAC,CAAC;YAE1C,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;YAC1B,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC;YACtE,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,GAAG,CAAC,CAAC;YAC1C,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC;YAClF,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC;YACtE,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC;YAClF,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC;YAC9F,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,CAAC,CAAC,CAAC;YAC5D,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC;YAC9F,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC;YAClF,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,GAAG,CAAC,CAAC;YAC1C,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC;YAClF,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC;YAEtE,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC;SACnB;IACH,CAAC;CAEF;AA/IC;IADC,+DAAS,CAAC,YAAY,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;8BAClC,wDAAU;uDAAoB;AAE7B;IAAR,2DAAK,EAAE;8BAAiB,yDAAiB;+DAAC;AAJhC,uBAAuB;IALnC,+DAAS,CAAC;QACT,QAAQ,EAAE,gCAAgC;QAC1C,8QAAiD;KAElD,CAAC;;GACW,uBAAuB,CAiJnC;AAjJmC;;;;;;;;;;;;;;;;;;;;ACTS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACCgB;AACZ;AAQhC;AACsE;AACxC;AACgD;AAC5C;AACS;AACuF;AAOnJ,IAAa,0BAA0B,GAAvC,MAAa,0BAA0B;IA0BrC,YAAoB,kBAA+C,EAAU,MAAsB,EACzF,iBAAmD;QADzC,uBAAkB,GAAlB,kBAAkB,CAA6B;QAAU,WAAM,GAAN,MAAM,CAAgB;QACzF,sBAAiB,GAAjB,iBAAiB,CAAkC;QAZ7D,cAAS,GAAG,mDAAY,CAAC;QACzB,yBAAoB,GAAiB,mDAAY,CAAC,UAAU,CAAC;QAC7D,WAAM,GAA6C,EAAE,CAAC;QACtD,sBAAiB,GAAY,KAAK,CAAC;QACnC,eAAU,GAAY,KAAK,CAAC;QAC5B,YAAO,GAAY,KAAK,CAAC;QACzB,oBAAe,GAAY,KAAK,CAAC;QACjC,qBAAgB,GAAY,KAAK,CAAC;QAE1B,UAAK,GAAW,yBAAyB,CAAC;IAGe,CAAC;IAE5D,QAAQ;;YACZ,IAAI,CAAC,kBAAkB,CAAC,sBAAsB,EAAE,CAAC;YACjD,IAAI,CAAC,iBAAiB,CAAC,gCAAgC,EAAE,CAAC;YAE1D,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;YACpB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,mDAAY,CAAC,wBAAwB,EAAE,KAAK,EAAE,uDAAY,CAAC,mDAAY,CAAC,wBAAwB,CAAC,EAAE,CAAC,CAAC;YAC/H,IAAI,CAAC,iBAAiB,GAAG,IAAI,iEAAyB,EAAE,CAAC;YACzD,IAAI,CAAC,iBAAiB,CAAC,WAAW,GAAG,EAAE,CAAC;YACxC,IAAI,CAAC,iBAAiB,CAAC,WAAW,GAAG,IAAI,yDAAiB,EAAE,CAAC;YAE7D,IAAI,OAAe,CAAC;YACpB,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC,UAAe,EAAE,EAAE;gBACpD,OAAO,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC;YAC7B,CAAC,CAAC,CAAC;YAEH,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE;gBACnB,IAAI,MAAM,GAAG,MAAM,IAAI,CAAC,iBAAiB,CAAC,mBAAmB,CAAC,OAAO,CAAC,CAAC;gBACvE,IAAI,MAAM,EAAE;oBACV,IAAI,CAAC,CAAC,MAAM,YAAY,kDAAU,CAAC,EAAE;wBACnC,IAAI,KAAK,GAAG,MAAmC,CAAC;wBAChD,IAAI,CAAC,iBAAiB,CAAC,EAAE,GAAG,KAAK,CAAC,EAAE,CAAC;wBACrC,IAAI,CAAC,iBAAiB,CAAC,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC;wBAC/C,IAAI,CAAC,iBAAiB,CAAC,sBAAsB,GAAG,KAAK,CAAC,sBAAsB,CAAC;wBAC7E,IAAI,CAAC,iBAAiB,CAAC,oBAAoB,GAAG,IAAI,2DAAmB,EAAE,CAAC;wBACxE,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,iBAAiB,CAAC,oBAAoB,EAAE,MAAM,CAAC,oBAAoB,CAAC,CAAC;wBACxF,IAAI,CAAC,iBAAiB,CAAC,oBAAoB,CAAC,WAAW,GAAG,EAAE,CAAC;wBAC7D,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,iBAAiB,CAAC,oBAAoB,CAAC,WAAW,EAAE,MAAM,CAAC,oBAAoB,CAAC,WAAW,CAAC,CAAC;wBAChH,IAAI,CAAC,iBAAiB,CAAC,oBAAoB,CAAC,WAAW,GAAG,MAAM,CAAC,oBAAoB,CAAC,WAAW,CAAC;wBAClG,IAAI,CAAC,iBAAiB,CAAC,UAAU,GAAG,IAAI,0DAAkB,EAAE,CAAC;wBAC7D,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,iBAAiB,CAAC,UAAU,EAAE,MAAM,CAAC,UAAU,CAAC,CAAC;wBACpE,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,iBAAiB,CAAC,WAAW,EAAE,MAAM,CAAC,WAAW,CAAC,CAAC;wBACtE,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,iBAAiB,CAAC,WAAW,EAAE,MAAM,CAAC,WAAW,CAAC,CAAC;wBACtE,IAAI,CAAC,iBAAiB,CAAC,iBAAiB,GAAG,IAAI,yDAAiB,EAAE,CAAC;wBACnE,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,iBAAiB,CAAC,iBAAiB,EAAE,MAAM,CAAC,iBAAiB,CAAC,CAAC;wBAClF,IAAI,CAAC,iBAAiB,CAAC,iBAAiB,CAAC,aAAa,GAAG,MAAM,CAAC,iBAAiB,CAAC,aAAa,CAAC;wBAChG,IAAI,CAAC,UAAU,GAAG,mDAAY,CAAC,wBAAwB,CAAC;wBAExD,IAAI,MAAM,CAAC,cAAc,EAAE;4BACzB,IAAI,CAAC,iBAAiB,CAAC,cAAc,GAAG,IAAI,6DAAqB,EAAE,CAAC;4BACpE,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,iBAAiB,CAAC,cAAc,EAAE,MAAM,CAAC,cAAc,CAAC,CAAC;yBAC7E;wBAED,IAAI,MAAM,CAAC,aAAa,EAAE;4BACxB,IAAI,CAAC,iBAAiB,CAAC,aAAa,GAAG,IAAI,wDAAgB,EAAE,CAAC;4BAC9D,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,iBAAiB,CAAC,aAAa,EAAE,MAAM,CAAC,aAAa,CAAC,CAAC;yBAC3E;wBAED,IAAI,CAAC,aAAa,EAAE,CAAC;qBACtB;yBACI,IAAI,MAAM,YAAY,kDAAU,IAAI,CAAC,MAAM,CAAC,IAAI,IAAI,qDAAa,CAAC,eAAe,IAAI,MAAM,CAAC,IAAI,IAAI,qDAAa,CAAC,aAAa,CAAC,EAAE;wBACrI,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;qBAC5B;iBACF;aACF;YAED,IAAI,CAAC,iBAAiB,CAAC,OAAO,GAAG,yDAAkB,CAAC,eAAe,CAAC;YACpE,IAAI,CAAC,UAAU,GAAG,mDAAY,CAAC,wBAAwB,CAAC;YACxD,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;QACvB,CAAC;KAAA;IAED,aAAa;QACX,IAAI,IAAI,CAAC,iBAAiB,CAAC,oBAAoB;YAC7C,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,mDAAY,CAAC,sBAAsB,EAAE,KAAK,EAAE,uDAAY,CAAC,mDAAY,CAAC,sBAAsB,CAAC,EAAE,CAAC,CAAC;QAC7H,IAAI,IAAI,CAAC,iBAAiB,CAAC,cAAc;YACvC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,mDAAY,CAAC,wBAAwB,EAAE,KAAK,EAAE,uDAAY,CAAC,mDAAY,CAAC,wBAAwB,CAAC,EAAE,CAAC,CAAC;QACjI,IAAI,IAAI,CAAC,iBAAiB,CAAC,aAAa;YACtC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,mDAAY,CAAC,UAAU,EAAE,KAAK,EAAE,uDAAY,CAAC,mDAAY,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;QACrG,IAAI,IAAI,CAAC,iBAAiB,CAAC,UAAU;YACnC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,mDAAY,CAAC,UAAU,EAAE,KAAK,EAAE,uDAAY,CAAC,mDAAY,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;IACvG,CAAC;IAEK,iBAAiB;;YACrB,IAAI,IAAI,CAAC,mBAAmB,CAAC,oBAAoB,EAAE,EAAE;gBACnD,IAAI,IAAI,CAAC,iBAAiB,CAAC,EAAE,IAAI,SAAS,IAAI,IAAI,CAAC,iBAAiB,CAAC,EAAE,IAAI,CAAC,EAAE;oBAC5E,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;oBACvB,IAAI,MAAM,GAAG,MAAM,IAAI,CAAC,iBAAiB,CAAC,mBAAmB,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;oBACtF,IAAI,CAAC,CAAC,MAAM,YAAY,kDAAU,CAAC,EAAE;wBACnC,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC;wBAC5B,UAAU,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,eAAe,GAAG,KAAK,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;wBAC1D,IAAI,CAAC,gBAAgB,GAAG,KAAK,CAAC;wBAC9B,IAAI,CAAC,iBAAiB,GAAG,MAAM,CAAC;qBACjC;yBAAM;wBACL,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;qBACrB;oBACD,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;iBACzB;qBACI;oBACH,IAAI,CAAC,WAAW,CAAC,gBAAgB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;iBAC/C;aACF;QACH,CAAC;KAAA;IAEK,SAAS;;YACb,IAAI,IAAI,CAAC,mBAAmB,CAAC,oBAAoB,EAAE,EAAE;gBACnD,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;gBACvB,IAAI,MAAM,GAAG,MAAM,IAAI,CAAC,iBAAiB,CAAC,eAAe,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;gBAClF,IAAI,CAAC,CAAC,MAAM,YAAY,kDAAU,CAAC,EAAE;oBACnC,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC;oBAC5B,UAAU,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,eAAe,GAAG,KAAK,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;oBAC1D,IAAI,CAAC,gBAAgB,GAAG,KAAK,CAAC;oBAC9B,IAAI,CAAC,iBAAiB,GAAG,MAAM,CAAC;iBACjC;qBAAM;oBACL,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;iBACrB;gBACD,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;aACzB;QACH,CAAC;KAAA;IAEK,cAAc;;YAClB,IAAI,CAAC,iBAAiB,CAAC,EAAE,GAAG,CAAC,CAAC;YAC9B,IAAI,CAAC,iBAAiB,CAAC,UAAU,CAAC,EAAE,GAAG,CAAC,CAAC;YACzC,IAAI,CAAC,iBAAiB,CAAC,WAAW,CAAC,EAAE,GAAG,CAAC,CAAC;YAC1C,IAAI,CAAC,iBAAiB,CAAC,oBAAoB,CAAC,EAAE,GAAG,CAAC,CAAC;YACnD,IAAI,CAAC,iBAAiB,CAAC,oBAAoB,CAAC,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;gBACrE,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC;YACd,CAAC,CAAC,CAAC;YAEH,IAAI,IAAI,CAAC,iBAAiB,CAAC,iBAAiB,CAAC,gBAAgB,EAAE;gBAC7D,IAAI,CAAC,iBAAiB,CAAC,cAAc,CAAC,EAAE,GAAG,CAAC,CAAC;aAC9C;YAED,IAAI,IAAI,CAAC,iBAAiB,CAAC,iBAAiB,CAAC,aAAa,IAAI,6DAAsB,CAAC,IAAI,EAAE;gBACzF,IAAI,CAAC,iBAAiB,CAAC,aAAa,CAAC,EAAE,GAAG,CAAC,CAAC;gBAC5C,IAAI,CAAC,iBAAiB,CAAC,aAAa,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC;gBAChD,IAAI,CAAC,iBAAiB,CAAC,aAAa,CAAC,KAAK,CAAC,EAAE,GAAG,CAAC,CAAC;gBAClD,IAAI,CAAC,iBAAiB,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC;gBACjD,IAAI,CAAC,iBAAiB,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC;aAClD;YACD,IAAI,CAAC,iBAAiB,EAAE,CAAC;QAC3B,CAAC;KAAA;IAED,YAAY,CAAC,YAA0B;QACrC,IAAI,CAAC,UAAU,GAAG,YAAY,CAAC;IACjC,CAAC;IAED,UAAU;QACR,IAAI,gBAAgB,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,IAAI,IAAI,CAAC,UAAU,CAAC,CAAC;QAC9E,IAAI,gBAAgB,IAAI,CAAC,EAAE;YACzB,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,EAAE,gBAAgB,CAAC,CAAC,KAAK,CAAC;SACzD;IACH,CAAC;IAED,UAAU;QACR,QAAQ,IAAI,CAAC,UAAU,EAAE;YACvB,KAAK,mDAAY,CAAC,wBAAwB;gBACxC,IAAI,CAAC,IAAI,CAAC,iBAAiB,IAAI,IAAI,CAAC,iBAAiB,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE;oBAC5E,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,oBAAoB,EAAE;wBAChD,IAAI,CAAC,iBAAiB,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,GAAG,OAAO,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,EAAC,CAAC,CAAC,CAAC;wBAC3F,IAAI,CAAC,iBAAiB,CAAC,oBAAoB,GAAG,IAAI,2DAAmB,EAAE,CAAC;qBACzE;oBACD,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,iBAAiB;wBAAE,IAAI,CAAC,iBAAiB,CAAC,iBAAiB,GAAG,IAAI,yDAAiB,EAAE,CAAC;oBAClH,IAAI,CAAC,aAAa,CAAC,mDAAY,CAAC,sBAAsB,CAAC,CAAC;iBACzD;gBACD,MAAM;YACR,KAAK,mDAAY,CAAC,sBAAsB;gBACtC,IAAI,IAAI,CAAC,gBAAgB,EAAE,EAAE;oBAC3B,IAAI,IAAI,CAAC,iBAAiB,CAAC,iBAAiB,CAAC,gBAAgB,EAAE;wBAC7D,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,cAAc;4BAAE,IAAI,CAAC,iBAAiB,CAAC,cAAc,GAAG,IAAI,6DAAqB,EAAE,CAAC;wBAChH,IAAI,CAAC,aAAa,CAAC,mDAAY,CAAC,wBAAwB,CAAC,CAAC;wBAC1D,MAAM;qBACP;yBACI,IAAI,IAAI,CAAC,iBAAiB,CAAC,iBAAiB,CAAC,aAAa,EAAE;wBAC/D,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,aAAa;4BAAE,IAAI,CAAC,iBAAiB,CAAC,aAAa,GAAG,IAAI,wDAAgB,EAAE,CAAC;wBACzG,IAAI,CAAC,aAAa,CAAC,mDAAY,CAAC,UAAU,CAAC,CAAC;wBAC5C,MAAM;qBACP;yBACI;wBACH,IAAI,CAAC,iBAAiB,CAAC,cAAc,GAAG,IAAI,CAAC;wBAC7C,IAAI,CAAC,iBAAiB,CAAC,aAAa,GAAG,IAAI,CAAC;wBAC5C,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,UAAU;4BAAE,IAAI,CAAC,iBAAiB,CAAC,UAAU,GAAG,IAAI,0DAAkB,EAAE,CAAC;wBACrG,IAAI,CAAC,aAAa,CAAC,mDAAY,CAAC,UAAU,CAAC,CAAC;qBAC7C;iBACF;gBACD,MAAM;YACR,KAAK,mDAAY,CAAC,wBAAwB;gBACxC,IAAI,IAAI,CAAC,gBAAgB,EAAE,EAAE;oBAC3B,IAAI,IAAI,CAAC,iBAAiB,CAAC,iBAAiB,CAAC,aAAa,IAAI,6DAAsB,CAAC,IAAI,EAAE;wBACzF,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,aAAa;4BAAE,IAAI,CAAC,iBAAiB,CAAC,aAAa,GAAG,IAAI,wDAAgB,EAAE,CAAC;wBACzG,IAAI,CAAC,aAAa,CAAC,mDAAY,CAAC,UAAU,CAAC,CAAC;wBAC5C,MAAM;qBACP;yBAAM;wBACL,IAAI,CAAC,iBAAiB,CAAC,aAAa,GAAG,IAAI,CAAC;wBAC5C,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,UAAU;4BAAE,IAAI,CAAC,iBAAiB,CAAC,UAAU,GAAG,IAAI,0DAAkB,EAAE,CAAC;wBACrG,IAAI,CAAC,aAAa,CAAC,mDAAY,CAAC,UAAU,CAAC,CAAC;qBAC7C;iBACF;gBACD,MAAM;YACR,KAAK,mDAAY,CAAC,UAAU;gBAC1B,IAAI,IAAI,CAAC,gBAAgB,EAAE,EAAE;oBAC3B,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,UAAU;wBAAE,IAAI,CAAC,iBAAiB,CAAC,UAAU,GAAG,IAAI,0DAAkB,EAAE,CAAC;oBACrG,IAAI,CAAC,aAAa,CAAC,mDAAY,CAAC,UAAU,CAAC,CAAC;iBAC7C;gBACD,MAAM;SACT;QAAA,CAAC;IACJ,CAAC;IAED,gBAAgB;QACd,QAAQ,IAAI,CAAC,UAAU,EAAE;YACvB,KAAK,mDAAY,CAAC,wBAAwB;gBACxC,OAAO,CAAC,IAAI,CAAC,iBAAiB,IAAI,IAAI,CAAC,iBAAiB,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC;YAClF,KAAK,mDAAY,CAAC,sBAAsB;gBACtC,OAAO,IAAI,CAAC,iBAAiB,CAAC,oBAAoB,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,oBAAoB,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,IAAI,IAAI,CAAC,CAAC;YAClL,KAAK,mDAAY,CAAC,wBAAwB;gBACxC,OAAO,CAAC,IAAI,CAAC,iBAAiB,CAAC;YACjC,KAAK,mDAAY,CAAC,UAAU;gBAC1B,OAAO,CAAC,IAAI,CAAC,iBAAiB,CAAC;YACjC;gBACE,OAAO,IAAI,CAAC;SACf;IACH,CAAC;IAED,gBAAgB;QACd,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC;QAC7B,QAAQ,IAAI,CAAC,UAAU,EAAE;YACvB,KAAK,mDAAY,CAAC,wBAAwB;gBACxC,IAAI,CAAC,eAAe,CAAC,mDAAY,CAAC,wBAAwB,CAAC,CAAC;gBAC5D,IAAI,CAAC,iBAAiB,CAAC,oBAAoB,GAAG,IAAI,CAAC;gBACnD,IAAI,CAAC,iBAAiB,CAAC,cAAc,GAAG,IAAI,CAAC;gBAC7C,IAAI,CAAC,iBAAiB,CAAC,aAAa,GAAG,IAAI,CAAC;gBAC5C,MAAM;YACR,KAAK,mDAAY,CAAC,sBAAsB;gBACtC,IAAI,CAAC,eAAe,CAAC,mDAAY,CAAC,sBAAsB,CAAC,CAAC;gBAC1D,IAAI,CAAC,iBAAiB,CAAC,cAAc,GAAG,IAAI,CAAC;gBAC7C,IAAI,CAAC,iBAAiB,CAAC,aAAa,GAAG,IAAI,CAAC;gBAC5C,MAAM;YACR,KAAK,mDAAY,CAAC,wBAAwB;gBACxC,MAAM;YACR,KAAK,mDAAY,CAAC,UAAU;gBAC1B,MAAM;SACT;IACH,CAAC;IAED,kBAAkB;QAChB,IAAI,IAAI,CAAC,UAAU,IAAI,mDAAY,CAAC,sBAAsB,EAAE;YAC1D,IAAI,CAAC,eAAe,CAAC,mDAAY,CAAC,sBAAsB,CAAC,CAAC;SAC3D;IACH,CAAC;IAED,mBAAmB;QACjB,IAAI,KAAK,GAAG,IAAI,CAAC,gBAAgB,EAAE,CAAC;QACpC,IAAI,CAAC,kBAAkB,CAAC,kCAAkC,CAAC,KAAK,CAAC,CAAC;IACpE,CAAC;IAED,kBAAkB;QAChB,IAAI,KAAK,GAAG,IAAI,CAAC,gBAAgB,EAAE,CAAC;QACpC,IAAI,CAAC,iBAAiB,CAAC,kCAAkC,CAAC,KAAK,CAAC,CAAC;IACnE,CAAC;IAEO,eAAe,CAAC,SAAuB;QAC7C,IAAI,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,IAAI,SAAS,CAAC,CAAC;QAC7D,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IAClD,CAAC;IAEO,aAAa,CAAC,OAAqB;QACzC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,IAAI,OAAO,CAAC,EAAE;YAC9C,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,uDAAY,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;YACnE,IAAI,CAAC,UAAU,GAAG,OAAO,CAAC;SAC3B;aACI;YACH,IAAI,gBAAgB,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,IAAI,IAAI,CAAC,UAAU,CAAC,CAAC;YAC9E,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,EAAE,gBAAgB,CAAC,CAAC,KAAK,CAAC;SACzD;IACH,CAAC;IAEO,gBAAgB;QACtB,IAAI,KAAK,GAAG,IAAI,mEAA2B,EAAE,CAAC;QAC9C,KAAK,CAAC,UAAU,GAAG,IAAI,CAAC,iBAAiB,CAAC,UAAU,CAAC;QACrD,KAAK,CAAC,WAAW,GAAG,IAAI,CAAC,iBAAiB,CAAC,WAAW,CAAC;QACvD,KAAK,CAAC,WAAW,GAAG,IAAI,CAAC,iBAAiB,CAAC,WAAW,CAAC;QACvD,KAAK,CAAC,oBAAoB,GAAG,IAAI,CAAC,iBAAiB,CAAC,oBAAoB,CAAC;QACzE,KAAK,CAAC,iBAAiB,GAAG,IAAI,CAAC,iBAAiB,CAAC,iBAAiB,CAAC;QACnE,KAAK,CAAC,cAAc,GAAG,IAAI,CAAC,iBAAiB,CAAC,cAAc,CAAC;QAC7D,KAAK,CAAC,UAAU,GAAG,IAAI,CAAC,iBAAiB,CAAC,aAAa,CAAC;QACxD,OAAO,KAAK,CAAC;IACf,CAAC;IAED,aAAa;QACX,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,WAAW,CAAC,WAAW,EAAE;YACnD,OAAO,CAAC,GAAG,CAAC,6BAA6B,GAAG,IAAI,CAAC,iBAAiB,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC;SAC7F;QACD,IAAI,IAAI,CAAC,iBAAiB,CAAC,oBAAoB,CAAC,WAAW,CAAC,MAAM,KAAK,CAAC,EAAE;YACxE,OAAO,CAAC,GAAG,CAAC,kCAAkC,GAAG,IAAI,CAAC,iBAAiB,CAAC,oBAAoB,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;SAClH;QACD,IAAI,IAAI,CAAC,iBAAiB,CAAC,oBAAoB,CAAC,UAAU,KAAK,SAAS,EAAE;YACxE,OAAO,CAAC,GAAG,CAAC,+BAA+B,GAAG,IAAI,CAAC,iBAAiB,CAAC,oBAAoB,CAAC,UAAU,CAAC,CAAC;SACvG;QACD,IAAI,IAAI,CAAC,iBAAiB,CAAC,oBAAoB,CAAC,UAAU,KAAK,CAAC,EAAE;YAChE,OAAO,CAAC,GAAG,CAAC,uBAAuB,GAAG,IAAI,CAAC,iBAAiB,CAAC,oBAAoB,CAAC,UAAU,CAAC,CAAC;SAC/F;IACH,CAAC;CACF;;YArSyC,qEAA2B;YAAkB,8DAAc;YACtE,0EAAgC;;AAzB7D;IADC,+DAAS,CAAC,8DAAsB,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;8BACrC,8DAAsB;uEAAC;AAGpD;IADC,+DAAS,CAAC,4EAAoC,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;8BACpD,4EAAoC;sEAAC;AAGjE;IADC,+DAAS,CAAC,+EAAuC,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;8BAC9D,+EAAuC;+DAAC;AAG7D;IADC,+DAAS,CAAC,iFAAyC,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;8BAC1D,iFAAyC;qEAAC;AAX1D,0BAA0B;IALtC,+DAAS,CAAC;QACT,QAAQ,EAAE,mCAAmC;QAC7C,0OAAoD;KAErD,CAAC;qCA2BwC,qEAA2B,EAAkB,8DAAc;QACtE,0EAAgC;GA3BlD,0BAA0B,CA+TtC;AA/TsC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACvBU;AAC2B;AACY;AACjD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACHoE;AACnD;AAGC;AAIsD;AAClD;AAC+C;AACmE;AAQ/K,IAAa,qBAAqB,6BAAlC,MAAa,qBAAqB;IA6DhC,YACU,wBAA0D,EAClE,WAAwB,EAChB,OAAe,EACf,MAAsB;QAHtB,6BAAwB,GAAxB,wBAAwB,CAAkC;QAE1D,YAAO,GAAP,OAAO,CAAQ;QACf,WAAM,GAAN,MAAM,CAAgB;QA9ChC,oBAAe,GAAG,qDAAc,CAAC;QACjC,eAAU,GAAG,uBAAqB,CAAC,iBAAiB,CAAC;QACrD,eAAU,GAAG,uBAAqB,CAAC,kBAAkB,CAAC;QAEtD,eAAU,GAAyB,EAAE,CAAC;QACtC,oBAAe,GAAG,uBAAqB,CAAC,gBAAgB,CAAC;QACzD,oBAAe,GAAG,uBAAqB,CAAC,gBAAgB,CAAC;QACzD,qBAAgB,GAAG,uBAAqB,CAAC,iBAAiB,CAAC;QAC3D,mBAAc,GAAG,CAAC,IAAI,CAAC,eAAe,EAAE,IAAI,CAAC,eAAe,EAAE,IAAI,CAAC,gBAAgB,CAAC,CAAC;QACrF,kBAAa,GAAW,EAAE,CAAC;QAC3B,yBAAoB,GAAG,eAAe,CAAC;QACvC,kBAAa,GAAe,EAAE,CAAC;QAG/B,sBAAiB,GAAY,KAAK,CAAC;QACnC,0BAAqB,GAAyB,EAAE,CAAC;QACjD,oBAAe,GAAG,kEAAuB,CAAC;QAC1C,sBAAiB,GAAG,2EAAgC,CAAC;QACrD,mBAAc,GAAY,KAAK,CAAC;QAChC,yBAAoB,GAAyB,EAAE,CAAC;QAEhD,iBAAY,GAAG;YACb,EAAE,MAAM,EAAE,UAAU,EAAE,UAAU,EAAE,qDAAc,CAAC,aAAa,EAAE,SAAS,EAAE,YAAY,EAAE;YACzF,EAAE,MAAM,EAAE,cAAc,EAAE,UAAU,EAAE,qDAAc,CAAC,SAAS,EAAE,SAAS,EAAE,uBAAqB,CAAC,gBAAgB,EAAE;YACnH,EAAE,MAAM,EAAE,eAAe,EAAE,UAAU,EAAE,qDAAc,CAAC,IAAI,EAAE,SAAS,EAAE,uBAAqB,CAAC,iBAAiB,EAAE;YAChH,EAAE,MAAM,EAAE,cAAc,EAAE,UAAU,EAAE,qDAAc,CAAC,gBAAgB,EAAE,SAAS,EAAE,aAAa,EAAE;YACjG,EAAE,MAAM,EAAE,cAAc,EAAE,UAAU,EAAE,qDAAc,CAAC,gBAAgB,EAAE,SAAS,EAAE,aAAa,EAAE;YACjG,EAAE,MAAM,EAAE,eAAe,EAAE,UAAU,EAAE,qDAAc,CAAC,YAAY,EAAE,SAAS,EAAE,cAAc,EAAE;YAC/F,EAAE,MAAM,EAAE,cAAc,EAAE,UAAU,EAAE,qDAAc,CAAC,WAAW,EAAE,SAAS,EAAE,aAAa,EAAE;YAC5F,EAAE,MAAM,EAAE,EAAE,EAAE,UAAU,EAAE,qDAAc,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,EAAE;YAC1D,EAAE,MAAM,EAAE,EAAE,EAAE,UAAU,EAAE,qDAAc,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE,EAAE;SAC7D,CAAC;QAEM,iBAAY,GAAmB,EAAE,CAAC;QAI1C,iBAAY,GAA+B,EAAE,CAAC;QAEtC,qBAAgB,GAAG,eAAe,CAAC;QACnC,wBAAmB,GAAG,0CAA0C,CAAC;QAOvE,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC,KAAK,CAAC;YACnC,YAAY,EAAE,CAAC,EAAE,CAAC;SACnB,CAAC,CAAC;IACL,CAAC;IAED,QAAQ;QACN,IAAI,GAAG,GAAG,IAAI,CAAC,wBAAwB,CAAC,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE;YAChE,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;QACzB,CAAC,CAAC;QACF,IAAI,CAAC,wBAAwB,CAAC,iBAAiB,EAAE,CAAC;QAClD,IAAI,CAAC,qBAAqB,EAAE,CAAC;QAC7B,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAC9B,CAAC;IAED,eAAe;QACb,IAAI,eAAe,GAAG,IAAI,CAAC,kBAAkB,CAAC,eAAe,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE;YAC7E,IAAI,IAAI,EAAE;gBACR,IAAI,CAAC,cAAc,EAAE,CAAC;aACvB;QACH,CAAC,CAAC;QAEF,IAAI,cAAc,GAAG,IAAI,CAAC,iBAAiB,CAAC,cAAc,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE;YAC1E,IAAI,IAAI,EAAE;gBACR,IAAI,CAAC,cAAc,EAAE,CAAC;aACvB;QACH,CAAC,CAAC;QACF,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;QACxC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;IACzC,CAAC;IAED,WAAW;QACT,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC;IAC7E,CAAC;IAED,cAAc;QACZ,IAAI,CAAC,cAAc,CAAC,gBAAgB,EAAE,CAAC;IACzC,CAAC;IAEK,MAAM,CAAC,KAAyB;;YACpC,IAAI,KAAK,CAAC,WAAW,IAAI,yDAAkB,CAAC,eAAe,EAAE;gBAC3D,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,MAAM,yDAAc,CAAC,gBAAgB,EAAE,CAAC,EAAE,EAAE,WAAW,EAAE,EAAE,IAAI,EAAE,KAAK,CAAC,OAAO,EAAE,EAAE,UAAU,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;aACrI;iBACI,IAAI,KAAK,CAAC,WAAW,IAAI,yDAAkB,CAAC,gBAAgB,EAAE;gBACjE,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,MAAM,yDAAc,CAAC,iBAAiB,EAAE,CAAC,EAAE,EAAE,WAAW,EAAE,EAAE,IAAI,EAAE,KAAK,CAAC,OAAO,EAAE,EAAE,UAAU,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;aACtI;;gBACI,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,MAAM,yDAAc,CAAC,qBAAqB,EAAE,CAAC,EAAE,EAAE,WAAW,EAAE,EAAE,IAAI,EAAE,KAAK,CAAC,OAAO,EAAE,EAAE,UAAU,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;QAChJ,CAAC;KAAA;IAEK,QAAQ,CAAC,KAAyB;;YACtC,IAAI,CAAC,YAAY,CAAC,gBAAgB,CAAC,IAAI,CAAC,gBAAgB,EAAE,IAAI,CAAC,mBAAmB,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;QACrG,CAAC;KAAA;IAEK,WAAW,CAAC,OAAe;;YAC/B,IAAI,OAAO,EAAE;gBACX,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,wBAAwB,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC;gBAC/E,IAAI,MAAM,IAAI,IAAI,EAAE;oBAClB,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE;wBACnD,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,IAAI,OAAO,CAAC,CAAC;qBACrE;oBAED,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,IAAI,OAAO,CAAC,CAAC;iBACnE;qBACI;oBACH,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;iBACrB;aACF;QACH,CAAC;KAAA;IAED,kBAAkB;QAChB,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,YAAY,CAAC,KAAK,CAAC;QACtE,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM;YAAE,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC;;YAChF,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC;QAEtC,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAC7C,KAAK,CAAC,WAAW,CAAC,QAAQ,CAAC,IAAI,CAAC,iBAAiB,CAAC;YAClD,KAAK,CAAC,WAAW,CAAC,QAAQ,CAAC,IAAI,CAAC,iBAAiB,CAAC;YAClD,KAAK,CAAC,YAAY,CAAC,QAAQ,CAAC,IAAI,CAAC,iBAAiB,CAAC,CACpD,CAAC;QACF,IAAI,IAAI,CAAC,qBAAqB,CAAC,MAAM,GAAG,CAAC,EAAE;YACzC,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAC7C,IAAI,CAAC,qBAAqB,CAAC,QAAQ,CAAC,KAAK,CAAC,WAAW,CAAC,CACvD,CAAC;SACH;IACH,CAAC;IAED,+BAA+B,CAAC,WAA+B;QAC7D,QAAQ,WAAW,EAAE;YACnB,KAAK,yDAAkB,CAAC,OAAO;gBAC7B,OAAO,+DAAwB,CAAC,OAAO,CAAC;YAC1C,KAAK,yDAAkB,CAAC,IAAI;gBAC1B,OAAO,+DAAwB,CAAC,IAAI,CAAC;YACvC,KAAK,yDAAkB,CAAC,MAAM;gBAC5B,OAAO,+DAAwB,CAAC,MAAM,CAAC;YACzC,KAAK,yDAAkB,CAAC,QAAQ;gBAC9B,OAAO,+DAAwB,CAAC,QAAQ,CAAC;YAC3C,KAAK,yDAAkB,CAAC,UAAU;gBAChC,OAAO,+DAAwB,CAAC,UAAU,CAAC;YAC7C,KAAK,yDAAkB,CAAC,aAAa;gBACnC,OAAO,+DAAwB,CAAC,aAAa,CAAC;YAChD;gBACE,OAAO,+DAAwB,CAAC,IAAI,CAAC;SACxC;IACH,CAAC;IAEO,qBAAqB;QAC3B,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,yDAAkB,CAAC,gBAAgB,CAAC,CAAC,CAAC;QACrF,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,yDAAkB,CAAC,eAAe,CAAC,CAAC,CAAC;QACpF,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,yDAAkB,CAAC,oBAAoB,CAAC,CAAC,CAAC;IAC3F,CAAC;IAED,cAAc;QACZ,IAAI,CAAC,iBAAiB,GAAG,CAAC,IAAI,CAAC,iBAAiB,CAAC;IACnD,CAAC;IAED,wBAAwB;QACtB,IAAI,CAAC,cAAc,GAAG,CAAC,CAAC;QACxB,IAAI,CAAC,qBAAqB,GAAG,EAAE,CAAC;QAChC,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;YAC7B,IAAI,CAAC,CAAC,CAAC,QAAQ,EAAE;gBACf,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;aACzC;QACH,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,qBAAqB,CAAC,MAAM,CAAC;QACxD,IAAI,CAAC,kBAAkB,EAAE,CAAC;IAC5B,CAAC;IAED,sBAAsB,CAAC,KAAyB;QAC9C,IAAI,IAAI,CAAC,oBAAoB,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE;YAC7C,IAAI,CAAC,oBAAoB,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE;gBAC7C,IAAI,CAAC,CAAC,OAAO,IAAI,KAAK,CAAC,OAAO;oBAAE,IAAI,CAAC,oBAAoB,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;YAC7E,CAAC,CAAC;SACH;aAAM;YACL,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;SACvC;QAED,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,oBAAoB,CAAC,MAAM,GAAG,CAAC,CAAC;IAC7D,CAAC;IAED,mBAAmB;QACjB,IAAI,CAAC,kBAAkB,CAAC,6BAA6B,CACnD,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,EAC7C,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC;IACvD,CAAC;IAED,kBAAkB;QAChB,IAAI,CAAC,iBAAiB,CAAC,6BAA6B,CAClD,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,EAC7C,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC;IACvD,CAAC;IAED,kBAAkB,CAAC,WAA+B;QAChD,IAAI,WAAW,IAAI,yDAAkB,CAAC,gBAAgB;YAAE,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,MAAM,yDAAc,CAAC,iBAAiB,EAAE,CAAC,EAAE,EAAE,UAAU,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;aAClJ,IAAI,WAAW,IAAI,yDAAkB,CAAC,eAAe;YAAE,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,MAAM,yDAAc,CAAC,gBAAgB,EAAE,CAAC,EAAE,EAAE,UAAU,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;;YACrJ,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,MAAM,yDAAc,CAAC,qBAAqB,EAAE,CAAC,EAAE,EAAE,UAAU,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;IAC1G,CAAC;IAEO,cAAc;QACpB,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE;YAC/B,OAAO,CAAC,UAAU,GAAG,KAAK,CAAC;QAC7B,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,oBAAoB,GAAG,EAAE,CAAC;QAC/B,IAAI,CAAC,cAAc,GAAG,KAAK,CAAC;IAC9B,CAAC;CACF;AAxNQ,sCAAgB,GAAG,aAAa,CAAC;AACjC,uCAAiB,GAAG,cAAc,CAAC;AACnC,sCAAgB,GAAG,cAAc,CAAC;AAClC,uCAAiB,GAAG,aAAa,CAAC;AAClC,wCAAkB,GAAG,CAAC,CAAC,CAAC;;YA6CK,0EAAgC;YACrD,0DAAW;YACP,sDAAM;YACP,8DAAc;;AA/DhC;IADC,+DAAS,CAAC,iEAAyB,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;8BACrD,iEAAyB;6DAAC;AAG1C;IADC,+DAAS,CAAC,4EAAoC,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;8BACpD,4EAAoC;iEAAC;AAGjE;IADC,+DAAS,CAAC,gFAAwC,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;8BAC9D,gFAAwC;2DAAC;AAG/D;IADC,+DAAS,CAAC,iFAAyC,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;8BAC1D,iFAAyC;gEAAC;AAX1D,qBAAqB;IANjC,+DAAS,CAAC;QACT,QAAQ,EAAE,8BAA8B;QACxC,gNAA0C;KAE3C,CAAC;qCAgEoC,0EAAgC;QACrD,0DAAW;QACP,sDAAM;QACP,8DAAc;GAjErB,qBAAqB,CAqOjC;AArOiC;;;;;;;;;;;;;;;;;;;;ACnBK;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACA6E;AAGjE;AACA;AACa;AACC;AACD;AAOhE,IAAa,iCAAiC,GAA9C,MAAa,iCAAiC;IA8C5C;QAzCU,4BAAuB,GAAG,IAAI,0DAAY,EAAW,CAAC;QAEtD,gCAA2B,GAAG,IAAI,0DAAY,EAAE,CAAC;QAQ3D,sBAAiB,GAA8D,EAAE,CAAC;QAiBlF,qBAAgB,GAAG,KAAK,CAAC;QACzB,2BAAsB,GAAG,KAAK,CAAC;QAC/B,qBAAgB,GAAG,KAAK,CAAC;QACzB,yBAAoB,GAAG,KAAK,CAAC;QAC7B,qBAAgB,GAAG,KAAK,CAAC;QACzB,kBAAa,GAAG,KAAK,CAAC;QACtB,sBAAiB,GAAG,KAAK,CAAC;QAC1B,yBAAoB,GAAG,KAAK,CAAC;QAC7B,0BAAqB,GAAG,KAAK,CAAC;QAC9B,wBAAmB,GAAG,KAAK,CAAC;QAC5B,sBAAiB,GAAG,KAAK,CAAC;QAC1B,qBAAgB,GAAG,KAAK,CAAC;QACzB,2BAAsB,GAAG,KAAK,CAAC;IAEf,CAAC;IAEjB,QAAQ;QACN,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,mEAAwB,CAAC,EAAE;YACnE,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;SACnE;QAED,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC;QACjD,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC;QACxC,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC;QAC7C,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC;QAC3C,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC;QACxC,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC;QACvC,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC;QAC3C,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC;QAChD,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC;QACjD,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC;QAC7C,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC;QAC9C,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC;QAC7C,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC;IAE/C,CAAC;IAED,eAAe;QACb,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE;YACvE,IAAI,OAAO,EAAE;gBACX,IAAI,CAAC,aAAa,CAAC,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC;gBAC7C,IAAI,CAAC,aAAa,CAAC,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC;aAC9C;iBACI;gBACH,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC;gBAC7C,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC;gBAC7C,IAAI,CAAC,wBAAwB,EAAE,CAAC;aACjC;QACH,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,qBAAqB,EAAE,CAAC;IAC/B,CAAC;IAED,WAAW;QACT,IAAI,CAAC,mBAAmB,CAAC,WAAW,EAAE,CAAC;IACzC,CAAC;IAED,kBAAkB;QAChB,IAAI,CAAC,aAAa,CAAC,UAAU,GAAG,IAAI,CAAC,WAAW,CAAC;QACjD,IAAI,CAAC,YAAY,EAAE,CAAC;QACpB,IAAI,CAAC,qBAAqB,EAAE,CAAC;QAC7B,IAAI,CAAC,sBAAsB,EAAE,CAAC;QAC9B,IAAI,CAAC,wBAAwB,EAAE,CAAC;IAClC,CAAC;IAED,gBAAgB;QACd,IAAI,IAAI,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,CAAC,IAAI,GAAG,CAAC,EAAE;YACtC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC;SACzC;QAED,IAAI,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE;YAC5C,IAAI,CAAC,aAAa,CAAC,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC;YACxC,IAAI,CAAC,YAAY,EAAE,CAAC;YACpB,IAAI,CAAC,sBAAsB,EAAE,CAAC;YAC9B,IAAI,CAAC,qBAAqB,EAAE,CAAC;YAC7B,IAAI,CAAC,wBAAwB,EAAE,CAAC;SACjC;IACH,CAAC;IAED,kBAAkB;QAChB,IAAI,IAAI,CAAC,OAAO,IAAI,IAAI,IAAI,IAAI,CAAC,OAAO,GAAG,CAAC,EAAE;YAC5C,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC;SAC9C;QAED,IAAI,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,aAAa,CAAC,UAAU,EAAE;YACjD,IAAI,CAAC,aAAa,CAAC,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC;YAC7C,IAAI,CAAC,YAAY,EAAE,CAAC;YACpB,IAAI,CAAC,qBAAqB,EAAE,CAAC;YAC7B,IAAI,CAAC,sBAAsB,EAAE,CAAC;YAC9B,IAAI,CAAC,wBAAwB,EAAE,CAAC;SACjC;IACH,CAAC;IAED,mBAAmB;QACjB,IAAI,IAAI,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,CAAC,IAAI,GAAG,CAAC,EAAE;YACtC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC;SAC5C;QAED,IAAI,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,aAAa,CAAC,WAAW,EAAE;YAC/C,IAAI,CAAC,aAAa,CAAC,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC;YAC3C,IAAI,CAAC,YAAY,EAAE,CAAC;YACpB,IAAI,CAAC,qBAAqB,EAAE,CAAC;YAC7B,IAAI,CAAC,sBAAsB,EAAE,CAAC;YAC9B,IAAI,CAAC,wBAAwB,EAAE,CAAC;SACjC;IACH,CAAC;IAED,gBAAgB;QACd,IAAI,IAAI,CAAC,GAAG,IAAI,IAAI,IAAI,IAAI,CAAC,GAAG,GAAG,CAAC,EAAE;YACpC,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC;SACzC;QAED,IAAI,IAAI,CAAC,GAAG,IAAI,IAAI,CAAC,aAAa,CAAC,SAAS,EAAE;YAC5C,IAAI,CAAC,aAAa,CAAC,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC;YACxC,IAAI,CAAC,qBAAqB,EAAE,CAAC;YAC7B,IAAI,CAAC,sBAAsB,EAAE,CAAC;YAC9B,IAAI,CAAC,wBAAwB,EAAE,CAAC;SACjC;IACH,CAAC;IAED,aAAa;QACX,IAAI,IAAI,CAAC,MAAM,IAAI,IAAI,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE;YAC1C,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC;SACxC;QAED,IAAI,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE;YAC3C,IAAI,CAAC,aAAa,CAAC,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC;YACvC,IAAI,CAAC,qBAAqB,EAAE,CAAC;YAC7B,IAAI,CAAC,sBAAsB,EAAE,CAAC;YAC9B,IAAI,CAAC,wBAAwB,EAAE,CAAC;SACjC;IACH,CAAC;IAED,aAAa;QACX,IAAI,IAAI,CAAC,MAAM,IAAI,IAAI,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE;YAC1C,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC;SAC5C;QAED,IAAI,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,aAAa,CAAC,SAAS,EAAE;YAC/C,IAAI,CAAC,aAAa,CAAC,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC;YAC3C,IAAI,CAAC,aAAa,CAAC,WAAW,GAAG,IAAI,CAAC,MAAM,CAAC;YAC7C,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC;YAC3B,IAAI,CAAC,YAAY,EAAE,CAAC;YACpB,IAAI,CAAC,qBAAqB,EAAE,CAAC;YAC7B,IAAI,CAAC,sBAAsB,EAAE,CAAC;YAC9B,IAAI,CAAC,wBAAwB,EAAE,CAAC;SACjC;IACH,CAAC;IAED,gBAAgB;QACd,IAAI,IAAI,CAAC,SAAS,IAAI,IAAI,IAAI,IAAI,CAAC,SAAS,GAAG,CAAC,EAAE;YAChD,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC;SACjD;QAED,IAAI,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,aAAa,CAAC,WAAW,EAAE;YACpD,IAAI,CAAC,aAAa,CAAC,WAAW,GAAG,IAAI,CAAC,SAAS,CAAC;YAChD,IAAI,CAAC,qBAAqB,EAAE,CAAC;YAC7B,IAAI,CAAC,sBAAsB,EAAE,CAAC;YAC9B,IAAI,CAAC,wBAAwB,EAAE,CAAC;SACjC;IACH,CAAC;IAED,cAAc;QACZ,IAAI,IAAI,CAAC,OAAO,IAAI,IAAI,IAAI,IAAI,CAAC,OAAO,GAAG,CAAC,EAAE;YAC5C,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC;SAClD;QACD,IAAI,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,aAAa,CAAC,cAAc,EAAE;YACrD,IAAI,CAAC,aAAa,CAAC,cAAc,GAAG,IAAI,CAAC,OAAO,CAAC;YACjD,IAAI,CAAC,qBAAqB,EAAE,CAAC;YAC7B,IAAI,CAAC,sBAAsB,EAAE,CAAC;YAC9B,IAAI,CAAC,wBAAwB,EAAE,CAAC;SACjC;IACH,CAAC;IAED,iBAAiB;QACf,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,IAAI,IAAI,CAAC,QAAQ,GAAG,CAAC,EAAE;YAC9C,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC;SAC9C;QACD,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,aAAa,CAAC,SAAS,EAAE;YACjD,IAAI,CAAC,aAAa,CAAC,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC;YAC7C,IAAI,CAAC,YAAY,EAAE,CAAC;YACpB,IAAI,CAAC,qBAAqB,EAAE,CAAC;YAC7B,IAAI,CAAC,sBAAsB,EAAE,CAAC;YAC9B,IAAI,CAAC,wBAAwB,EAAE,CAAC;SACjC;IACH,CAAC;IAED,cAAc;QACZ,IAAI,IAAI,CAAC,OAAO,IAAI,IAAI,IAAI,IAAI,CAAC,OAAO,GAAG,CAAC,EAAE;YAC5C,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC;SAC/C;QACD,IAAI,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,aAAa,CAAC,WAAW,EAAE;YAClD,IAAI,CAAC,aAAa,CAAC,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC;YAC9C,IAAI,CAAC,qBAAqB,EAAE,CAAC;YAC7B,IAAI,CAAC,sBAAsB,EAAE,CAAC;YAC9B,IAAI,CAAC,wBAAwB,EAAE,CAAC;SACjC;IACH,CAAC;IAED,0BAA0B;QACxB,IAAI,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,aAAa,CAAC,QAAQ,IAAI,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE;YAClG,IAAI,IAAI,CAAC,SAAS,IAAI,IAAI;gBAAE,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC;YAC/C,IAAI,IAAI,CAAC,SAAS,IAAI,IAAI;gBAAE,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC;YAC/C,IAAI,CAAC,YAAY,EAAE,YAAY,CAAC,GAAG,IAAI,CAAC,aAAa,CAAC,4BAA4B,EAAE,CAAC;YACrF,IAAI,CAAC,YAAY,CAAC,iCAAiC,CAAC,IAAI,CAAC,SAAS,EAAE,YAAY,EAAE,IAAI,CAAC,SAAS,EAAE,YAAY,CAAC,CAAC;SACjH;IACH,CAAC;IAED,sBAAsB;QACpB,IAAI,CAAC,aAAa,CAAC,+BAA+B,EAAE,CAAC;QACrD,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC;QAC7C,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC;IAC/C,CAAC;IAED,wBAAwB;QACtB,IAAI,CAAC,2BAA2B,CAAC,IAAI,EAAE,CAAC;IAC1C,CAAC;IAEO,YAAY;QAClB,IAAI,CAAC,aAAa,CAAC,wBAAwB,EAAE,CAAC;QAC9C,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC;IAC/C,CAAC;IAEO,YAAY;QAClB,IAAI,CAAC,aAAa,CAAC,uBAAuB,EAAE,CAAC;QAC7C,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC;QAC3C,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC;IAChD,CAAC;IAEO,qBAAqB;QAE3B,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,aAAa,CAAC,QAAQ,GAAG,EAAE,CAAC;QACzD,IAAI,CAAC,sBAAsB,GAAG,IAAI,CAAC,aAAa,CAAC,UAAU,IAAI,CAAC,CAAC;QACjE,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,aAAa,CAAC,WAAW,IAAI,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC;QACtF,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC,aAAa,CAAC,KAAK,GAAG,CAAC,IAAI,IAAI,CAAC,aAAa,CAAC,WAAW,IAAI,CAAC,CAAC;QAChG,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,aAAa,CAAC,UAAU,IAAI,oEAA6B,CAAC,QAAQ,IAAI,IAAI,CAAC,aAAa,CAAC,WAAW,GAAG,CAAC;eAChI,IAAI,CAAC,aAAa,CAAC,SAAS,GAAG,CAAC,CAAC;QACtC,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC,UAAU,IAAI,oEAA6B,CAAC,QAAQ,IAAI,IAAI,CAAC,aAAa,CAAC,WAAW,GAAG,CAAC;eAC7H,IAAI,CAAC,aAAa,CAAC,KAAK,GAAG,CAAC,CAAC;QAClC,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc,IAAI,IAAI,CAAC,aAAa,CAAC,QAAQ,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC;QACjH,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc,GAAG,CAAC,CAAC;QAC/D,IAAI,CAAC,qBAAqB,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc,GAAG,CAAC,IAAI,IAAI,CAAC,aAAa,CAAC,WAAW,IAAI,CAAC,CAAC;QAC1G,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC,aAAa,CAAC,UAAU,IAAI,oEAA6B,CAAC,QAAQ,IAAI,IAAI,CAAC,aAAa,CAAC,cAAc,IAAI,IAAI,CAAC,aAAa,CAAC,QAAQ,GAAG,CAAC,CAAC;QAC3K,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,aAAa,CAAC,WAAW,GAAG,CAAC,IAAI,IAAI,CAAC,aAAa,CAAC,WAAW,GAAG,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC;QAC7H,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,aAAa,CAAC,SAAS,GAAG,CAAC,IAAI,IAAI,CAAC,aAAa,CAAC,SAAS,GAAG,EAAE,CAAC;QAC9F,IAAI,CAAC,sBAAsB,GAAG,IAAI,CAAC,aAAa,CAAC,UAAU,GAAG,CAAC,IAAI,IAAI,CAAC,aAAa,CAAC,WAAW,GAAG,EAAE,CAAC;QACvG,IAAI,CAAC,cAAc,EAAE,CAAC;QAEtB,IAAI,CAAC,qBAAqB,CAAC,MAAM,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;IAC5D,CAAC;IAEO,cAAc;QACpB,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,gBAAgB,IAAI,IAAI,CAAC,sBAAsB,IAAI,IAAI,CAAC,gBAAgB,IAAI,IAAI,CAAC,oBAAoB,IAAI,IAAI,CAAC,gBAAgB;eACvJ,IAAI,CAAC,aAAa,IAAI,IAAI,CAAC,iBAAiB,IAAI,IAAI,CAAC,qBAAqB,IAAI,IAAI,CAAC,mBAAmB,IAAI,IAAI,CAAC,iBAAiB,IAAI,IAAI,CAAC,gBAAgB;eACzJ,IAAI,CAAC,sBAAsB,IAAI,IAAI,CAAC,oBAAoB,CAAC;QAC9D,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;IAE5D,CAAC;CACF;AA/RU;IAAR,2DAAK,EAAE;8BAAgB,gEAAwB;wEAAC;AAExC;IAAR,2DAAK,EAAE;;4EAA4B;AAC1B;IAAT,4DAAM,EAAE;;kFAAuD;AAEtD;IAAT,4DAAM,EAAE;;sFAAkD;AAG3D;IADC,+DAAS,CAAC,4EAAwB,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;8BACrC,4EAAwB;gFAAC;AAGxD;IADC,+DAAS,CAAC,gEAAwB,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;8BAC9C,gEAAwB;uEAAC;AAbpC,iCAAiC;IAL7C,+DAAS,CAAC;QACT,QAAQ,EAAE,0CAA0C;QACpD,qRAA2D;KAE5D,CAAC;;GACW,iCAAiC,CAiS7C;AAjS6C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACdkC;AAE7B;AACiB;AAOpE,IAAa,wBAAwB,GAArC,MAAa,wBAAwB;IAenC;QAdQ,aAAQ,GAAW,EAAE,CAAC;IAcd,CAAC;IAEjB,QAAQ;QACN,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;QACtD,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC;QACnC,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC;QACrC,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,MAAM,GAAG,GAAG,CAAC;IAC3C,CAAC;IAEM,MAAM,CAAC,KAAc;QAC1B,IAAI,CAAC,KAAK,EAAE;YACV,IAAI,CAAC,cAAc,EAAE,CAAC;YACtB,IAAI,CAAC,SAAS,EAAE,CAAC;YACjB,IAAI,CAAC,GAAG,CAAC,WAAW,GAAG,OAAO,CAAC;YAC/B,IAAI,CAAC,UAAU,EAAE,CAAC;SACnB;aACI;YACH,IAAI,CAAC,eAAe,EAAE,CAAC;SACxB;IACH,CAAC;IAEO,cAAc;QACpB,IAAI,CAAC,UAAU,GAAG,CAAC,IAAI,CAAC,aAAa,CAAC,QAAQ,GAAG,CAAC,GAAG,IAAI,CAAC,aAAa,CAAC,WAAW,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,aAAa,CAAC,SAAS,GAAG,IAAI,CAAC,EAAE,GAAG,GAAG,CAAC,CAAC;QAClJ,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,aAAa,CAAC,UAAU,IAAI,oEAA6B,CAAC,OAAO;YACxF,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,QAAQ,GAAG,CAAC,GAAG,IAAI,CAAC,aAAa,CAAC,KAAK,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,aAAa,CAAC,WAAW,GAAG,IAAI,CAAC,EAAE,GAAG,GAAG,CAAC;YACjK,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,aAAa,CAAC,WAAW,GAAG,IAAI,CAAC,EAAE,GAAG,GAAG,CAAC,CAAC;QAE3F,IAAI,UAAU,GAAG,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,aAAa,CAAC,UAAU,GAAG,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC;QAEpH,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,eAAe,GAAG,UAAU,CAAC;QAC/C,IAAI,IAAI,CAAC,aAAa,CAAC,QAAQ,GAAG,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,eAAe;YAAE,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,eAAe,GAAG,CAAC,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;IAEzI,CAAC;IAEO,SAAS;QACf,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;IACpD,CAAC;IAEO,UAAU;QAChB,IAAI,CAAC,gBAAgB,EAAE,CAAC;QACxB,IAAI,CAAC,iBAAiB,EAAE,CAAC;IAC3B,CAAC;IAEO,gBAAgB;QACtB,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,aAAa,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC;QACpD,IAAI,IAAI,CAAC,aAAa,CAAC,WAAW,GAAG,CAAC,EAAE;YACtC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,aAAa,CAAC,WAAW,GAAG,CAAC,CAAC,CAAC;SACxD;QAED,IAAI,IAAI,CAAC,aAAa,CAAC,cAAc,GAAG,CAAC,IAAI,IAAI,CAAC,aAAa,CAAC,UAAU,IAAI,oEAA6B,CAAC,OAAO,EAAE;YACnH,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,aAAa,CAAC,cAAc,GAAG,CAAC,CAAC,CAAC;SAC3D;QAED,IAAI,IAAI,CAAC,aAAa,CAAC,KAAK,GAAG,CAAC,EAAE;YAChC,IAAI,mBAAmB,GAAG,IAAI,CAAC,aAAa,CAAC,QAAQ,GAAG,IAAI,CAAC,aAAa,CAAC,KAAK,GAAC,CAAC,CAAC;YACnF,IAAI,CAAC,aAAa,CAAC,mBAAmB,GAAG,CAAC,CAAC,CAAC;SAC7C;IACH,CAAC;IAEO,aAAa,CAAC,MAAc;QAClC,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC;QACrB,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,GAAG,CAAC,EAAE,IAAI,CAAC,eAAe,GAAG,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;QACnG,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE;IACnB,CAAC;IAEO,eAAe;QACrB,IAAI,CAAC,GAAG,CAAC,SAAS,GAAG,CAAC,CAAC;QACvB,IAAI,CAAC,GAAG,CAAC,WAAW,GAAG,KAAK,CAAC;QAC7B,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;QACnD,IAAI,CAAC,GAAG,CAAC,SAAS,GAAG,CAAC,CAAC;IACzB,CAAC;IAEO,iBAAiB;QACvB,IAAI,CAAC,GAAG,CAAC,QAAQ,GAAG,OAAO,CAAC;QAC5B,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC;QACrB,IAAI,aAAa,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC;QAC3E,IAAI,aAAa,GAAG,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC;QAEnC,IAAI,CAAC,GAAG,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC,QAAQ,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC;QACrE,IAAI,CAAC,GAAG,aAAa,GAAG,CAAC,IAAI,CAAC,aAAa,CAAC,UAAU,GAAG,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC;QAExG,IAAI,MAAM,GAAG,CAAC,CAAC;QACf,IAAI,MAAM,GAAG,CAAC,CAAC;QAEf,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QACtB,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,UAAU,GAAG,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC;QACjF,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QACtB,IAAI,UAAU,GAAG,CAAC,CAAC;QACnB,IAAI,UAAU,GAAG,CAAC,CAAC;QACnB,IAAI,IAAI,CAAC,aAAa,CAAC,SAAS,IAAI,IAAI,CAAC,aAAa,CAAC,WAAW,EAAE;YAClE,IAAI,UAAU,GAAG,IAAI,CAAC,aAAa,CAAC,QAAQ,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,aAAa,CAAC,WAAW,GAAG,IAAI,CAAC,EAAE,GAAG,GAAG,CAAC,CAAC;YAC5G,IAAI,UAAU,GAAG,IAAI,CAAC,UAAU,EAAE;gBAChC,IAAI,KAAK,GAAG,CAAC,CAAC;gBACd,IAAI,KAAK,GAAG,CAAC,CAAC;gBACd,KAAK,GAAG,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC;gBACpD,KAAK,GAAG,CAAC,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,aAAa,CAAC,WAAW,GAAG,IAAI,CAAC,EAAE,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC;gBAC5F,IAAI,KAAK,GAAG,IAAI,CAAC,aAAa,CAAC,WAAW,GAAG,IAAI,CAAC,KAAK;oBAAE,KAAK,GAAG,IAAI,CAAC,aAAa,CAAC,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC;gBAC7G,CAAC,IAAI,IAAI,CAAC,aAAa,CAAC,QAAQ,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,GAAG,KAAK,GAAG,CAAC,CAAC;gBAC9D,CAAC,IAAI,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC;gBAClC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;gBACtB,CAAC,IAAI,KAAK,CAAC;gBACX,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;gBACtB,CAAC,IAAI,IAAI,CAAC,aAAa,CAAC,QAAQ,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,GAAG,KAAK,GAAG,CAAC,CAAC;gBAC9D,CAAC,IAAI,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC;gBAClC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;aACvB;iBACI;gBACH,CAAC,IAAI,IAAI,CAAC,aAAa,CAAC,QAAQ,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC;gBAClD,CAAC,IAAI,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC;gBAC7B,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;gBACtB,CAAC,IAAI,IAAI,CAAC,aAAa,CAAC,QAAQ,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC;gBAClD,CAAC,IAAI,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC;gBAC7B,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;aACvB;SACF;aACI;YACH,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,QAAQ,GAAG,CAAC,GAAG,IAAI,CAAC,aAAa,CAAC,WAAW,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC;YACzF,CAAC,IAAI,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC;YAClC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;YACtB,CAAC,IAAI,IAAI,CAAC,aAAa,CAAC,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC;YACjD,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;YACtB,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,QAAQ,GAAG,CAAC,GAAG,IAAI,CAAC,aAAa,CAAC,WAAW,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC;YACzF,CAAC,IAAI,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC;YAClC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;SACvB;QAGD,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,UAAU,GAAG,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC;QACjF,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QACtB,IAAI,IAAI,CAAC,aAAa,CAAC,UAAU,IAAI,oEAA6B,CAAC,QAAQ,EAAE;YAC3E,CAAC,IAAI,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC;YACpC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;YACtB,CAAC,IAAI,IAAI,CAAC,aAAa,CAAC,cAAc,GAAG,IAAI,CAAC,KAAK,CAAC;YACpD,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;YACtB,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;SACjC;aACI;YACH,IAAI,IAAI,CAAC,aAAa,CAAC,KAAK,GAAG,CAAC,EAAE;gBAChC,CAAC,IAAI,IAAI,CAAC,aAAa,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;gBAC3C,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;aACvB;YACD,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,QAAQ,GAAG,CAAC,GAAG,IAAI,CAAC,aAAa,CAAC,KAAK,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC;YACvH,CAAC,IAAI,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC;YACpC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;YACtB,CAAC,IAAI,IAAI,CAAC,aAAa,CAAC,cAAc,GAAG,IAAI,CAAC,KAAK,CAAC;YACpD,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;YACtB,CAAC,IAAI,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC;YACpC,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,QAAQ,GAAG,CAAC,GAAG,IAAI,CAAC,aAAa,CAAC,KAAK,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC;YACvH,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;YACtB,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;SACjC;QAED,IAAI,CAAC,GAAG,CAAC,SAAS,GAAG,QAAQ,CAAC;QAC9B,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC;QAChB,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC;QAClB,MAAM;QACN,IAAI,IAAI,CAAC,aAAa,CAAC,SAAS,IAAI,IAAI,CAAC,aAAa,CAAC,WAAW,EAAE;YAClE,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC;YACrB,CAAC,GAAG,UAAU,CAAC;YACf,CAAC,GAAG,UAAU,CAAC;YACf,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;YACtB,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,QAAQ,GAAG,CAAC,GAAG,IAAI,CAAC,aAAa,CAAC,WAAW,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC;YACzF,CAAC,IAAI,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC;YAClC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;YACtB,CAAC,IAAI,IAAI,CAAC,aAAa,CAAC,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC;YACjD,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;YACtB,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,QAAQ,GAAG,CAAC,GAAG,IAAI,CAAC,aAAa,CAAC,WAAW,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC;YACzF,CAAC,IAAI,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC;YAClC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;YACtB,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC;SACnB;QAED,IAAI,CAAC,GAAG,CAAC,SAAS,GAAG,OAAO,CAAC;QAC7B,IAAI,CAAC,GAAG,CAAC,IAAI,GAAG,GAAG,IAAI,CAAC,QAAQ,UAAU;QAE1C,IAAI,CAAC,iBAAiB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QACvC,IAAI,CAAC,mBAAmB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QACzC,IAAI,CAAC,kBAAkB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QACxC,IAAI,CAAC,iBAAiB,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;QAC/C,IAAI,CAAC,eAAe,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;QAC7C,IAAI,CAAC,gBAAgB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QACtC,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QACpC,IAAI,CAAC,oBAAoB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAC1C,IAAI,CAAC,uBAAuB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAC7C,IAAI,CAAC,oBAAoB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC5C,CAAC;IAEO,uBAAuB,CAAC,MAAc,EAAE,MAAc;QAC5D,IAAI,IAAI,CAAC,aAAa,CAAC,cAAc,GAAG,CAAC,EAAE;YACzC,IAAI,CAAS,CAAC;YACd,IAAI,CAAS,CAAC;YACd,IAAI,qBAAqB,GAAG,IAAI,CAAC,aAAa,CAAC,UAAU,IAAI,oEAA6B,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,QAAQ,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc,GAAG,CAAC,CAAC;YAC3M,qBAAqB,IAAI,IAAI,CAAC,KAAK,CAAC;YACpC,IAAI,QAAQ,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,CAAC;YACtE,CAAC,GAAG,MAAM,GAAG,qBAAqB,GAAG,IAAI,CAAC,QAAQ,GAAG,QAAQ,GAAG,CAAC,CAAC;YAClE,CAAC,GAAG,MAAM,GAAG,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC;YAC5D,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,QAAQ,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;SACvE;IACH,CAAC;IAEO,oBAAoB,CAAC,MAAc,EAAE,MAAc;QACzD,IAAI,IAAI,CAAC,aAAa,CAAC,WAAW,GAAG,CAAC,EAAE;YACtC,IAAI,CAAS,CAAC;YACd,IAAI,CAAS,CAAC;YACd,IAAI,IAAI,CAAC,aAAa,CAAC,UAAU,IAAI,oEAA6B,CAAC,QAAQ,EAAE;gBAC3E,CAAC,GAAG,MAAM,GAAG,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC;gBAC/B,CAAC,GAAG,MAAM,GAAG,CAAC,CAAC;aAChB;iBAAM;gBACL,CAAC,GAAG,MAAM,GAAG,IAAI,CAAC,aAAa,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC;gBACvE,CAAC,GAAG,MAAM,GAAG,CAAC,CAAC;aAChB;YAED,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC,QAAQ,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;SACpE;IACH,CAAC;IAEO,cAAc,CAAC,MAAc,EAAE,MAAc;QACnD,IAAI,IAAI,CAAC,aAAa,CAAC,KAAK,GAAG,CAAC,IAAI,IAAI,CAAC,aAAa,CAAC,UAAU,IAAI,oEAA6B,CAAC,OAAO,EAAE;YAC1G,MAAM;YACN,IAAI,CAAC,GAAG,MAAM,GAAG,IAAI,CAAC,aAAa,CAAC,KAAK,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC;YAC/E,IAAI,CAAC,GAAG,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC;YAC/B,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,QAAQ,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;YAC7D,OAAO;YACP,CAAC,GAAG,MAAM,GAAG,CAAC,IAAI,CAAC,aAAa,CAAC,QAAQ,GAAG,IAAI,CAAC,aAAa,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC;YAC3G,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,QAAQ,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;SAC9D;IACH,CAAC;IAEO,gBAAgB,CAAC,MAAc,EAAE,MAAc;QACrD,IAAI,QAAQ,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC;QACjE,IAAI,IAAI,CAAC,aAAa,CAAC,SAAS,GAAG,CAAC,EAAE;YACpC,IAAI,CAAC,GAAG,IAAI,CAAC,aAAa,CAAC,SAAS,GAAG,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,GAAG,IAAI,CAAC,QAAQ,GAAG,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,GAAG,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;YACvJ,IAAI,CAAC,GAAG,IAAI,CAAC,aAAa,CAAC,SAAS,GAAG,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,IAAI,CAAC,aAAa,CAAC,SAAS,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC;YACjL,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,QAAQ,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;YACjE,MAAM;YACN,CAAC,GAAG,MAAM,GAAG,EAAE,CAAC;YAChB,CAAC,GAAG,MAAM,CAAC;YACX,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC;YACrB,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;YACtB,CAAC,IAAI,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC;YACvB,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;YACtB,CAAC,IAAI,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC;YACvB,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;YACtB,CAAC,IAAI,CAAC,CAAC;YACP,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;YACtB,OAAO;YACP,CAAC,GAAG,MAAM,GAAG,IAAI,CAAC,aAAa,CAAC,QAAQ,GAAG,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC;YAC3D,CAAC,GAAG,MAAM,CAAC;YACX,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;YACtB,CAAC,IAAI,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC;YACvB,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;YACtB,CAAC,IAAI,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC;YACvB,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;YACtB,CAAC,IAAI,CAAC,CAAC;YACP,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;YACtB,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC;YAElB,CAAC,GAAG,IAAI,CAAC,aAAa,CAAC,SAAS,GAAG,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,GAAG,IAAI,CAAC,aAAa,CAAC,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,GAAG,IAAI,CAAC,aAAa,CAAC,QAAQ,GAAG,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC;YACnM,CAAC,GAAG,IAAI,CAAC,aAAa,CAAC,SAAS,GAAG,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,IAAI,CAAC,aAAa,CAAC,SAAS,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC;YAC7K,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,QAAQ,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;SAClE;IACH,CAAC;IAEO,oBAAoB,CAAC,MAAc,EAAE,MAAc;QACzD,IAAI,IAAI,CAAC,aAAa,CAAC,WAAW,GAAG,CAAC,EAAE;YACtC,IAAI,QAAQ,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC;YAClE,IAAI,CAAC,GAAG,MAAM,GAAG,IAAI,CAAC,aAAa,CAAC,QAAQ,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,QAAQ,GAAG,QAAQ,GAAG,CAAC,CAAC;YAC7F,IAAI,CAAC,GAAG,MAAM,GAAG,CAAC,IAAI,CAAC,aAAa,CAAC,SAAS,GAAG,IAAI,CAAC,aAAa,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC;YAC/H,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC,QAAQ,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;SACpE;IACH,CAAC;IAEO,iBAAiB,CAAC,MAAc,EAAE,MAAc;QACtD,IAAI,QAAQ,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;QAChE,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE;QACpB,IAAI,CAAC,GAAG,MAAM,GAAG,IAAI,CAAC,aAAa,CAAC,QAAQ,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,QAAQ,GAAG,QAAQ,GAAG,CAAC,CAAC;QAC7F,IAAI,CAAC,GAAG,MAAM,GAAG,CAAC,IAAI,CAAC,aAAa,CAAC,SAAS,GAAG,IAAI,CAAC,aAAa,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC;QACnI,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,QAAQ,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;QAEhE,CAAC,IAAI,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC;QACvB,CAAC,IAAI,CAAC,CAAC;QACP,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QACtB,CAAC,IAAI,IAAI,CAAC,aAAa,CAAC,QAAQ,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,QAAQ,GAAG,QAAQ,GAAG,CAAC,CAAC;QACjF,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QACtB,CAAC,IAAI,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC;QACvB,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QACtB,CAAC,IAAI,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC;QACvB,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QACtB,CAAC,GAAG,MAAM,GAAG,IAAI,CAAC,aAAa,CAAC,QAAQ,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,QAAQ,GAAG,QAAQ,GAAG,CAAC,CAAC;QACzF,CAAC,GAAG,MAAM,GAAG,CAAC,IAAI,CAAC,aAAa,CAAC,SAAS,GAAG,IAAI,CAAC,aAAa,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC;QAC/H,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QACtB,CAAC,IAAI,IAAI,CAAC,aAAa,CAAC,QAAQ,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,QAAQ,GAAG,QAAQ,GAAG,CAAC,GAAG,CAAC,CAAC;QACrF,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QACtB,CAAC,IAAI,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC;QACvB,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QACtB,CAAC,IAAI,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC;QACvB,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QACtB,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC;IACpB,CAAC;IAEO,kBAAkB,CAAC,MAAc,EAAE,MAAc;QACvD,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE;QACpB,IAAI,CAAC,GAAG,MAAM,GAAG,IAAI,CAAC,aAAa,CAAC,QAAQ,GAAG,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC;QAC/D,IAAI,CAAC,GAAG,MAAM,GAAG,IAAI,CAAC,aAAa,CAAC,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC;QAC3D,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QACtB,CAAC,IAAI,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC;QACvB,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QACtB,CAAC,IAAI,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC;QACvB,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QACtB,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC;QAC5F,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QACtB,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC;QACnB,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QACtB,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC;QAC5F,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QACtB,CAAC,IAAI,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC;QACvB,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QACtB,CAAC,IAAI,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC;QACvB,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QACtB,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC;QAElB,CAAC,GAAG,MAAM,GAAG,CAAC,GAAG,IAAI,CAAC,aAAa,CAAC,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC;QAC1D,CAAC,GAAG,MAAM,GAAG,CAAC,IAAI,CAAC,aAAa,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,aAAa,CAAC,SAAS,GAAG,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC;QAChJ,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,QAAQ,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;IACnE,CAAC;IAEO,mBAAmB,CAAC,MAAc,EAAE,MAAc;QACxD,IAAI,QAAQ,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC;QAClE,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE;QACpB,IAAI,CAAC,GAAG,MAAM,GAAG,EAAE,CAAC;QACpB,IAAI,CAAC,GAAG,MAAM,GAAG,IAAI,CAAC,aAAa,CAAC,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC;QAC3D,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QACtB,CAAC,IAAI,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC;QACvB,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QACtB,CAAC,IAAI,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC;QACvB,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QACtB,CAAC,IAAI,IAAI,CAAC,aAAa,CAAC,UAAU,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC;QACxE,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QACtB,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC;QACnB,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QACtB,CAAC,IAAI,IAAI,CAAC,aAAa,CAAC,UAAU,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC;QACxE,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QACtB,CAAC,IAAI,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC;QACvB,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QACtB,CAAC,IAAI,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC;QACvB,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QACtB,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC;QAElB,CAAC,GAAG,IAAI,CAAC,aAAa,CAAC,UAAU,GAAG,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,GAAG,IAAI,CAAC,QAAQ,GAAG,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,GAAG,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACpJ,CAAC,GAAG,MAAM,GAAG,IAAI,CAAC,aAAa,CAAC,UAAU,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,aAAa,CAAC,SAAS,GAAG,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC;QAC5H,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,QAAQ,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;IACpE,CAAC;IAEO,iBAAiB,CAAC,MAAc,EAAE,MAAc;QACtD,IAAI,IAAI,CAAC,aAAa,CAAC,SAAS,GAAG,CAAC,EAAE;YACpC,IAAI,CAAC,GAAG,MAAM,CAAC;YACf,IAAI,CAAC,GAAG,MAAM,GAAG,IAAI,CAAC,QAAQ,GAAG,GAAG,CAAC;YACrC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,QAAQ,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;SAClE;IACH,CAAC;IAEO,eAAe,CAAC,MAAc,EAAE,MAAc;QACpD,IAAI,CAAC,GAAG,MAAM,GAAG,IAAI,CAAC,aAAa,CAAC,QAAQ,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC;QAC9D,IAAI,CAAC,GAAG,MAAM,GAAG,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC;QACnC,IAAI,IAAI,CAAC,aAAa,CAAC,WAAW,GAAG,CAAC,IAAI,IAAI,CAAC,aAAa,CAAC,WAAW,IAAI,IAAI,CAAC,aAAa,CAAC,SAAS,IAAI,IAAI,CAAC,aAAa,CAAC,QAAQ,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,QAAQ,EAAE;YACxK,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC,QAAQ,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;SACpE;IACH,CAAC;IAEO,cAAc,CAAC,MAAc;QACnC,IAAI,KAAK,GAAG,CAAC,CAAC;QACd,GAAG;YACD,MAAM,IAAI,EAAE,CAAC;YACb,MAAM,GAAG,MAAM,GAAG,CAAC,CAAC;YACpB,KAAK,EAAE,CAAC;SACT,QAAQ,MAAM,IAAI,CAAC,EAAE;QACtB,OAAO,KAAK,CAAC;IACf,CAAC;CAEF;AAtYC;IADC,+DAAS,CAAC,YAAY,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;8BAClC,wDAAU;wDAAoB;AAE7B;IAAR,2DAAK,EAAE;8BAAgB,gEAAwB;+DAAC;AANtC,wBAAwB;IALpC,+DAAS,CAAC;QACT,QAAQ,EAAE,iCAAiC;QAC3C,sRAAkD;KAEnD,CAAC;;GACW,wBAAwB,CA0YpC;AA1YoC;;;;;;;;;;;;;;;;;;;;ACVU;;;;;;;;;;;;;;;;;;;;;;;ACAS;AAClB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACD0C;AAEnB;AACgB;AAO7E,IAAa,kCAAkC,GAA/C,MAAa,kCAAkC;IAoB7C;QAnBQ,aAAQ,GAAW,EAAE,CAAC;QAUtB,yBAAoB,GAAW,GAAG,CAAC;QAMnC,eAAU,GAAW,EAAE,CAAC;QACxB,eAAU,GAAW,EAAE,CAAC;IAEhB,CAAC;IAEjB,QAAQ;QACN,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;QACtD,IAAI,CAAC,GAAG,CAAC,IAAI,GAAG,iBAAiB,CAAC;QAClC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC;QACnC,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC;QACrC,IAAI,CAAC,qBAAqB,GAAG,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC;QAC5C,IAAI,CAAC,qBAAqB,GAAG,IAAI,CAAC,oBAAoB,GAAG,CAAC,CAAC;QAC3D,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,oBAAoB,GAAG,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC,oBAAoB,CAAC;QAC3F,IAAI,CAAC,oBAAoB,EAAE,CAAC;IAC9B,CAAC;IAED,oBAAoB;QAClB,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;QAClD,IAAI,CAAC,mBAAmB,EAAE;QAC1B,IAAI,CAAC,aAAa,EAAE,CAAC;IACvB,CAAC;IAED,aAAa;QACX,IAAI,IAAI,CAAC,WAAW,CAAC,mBAAmB,IAAI,yEAAsB,CAAC,SAAS;YAC1E,IAAI,CAAC,WAAW,CAAC,mBAAmB,IAAI,yEAAsB,CAAC,YAAY,EAAE;YAC7E,IAAI,CAAC,mBAAmB,EAAE,CAAC;SAC5B;aAAM,IAAI,IAAI,CAAC,WAAW,CAAC,mBAAmB,IAAI,yEAAsB,CAAC,kBAAkB,EAAE;YAC5F,IAAI,CAAC,mBAAmB,EAAE,CAAC;SAC5B;aAAM,IAAI,IAAI,CAAC,WAAW,CAAC,mBAAmB,IAAI,yEAAsB,CAAC,mBAAmB,EAAE;YAC7F,IAAI,CAAC,oBAAoB,EAAE,CAAC;SAC7B;IACH,CAAC;IAEO,oBAAoB;QAC1B,IAAI,SAAS,GAAG,EAAE,GAAG,EAAE,CAAC;QACxB,IAAI,UAAU,GAAG,EAAE,GAAG,EAAE,CAAC;QAEzB,IAAI,YAAY,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,WAAW,GAAG,IAAI,CAAC,EAAE,GAAG,GAAG,CAAC;YACxE,IAAI,CAAC,WAAW,CAAC,oBAAoB,CAAC;YACtC,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,WAAW,GAAG,IAAI,CAAC,EAAE,GAAG,GAAG,CAAC;gBACrD,IAAI,CAAC,WAAW,CAAC,cAAc,CAAC,CAAC;QAErC,IAAI,MAAM,GAAG,YAAY,GAAG,CAAC,CAAC;QAC9B,IAAI,IAAI,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,oBAAoB,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC;QAC9D,IAAI,OAAO,GAAG,IAAI,CAAC,MAAM,GAAG,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC;QACrE,IAAI,KAAK,GAAG,EAAE,CAAC;QACf,IAAI,MAAM,GAAG,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC;QAC7B,IAAI,MAAM,GAAG,CAAC,OAAO,GAAG,IAAI,CAAC,GAAG,MAAM,CAAC;QACvC,IAAI,MAAM,GAAG,MAAM,GAAG,EAAE,GAAG,CAAC,CAAC;QAE7B,IAAI,OAAO,GAAG,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC;QAE7B,IAAI,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC,oBAAoB,GAAG,MAAM,GAAG,KAAK,EAAE;YACnE,MAAM,GAAG,CAAC,MAAM,GAAG,KAAK,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC,oBAAoB,CAAC;YAClE,MAAM,GAAG,CAAC,GAAG,MAAM,GAAG,EAAE,CAAC;SAC1B;QAED,IAAI,OAAO,GAAG,OAAO,CAAC;QAEtB,IAAI,OAAO,GAAG,OAAO,GAAG,CAAC,YAAY,GAAG,CAAC,GAAG,MAAM,CAAC,CAAC;QACpD,IAAI,OAAO,GAAG,OAAO,GAAG,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC;QAErC,kBAAkB;QAClB,IAAI,CAAC,GAAa,EAAE,CAAC;QACrB,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC;QACb,IAAI,CAAC,GAAa,EAAE,CAAC;QACrB,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC;QAEb,CAAC,CAAC,CAAC,CAAC,GAAG,OAAO,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,oBAAoB,GAAG,MAAM,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC;QAC3E,CAAC,CAAC,CAAC,CAAC,GAAG,OAAO,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,eAAe,GAAG,EAAE,GAAG,MAAM,CAAC,CAAC;QAClE,CAAC,CAAC,CAAC,CAAC,GAAG,OAAO,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,oBAAoB,GAAG,MAAM,GAAG,CAAC,CAAC,CAAC;QACtE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QACZ,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QACZ,CAAC,CAAC,CAAC,CAAC,GAAG,OAAO,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,YAAY,GAAG,EAAE,GAAG,MAAM,CAAC,CAAC;QAC/D,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,WAAW,GAAG,IAAI,CAAC,EAAE,GAAG,GAAG,CAAC;YACnE,IAAI,CAAC,WAAW,CAAC,QAAQ,GAAG,MAAM,CAAC,CAAC;QACtC,CAAC,CAAC,CAAC,CAAC,GAAG,OAAO,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,WAAW,GAAG,IAAI,CAAC,EAAE,GAAG,GAAG,CAAC;YACtE,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC;QAE1C,IAAI,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,oBAAoB,GAAG,MAAM,CAAC,CAAC;QAEnE,IAAI,QAAQ,GAAG,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC;QAC3B,IAAI,MAAM,GAAG,CAAC,GAAG,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC;QAE7B,IAAI,IAAI,CAAC,WAAW,CAAC,QAAQ,IAAI,kEAAe,CAAC,aAAa,EAAE;YAC9D,CAAC,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC;YACf,QAAQ,GAAG,CAAC,CAAC;YACb,MAAM,GAAG,IAAI,CAAC,EAAE,GAAG,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;SAClC;QAED,iBAAiB;QACjB,eAAe;QACf,IAAI,IAAI,CAAC;QACT,IAAI,IAAI,CAAC,WAAW,CAAC,WAAW,IAAI,EAAE,EAAE;YACtC,IAAI,GAAG,EAAE,CAAC;SACX;aAAM;YACL,IAAI,aAAa,GAAG,EAAE,CAAC;YACvB,IAAI,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC,WAAW,GAAG,GAAG,GAAG,aAAa,CAAC;YAC/D,IAAI,GAAG,EAAE,GAAG,CAAC,KAAK,GAAG,EAAE,GAAG,GAAG,CAAC,CAAC;SAChC;QAED,KAAK,IAAI,CAAC,GAAG,OAAO,EAAE,CAAC,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,cAAc,GAAG,CAAC,GAAG,MAAM,CAAC,EAAE,CAAC,IAAI,IAAI,EAAE;YAC1F,IAAI,QAAQ,GAAG,OAAO,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC;gBACtC,CAAC,IAAI,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,cAAc,GAAG,CAAC,GAAG,MAAM,CAAC,GAAG,OAAO,CAAC,CAAC;gBAClE,CAAC,OAAO,GAAG,OAAO,CAAC,CAAC,CAAC;YACvB,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC;YACrB,IAAI,CAAC,GAAG,CAAC,OAAO,CACd,CAAC,EACD,QAAQ,EACR,IAAI,GAAG,CAAC,EACR,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,SAAS,EACtB,CAAC,EACD,CAAC,EACD,IAAI,CAAC,EAAE,GAAG,CAAC,CACZ,CAAC;YACF,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC;SACnB;QAED,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC;QACrB,IAAI,CAAC,GAAG,CAAC,SAAS,GAAG,OAAO,CAAC;QAC7B,IAAI,CAAC,GAAG,CAAC,OAAO,CACd,OAAO,EACP,OAAO,EACP,IAAI,CAAC,WAAW,CAAC,oBAAoB,GAAG,CAAC,GAAG,MAAM,EAClD,IAAI,CAAC,WAAW,CAAC,oBAAoB,GAAG,CAAC,GAAG,MAAM,GAAG,SAAS,EAC9D,CAAC,EACD,CAAC,GAAG,IAAI,CAAC,EAAE,EACX,CAAC,EACD,IAAI,CACL,CAAC;QACF,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC;QAChB,IAAI,CAAC,GAAG,CAAC,SAAS,GAAG,OAAO,CAAC;QAE7B,kBAAkB;QAClB,IAAI,SAAS,GAAG,IAAI,CAAC,WAAW,CAAC,QAAQ,IAAI,kEAAe,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAClF,IAAI,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC,sBAAsB,CAAC;YACxF,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,WAAW,GAAG,IAAI,CAAC,EAAE,GAAG,GAAG,CAAC,GAAG,MAAM,CAAC,CAAC;QAEnE,KAAK,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,MAAM,GAAG,SAAS,EAAE,CAAC,EAAE,EAAE;YAC9C,IAAI,QAAQ,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YACnE,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC;YACrB,IAAI,CAAC,GAAG,CAAC,OAAO,CACd,CAAC,EACD,QAAQ,EACR,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC,YAAY,GAAG,EAAE,EAC3C,CAAC,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC,YAAY,GAAG,EAAE,CAAC,GAAG,UAAU,EAC1D,CAAC,EACD,QAAQ,EACR,CAAC,MAAM,EACP,IAAI,CACL,CAAC;YACF,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC;SACnB;QAED,gBAAgB;QAChB,SAAS;QACT,KAAK,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;YAChC,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC;YACrB,IAAI,CAAC,GAAG,CAAC,OAAO,CACd,CAAC,EACD,CAAC,CAAC,CAAC,CAAC,EACJ,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC,eAAe,GAAG,EAAE,EAC9C,CAAC,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC,eAAe,GAAG,EAAE,CAAC,GAAG,UAAU,EAC7D,CAAC,EACD,IAAI,CAAC,EAAE,GAAG,CAAC,EACX,CAAC,CAAC,GAAG,IAAI,CAAC,EAAE,GAAG,CAAC,EAChB,IAAI,CACL,CAAC;YACF,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC;SACnB;QAED,iBAAiB;QACjB,IAAI,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,QAAQ,IAAI,kEAAe,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE;QAC9E,KAAK,IAAI,CAAC,GAAG,MAAM,GAAG,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,EAAE,CAAC,IAAI,CAAC,EAAE;YACnD,IAAI,QAAQ,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YACnE,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC;YACrB,IAAI,CAAC,GAAG,CAAC,OAAO,CACd,CAAC,EACD,QAAQ,EACR,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC,YAAY,GAAG,EAAE,EAC3C,CAAC,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC,YAAY,GAAG,EAAE,CAAC,GAAG,UAAU,EAC1D,CAAC,EACD,QAAQ,EACR,CAAC,MAAM,EACP,IAAI,CACL,CAAC;YACF,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC;SACnB;QAED,mBAAmB;QACnB,IAAI,IAAI,CAAC,WAAW,CAAC,QAAQ,IAAI,kEAAe,CAAC,aAAa,EAAE;YAC9D,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC;YACrB,IAAI,CAAC,GAAG,CAAC,OAAO,CACd,CAAC,CAAC,CAAC,CAAC,EACJ,CAAC,CAAC,CAAC,CAAC,EACJ,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC,YAAY,GAAG,EAAE,EAC3C,CAAC,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC,YAAY,GAAG,EAAE,CAAC,GAAG,UAAU,EAC1D,CAAC,EACD,CAAC,EACD,CAAC,GAAG,IAAI,CAAC,EAAE,CACZ,CAAC;YACF,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC;SACnB;aAAM;YACL,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC;YACrB,IAAI,CAAC,GAAG,CAAC,OAAO,CACd,CAAC,CAAC,CAAC,CAAC,EACJ,CAAC,CAAC,CAAC,CAAC,EACJ,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC,YAAY,GAAG,EAAE,EAC3C,CAAC,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC,YAAY,GAAG,EAAE,CAAC,GAAG,UAAU,EAC1D,CAAC,EACD,QAAQ,EACR,CAAC,MAAM,EAAE,IAAI,CACd,CAAC;YACF,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC;SACnB;QAED,UAAU;QACV,eAAe;QACf,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC;QACrB,IAAI,CAAC,GAAG,CAAC,OAAO,CACd,OAAO,EACP,OAAO,EACP,IAAI,CAAC,WAAW,CAAC,oBAAoB,GAAG,CAAC,GAAG,MAAM,EAClD,CAAC,IAAI,CAAC,WAAW,CAAC,oBAAoB,GAAG,CAAC,GAAG,MAAM,CAAC,GAAG,SAAS,EAChE,CAAC,EACD,CAAC,CAAC,GAAG,IAAI,CAAC,EAAE,GAAG,CAAC,EAChB,IAAI,CAAC,EAAE,EACP,IAAI,CACL,CAAC;QACF,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC;QAElB,QAAQ;QACR,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC;QACrB,IAAI,CAAC,GAAG,CAAC,OAAO,CACd,IAAI,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,cAAc,GAAG,CAAC,GAAG,MAAM,CAAC,EACrD,OAAO,EACP,IAAI,CAAC,WAAW,CAAC,cAAc,GAAG,CAAC,GAAG,MAAM,EAC5C,IAAI,CAAC,WAAW,CAAC,cAAc,GAAG,CAAC,GAAG,MAAM,GAAG,SAAS,EACxD,CAAC,EACD,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC,EAClB,CAAC,EACD,IAAI,CACL,CAAC;QACF,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC;QAElB,YAAY;QACZ,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC;QACrB,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QAC/B,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QAC/B,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC;QAElB,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC;QACrB,IAAI,CAAC,GAAG,CAAC,MAAM,CACb,OAAO,EACP,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC,oBAAoB,GAAG,MAAM,GAAG,SAAS,GAAG,CAAC,CAAC,CAAC;QAC5E,IAAI,CAAC,GAAG,CAAC,MAAM,CACb,IAAI,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,cAAc,GAAG,MAAM,GAAG,CAAC,CAAC,EACrD,OAAO,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,cAAc,GAAG,MAAM,GAAG,SAAS,GAAG,CAAC,CAAC,CAAC,CAAC;QACxE,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC;QAElB,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC;QACrB,IAAI,CAAC,GAAG,CAAC,MAAM,CACb,OAAO,EACP,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC,oBAAoB,GAAG,MAAM,GAAG,SAAS,GAAG,CAAC,CAAC,CAAC;QAC5E,IAAI,CAAC,GAAG,CAAC,MAAM,CACb,OAAO,EACP,OAAO,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,oBAAoB,GAAG,MAAM,GAAG,SAAS,GAAG,CAAC,CAAC,CAAC,CAAC;QAC9E,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC;QAElB,cAAc;QACd,IAAI,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC,cAAc,GAAG,CAAC,CAAC;QACrE,IAAI,EAAE,GAAG,EAAE,CAAC;QAEZ,IAAI,KAAK,GAAG,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,cAAc,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,MAAM,CAAC,CAAC;QACzE,IAAI,MAAM,GAAG,IAAI,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,cAAc,GAAG,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC;QAC5E,IAAI,OAAO,GAAG,OAAO,GAAG,CAAC,EAAE,GAAG,MAAM,GAAG,SAAS,CAAC,CAAC;QAClD,IAAI,IAAI,GAAG,OAAO,GAAG,CAAC,EAAE,GAAG,MAAM,GAAG,SAAS,CAAC,CAAC;QAE/C,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC;QACrB,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;QAC7B,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;QAC9B,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QACjC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;QAChC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;QAC7B,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC;QACrB,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC;QAElB,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC;QACrB,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;QAC9B,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;QAChC,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC;QAElB,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC;QACrB,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QACjC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;QAC7B,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC;QAElB,MAAM;QACN,KAAK,IAAI,CAAC,GAAG,OAAO,EAAE,CAAC,GAAG,OAAO,EAAE,CAAC,IAAI,CAAC,EAAE;YACzC,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC;YACrB,IAAI,CAAC,GAAG,CAAC,OAAO,CACd,OAAO,EACP,CAAC,EACD,IAAI,CAAC,WAAW,CAAC,oBAAoB,GAAG,CAAC,GAAG,MAAM,EAClD,IAAI,CAAC,WAAW,CAAC,oBAAoB,GAAG,CAAC,GAAG,MAAM,GAAG,SAAS,EAC9D,CAAC,EACD,CAAC,CAAC,GAAG,IAAI,CAAC,EAAE,GAAG,CAAC,EAChB,IAAI,CAAC,EAAE,EACP,IAAI,CACL,CAAC;YACF,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC;SACnB;QAED,OAAO;QACP,KAAK,IAAI,CAAC,GAAG,OAAO,EAAE,CAAC,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,cAAc,GAAG,CAAC,GAAG,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE;YACvF,IAAI,QAAQ,GAAG,OAAO,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC;gBACtC,CAAC,IAAI,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,cAAc,GAAG,CAAC,GAAG,MAAM,CAAC,GAAG,OAAO,CAAC,CAAC;gBAClE,CAAC,OAAO,GAAG,OAAO,CAAC,CAAC,CAAC;YACvB,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC;YACrB,IAAI,CAAC,GAAG,CAAC,OAAO,CACd,CAAC,EACD,QAAQ,EACR,IAAI,GAAG,CAAC,EACR,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,SAAS,EACtB,CAAC,EACD,CAAC,EACD,CAAC,IAAI,CAAC,EAAE,EACR,IAAI,CACL,CAAC;YACF,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC;SACnB;QAED,0BAA0B;QAC1B,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC;QACrB,IAAI,CAAC,GAAG,CAAC,WAAW,GAAG,OAAO,CAAC;QAC/B,IAAI,CAAC,GAAG,CAAC,SAAS,GAAG,CAAC,CAAC;QACvB,IAAI,CAAC,GAAG,CAAC,OAAO,CACd,OAAO,EACP,OAAO,EACP,IAAI,CAAC,WAAW,CAAC,oBAAoB,GAAG,CAAC,GAAG,MAAM,EAClD,IAAI,CAAC,WAAW,CAAC,oBAAoB,GAAG,CAAC,GAAG,MAAM,GAAG,SAAS,EAC9D,CAAC,EACD,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC,EAClB,CAAC,EACD,IAAI,CACL,CAAC;QACF,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC;QAClB,IAAI,CAAC,GAAG,CAAC,WAAW,GAAG,OAAO,CAAC;QAC/B,IAAI,CAAC,GAAG,CAAC,SAAS,GAAG,CAAC,CAAC;QAEvB,QAAQ;QACR,GAAG;QACH,IAAI,UAAU,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC,eAAe,GAAG,EAAE,CAAC,CAAC;QACzE,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,UAAU,GAAG,CAAC,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;QAEhF,GAAG;QACH,IAAI,UAAU,GAAG,OAAO,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,oBAAoB,GAAG,CAAC,GAAG,MAAM,CAAC;YAC7E,CAAC,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;QAExC,IAAI,CAAC,SAAS,CACZ,GAAG,EACH,UAAU,EACV,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC,YAAY,GAAG,EAAE,CAAC;YACpD,CAAC,CAAC,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QAE7C,GAAG;QACH,IAAI,OAAe,CAAC;QACpB,IAAI,IAAI,CAAC,WAAW,CAAC,QAAQ,IAAI,kEAAe,CAAC,aAAa,EAAE;YAC9D,IAAI,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;YAExD,IAAI,WAAW,GAAG,CAAC,KAAK,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,QAAQ,GAAG,CAAC,CAAC,EAAE;gBACjE,WAAW,GAAG,WAAW,GAAG,CAAC,CAAC;aAC/B;YAED,IAAI,WAAW,GAAG,CAAC,EAAE;gBACnB,WAAW,GAAG,CAAC,CAAC;aACjB;YAED,OAAO,GAAG,QAAQ,WAAW,GAAG,CAAC;SAClC;aAAM;YACL,IAAI,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,QAAQ,GAAG,EAAE,CAAC,CAAC;YAE5D,OAAO,IAAI,CAAC,KAAK,CAAC,UAAU,GAAG,EAAE,CAAC,KAAK,UAAU,GAAG,EAAE,EAAE;gBACtD,UAAU,GAAG,UAAU,GAAG,CAAC,CAAC;aAC7B;YAED,IAAI,UAAU,GAAG,EAAE,EAAE;gBACnB,UAAU,GAAG,EAAE,CAAC;aACjB;YAED,OAAO,GAAG,aAAa,IAAI,CAAC,KAAK,CAAC,UAAU,GAAG,EAAE,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,UAAU,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,GAAG,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC,GAAG,CAAC;SACtH;QAED,IAAI,gBAAgB,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YACtF,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAEtE,IAAI,UAAU,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,gBAAgB,GAAG,CAAC,CAAC,CAAC;QAE5G,IAAI,CAAC,SAAS,CACZ,OAAO,EACP,CAAC,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC;YAChB,CAAC,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,EACzC,UAAU,CAAC,CAAC;QAEd,IAAI,IAAI,CAAC,WAAW,CAAC,uBAAuB,GAAG,CAAC,EAAE;YAChD,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;YACd,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;YACd,IAAI,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC,sBAAsB,GAAG,IAAI,CAAC,WAAW,CAAC,uBAAuB,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,QAAQ,IAAI,kEAAe,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;YACzK,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,WAAW,GAAG,IAAI,CAAC,EAAE,GAAG,GAAG,CAAC,CAAC;YACnE,EAAE,GAAG,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,WAAW,GAAG,IAAI,CAAC,EAAE,GAAG,GAAG,CAAC,GAAG,MAAM,CAAC;YAC9E,EAAE,GAAG,EAAE,GAAG,CAAC,GAAG,MAAM,GAAG,UAAU,GAAG,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC;YACxD,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,WAAW,CAAC,6BAA6B,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;SACxE;QAGD,+BAA+B;QAC/B,IAAI,IAAI,CAAC,WAAW,CAAC,aAAa,GAAG,CAAC,EAAE;YACtC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC,YAAY,GAAG,EAAE,CAAC;gBACrE,CAAC,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC,YAAY,GAAG,EAAE,CAAC,CAAC;SACjD;IACH,CAAC;IAEO,mBAAmB;QACzB,IAAI,SAAS,GAAG,CAAC,GAAG,EAAE,CAAC;QACvB,IAAI,UAAU,GAAG,EAAE,GAAG,EAAE,CAAC;QAEzB,IAAI,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC,SAAS,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,oBAAoB,GAAG,SAAS,CAAC,CAAC;QAClG,IAAI,IAAI,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,oBAAoB,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC;QAC9D,IAAI,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC;QAC1B,IAAI,KAAK,GAAG,EAAE,CAAC;QACf,IAAI,MAAM,GAAG,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC;QAC7B,IAAI,MAAM,GAAG,CAAC,OAAO,GAAG,IAAI,CAAC,GAAG,MAAM,CAAC;QACvC,IAAI,MAAM,GAAG,MAAM,GAAG,EAAE,GAAG,CAAC,CAAC;QAE7B,IAAI,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC,oBAAoB,GAAG,MAAM,GAAG,KAAK,EAAE;YACnE,MAAM,GAAG,CAAC,MAAM,GAAG,KAAK,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC,oBAAoB,CAAC;YAClE,MAAM,GAAG,CAAC,GAAG,MAAM,GAAG,EAAE,CAAC;SAC1B;QAED,IAAI,OAAO,GAAG,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC;QAC7B,IAAI,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,GAAG,CAAC,SAAS,GAAG,IAAI,CAAC,WAAW,CAAC,oBAAoB,GAAG,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC;QACrG,IAAI,UAAU,GAAG,OAAO,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,SAAS,GAAG,CAAC,GAAG,MAAM,CAAC,CAAC;QACrE,IAAI,OAAO,GAAG,OAAO,GAAG,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,SAAS,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC;QAExE,IAAI,CAAC,GAAa,EAAE,CAAC;QACrB,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC;QACb,IAAI,CAAC,GAAa,EAAE,CAAC;QACrB,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC;QAEb,kBAAkB;QAClB,CAAC,CAAC,CAAC,CAAC,GAAG,OAAO,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,oBAAoB,GAAG,MAAM,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC;QAC3E,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,eAAe,GAAG,EAAE,GAAG,MAAM,CAAC,CAAC,CAAC;QAEjF,IAAI,IAAI,CAAC,WAAW,CAAC,SAAS,GAAG,CAAC,EAAE;YAClC,CAAC,CAAC,CAAC,CAAC,GAAG,OAAO,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,oBAAoB,GAAG,CAAC,CAAC;gBAC5D,CAAC,IAAI,CAAC,WAAW,CAAC,eAAe,GAAG,EAAE,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC;SACtD;aAAM;YACL,CAAC,CAAC,CAAC,CAAC,GAAG,OAAO,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,oBAAoB,GAAG,MAAM,GAAG,CAAC,CAAC,CAAC;SACvE;QAED,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QACZ,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QACZ,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,YAAY,GAAG,EAAE,GAAG,MAAM,CAAC,CAAC,CAAC;QAC3E,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QAEZ,IAAI,IAAI,CAAC,WAAW,CAAC,mBAAmB,IAAI,yEAAsB,CAAC,SAAS,EAAE;YAC5E,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,iBAAiB,GAAG,IAAI,CAAC,WAAW,CAAC,sBAAsB,CAAC,GAAG,MAAM,CAAC,CAAC;SACzG;aAAM,IAAI,IAAI,CAAC,WAAW,CAAC,mBAAmB,IAAI,yEAAsB,CAAC,YAAY,EAAE;YACtF,CAAC,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC;SAChB;QAED,IAAI,QAAQ,GAAG,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC;QAC3B,IAAI,MAAM,GAAG,CAAC,GAAG,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC;QAE7B,IAAI,IAAI,CAAC,WAAW,CAAC,QAAQ,IAAI,kEAAe,CAAC,aAAa,EAAE;YAC9D,CAAC,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC;YACf,QAAQ,GAAG,IAAI,CAAC,EAAE,CAAC;YACnB,MAAM,GAAG,CAAC,CAAC;SACZ;QAED,IAAI,KAAK,CAAC;QACV,IAAI,IAAI,CAAC,WAAW,CAAC,QAAQ,IAAI,kEAAe,CAAC,aAAa,EAAE;YAC9D,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC,SAAS,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,YAAY,GAAG,EAAE,GAAG,MAAM,CAAC,CAAC;SACtG;aAAM;YACL,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC,SAAS,GAAG,CAAC,CAAC,CAAC;gBACtC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,eAAe,GAAG,EAAE,GAAG,MAAM,CAAC,CAAC,CAAC;gBACzD,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,YAAY,GAAG,EAAE,GAAG,MAAM,CAAC,CAAC;SACxD;QAED,iBAAiB;QACjB,KAAK,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,sBAAsB,GAAG,MAAM,CAAC,EAAE,CAAC,EAAE,EAAE;YACrF,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC;YACrB,IAAI,CAAC,GAAG,CAAC,OAAO,CACd,CAAC,EACD,KAAK,EACL,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC,YAAY,GAAG,EAAE,EAC3C,CAAC,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC,YAAY,GAAG,EAAE,CAAC,GAAG,UAAU,EAC1D,CAAC,EACD,QAAQ,EACR,MAAM,CAAC,CAAC;YACV,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC;SACnB;QAED,gBAAgB;QAChB,IAAI,IAAI,CAAC,WAAW,CAAC,SAAS,GAAG,CAAC,EAAE;YAClC,kBAAkB;YAClB,KAAK,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,eAAe,GAAG,EAAE,GAAG,MAAM,CAAC,EAAE,CAAC,EAAE,EAAE;gBACnF,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC;gBACrB,IAAI,CAAC,GAAG,CAAC,OAAO,CACd,CAAC,EACD,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,eAAe,GAAG,EAAE,GAAG,MAAM,CAAC,EACvD,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC,eAAe,GAAG,EAAE,EAC9C,CAAC,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC,eAAe,GAAG,EAAE,CAAC,GAAG,UAAU,EAC7D,CAAC,EACD,IAAI,CAAC,EAAE,GAAG,CAAC,EACX,CAAC,CAAC,GAAG,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC,EACjB,KAAK,CAAC,CAAC;gBACT,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC;aACjB;YAED,iBAAiB;YACjB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC,eAAe,GAAG,EAAE,GAAG,MAAM,EAAE,CAAC,EAAE,EAAE;gBACvE,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC;gBACrB,IAAI,CAAC,GAAG,CAAC,OAAO,CACd,CAAC,CAAC,CAAC,CAAC,EACJ,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,eAAe,GAAG,EAAE,GAAG,MAAM,CAAC,EACvD,CAAC,EACD,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC,EACZ,CAAC,EACD,IAAI,CAAC,EAAE,EACP,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC,EAClB,IAAI,CAAC,CAAC;gBACR,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC;aACjB;YAED,iBAAiB;YACjB,KAAK,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,eAAe,GAAG,GAAG,GAAG,MAAM,CAAC,EACnE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,eAAe,GAAG,EAAE,GAAG,MAAM,CAAC,EAAE,CAAC,IAAI,GAAG,EAAE;gBACvE,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC;gBACrB,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC,eAAe,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;gBAC5E,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC,eAAe,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;gBAC5E,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE;gBACpB,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC;aACnB;YAED,cAAc;YACd,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC,eAAe,GAAG,EAAE,GAAG,MAAM,EAAE,CAAC,EAAE,EAAE;gBACvE,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC;gBACrB,IAAI,CAAC,GAAG,CAAC,OAAO,CACd,CAAC,CAAC,CAAC,CAAC,EACJ,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,eAAe,GAAG,GAAG,GAAG,MAAM,CAAC,EACxD,CAAC,EACD,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC,EACZ,CAAC,EACD,CAAC,GAAG,IAAI,CAAC,EAAE,GAAG,CAAC,EACf,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,EACZ,IAAI,CAAC,CAAC;gBACR,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC;aACjB;YAED,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC;YACrB,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAChB,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,eAAe,GAAG,EAAE,GAAG,MAAM,CAAC,EACvD,CAAC,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC,eAAe,GAAG,EAAE,CAAC,EAChD,CAAC,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC,eAAe,GAAG,EAAE,CAAC,GAAG,SAAS,CAAC;YAC/D,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC;SACjB;aAAM;YACL,kBAAkB;YAClB,KAAK,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;gBAChC,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC;gBACrB,IAAI,CAAC,GAAG,CAAC,OAAO,CACd,CAAC,EACD,CAAC,CAAC,CAAC,CAAC,GAAG,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC,eAAe,GAAG,EAAE,EACrD,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC,eAAe,GAAG,EAAE,EAC9C,CAAC,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC,eAAe,GAAG,EAAE,CAAC,GAAG,UAAU,EAC7D,CAAC,EACD,IAAI,CAAC,EAAE,GAAG,CAAC,EACX,CAAC,GAAG,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;gBACnB,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC;aACnB;SACF;QAED,IAAI,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,SAAS,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,YAAY,GAAG,EAAE,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC9F,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC;QACrB,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,OAAO,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,oBAAoB,GAAG,CAAC,GAAG,MAAM,CAAC,EAAE,OAAO,CAAC,CAAC;QACzF,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,OAAO,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,oBAAoB,GAAG,CAAC,GAAG,MAAM,CAAC,EAAE,OAAO,GAAG,IAAI,CAAC,CAAC;QAChG,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC;QACrB,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC;QAElB,iBAAiB;QACjB,IAAI,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC,QAAQ,IAAI,kEAAe,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE;QAElF,IAAI,UAAU,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,sBAAsB,GAAG,MAAM,CAAC,CAAC;QAC3E,IAAI,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC,SAAS,GAAG,CAAC;YAC3C,IAAI,CAAC,WAAW,CAAC,mBAAmB,IAAI,yEAAsB,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YACjF,CAAC,IAAI,CAAC,WAAW,CAAC,eAAe,GAAG,OAAO,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAE7D,IAAI,IAAI,CAAC,WAAW,CAAC,SAAS,GAAG,CAAC;YAChC,IAAI,CAAC,WAAW,CAAC,mBAAmB,IAAI,yEAAsB,CAAC,YAAY,EAAE;YAC7E,UAAU,GAAG,CAAC,CAAC,CAAC,CAAC;SAClB;QAED,KAAK,IAAI,CAAC,GAAG,UAAU,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,EAAE,CAAC,IAAI,CAAC,EAAE;YACjD,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC;YACrB,IAAI,CAAC,GAAG,CAAC,OAAO,CACd,CAAC,EACD,KAAK,EACL,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC,YAAY,GAAG,EAAE,EAC3C,CAAC,CAAC,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC,YAAY,GAAG,EAAE,CAAC,GAAG,UAAU,CAAC,EAC5D,CAAC,EACD,QAAQ,EACR,MAAM,CAAC,CAAC;YACV,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC;SACnB;QAED,IAAI,IAAI,CAAC,WAAW,CAAC,QAAQ,IAAI,kEAAe,CAAC,aAAa;YAC5D,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,OAAO,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,oBAAoB,GAAG,CAAC,GAAG,MAAM,CAAC;gBACpE,IAAI,CAAC,WAAW,CAAC,SAAS,IAAI,CAAC,CAAC,EAAE;YACpC,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC;YACrB,IAAI,CAAC,GAAG,CAAC,OAAO,CACd,QAAQ,EACR,KAAK,EACL,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC,YAAY,GAAG,EAAE,EAC3C,CAAC,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC,YAAY,GAAG,EAAE,CAAC,GAAG,UAAU,EAC1D,CAAC,EACD,CAAC,EACD,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;YACf,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC;SACnB;QAED,UAAU;QACV,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC;QACrB,IAAI,CAAC,GAAG,CAAC,OAAO,CACd,OAAO,EACP,OAAO,EACP,IAAI,CAAC,WAAW,CAAC,oBAAoB,GAAG,CAAC,GAAG,MAAM,EAClD,IAAI,CAAC,WAAW,CAAC,oBAAoB,GAAG,CAAC,GAAG,MAAM,GAAG,SAAS,EAC9D,CAAC,EACD,CAAC,EACD,CAAC,IAAI,CAAC,EAAE,EACR,IAAI,CAAC,CAAC;QACR,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC;QAElB,IAAI,UAAU,GAAG,IAAI,CAAC,WAAW,CAAC,QAAQ,IAAI,kEAAe,CAAC,aAAa,CAAC,CAAC;YAC3E,KAAK,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,YAAY,GAAG,EAAE,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;QAChE,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC;QACrB,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,GAAG,CAAC,EAAE,UAAU,CAAC;QAC3C,IAAI,CAAC,GAAG,CAAC,OAAO,CACd,OAAO,EACP,OAAO,EACP,IAAI,CAAC,WAAW,CAAC,oBAAoB,GAAG,CAAC,GAAG,MAAM,EAClD,IAAI,CAAC,WAAW,CAAC,oBAAoB,GAAG,CAAC,GAAG,MAAM,GAAG,SAAS,EAC9D,CAAC,EACD,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,CAAC,EACjB,IAAI,CAAC,EAAE,EACP,IAAI,CAAC,CAAC;QACR,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC;QAElB,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC;QACrB,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,GAAG,CAAC,EAAE,UAAU,CAAC,CAAC;QAC5C,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,oBAAoB,GAAG,CAAC,GAAG,MAAM,CAAC,EAAE,UAAU,CAAC,CAAC;QACnG,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC;QAElB,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC;QACrB,IAAI,CAAC,GAAG,CAAC,OAAO,CACd,OAAO,EACP,UAAU,EACV,IAAI,CAAC,WAAW,CAAC,oBAAoB,GAAG,CAAC,GAAG,MAAM,EAClD,IAAI,CAAC,WAAW,CAAC,oBAAoB,GAAG,CAAC,GAAG,MAAM,GAAG,SAAS,EAC9D,CAAC,EACD,CAAC,EACD,CAAC,IAAI,CAAC,EAAE,EACR,IAAI,CAAC,CAAC;QACR,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC;QAElB,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC;QACrB,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,OAAO,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,oBAAoB,GAAG,CAAC,GAAG,MAAM,CAAC,EAAE,OAAO,CAAC,CAAC;QACzF,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,OAAO,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,oBAAoB,GAAG,CAAC,GAAG,MAAM,CAAC,EAAE,OAAO,CAAC,CAAC;QACzF,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC;QACrB,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC;QAElB,KAAK,IAAI,CAAC,GAAG,OAAO,EAAE,CAAC,GAAG,UAAU,EAAE,CAAC,IAAI,CAAC,EAAE;YAC5C,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC;YACrB,IAAI,CAAC,GAAG,CAAC,OAAO,CACd,OAAO,EACP,CAAC,EACD,IAAI,CAAC,WAAW,CAAC,oBAAoB,GAAG,CAAC,GAAG,MAAM,EAClD,IAAI,CAAC,WAAW,CAAC,oBAAoB,GAAG,CAAC,GAAG,MAAM,GAAG,SAAS,EAC9D,CAAC,EACD,CAAC,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC,EACnB,CAAC,EACD,IAAI,CAAC,CAAC;YACR,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC;SACnB;QAED,KAAK,IAAI,CAAC,GAAG,UAAU,EAAE,CAAC,GAAG,OAAO,EAAE,CAAC,EAAE,EAAE;YACzC,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC;YACrB,IAAI,CAAC,GAAG,CAAC,OAAO,CACd,OAAO,EACP,CAAC,EACD,IAAI,CAAC,WAAW,CAAC,oBAAoB,GAAG,CAAC,GAAG,MAAM,EAClD,IAAI,CAAC,WAAW,CAAC,oBAAoB,GAAG,CAAC,GAAG,MAAM,GAAG,SAAS,EAC9D,CAAC,EACD,CAAC,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC,EACnB,CAAC,EACD,IAAI,CAAC,CAAC;YACR,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC;SACnB;QAED,QAAQ;QACR,IAAI,KAAK,GAAgB,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;QACnD,IAAI,KAAK,GAAgB,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;QACnD,IAAI,KAAK,GAAgB,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;QAEnD,GAAG;QACH,IAAI,UAAU,GAAG,IAAI,CAAC,WAAW,CAAC,SAAS,GAAG,CAAC,CAAC,CAAC;YAC/C,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,eAAe,GAAG,EAAE,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;YAC3D,CAAC,CAAC,CAAC,CAAC,GAAG,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC,eAAe,GAAG,EAAE;gBACrD,CAAC,CAAC,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC,eAAe,GAAG,EAAE,CAAC,CAAC,CAAC;QAErD,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,UAAU,GAAG,CAAC,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;QAEhF,GAAG;QACH,IAAI,UAAU,GAAG,OAAO,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,oBAAoB,GAAG,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;QAEpG,IAAI,CAAC,SAAS,CACZ,GAAG,EACH,UAAU,EACV,CAAC,KAAK,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,YAAY,GAAG,EAAE,GAAG,MAAM,CAAC,CAAC;YACvD,CAAC,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC,YAAY,GAAG,EAAE,CAAC;YAC7C,CAAC,CAAC,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QAE7C,IAAI,IAAI,CAAC,WAAW,CAAC,mBAAmB,IAAI,yEAAsB,CAAC,SAAS,EAAE;YAC5E,GAAG;YACH,IAAI,UAAU,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,sBAAsB,GAAG,MAAM,CAAC,CAAC;gBAC1E,CAAC,IAAI,CAAC,WAAW,CAAC,iBAAiB,GAAG,MAAM,GAAG,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;YACxE,IAAI,UAAU,GAAG,UAAU,GAAG,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC,EAAE;gBAC/C,UAAU,GAAG,UAAU,GAAG,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;aACjE;YACD,IAAI,CAAC,SAAS,CACZ,GAAG,EACH,UAAU,EACV,CAAC,KAAK,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,YAAY,GAAG,EAAE,GAAG,MAAM,CAAC,CAAC;gBACvD,CAAC,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC,YAAY,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;YAE7F,GAAG;YACH,IAAI,UAAU,GAAG,QAAQ,IAAI,UAAU,GAAG,KAAK,CAAC,KAAK,GAAG,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC;gBACzE,UAAU,GAAG,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC;gBACpD,UAAU,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,sBAAsB,GAAG,MAAM,GAAG,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;YAE1F,IAAI,CAAC,SAAS,CACZ,GAAG,EACH,UAAU,EACV,CAAC,KAAK,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,YAAY,GAAG,EAAE,GAAG,MAAM,CAAC,CAAC;gBACvD,CAAC,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC,YAAY,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;SAC9F;aAAM;YACL,IAAI,IAAI,CAAC,WAAW,CAAC,QAAQ,IAAI,kEAAe,CAAC,aAAa,EAAE;gBAC9D,IAAI,CAAC,SAAS,CACZ,WAAW,IAAI,CAAC,WAAW,CAAC,QAAQ,GAAG,EACvC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,sBAAsB,GAAG,MAAM,GAAG,CAAC,CAAC,EAC7D,CAAC,KAAK,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,YAAY,GAAG,EAAE,GAAG,MAAM,CAAC,CAAC;oBACvD,CAAC,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC,YAAY,GAAG,EAAE,CAAC,CAAC,CAAC;aAClD;iBAAM;gBACL,IAAI,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,QAAQ,GAAG,EAAE,CAAC,GAAG,GAAG;oBACxD,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,QAAQ,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,QAAQ,GAAG,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;gBAC5F,IAAI,KAAK,GAAG,aAAa,GAAG,GAAG,CAAC;gBAChC,IAAI,CAAC,SAAS,CACZ,KAAK,EACL,UAAU,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,EAClD,CAAC,KAAK,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,YAAY,GAAG,EAAE,GAAG,MAAM,CAAC,CAAC;oBACvD,CAAC,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC,YAAY,GAAG,EAAE,CAAC,CAAC,CAAC;aAClD;YAED,IAAI,IAAI,CAAC,WAAW,CAAC,uBAAuB,GAAG,CAAC,EAAE;gBAChD,IAAI,CAAC,SAAS,CACZ,IAAI,CAAC,WAAW,CAAC,6BAA6B,EAC9C,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,sBAAsB,GAAG,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,uBAAuB,GAAG,EAAE,GAAG,GAAG,GAAG,MAAM,CAAC,EAC1H,KAAK,GAAG,CAAC,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC,YAAY,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,QAAQ,IAAI,kEAAe,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,UAAU,GAAG,IAAI,CAAC,UAAU,GAAG,CAAC,CAEhK,CAAC;aACH;SACF;QAED,0BAA0B;QAC1B,IAAI,IAAI,CAAC,WAAW,CAAC,aAAa,GAAG,CAAC,EAAE;YACtC,IAAI,CAAC,aAAa,CAAC,CAAC,KAAK,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,YAAY,GAAG,EAAE,GAAG,MAAM,CAAC,CAAC;gBACxE,CAAC,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC,YAAY,GAAG,EAAE,CAAC,CAAC,CAAC;SAClD;IACH,CAAC;IAEO,mBAAmB;QACzB,IAAI,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC,SAAS,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAEtD,IAAI,IAAI,CAAC,WAAW,CAAC,KAAK,IAAI,CAAC,EAAE;YAC/B,QAAQ,GAAG,QAAQ,GAAG,CAAC,CAAC;SACzB;QAED,IAAI,YAAY,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,WAAW,GAAG,IAAI,CAAC,EAAE,GAAG,GAAG,CAAC;YACxE,CAAC,IAAI,CAAC,WAAW,CAAC,oBAAoB,GAAG,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;YACrE,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,WAAW,GAAG,IAAI,CAAC,EAAE,GAAG,GAAG,CAAC;gBACrD,CAAC,IAAI,CAAC,WAAW,CAAC,cAAc,GAAG,CAAC,CAAC,CAAC,CAAC;QAE3C,IAAI,SAAS,GAAG,CAAC,GAAG,EAAE,CAAC;QACvB,IAAI,UAAU,GAAG,EAAE,GAAG,EAAE,CAAC;QACzB,IAAI,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC,SAAS,GAAG,CAAC,CAAC;QAC5C,IAAI,MAAM,GAAG,YAAY,GAAG,MAAM,CAAC;QACnC,IAAI,IAAI,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,oBAAoB,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC;QAC9D,IAAI,OAAO,GAAG,IAAI,CAAC,MAAM,GAAG,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC;QACrE,IAAI,MAAM,GAAG,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC;QAC7B,IAAI,KAAK,GAAG,EAAE,CAAC;QACf,IAAI,MAAM,GAAG,CAAC,OAAO,GAAG,IAAI,CAAC,GAAG,MAAM,CAAC;QACvC,IAAI,MAAM,GAAG,MAAM,GAAG,EAAE,GAAG,CAAC,CAAC;QAE7B,IAAI,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC,oBAAoB,GAAG,MAAM,GAAG,KAAK,EAAE;YACnE,MAAM,GAAG,CAAC,MAAM,GAAG,KAAK,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC,oBAAoB,CAAC;YAClE,MAAM,GAAG,CAAC,GAAG,MAAM,GAAG,EAAE,CAAC;SAC1B;QAED,IAAI,OAAO,GAAG,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC;QAC7B,IAAI,OAAO,GAAG,OAAO,CAAC;QACtB,IAAI,MAAM,GAAG,OAAO,GAAG,CAAC,YAAY,GAAG,MAAM,CAAC,CAAC;QAC/C,IAAI,UAAU,GAAG,MAAM,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,SAAS,GAAG,MAAM,CAAC,CAAC;QAChE,IAAI,OAAO,GAAG,MAAM,GAAG,CAAC,MAAM,GAAG,MAAM,CAAC,CAAC;QAEzC,kBAAkB;QAClB,IAAI,CAAC,GAAa,EAAE,CAAC;QACrB,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC;QACb,IAAI,CAAC,GAAa,EAAE,CAAC;QACrB,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC;QAEb,CAAC,CAAC,CAAC,CAAC,GAAG,OAAO,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,oBAAoB,GAAG,MAAM,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC;QAC3E,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,eAAe,GAAG,EAAE,GAAG,MAAM,CAAC,CAAC,CAAC;QAEjF,IAAI,QAAQ,GAAG,CAAC,EAAE;YAChB,CAAC,CAAC,CAAC,CAAC,GAAG,OAAO,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,oBAAoB,GAAG,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,eAAe,GAAG,EAAE,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC;SACrH;aAAM;YACL,CAAC,CAAC,CAAC,CAAC,GAAG,OAAO,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,oBAAoB,GAAG,MAAM,GAAG,CAAC,CAAC,CAAC;SACvE;QAED,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QACZ,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QACZ,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,eAAe,GAAG,EAAE,GAAG,MAAM,CAAC,CAAC,CAAC;QAE7E,IAAI,QAAQ,GAAG,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC;QAC3B,IAAI,MAAM,CAAC;QACX,IAAI,IAAI,CAAC,WAAW,CAAC,QAAQ,IAAI,kEAAe,CAAC,aAAa,EAAE;YAC9D,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,YAAY,GAAG,EAAE,GAAG,MAAM,CAAC,CAAC,CAAC;YAC1E,CAAC,CAAC,CAAC,CAAC,GAAG,OAAO,GAAG,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,oBAAoB,GAAG,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,GAAG,MAAM,CAAC,CAAC;YACjG,CAAC,CAAC,CAAC,CAAC,GAAG,OAAO,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,cAAc,GAAG,CAAC,GAAG,MAAM,CAAC,CAAC;YAChE,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,YAAY,GAAG,EAAE,GAAG,MAAM,CAAC,CAAC,CAAC;YAC3E,MAAM,GAAG,CAAC,GAAG,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC;SAC1B;aAAM;YACL,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,YAAY,GAAG,CAAC,CAAC,CAAC,CAAC;YAChE,CAAC,CAAC,CAAC,CAAC,GAAG,OAAO,GAAG,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,oBAAoB,GAAG,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,GAAG,MAAM,CAAC,CAAC;YACjG,CAAC,CAAC,CAAC,CAAC,GAAG,OAAO,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,cAAc,GAAG,CAAC,GAAG,MAAM,CAAC,CAAC;YAChE,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,YAAY,GAAG,CAAC,CAAC,CAAC,CAAC;YACjE,QAAQ,GAAG,CAAC,CAAC;YACb,MAAM,GAAG,IAAI,CAAC,EAAE,CAAC;SAClB;QAED,iBAAiB;QACjB,IAAI,gBAAgB,GAAG,IAAI,CAAC,WAAW,CAAC,SAAS,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC,eAAe,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;QAC3G,IAAI,QAAQ,IAAI,CAAC,IAAI,QAAQ,IAAI,CAAC,EAAE;YAClC,KAAK,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,gBAAgB,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,uBAAuB,GAAG,MAAM,CAAC,EAAE,CAAC,EAAE,EAAE;gBACzG,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC;gBACrB,IAAI,CAAC,GAAG,CAAC,OAAO,CACd,CAAC,EACD,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC,YAAY,GAAG,EAAE,CAAC,EACpD,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC,YAAY,GAAG,EAAE,EAC3C,CAAC,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC,YAAY,GAAG,EAAE,CAAC,GAAG,UAAU,EAC1D,CAAC,EACD,QAAQ,EACR,CAAC,MAAM,EACP,IAAI,CAAC,CAAC;gBACR,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC;aACnB;SACF;QAED,IAAI,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE,CAAC,CAAC;YAC5C,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,oBAAoB,GAAG,CAAC,CAAC;gBAClD,IAAI,CAAC,WAAW,CAAC,KAAK;gBACtB,CAAC,IAAI,CAAC,WAAW,CAAC,cAAc,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QAE/C,IAAI,MAAM,GAAG,OAAO,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,cAAc,GAAG,CAAC,GAAG,MAAM,CAAC;YACnE,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,sBAAsB,GAAG,IAAI,CAAC;gBAC/C,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,oBAAoB,GAAG,CAAC,CAAC;oBAC1C,IAAI,CAAC,WAAW,CAAC,KAAK;oBACtB,CAAC,IAAI,CAAC,WAAW,CAAC,cAAc,GAAG,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC;QAEvD,IAAI,UAAU,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC;QACpE,KAAK,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,UAAU,EAAE,CAAC,GAAG,MAAM,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;YACvD,IAAI,QAAQ,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC,YAAY,GAAG,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YACrH,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC;YACrB,IAAI,CAAC,GAAG,CAAC,OAAO,CACd,CAAC,EACD,QAAQ,EACR,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC,YAAY,GAAG,EAAE,EAC3C,CAAC,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC,YAAY,GAAG,EAAE,CAAC,GAAG,UAAU,EAC1D,CAAC,EACD,QAAQ,EACR,CAAC,MAAM,EACP,IAAI,CAAC,CAAC;YACR,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC;SACnB;QAED,gBAAgB;QAChB,kBAAkB;QAClB,IAAI,QAAQ,GAAG,CAAC,EAAE;YAChB,KAAK,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,GAAG,CAAC,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC,eAAe,GAAG,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,eAAe,GAAG,EAAE,GAAG,MAAM,CAAC,EAAE,CAAC,EAAE,EAAE;gBAC3I,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC;gBACrB,IAAI,CAAC,GAAG,CAAC,OAAO,CACd,CAAC,EACD,CAAC,CAAC,CAAC,CAAC,EACJ,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC,eAAe,GAAG,EAAE,EAC9C,CAAC,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC,eAAe,GAAG,EAAE,CAAC,GAAG,UAAU,EAC7D,CAAC,EACD,IAAI,CAAC,EAAE,GAAG,CAAC,EACX,CAAC,GAAG,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;gBACnB,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC;aACjB;SACF;aAAM;YACL,KAAK,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;gBACpC,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC;gBACrB,IAAI,CAAC,GAAG,CAAC,OAAO,CACd,CAAC,EACD,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC,eAAe,GAAG,EAAE,CAAC,EACvD,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC,eAAe,GAAG,EAAE,EAC9C,CAAC,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC,eAAe,GAAG,EAAE,CAAC,GAAG,UAAU,EAC7D,CAAC,EACD,IAAI,CAAC,EAAE,GAAG,CAAC,EACX,CAAC,GAAG,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;gBACnB,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC;aACnB;SACF;QAED,IAAI,QAAQ,GAAG,CAAC,EAAE;YAChB,iBAAiB;YACjB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC,eAAe,GAAG,EAAE,GAAG,MAAM,EAAE,CAAC,EAAE,EAAE;gBACvE,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC;gBACrB,IAAI,CAAC,GAAG,CAAC,OAAO,CACd,CAAC,CAAC,CAAC,CAAC,EACJ,CAAC,CAAC,CAAC,CAAC,EACJ,CAAC,EACD,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC,EACZ,CAAC,EACD,IAAI,CAAC,EAAE,EACP,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC,EAClB,IAAI,CAAC,CAAC;gBACR,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC;aACjB;YAED,gBAAgB;YAChB,KAAK,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,eAAe,GAAG,EAAE,GAAG,MAAM,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;gBACnF,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC;gBACrB,IAAI,CAAC,GAAG,CAAC,OAAO,CACd,CAAC,CAAC,CAAC,CAAC,EACJ,CAAC,EACD,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC,eAAe,GAAG,EAAE,EAC9C,CAAC,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC,eAAe,GAAG,EAAE,CAAC,GAAG,SAAS,EAC5D,CAAC,EACD,CAAC,IAAI,CAAC,EAAE,EACR,CAAC,EACD,IAAI,CAAC,CAAC;gBACR,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC;aACjB;YAED,cAAc;YACd,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC,eAAe,GAAG,EAAE,GAAG,MAAM,EAAE,CAAC,EAAE,EAAE;gBACvE,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC;gBACrB,IAAI,CAAC,GAAG,CAAC,OAAO,CACd,CAAC,CAAC,CAAC,CAAC,EACJ,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,eAAe,GAAG,EAAE,GAAG,MAAM,CAAC,EACvD,CAAC,EACD,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC,EACZ,CAAC,EACD,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC,EAClB,IAAI,CAAC,EAAE,GAAG,CAAC,EACX,IAAI,CAAC,CAAC;gBACR,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC;aACjB;YAED,KAAK,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,eAAe,GAAG,EAAE,GAAG,MAAM,CAAC,EAAE,CAAC,EAAE,EAAE;gBACnF,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC;gBACrB,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;gBACzB,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,eAAe,GAAG,EAAE,GAAG,MAAM,CAAC,CAAC,CAAC;gBAC5E,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC;gBACrB,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC;aACnB;SACF;QAED,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC;QACrB,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,OAAO,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,oBAAoB,GAAG,CAAC,GAAG,MAAM,CAAC,EAAE,OAAO,CAAC,CAAC;QACzF,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,OAAO,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,oBAAoB,GAAG,CAAC,GAAG,MAAM,CAAC,EAAE,MAAM,CAAC,CAAC;QACxF,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,OAAO,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,oBAAoB,GAAG,CAAC,GAAG,MAAM,CAAC,EAAE,MAAM,CAAC,CAAC;QACxF,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,OAAO,GAAG,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,oBAAoB,GAAG,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,GAAG,MAAM,CAAC,EAAE,MAAM,CAAC,CAAC;QACnH,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC;QAElB,IAAI,QAAQ,GAAG,CAAC,EAAE;YAChB,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC;YACrB,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;YAC9B,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,eAAe,GAAG,EAAE,GAAG,MAAM,CAAC,EAAE,MAAM,CAAC,CAAC;YACjF,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC;YACrB,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC;SACnB;QAED,aAAa;QACb,IAAI,SAAS,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,uBAAuB,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;YAC/E,IAAI,CAAC,WAAW,CAAC,SAAS,GAAG,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC;QACxD,KAAK,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,uBAAuB,GAAG,MAAM,CAAC,GAAG,SAAS,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE;YACrG,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC;YACrB,IAAI,CAAC,GAAG,CAAC,OAAO,CACd,CAAC,EACD,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC,YAAY,GAAG,EAAE,CAAC,EACpD,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC,YAAY,GAAG,EAAE,EAC3C,CAAC,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC,YAAY,GAAG,EAAE,CAAC,GAAG,UAAU,EAC1D,CAAC,EACD,QAAQ,EACR,CAAC,MAAM,EACP,IAAI,CAAC,CAAC;YACR,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC;SACnB;QAED,aAAa;QACb,KAAK,IAAI,CAAC,GAAG,MAAM,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE;YACzC,IAAI,QAAQ,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC,YAAY,GAAG,EAAE,CAAC,CAAC;gBACnE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YAC/C,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC;YACrB,IAAI,CAAC,GAAG,CAAC,OAAO,CACd,CAAC,EACD,QAAQ,EACR,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC,YAAY,GAAG,EAAE,EAC3C,CAAC,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC,YAAY,GAAG,EAAE,CAAC,GAAG,UAAU,EAC1D,CAAC,EACD,QAAQ,EACR,CAAC,MAAM,EACP,IAAI,CAAC,CAAC;YACR,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC;SACnB;QAED,cAAc;QACd,IAAI,IAAI,CAAC,WAAW,CAAC,QAAQ,IAAI,kEAAe,CAAC,aAAa,EAAE;YAC9D,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC;YACrB,IAAI,CAAC,GAAG,CAAC,OAAO,CACd,CAAC,CAAC,CAAC,CAAC,EACJ,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC,YAAY,GAAG,EAAE,CAAC,EACpD,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC,YAAY,GAAG,EAAE,EAC3C,CAAC,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC,YAAY,GAAG,EAAE,CAAC,GAAG,UAAU,EAC1D,CAAC,EACD,CAAC,EACD,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC,EACd,IAAI,CAAC,CAAC;YACR,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC;SACnB;aAAM;YACL,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC;YACrB,IAAI,CAAC,GAAG,CAAC,OAAO,CACd,CAAC,CAAC,CAAC,CAAC,EACJ,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC,YAAY,GAAG,EAAE,CAAC,EACpD,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC,YAAY,GAAG,EAAE,EAC3C,CAAC,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC,YAAY,GAAG,EAAE,CAAC,GAAG,UAAU,EAC1D,CAAC,EACD,CAAC,EACD,CAAC,IAAI,CAAC,EAAE,EACR,IAAI,CAAC,CAAC;YACR,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC;SACnB;QAED,cAAc;QACd,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC;QACrB,IAAI,CAAC,GAAG,CAAC,OAAO,CACd,OAAO,EACP,OAAO,EACP,IAAI,CAAC,WAAW,CAAC,oBAAoB,GAAG,CAAC,GAAG,MAAM,EAClD,IAAI,CAAC,WAAW,CAAC,oBAAoB,GAAG,CAAC,GAAG,MAAM,GAAG,SAAS,EAC9D,CAAC,EACD,CAAC,EACD,CAAC,IAAI,CAAC,EAAE,EACR,IAAI,CAAC,CAAC;QACR,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC;QAElB,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC;QACrB,IAAI,CAAC,GAAG,CAAC,OAAO,CACd,OAAO,EACP,OAAO,EACP,IAAI,CAAC,WAAW,CAAC,cAAc,GAAG,CAAC,GAAG,MAAM,EAC5C,IAAI,CAAC,WAAW,CAAC,cAAc,GAAG,CAAC,GAAG,MAAM,GAAG,SAAS,EACxD,CAAC,EACD,CAAC,EACD,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC,EACd,IAAI,CAAC,CAAC;QACR,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC;QAElB,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC;QACrB,IAAI,CAAC,GAAG,CAAC,OAAO,CACd,OAAO,EACP,MAAM,EACN,IAAI,CAAC,WAAW,CAAC,oBAAoB,GAAG,CAAC,GAAG,MAAM,EAClD,IAAI,CAAC,WAAW,CAAC,oBAAoB,GAAG,CAAC,GAAG,MAAM,GAAG,SAAS,EAC9D,CAAC,EACD,CAAC,EACD,CAAE,IAAI,CAAC,EAAE,EACT,IAAI,CAAC,CAAC;QACR,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC;QAElB,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC;QACrB,IAAI,CAAC,GAAG,CAAC,OAAO,CACd,OAAO,EACP,UAAU,EACV,IAAI,CAAC,WAAW,CAAC,oBAAoB,GAAG,CAAC,GAAG,MAAM,EAClD,IAAI,CAAC,WAAW,CAAC,oBAAoB,GAAG,CAAC,GAAG,MAAM,GAAG,SAAS,EAC9D,CAAC,EACD,CAAC,EACD,CAAC,IAAI,CAAC,EAAE,EACR,IAAI,CAAC,CAAC;QACR,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC;QAElB,IAAI,IAAI,CAAC,WAAW,CAAC,KAAK,GAAG,CAAC,EAAE;YAC9B,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC;YACrB,IAAI,CAAC,GAAG,CAAC,OAAO,CACd,OAAO,EACP,MAAM,EACN,CAAC,IAAI,CAAC,WAAW,CAAC,oBAAoB,GAAG,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,GAAG,MAAM,EAC7E,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,oBAAoB,GAAG,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,GAAG,MAAM,CAAC,GAAG,SAAS,EAC3F,CAAC,EACD,CAAC,EACD,CAAC,IAAI,CAAC,EAAE,EACR,IAAI,CAAC,CAAC;YACR,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC;SACnB;QAED,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC;QACrB,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,OAAO,GAAG,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,oBAAoB,GAAG,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,GAAG,MAAM,CAAC,EAAE,MAAM,CAAC,CAAC;QACnH,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,OAAO,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,cAAc,GAAG,CAAC,GAAG,MAAM,CAAC,EAAE,OAAO,CAAC,CAAC;QACnF,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC;QACrB,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC;QAElB,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC;QACrB,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,OAAO,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,oBAAoB,GAAG,CAAC,GAAG,MAAM,CAAC,EAAE,OAAO,CAAC,CAAC;QACzF,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,OAAO,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,oBAAoB,GAAG,CAAC,GAAG,MAAM,CAAC,EAAE,MAAM,CAAC,CAAC;QACxF,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC;QACrB,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC;QAElB,KAAK,IAAI,CAAC,GAAG,MAAM,EAAE,CAAC,GAAG,OAAO,EAAE,CAAC,IAAI,CAAC,EAAE;YACxC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,OAAO,GAAG,MAAM,CAAC,CAAC,CAAC;gBAChD,CAAC,IAAI,CAAC,WAAW,CAAC,oBAAoB,GAAG,IAAI,CAAC,WAAW,CAAC,cAAc;oBACtE,CAAC,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC,cAAc,CAAC;kBAChE,MAAM,GAAG,CAAC,CAAC;YACf,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC;YACrB,IAAI,CAAC,GAAG,CAAC,OAAO,CACd,OAAO,EACP,CAAC,EACD,CAAC,EACD,CAAC,GAAG,SAAS,EACb,CAAC,EACD,CAAC,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC,EACnB,CAAC,EACD,IAAI,CAAC,CAAC;YACR,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC;SACnB;QAED,KAAK,IAAI,CAAC,GAAG,UAAU,EAAE,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,EAAE;YACxC,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC;YACrB,IAAI,CAAC,GAAG,CAAC,OAAO,CACd,OAAO,EACP,CAAC,EACD,IAAI,CAAC,WAAW,CAAC,oBAAoB,GAAG,CAAC,GAAG,MAAM,EAClD,IAAI,CAAC,WAAW,CAAC,oBAAoB,GAAG,CAAC,GAAG,MAAM,GAAG,SAAS,EAC9D,CAAC,EACD,CAAC,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC,EACnB,CAAC,EAAE,IAAI,CAAC,CAAC;YACX,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC;SACnB;QAED,KAAK,IAAI,CAAC,GAAG,OAAO,EAAE,CAAC,GAAG,UAAU,EAAE,CAAC,IAAI,CAAC,EAAE;YAC5C,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC;YACrB,IAAI,CAAC,GAAG,CAAC,OAAO,CACd,OAAO,EACP,CAAC,EACD,IAAI,CAAC,WAAW,CAAC,oBAAoB,GAAG,CAAC,GAAG,MAAM,EAClD,IAAI,CAAC,WAAW,CAAC,oBAAoB,GAAG,CAAC,GAAG,MAAM,GAAG,SAAS,EAC9D,CAAC,EACD,CAAC,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC,EACnB,CAAC,EACD,IAAI,CAAC,CAAC;YACR,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC;SACnB;QAED,QAAQ;QACR,GAAG;QACH,IAAI,UAAU,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC,eAAe,GAAG,EAAE,CAAC;YACtE,CAAC,CAAC,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC,eAAe,GAAG,EAAE,CAAC,CAAC;QACpD,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,UAAU,GAAG,CAAC,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;QAEhF,GAAG;QACH,IAAI,UAAU,GAAG,OAAO,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,oBAAoB,GAAG,CAAC,GAAG,MAAM,CAAC;YAC7E,CAAC,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;QAExC,IAAI,CAAC,SAAS,CACZ,GAAG,EACH,UAAU,EACV,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC,YAAY,GAAG,EAAE,CAAC;YACpD,CAAC,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC,YAAY,GAAG,EAAE,CAAC;cAC3C,CAAC,CAAC,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QAE/C,GAAG;QACH,IAAI,IAAY,CAAC;QACjB,IAAI,UAAkB,CAAC;QACvB,IAAI,IAAI,CAAC,WAAW,CAAC,KAAK,GAAG,CAAC,EAAE;YAE9B,IAAI,IAAI,CAAC,WAAW,CAAC,QAAQ,IAAI,kEAAe,CAAC,aAAa,EAAE;gBAC9D,IAAI,GAAG,QAAQ,IAAI,CAAC,WAAW,CAAC,QAAQ,GAAG,CAAC;aAC7C;iBAAM;gBACL,IAAI,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,QAAQ,GAAG,EAAE,CAAC,GAAG,GAAG;oBAChE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,QAAQ,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,QAAQ,GAAG,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;gBAC5F,IAAI,GAAG,WAAW,WAAW,GAAG,CAAC;aAClC;YAED,UAAU,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,uBAAuB,GAAG,MAAM,GAAG,CAAC,CAAC;gBACzE,CAAC,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;YAEzC,IAAI,UAAU,GAAG,UAAU,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,EAAE;gBACnE,UAAU,GAAG,UAAU,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;aACjE;YAED,IAAI,CAAC,SAAS,CACZ,IAAI,EACJ,UAAU,EACV,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC,YAAY,GAAG,EAAE,CAAC;gBACpD,CAAC,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC,YAAY,GAAG,EAAE,CAAC,CAAC,CAAC;YAEjD,IAAI,IAAI,CAAC,WAAW,CAAC,wBAAwB,GAAG,CAAC,EAAE;gBACjD,IAAI,UAAU,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC,uBAAuB,GAAG,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC,wBAAwB,GAAG,EAAE,GAAG,GAAG,GAAG,MAAM,CAAC;gBAC1I,IAAI,WAAW,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC,YAAY,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,QAAQ,IAAI,kEAAe,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,UAAU,GAAG,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC;gBAClL,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,WAAW,CAAC,8BAA8B,EAAE,UAAU,EAAE,WAAW,CAAC,CAAC;aAC1F;SACF;QAED,GAAG;QACH,IAAI,IAAY,CAAC;QACjB,IAAI,IAAI,CAAC,WAAW,CAAC,QAAQ,IAAI,kEAAe,CAAC,aAAa,EAAE;YAC9D,IAAI,GAAG,QAAQ,IAAI,CAAC,WAAW,CAAC,QAAQ,GAAG,CAAC;SAC7C;aAAM;YACL,IAAI,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,QAAQ,GAAG,EAAE,CAAC,GAAG,GAAG;gBAChE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,QAAQ,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,QAAQ,GAAG,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;YAC5F,IAAI,GAAG,aAAa,WAAW,GAAG,CAAC;SACpC;QACD,IAAI,iBAAiB,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC,YAAY,GAAG,EAAE,CAAC,CAAC;YAC5E,CAAC,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC,YAAY,GAAG,EAAE,CAAC,CAAC;YAC9G,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAElD,IAAI,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC,QAAQ,IAAI,kEAAe,CAAC,aAAa,CAAC,CAAC;YAC5E,CAAC,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC,YAAY,GAAG,EAAE,CAAC,CAAC,CAAC;YAC/C,CAAC,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC,YAAY,GAAG,EAAE,CAAC,CAAC;QAEhD,IAAI,UAAU,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,WAAW,CAAC;YACnC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAElD,IAAI,UAAU,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,sBAAsB,GAAG,MAAM,GAAG,CAAC,CAAC,CAAC;QAC/E,IAAI,UAAU,GAAG,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC,YAAY,GAAG,EAAE,CAAC;YACrF,CAAC,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC,YAAY,GAAG,EAAE,CAAC;YAC7C,UAAU,GAAG,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE;YAC5D,UAAU,GAAG,UAAU,GAAG,CAAC,iBAAiB,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC;SACjE;aAAM;YACL,UAAU,GAAG,UAAU,GAAG,CAAC,iBAAiB,GAAG,CAAC,CAAC;SAClD;QAED,IAAI,CAAC,SAAS,CACZ,IAAI,EACJ,UAAU,EACV,UAAU,CACX,CAAC;QAEF,IAAI,IAAI,CAAC,WAAW,CAAC,uBAAuB,GAAG,CAAC,EAAE;YAChD,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;YACd,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YAChE,IAAI,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC,sBAAsB,GAAG,IAAI,CAAC,WAAW,CAAC,uBAAuB,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,QAAQ,IAAI,kEAAe,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;YACzK,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,WAAW,GAAG,IAAI,CAAC,EAAE,GAAG,GAAG,CAAC,CAAC;YACnE,EAAE,GAAG,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,WAAW,GAAG,IAAI,CAAC,EAAE,GAAG,GAAG,CAAC,GAAG,MAAM,CAAC;YAC9E,EAAE,GAAG,EAAE,GAAG,CAAC,GAAG,MAAM,GAAG,IAAI,CAAC,UAAU,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,QAAQ,IAAI,kEAAe,CAAC,aAAa,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YAChH,IAAI,CAAC,SAAS,CACZ,IAAI,CAAC,WAAW,CAAC,6BAA6B,EAC9C,EAAE,EACF,EAAE,CACH,CAAC;SACH;QACD,+BAA+B;QAC/B,IAAI,IAAI,CAAC,WAAW,CAAC,aAAa,GAAG,CAAC,EAAE;YACtC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC,YAAY,GAAG,EAAE,CAAC;gBACrE,CAAC,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC,YAAY,GAAG,EAAE,CAAC,CAAC;SACjD;IACH,CAAC;IAEO,aAAa,CAAC,SAAiB;QACrC,IAAI,aAAa,GAAG,cAAc,IAAI,CAAC,WAAW,CAAC,aAAa,OAAO,CAAC;QAExE,IAAI,WAAW,GAAgB,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,aAAa,CAAC,CAAC;QACnE,IAAI,UAAU,GAAG,CAAC,CAAC;QAEnB,IAAI,CAAC,GAAG,CAAC,SAAS,GAAG,OAAO,CAAC;QAC7B,IAAI,CAAC,GAAG,CAAC,QAAQ,CACf,CAAC,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,CAAC,WAAW,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,UAAU,EACvD,SAAS,GAAG,CAAC,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC,GAAG,UAAU,EAC9C,WAAW,CAAC,KAAK,GAAG,CAAC,UAAU,GAAG,CAAC,CAAC,EACpC,IAAI,CAAC,UAAU,GAAG,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC,CAAC;QAEtC,IAAI,CAAC,GAAG,CAAC,SAAS,GAAG,OAAO,CAAC;QAC7B,IAAI,CAAC,GAAG,CAAC,QAAQ,CACf,aAAa,EACb,CAAC,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,CAAC,WAAW,CAAC,KAAK,GAAG,CAAC,CAAC,EAC1C,SAAS,GAAG,CAAC,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC,CAAC;IACvC,CAAC;IAEO,SAAS,CAAC,IAAY,EAAE,CAAS,EAAE,CAAS;QAClD,IAAI,CAAC,GAAG,CAAC,IAAI,GAAG,iBAAiB,CAAC;QAClC,IAAI,QAAQ,GAAgB,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;QAEvD,IAAI,CAAC,GAAG,CAAC,SAAS,GAAG,OAAO,CAAC;QAC7B,IAAI,CAAC,GAAG,CAAC,QAAQ,CACf,CAAC,EACD,CAAC,GAAG,IAAI,CAAC,UAAU,EACnB,QAAQ,CAAC,KAAK,EACd,IAAI,CAAC,UAAU,CAAC,CAAC;QAEnB,IAAI,CAAC,GAAG,CAAC,SAAS,GAAG,OAAO,CAAC;QAC7B,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;IAChC,CAAC;IAEO,mBAAmB;QACzB,IAAI,CAAC,GAAG,CAAC,SAAS,GAAG,CAAC,CAAC;QACvB,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC;QACrB,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,qBAAqB,EAAE,IAAI,CAAC,qBAAqB,EAAE,IAAI,CAAC,oBAAoB,EAAE,CAAC,EAAE,IAAI,CAAC,EAAE,GAAG,CAAC,EAAE,IAAI,CAAC,CAAC;QACtH,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE;QACpB,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC;QAElB,IAAI,IAAI,CAAC,WAAW,CAAC,mBAAmB,IAAI,yEAAsB,CAAC,SAAS,EAAE;YAC5E,IAAI,CAAC,yBAAyB,EAAE,CAAC;SAClC;aAAM,IAAI,IAAI,CAAC,WAAW,CAAC,mBAAmB,IAAI,yEAAsB,CAAC,YAAY;YACpF,IAAI,CAAC,WAAW,CAAC,mBAAmB,IAAI,yEAAsB,CAAC,kBAAkB,EAAE;YACnF,IAAI,CAAC,4BAA4B,EAAE,CAAC;YAEpC,IAAI,IAAI,CAAC,WAAW,CAAC,mBAAmB,IAAI,yEAAsB,CAAC,kBAAkB;gBACnF,IAAI,CAAC,WAAW,CAAC,cAAc,GAAG,CAAC,EAAE;gBACrC,IAAI,uBAAuB,GAAG,IAAI,CAAC,WAAW,CAAC,cAAc,GAAG,IAAI,CAAC,aAAa,CAAC;gBACnF,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC;gBACrB,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,qBAAqB,EACrC,IAAI,CAAC,qBAAqB,EAC1B,uBAAuB,GAAG,CAAC,EAC3B,CAAC,EACD,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;gBACf,IAAI,CAAC,GAAG,CAAC,SAAS,GAAG,OAAO,CAAC;gBAC7B,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC;gBAChB,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC;gBAClB,IAAI,CAAC,GAAG,CAAC,SAAS,GAAG,OAAO,CAAC;aAC9B;YAED,IAAI,IAAI,CAAC,WAAW,CAAC,mBAAmB,IAAI,yEAAsB,CAAC,kBAAkB;gBACnF,IAAI,CAAC,WAAW,CAAC,KAAK,GAAG,CAAC,EAAE;gBAC5B,IAAI,iBAAiB,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,oBAAoB,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,aAAa;gBACnH,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC;gBACrB,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,qBAAqB,EACrC,IAAI,CAAC,qBAAqB,EAC1B,iBAAiB,GAAG,CAAC,EACrB,CAAC,EACD,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;gBACf,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC;aACnB;SACF;aAAM,IAAI,IAAI,CAAC,WAAW,CAAC,mBAAmB,IAAI,yEAAsB,CAAC,mBAAmB,EAAE;YAC7F,IAAI,CAAC,gCAAgC,EAAE,CAAC;SACzC;IACH,CAAC;IAEO,gCAAgC;QACtC,IAAI,IAAI,CAAC,WAAW,CAAC,cAAc,GAAG,CAAC,EAAE;YACvC,IAAI,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC,cAAc,GAAG,CAAC,CAAC;YACrE,IAAI,EAAE,GAAG,EAAE,CAAC;YAEZ,IAAI,KAAK,GAAG,IAAI,CAAC,qBAAqB;gBACpC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,oBAAoB,GAAG,CAAC,CAAC;oBAC1C,CAAC,IAAI,CAAC,WAAW,CAAC,cAAc,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC,GAAG,IAAI,CAAC,aAAa,CAAC;YACrE,IAAI,MAAM,GAAG,IAAI,CAAC,qBAAqB;gBACrC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,oBAAoB,GAAG,CAAC,CAAC;oBAC1C,CAAC,IAAI,CAAC,WAAW,CAAC,cAAc,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC,GAAG,IAAI,CAAC,aAAa,CAAC;YACrE,IAAI,MAAM,GAAG,IAAI,CAAC,qBAAqB,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,aAAa,CAAC,CAAC;YACpE,IAAI,MAAM,GAAG,IAAI,CAAC,qBAAqB,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,aAAa,CAAC,CAAC;YAEpE,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;YAC/B,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;YAC/B,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;YAChC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;YAChC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;YAC/B,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;YAChC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;YAChC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;YAC/B,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC;YACrB,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC;SACnB;QAED,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC,YAAY,EAAE,CAAC,EAAE,EAAE;YACtD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC,WAAW,EAAE,CAAC,EAAE,EAAE;gBACrD,IAAI,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC,WAAW;oBACzC,CAAC,IAAI,CAAC,WAAW,CAAC,cAAc,GAAG,CAAC,CAAC;oBACrC,CAAC,IAAI,CAAC,WAAW,CAAC,eAAe,GAAG,CAAC,CAAC,CAAC;gBAEzC,IAAI,SAAS,GAAG,GAAG,GAAG,IAAI,CAAC,WAAW,CAAC,WAAW;oBAChD,CAAC,IAAI,CAAC,WAAW,CAAC,kBAAkB,GAAG,CAAC,CAAC;oBACzC,CAAC,IAAI,CAAC,WAAW,CAAC,mBAAmB,GAAG,CAAC,CAAC,CAAC;gBAC7C,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,GAAG,IAAI,CAAC,EAAE,GAAG,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,oBAAoB,GAAG,CAAC,CAAC,CAAC;gBACzF,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,GAAG,IAAI,CAAC,EAAE,GAAG,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,oBAAoB,GAAG,CAAC,CAAC,CAAC;gBACzF,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC,oBAAoB,GAAG,CAAC,CAAC;gBAElD,IAAI,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,UAAU;oBACnD,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,oBAAoB,GAAG,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;gBACtF,IAAI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,oBAAoB,GAAG,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;oBACzF,CAAC,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;gBAEpD,IAAI,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC,GAAG,IAAI,CAAC,EAAE,GAAG,GAAG,CAAC,GAAG,EAAE,CAAC;gBACpD,IAAI,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC,GAAG,IAAI,CAAC,EAAE,GAAG,GAAG,CAAC,GAAG,EAAE,CAAC;gBACpD,EAAE,GAAG,IAAI,CAAC,WAAW,CAAC,oBAAoB,GAAG,EAAE,CAAC;gBAEhD,IAAI,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,SAAS,GAAG,EAAE,CAAC,GAAG,IAAI,CAAC,EAAE,GAAG,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,YAAY,GAAG,EAAE,CAAC,CAAC;gBAC7F,IAAI,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,YAAY,GAAG,EAAE,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;gBAE1F,IAAI,IAAI,GAAG,IAAI,CAAC,qBAAqB,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,oBAAoB,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,aAAa,CAAC,CAAC;gBACxH,IAAI,IAAI,GAAG,IAAI,CAAC,qBAAqB,GAAG,CAAC,CAAC,IAAI,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,oBAAoB,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,aAAa,CAAC,CAAC;gBAChI,IAAI,IAAI,GAAG,IAAI,CAAC,qBAAqB,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,oBAAoB,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,aAAa,CAAC,CAAC;gBACzH,IAAI,IAAI,GAAG,IAAI,CAAC,qBAAqB,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,oBAAoB,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,aAAa,CAAC,CAAC;gBACxH,IAAI,IAAI,GAAG,IAAI,CAAC,qBAAqB,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,aAAa,CAAC,CAAC;gBAC1E,IAAI,IAAI,GAAG,IAAI,CAAC,qBAAqB,GAAG,CAAC,CAAC,EAAE,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,aAAa,CAAC,CAAC;gBAC3E,IAAI,IAAI,GAAG,IAAI,CAAC,qBAAqB,GAAG,CAAC,CAAC,EAAE,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,aAAa,CAAC,CAAC;gBAC3E,IAAI,IAAI,GAAG,IAAI,CAAC,qBAAqB,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,aAAa,CAAC,CAAC;gBAE1E,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC;gBACrB,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;gBAC5B,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;gBAC5B,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;gBAC5B,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;gBAC5B,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;gBAC5B,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC;aACjB;SACF;IACH,CAAC;IAEO,4BAA4B;QAClC,IAAI,aAAa,GAAG,IAAI,CAAC,WAAW,CAAC,mBAAmB,CAAC;QAEzD,IAAI,OAAO,GAAG,IAAI,CAAC,gBAAgB,CAAC,aAAa,CAAC,CAAC;QAEnD,IAAI,SAAS,GAAG,GAAG,CAAC;QAEpB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC,YAAY,EAAE,CAAC,EAAE,EAAE;YACtD,IAAI,cAAc,GAAG,SAAS,CAAC;YAC/B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC,WAAW,EAAE,CAAC,EAAE,EAAE;gBACrD,IAAI,CAAC,2BAA2B,CAAC,OAAO,EAAE,cAAc,CAAC;gBACzD,IAAI,CAAC,IAAI,IAAI,CAAC,WAAW,CAAC,WAAW,GAAG,CAAC,EAAE;oBACzC,cAAc,GAAG,cAAc,GAAG,aAAa,CAAC;iBACjD;aACF;YACD,SAAS,IAAI,IAAI,CAAC,WAAW,CAAC,kBAAkB,CAAC;SAClD;IACH,CAAC;IAEO,yBAAyB;QAC/B,IAAI,qBAAqB,GAAG,IAAI,CAAC,WAAW,CAAC,YAAY,GAAG,EAAE,GAAG,IAAI,CAAC,aAAa,CAAC;QAEpF,IAAI,YAAY,GAAG,IAAI,CAAC,WAAW,CAAC,sBAAsB,GAAG,EAAE,CAAC;QAEhE,IAAI,IAAI,CAAC,WAAW,CAAC,sBAAsB,EAAE;YAC3C,YAAY,GAAG,YAAY,GAAG,IAAI,CAAC,WAAW,CAAC,sBAAsB,CAAC;SACvE;QAED,IAAI,aAAa,CAAC;QAClB,IAAI,IAAI,CAAC,WAAW,CAAC,iBAAiB,EAAE;YACtC,YAAY,GAAG,YAAY,GAAG,IAAI,CAAC,WAAW,CAAC,iBAAiB,GAAG,EAAE,CAAC;YACtE,aAAa,GAAG,IAAI,CAAC,WAAW,CAAC,iBAAiB,GAAG,EAAE,CAAC;SACzD;QAED,IAAI,IAAI,CAAC,WAAW,CAAC,iBAAiB,EAAE;YACtC,YAAY,GAAG,YAAY,GAAG,IAAI,CAAC,WAAW,CAAC,iBAAiB,CAAC;YACjE,aAAa,GAAG,aAAa,GAAG,IAAI,CAAC,WAAW,CAAC,iBAAiB,CAAC;SACpE;QAED,IAAI,oBAAoB,CAAC;QACzB,IAAI,aAAa,EAAE;YACjB,IAAI,qBAAqB,GAAG,CAAC,aAAa,GAAG,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,oBAAoB,GAAG,EAAE,CAAC,CAAC;YACjG,oBAAoB,GAAG,CAAC,qBAAqB,GAAG,CAAC,IAAI,CAAC,oBAAoB,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC;SACxF;QAED,IAAI,mBAAmB,GAAG,YAAY,GAAG,IAAI,CAAC,WAAW,CAAC,oBAAoB,GAAG,EAAE,CAAC,CAAC;YACnF,IAAI,CAAC,WAAW,CAAC,oBAAoB,GAAG,EAAE,GAAG,IAAI,CAAC,aAAa,CAAC,CAAC;YACjE,YAAY,GAAG,EAAE,GAAG,IAAI,CAAC,aAAa,CAAC;QAEzC,IAAI,oBAAoB,GAAG,CAAC,YAAY,GAAG,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,oBAAoB,GAAG,EAAE,CAAC,CAAC;QAE/F,IAAI,oBAAoB,GAAG,GAAG,EAAE;YAC9B,oBAAoB,GAAG,GAAG,CAAC;SAC5B;QAED,IAAI,IAAI,CAAC,WAAW,CAAC,aAAa,GAAG,CAAC,KAAK,CAAC,EAAE;YAC5C,IAAI,MAAM,GAAG,IAAI,CAAC,qBAAqB,GAAG,CAAC,qBAAqB,GAAG,CAAC,CAAC,CAAC;YACtE,IAAI,MAAM,GAAG,IAAI,CAAC,qBAAqB,GAAG,CAAC,qBAAqB,GAAG,CAAC,CAAC,CAAC;YAEtE,IAAI,WAAW,GAAG,MAAM,GAAG,IAAI,CAAC,qBAAqB,CAAC;YACtD,IAAI,WAAW,GAAG,IAAI,CAAC,qBAAqB,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,oBAAoB,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,CAAC;YAE5H,IAAI,OAAO,CAAC;YACZ,IAAI,oBAAoB,IAAI,GAAG,EAAE;gBAC/B,OAAO,GAAG,IAAI,CAAC,KAAK,GAAG,WAAW,CAAC;aACpC;iBAAM;gBACL,OAAO,GAAG,WAAW,GAAG,mBAAmB,CAAC;aAC7C;YAED,IAAI,CAAC,oBAAoB,CAAC,OAAO,EAAE,WAAW,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,CAAC,CAAC;YAE7E,IAAI,aAAa,EAAE;gBACjB,IAAI,YAAY,GAAG,WAAW,GAAG,oBAAoB,CAAC;gBACtD,IAAI,CAAC,qBAAqB,CAAC,YAAY,EAAE,WAAW,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,CAAC,CAAC;aACpF;SACF;QAED,IAAI,IAAI,CAAC,WAAW,CAAC,aAAa,GAAG,CAAC,EAAE;YACtC,IAAI,0BAA0B,GAAG,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,sBAAsB,GAAG,EAAE;gBAC7E,IAAI,CAAC,WAAW,CAAC,sBAAsB,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,oBAAoB,GAAG,EAAE,CAAC,CAAC;YAEjG,IAAI,eAAe,GAAG,CAAC,0BAA0B,GAAG,CAAC,IAAI,CAAC,oBAAoB,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC;YAE3F,IAAI,QAAQ,GAAG,eAAe,CAAC;YAE/B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,aAAa,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;gBAExE,IAAI,aAAa,GAAG,IAAI,CAAC,WAAW,CAAC,aAAa,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,GAAG,CAAC;gBAEtF,IAAI,MAAM,GAAG,IAAI,CAAC,qBAAqB,GAAG,aAAa,GAAG,CAAC,qBAAqB,GAAG,CAAC,CAAC,CAAC;gBACtF,IAAI,MAAM,GAAG,MAAM,GAAG,qBAAqB,CAAC;gBAE5C,IAAI,MAAM,GAAG,IAAI,CAAC,qBAAqB,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,oBAAoB,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,GAAG,IAAI,CAAC,qBAAqB,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;gBACjJ,IAAI,MAAM,GAAG,IAAI,CAAC,qBAAqB,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,oBAAoB,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,GAAG,IAAI,CAAC,qBAAqB,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;gBAEjJ,IAAI,OAAO,GAAG,MAAM,GAAG,mBAAmB,CAAC;gBAE3C,YAAY;gBACZ,IAAI,CAAC,oBAAoB,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;gBACnE,aAAa;gBACb,IAAI,gBAAgB,GAAG,MAAM,CAAC;gBAC9B,IAAI,gBAAgB,GAAG,MAAM,CAAC;gBAC9B,IAAI,gBAAgB,GAAG,IAAI,CAAC,qBAAqB,GAAG,aAAa,GAAG,CAAC,qBAAqB,GAAG,CAAC,CAAC,CAAC;gBAChG,IAAI,gBAAgB,GAAG,gBAAgB,GAAG,qBAAqB,CAAC;gBAChE,IAAI,CAAC,oBAAoB,CAAC,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,gBAAgB,CAAC,CAAC;gBAG3G,IAAI,oBAAoB,EAAE;oBACxB,IAAI,YAAY,GAAG,MAAM,GAAG,oBAAoB,CAAC;oBACjD,IAAI,CAAC,qBAAqB,CAAC,YAAY,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;oBACzE,IAAI,CAAC,qBAAqB,CAAC,YAAY,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,gBAAgB,CAAC,CAAC;iBAClH;gBAED,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC,aAAa,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,QAAQ,GAAG,eAAe,CAAC,CAAC,CAAC,QAAQ,GAAG,CAAC,eAAe,GAAG,CAAC,CAAC;aACpH;SACF;IACH,CAAC;IAEO,2BAA2B,CAAC,OAAO,EAAE,aAAa;QACxD,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC;QACrB,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,qBAAqB,EAAE,IAAI,CAAC,qBAAqB,CAAC,CAAC;QACxE,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,qBAAqB,EACrC,IAAI,CAAC,qBAAqB,EAC1B,IAAI,CAAC,oBAAoB,EACzB,CAAC,IAAI,CAAC,gBAAgB,CAAC,aAAa,CAAC,EACrC,CAAC,CAAC,aAAa,GAAG,OAAO,CAAC,EAAE,IAAI,CAAC,CAAC;QACpC,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC;QACrB,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC;IACpB,CAAC;IAEO,gBAAgB,CAAC,OAAO;QAC9B,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC;IACnC,CAAC;IAEO,oBAAoB,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;QAClE,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC;QACrB,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;QACjC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;QACjC,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC;QACrB,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC;QAElB,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC;QACrB,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAChC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;QACjC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAChC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;QACjC,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE;QACpB,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC;IACpB,CAAC;IAEO,qBAAqB,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;QACnE,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC;QACrB,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAChC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;QACjC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;QACjC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAChC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAChC,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC;IAClB,CAAC;CACF;AA9kDU;IAAR,2DAAK,EAAE;8BAAc,0EAAkC;uEAAC;AAEzD;IADC,+DAAS,CAAC,YAAY,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;8BAClC,wDAAU;kEAAoB;AAL3B,kCAAkC;IAL9C,+DAAS,CAAC;QACT,QAAQ,EAAE,6CAA6C;QACvD,oTAA8D;KAE/D,CAAC;;GACW,kCAAkC,CAilD9C;AAjlD8C;;;;;;;;;;;;;;;;;;;;ACVY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACAJ;AACmC;AAEkD;AACjF;AACoE;AACnE;AAC0B;AAOtF,IAAa,2BAA2B,GAAxC,MAAa,2BAA2B;IAwEtC;QAtEU,4BAAuB,GAAG,IAAI,0DAAY,EAAkC,CAAC;QAK7E,uBAAkB,GAAG,IAAI,0DAAY,EAAE,CAAC;QAoClD,6BAAwB,GAAW,IAAI,CAAC;QAIxC,8BAAyB,GAAW,IAAI,CAAC;QAUzC,eAAU,GAAgD,EAAE,CAAC;QAE7D,oBAAe,GAAG,6DAAsB,CAAC;QAEjC,QAAG,GAAG;YACZ,EAAE,QAAQ,EAAE,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE;YAChC,EAAE,QAAQ,EAAE,EAAE,EAAE,OAAO,EAAE,GAAG,EAAE;YAC9B,EAAE,QAAQ,EAAE,EAAE,EAAE,OAAO,EAAE,GAAG,EAAE;YAC9B,EAAE,QAAQ,EAAE,EAAE,EAAE,OAAO,EAAE,GAAG,EAAE;YAC9B,EAAE,QAAQ,EAAE,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE;YAChC,EAAE,QAAQ,EAAE,EAAE,EAAE,OAAO,EAAE,GAAG,EAAE;YAC9B,EAAE,QAAQ,EAAE,EAAE,EAAE,OAAO,EAAE,GAAG,EAAE;YAC9B,EAAE,QAAQ,EAAE,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE;SACjC,CAAC;IAEc,CAAC;IAEjB,QAAQ;QACN,KAAK,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,gEAAqB,CAAC,EAAE;YAC9D,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;SAC5D;QAED,IAAI,CAAC,WAAW,GAAG,IAAI,0EAAkC,EAAE,CAAC;QAC5D,IAAI,CAAC,WAAW,CAAC,oBAAoB,GAAG,IAAI,CAAC,oBAAoB,CAAC,QAAQ,CAAC;QAC3E,IAAI,CAAC,WAAW,CAAC,YAAY,GAAG,IAAI,CAAC,oBAAoB,CAAC,UAAU,CAAC;QACrE,IAAI,CAAC,WAAW,CAAC,WAAW,GAAG,IAAI,CAAC,oBAAoB,CAAC,WAAW,CAAC;QACrE,IAAI,CAAC,WAAW,CAAC,cAAc,GAAG,IAAI,CAAC,oBAAoB,CAAC,cAAc,CAAC;QAC3E,IAAI,CAAC,WAAW,CAAC,SAAS,GAAG,IAAI,CAAC,oBAAoB,CAAC,SAAS,CAAC;QACjE,IAAI,CAAC,WAAW,CAAC,KAAK,GAAG,IAAI,CAAC,oBAAoB,CAAC,KAAK,CAAC;QACzD,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,oBAAoB,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;QACnF,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,oBAAoB,CAAC,UAAU,GAAG,IAAI,CAAC;QAE7E,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,WAAW,EAAE;YACvC,IAAI,CAAC,wBAAwB,EAAE,CAAC;SACjC;aAAM;YACL,IAAI,CAAC,gBAAgB,EAAE,CAAC;YACxB,IAAI,CAAC,iBAAiB,EAAE,CAAC;YACzB,IAAI,CAAC,UAAU,EAAE,CAAC;YAElB,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE;gBAC9D,IAAI,KAAK,IAAI,SAAS,EAAE;oBACtB,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;iBAC/B;YACH,CAAC,CAAC;YAEF,IAAI,CAAC,gBAAgB,CAAC,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;SAChD;IAEH,CAAC;IAED,gBAAgB;QACd,IAAI,CAAC,WAAW,CAAC,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC;QAE3C,IAAI,IAAI,CAAC,WAAW,CAAC,mBAAmB,IAAI,6DAAsB,CAAC,SAAS,EAAE;YAC5E,IAAI,CAAC,WAAW,CAAC,WAAW,GAAG,CAAC,CAAC;SAClC;QAED,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC;IAC9B,CAAC;IAED,kBAAkB;QAChB,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,mBAAmB,IAAI,6DAAsB,CAAC,mBAAmB;YACrF,CAAC,IAAI,CAAC,YAAY,GAAG,CAAC,IAAI,IAAI,CAAC,YAAY,GAAG,CAAC,CAAC,CAAC;YACjD,CAAC,IAAI,CAAC,YAAY,GAAG,CAAC,IAAI,IAAI,CAAC,YAAY,GAAG,EAAE,CAAC,EAAE;YACnD,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC;SAClD;aAAM;YACL,IAAI,CAAC,WAAW,CAAC,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;YAC7D,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC;SAC7B;IACH,CAAC;IAED,uBAAuB;QACrB,IAAI,IAAI,CAAC,gBAAgB,GAAG,CAAC,IAAI,IAAI,CAAC,gBAAgB,GAAG,GAAG,EAAE;YAC5D,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,WAAW,CAAC,eAAe,CAAC;SAC1D;aAAM;YACL,IAAI,CAAC,WAAW,CAAC,eAAe,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;YAErE,IAAI,IAAI,CAAC,WAAW,CAAC,mBAAmB,IAAI,6DAAsB,CAAC,YAAY;gBAC7E,IAAI,CAAC,SAAS,IAAI,sDAAe,CAAC,aAAa,EAAE;gBACjD,IAAI,CAAC,WAAW,CAAC,sBAAsB,GAAG,IAAI,CAAC,QAAQ,CAAC;aACzD;YACD,IAAI,CAAC,gBAAgB,EAAE,CAAC;SACzB;IACH,CAAC;IAED,oBAAoB;QAClB,IAAI,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,IAAI,IAAI,CAAC,aAAa,CAAC,EAAE;YACxD,IAAI,CAAC,WAAW,CAAC,YAAY,GAAG,IAAI,CAAC,aAAa,CAAC;YACnD,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,IAAI,IAAI,CAAC,aAAa,CAAC,CAAC,OAAO,CAAC;YAE5E,IAAI,IAAI,CAAC,WAAW,CAAC,mBAAmB,IAAI,6DAAsB,CAAC,kBAAkB,EAAE;gBACrF,IAAI,CAAC,GAAG,IAAI,CAAC,gCAAgC,EAAE,CAAC;gBAEhD,IAAI,CAAC,WAAW,CAAC,sBAAsB,GAAG,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC;gBAC5D,IAAI,CAAC,WAAW,CAAC,uBAAuB,GAAG,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC;gBAC7D,IAAI,CAAC,sBAAsB,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;aACtC;iBAAM;gBACL,IAAI,CAAC,WAAW,CAAC,sBAAsB,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;gBAExF,IAAI,IAAI,CAAC,WAAW,CAAC,mBAAmB,IAAI,6DAAsB,CAAC,SAAS,EAAE;oBAC5E,IAAI,CAAC,4BAA4B,CAAC,IAAI,CAAC,CAAC;iBACzC;aACF;YAED,IAAI,CAAC,gBAAgB,EAAE,CAAC;SACzB;aAAM;YACL,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC;SACpD;IACH,CAAC;IAED,yBAAyB;QACvB,IAAI,IAAI,CAAC,kBAAkB,GAAG,CAAC,KAAK,CAAC;YACnC,IAAI,CAAC,kBAAkB,IAAI,IAAI,CAAC,QAAQ;YACxC,IAAI,CAAC,kBAAkB,GAAG,CAAC;YAC3B,CAAC,4EAAc,CAAC,IAAI,CAAC,kBAAkB,CAAC,EAAE;YAC1C,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,WAAW,CAAC,iBAAiB,CAAC;SAC9D;aAAM;YACL,IAAI,CAAC,WAAW,CAAC,iBAAiB,GAAG,IAAI,CAAC,kBAAkB,CAAC;YAC7D,IAAI,IAAI,CAAC,WAAW,CAAC,iBAAiB,GAAG,IAAI,CAAC,WAAW,CAAC,sBAAsB,GAAG,IAAI,CAAC,QAAQ,EAAE;gBAChG,IAAI,CAAC,WAAW,CAAC,sBAAsB,GAAG,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC,iBAAiB,CAAC;aAC9F;YAED,IAAI,CAAC,gBAAgB,EAAE,CAAC;SACzB;IACH,CAAC;IAED,8BAA8B;QAC5B,QAAQ,IAAI,CAAC,WAAW,CAAC,mBAAmB,EAAE;YAC5C,KAAK,6DAAsB,CAAC,SAAS;gBACnC,IAAI,IAAI,CAAC,uBAAuB,GAAG,CAAC,KAAK,CAAC;oBACxC,IAAI,CAAC,uBAAuB,GAAG,IAAI,CAAC,QAAQ;oBAC5C,IAAI,CAAC,uBAAuB,GAAG,CAAC,EAAE;oBAClC,IAAI,CAAC,uBAAuB,GAAG,IAAI,CAAC,WAAW,CAAC,sBAAsB,CAAC;iBACxE;qBAAM;oBACL,IAAI,CAAC,WAAW,CAAC,sBAAsB,GAAG,IAAI,CAAC,uBAAuB,CAAC;oBACvE,IAAI,IAAI,CAAC,WAAW,CAAC,sBAAsB,GAAG,IAAI,CAAC,WAAW,CAAC,iBAAiB,GAAG,IAAI,CAAC,QAAQ,EAAE;wBAChG,IAAI,CAAC,WAAW,CAAC,iBAAiB,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC,sBAAsB,CAAC,CAAC;qBAC1G;oBACD,IAAI,CAAC,gBAAgB,EAAE,CAAC;iBACzB;gBACD,MAAM;YACR,KAAK,6DAAsB,CAAC,YAAY;gBACtC,IAAI,IAAI,CAAC,uBAAuB,GAAG,CAAC,KAAK,CAAC;oBACxC,IAAI,CAAC,uBAAuB,GAAG,IAAI,CAAC,QAAQ;oBAC5C,IAAI,CAAC,uBAAuB,IAAI,CAAC,EAAE;oBACnC,IAAI,CAAC,uBAAuB,GAAG,IAAI,CAAC,WAAW,CAAC,sBAAsB,CAAC;iBACxE;qBAAM;oBACL,IAAI,CAAC,WAAW,CAAC,sBAAsB,GAAG,IAAI,CAAC,uBAAuB,CAAC;oBACvE,IAAI,CAAC,WAAW,CAAC,iBAAiB,GAAG,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC,sBAAsB,CAAC;oBAC7F,IAAI,CAAC,gBAAgB,EAAE,CAAC;iBACzB;gBACD,MAAM;YACR,KAAK,6DAAsB,CAAC,kBAAkB,CAAC;YAC/C,KAAK,6DAAsB,CAAC,mBAAmB;gBAC7C,IAAI,IAAI,CAAC,uBAAuB,GAAG,CAAC,KAAK,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,uBAAuB,GAAG,CAAC,CAAC;oBACnF,IAAI,CAAC,uBAAuB,IAAI,IAAI,CAAC,WAAW,CAAC,sBAAsB;oBACvE,IAAI,CAAC,uBAAuB,GAAG,IAAI,CAAC,QAAQ;oBAC5C,IAAI,CAAC,uBAAuB,GAAG,CAAC,EAAE;oBAClC,IAAI,CAAC,uBAAuB,GAAG,IAAI,CAAC,WAAW,CAAC,sBAAsB,CAAC;iBACxE;qBAAM;oBACL,IAAI,CAAC,WAAW,CAAC,sBAAsB,GAAG,IAAI,CAAC,uBAAuB,CAAC;oBACvE,IAAI,CAAC,gBAAgB,EAAE,CAAC;iBACzB;gBACD,MAAM;YACR;gBACE,MAAM;SACT;IACH,CAAC;IAED,+BAA+B;QAC7B,IAAI,IAAI,CAAC,wBAAwB,GAAG,CAAC,KAAK,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,wBAAwB,GAAG,CAAC,CAAC;YACrF,IAAI,CAAC,wBAAwB,IAAI,IAAI,CAAC,WAAW,CAAC,uBAAuB;YACzE,IAAI,CAAC,wBAAwB,GAAG,IAAI,CAAC,QAAQ;YAC7C,IAAI,CAAC,wBAAwB,GAAG,CAAC,EAAE;YACnC,IAAI,CAAC,wBAAwB,GAAG,IAAI,CAAC,WAAW,CAAC,uBAAuB,CAAC;SAC1E;aAAM;YACL,IAAI,CAAC,WAAW,CAAC,uBAAuB,GAAG,IAAI,CAAC,wBAAwB,CAAC;YACzE,IAAI,CAAC,gBAAgB,EAAE,CAAC;SACzB;IACH,CAAC;IAED,4BAA4B;QAC1B,IAAI,MAAM,GAAG,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC;QAErE,IAAI,CAAC,MAAM,EAAE;YACX,IAAI,CAAC,qBAAqB,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,uBAAuB,CAAC,GAAG,GAAG,GAAG,IAAI,CAAC,uBAAuB,CAAC;YAC3G,OAAO;SACR;QAED,IAAI,IAAI,GAAG,MAAM,GAAG,EAAE,CAAC;QACvB,IAAI,IAAI,IAAI,IAAI,CAAC,WAAW,CAAC,mBAAmB;YAC9C,IAAI,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,aAAa,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,oBAAoB,CAAC,QAAQ,GAAG,GAAG;YACtF,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,YAAY,GAAG,EAAE;YACzC,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,eAAe,GAAG,EAAE,EAAE;YAC9C,IAAI,CAAC,qBAAqB,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,uBAAuB,CAAC,GAAG,GAAG,GAAG,IAAI,CAAC,uBAAuB,CAAC;YAC3G,OAAO;SACR;QAED,IAAI,CAAC,WAAW,CAAC,mBAAmB,GAAG,IAAI,CAAC;QAE5C,IAAI,CAAC,gBAAgB,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IACrC,CAAC;IAED,0BAA0B;QACxB,IAAI,MAAM,GAAG,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;QAEnE,IAAI,MAAM,IAAI,IAAI,EAAE;YAClB,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,kBAAkB,CAAC,GAAG,GAAG,GAAG,IAAI,CAAC,kBAAkB,CAAC;YAC/F,OAAO;SACR;QAED,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,EAAE,CAAC,KAAK,MAAM,GAAG,EAAE,EAAE;YAC9C,MAAM,GAAG,MAAM,GAAG,CAAC,CAAC;SACrB;QAED,IAAI,IAAI,GAAG,MAAM,GAAG,EAAE,CAAC;QAEvB,IAAI,IAAI,IAAI,IAAI,CAAC,WAAW,CAAC,iBAAiB;YAC5C,IAAI,GAAG,IAAI,CAAC,QAAQ,GAAG,CAAC,EAAE,GAAG,EAAE,CAAC;YAChC,IAAI,GAAG,CAAC,EAAE;YACV,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,kBAAkB,CAAC,GAAG,GAAG,GAAG,IAAI,CAAC,kBAAkB,CAAC;YAC/F,OAAO;SACR;QAED,IAAI,CAAC,WAAW,CAAC,iBAAiB,GAAG,IAAI,CAAC;QAE1C,IAAI,IAAI,CAAC,WAAW,CAAC,iBAAiB,GAAG,IAAI,CAAC,WAAW,CAAC,sBAAsB,GAAG,IAAI,CAAC,QAAQ,EAAE;YAChG,IAAI,CAAC,WAAW,CAAC,sBAAsB,GAAG,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC,iBAAiB,CAAC;YAE7F,IAAI,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,sBAAsB,GAAG,EAAE,GAAG,GAAG,CAAC,CAAC;YAC5E,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,EAAE,CAAC,KAAK,MAAM,GAAG,EAAE,EAAE;gBAC9C,MAAM,GAAG,MAAM,GAAG,CAAC,CAAC;aACrB;YAED,IAAI,MAAM,GAAG,EAAE,EAAE;gBACf,MAAM,GAAG,EAAE,CAAC;aACb;YAED,IAAI,CAAC,WAAW,CAAC,sBAAsB,GAAG,MAAM,GAAG,EAAE,CAAC;SACvD;QAED,IAAI,CAAC,gBAAgB,EAAE,CAAC;IAC1B,CAAC;IAED,+BAA+B;QAC7B,IAAI,MAAM,GAAG,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC;QAExE,IAAI,MAAM,IAAI,IAAI,EAAE;YAClB,IAAI,CAAC,wBAAwB,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,uBAAuB,CAAC,GAAG,GAAG,GAAG,IAAI,CAAC,uBAAuB,CAAC;YAC9G,OAAO;SACR;QAED,IAAI,IAAI,CAAC,WAAW,CAAC,mBAAmB,IAAI,6DAAsB,CAAC,YAAY,EAAE;YAC/E,IAAI,MAAM,GAAG,IAAI,CAAC,QAAQ,EAAE;gBAC1B,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;aACpC;SACF;aAAM,IAAI,IAAI,CAAC,WAAW,CAAC,mBAAmB,IAAI,6DAAsB,CAAC,kBAAkB,EAAE;YAC5F,IAAI,MAAM,GAAG,IAAI,CAAC,QAAQ,EAAE;gBAC1B,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;aACpC;SACF;aAAM,IAAI,IAAI,CAAC,WAAW,CAAC,mBAAmB,IAAI,6DAAsB,CAAC,mBAAmB,EAAE;YAC7F,IAAI,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC,EAAE;gBAC3C,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC,CAAC;aACzC;SACF;QAED,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,EAAE,CAAC,KAAK,MAAM,GAAG,EAAE,EAAE;YAC9C,MAAM,GAAG,MAAM,GAAG,CAAC,CAAC;SACrB;QAED,IAAI,IAAI,CAAC,WAAW,CAAC,mBAAmB,IAAI,6DAAsB,CAAC,SAAS,EAAE;YAC5E,IAAI,MAAM,GAAG,EAAE,EAAE;gBACf,MAAM,GAAG,EAAE,CAAC;aACb;SACF;QAED,IAAI,IAAI,CAAC,WAAW,CAAC,mBAAmB,IAAI,6DAAsB,CAAC,SAAS,EAAE;YAC5E,IAAI,IAAI,GAAG,MAAM,GAAG,EAAE,CAAC;YACvB,IAAI,IAAI,IAAI,IAAI,CAAC,WAAW,CAAC,sBAAsB;gBACjD,IAAI,GAAG,IAAI,CAAC,QAAQ;gBACpB,MAAM,GAAG,EAAE,EAAE;gBACb,IAAI,CAAC,wBAAwB,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,uBAAuB,CAAC,GAAG,GAAG,GAAG,IAAI,CAAC,uBAAuB,CAAC;gBAC9G,OAAO;aACR;YAED,IAAI,CAAC,WAAW,CAAC,sBAAsB,GAAG,IAAI,CAAC;YAE/C,IAAI,IAAI,CAAC,WAAW,CAAC,iBAAiB,GAAG,IAAI,CAAC,WAAW,CAAC,sBAAsB,GAAG,IAAI,CAAC,QAAQ,EAAE;gBAChG,IAAI,CAAC,WAAW,CAAC,iBAAiB,GAAG,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC,sBAAsB,CAAC;gBAC7F,IAAI,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,iBAAiB,GAAG,EAAE,GAAG,GAAG,CAAC,CAAC;gBACvE,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,EAAE,CAAC,KAAK,MAAM,GAAG,EAAE,EAAE;oBAC9C,MAAM,GAAG,MAAM,GAAG,CAAC,CAAC;iBACrB;gBAED,IAAI,MAAM,GAAG,CAAC,EAAE;oBACd,MAAM,GAAG,CAAC,CAAC;iBACZ;gBAED,IAAI,CAAC,WAAW,CAAC,iBAAiB,GAAG,MAAM,GAAG,EAAE,CAAC;aAClD;SACF;QAED,IAAI,IAAI,CAAC,WAAW,CAAC,mBAAmB,IAAI,6DAAsB,CAAC,SAAS,EAAE;YAC5E,IAAI,IAAI,GAAG,MAAM,GAAG,EAAE,CAAC;YAEvB,IAAI,IAAI,IAAI,IAAI,CAAC,WAAW,CAAC,sBAAsB,EAAE;gBACnD,IAAI,CAAC,wBAAwB,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,uBAAuB,CAAC,GAAG,GAAG,GAAG,IAAI,CAAC,uBAAuB,CAAC;gBAC9G,OAAO;aACR;YAED,IAAI,CAAC,WAAW,CAAC,sBAAsB,GAAG,IAAI,CAAC;SAChD;QAED,IAAI,CAAC,gBAAgB,EAAE,CAAC;IAC1B,CAAC;IAED,gCAAgC;QAC9B,IAAI,MAAM,GAAG,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC;QAEzE,IAAI,CAAC,MAAM,EAAE;YACX,IAAI,CAAC,yBAAyB,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,wBAAwB,CAAC,GAAG,GAAG,GAAG,IAAI,CAAC,wBAAwB,CAAC;YACjH,OAAO;SACR;QAED,IAAI,IAAI,CAAC,WAAW,CAAC,mBAAmB,IAAI,6DAAsB,CAAC,SAAS,EAAE;YAC5E,IAAI,MAAM,GAAG,IAAI,CAAC,QAAQ,GAAG,EAAE,EAAE;gBAC/B,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC,CAAC;aACzC;SACF;QAED,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,EAAE,CAAC,KAAK,MAAM,GAAG,EAAE,EAAE;YAC9C,MAAM,GAAG,MAAM,GAAG,CAAC,CAAC;SACrB;QAED,IAAI,IAAI,GAAG,MAAM,GAAG,EAAE,CAAC;QAEvB,IAAI,IAAI,IAAI,IAAI,CAAC,WAAW,CAAC,uBAAuB,EAAE;YACpD,IAAI,CAAC,yBAAyB,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,wBAAwB,CAAC,GAAG,GAAG,GAAG,IAAI,CAAC,wBAAwB,CAAC;YACjH,OAAO;SACR;QAED,IAAI,CAAC,WAAW,CAAC,uBAAuB,GAAG,IAAI,CAAC;QAEhD,IAAI,CAAC,gBAAgB,EAAE,CAAC;IAC1B,CAAC;IAED,0BAA0B;QACxB,IAAI,SAAS,GAAG,IAAI,CAAC,WAAW,CAAC,mBAAmB,IAAI,6DAAsB,CAAC,mBAAmB,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC;QAE/G,IAAI,IAAI,CAAC,mBAAmB,GAAG,CAAC;YAC9B,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC,oBAAoB,CAAC,UAAU,GAAG,SAAS,EAAE;YAC7E,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC,WAAW,CAAC,kBAAkB,CAAC;YAC/D,OAAO;SACR;QAED,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,mBAAmB,GAAG,EAAE,GAAG,GAAG,CAAC,GAAG,EAAE;QAC/E,IAAI,CAAC,WAAW,CAAC,kBAAkB,GAAG,IAAI,CAAC,mBAAmB,CAAC;QAE/D,IAAI,IAAI,CAAC,WAAW,CAAC,WAAW,GAAG,CAAC,EAAE;YACpC,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,GAAG,EAAE,GAAG,GAAG,CAAC,GAAG,EAAE,CAAC;YAClH,IAAI,CAAC,WAAW,CAAC,mBAAmB,GAAG,IAAI,CAAC,oBAAoB,CAAC;SAClE;QAED,IAAI,IAAI,CAAC,WAAW,CAAC,mBAAmB,IAAI,6DAAsB,CAAC,mBAAmB,EAAE;YACtF,IAAI,CAAC,WAAW,CAAC,sBAAsB,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;YAExF,IAAI,CAAC,gBAAgB,EAAE,CAAC;SACzB;aAAM;YACL,IAAI,CAAC,YAAY,EAAE,CAAC;YACpB,IAAI,CAAC,UAAU,CAAC,oBAAoB,EAAE,CAAC;SACxC;IACH,CAAC;IAED,0BAA0B;QACxB,IAAI,IAAI,CAAC,oBAAoB,GAAG,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC,WAAW;YAC9D,IAAI,CAAC,oBAAoB,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,WAAW,GAAG,CAAC,CAAC,IAAI,IAAI,CAAC,WAAW,CAAC,kBAAkB,EAAE;YACvG,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC,WAAW,CAAC,mBAAmB,CAAC;YACjE,OAAO;SACR;QAED,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,oBAAoB,GAAG,EAAE,GAAG,GAAG,CAAC,GAAG,EAAE,CAAC;QAClF,IAAI,CAAC,WAAW,CAAC,mBAAmB,GAAG,IAAI,CAAC,oBAAoB,CAAC;QAEjE,IAAI,IAAI,CAAC,WAAW,CAAC,mBAAmB,IAAI,6DAAsB,CAAC,mBAAmB,EAAE;YACtF,IAAI,CAAC,WAAW,CAAC,sBAAsB,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;YACxF,IAAI,CAAC,gBAAgB,EAAE,CAAC;SACzB;aAAM;YACL,IAAI,CAAC,YAAY,EAAE,CAAC;YACpB,IAAI,CAAC,UAAU,CAAC,oBAAoB,EAAE,CAAC;SACxC;IACH,CAAC;IAIO,wBAAwB;QAC9B,IAAI,CAAC,WAAW,CAAC,WAAW,GAAG,CAAC,CAAC;QACjC,IAAI,CAAC,gBAAgB,EAAE,CAAC;QACxB,IAAI,CAAC,iBAAiB,EAAE,CAAC;QACzB,IAAI,CAAC,gBAAgB,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;IAC1C,CAAC;IAEO,iBAAiB;QACvB,aAAa;QACb,IAAI,IAAI,CAAC,oBAAoB,CAAC,WAAW,IAAI,CAAC;YAC5C,IAAI,CAAC,oBAAoB,CAAC,UAAU,IAAI,CAAC,EAAE;YAC3C,IAAI,CAAC,WAAW,CAAC,mBAAmB,GAAG,6DAAsB,CAAC,SAAS,CAAC;SACzE;aAAM,IAAI,IAAI,CAAC,oBAAoB,CAAC,WAAW,IAAI,CAAC;YACnD,IAAI,CAAC,oBAAoB,CAAC,UAAU,GAAG,CAAC,EAAE;YAC1C,WAAW;YACX,IAAI,CAAC,WAAW,CAAC,mBAAmB,GAAG,6DAAsB,CAAC,YAAY,CAAC;SAC5E;aAAM,IAAI,IAAI,CAAC,oBAAoB,CAAC,WAAW,GAAG,CAAC;YAClD,IAAI,CAAC,oBAAoB,CAAC,UAAU,IAAI,oEAA6B,CAAC,OAAO,EAAE;YAC/E,WAAW;YACX,IAAI,CAAC,WAAW,CAAC,mBAAmB,GAAG,6DAAsB,CAAC,kBAAkB,CAAC;SAClF;aAAM,IAAI,IAAI,CAAC,oBAAoB,CAAC,WAAW,GAAG,CAAC;YAClD,IAAI,CAAC,oBAAoB,CAAC,UAAU,IAAI,oEAA6B,CAAC,QAAQ,EAAE;YAChF,WAAW;YACX,IAAI,CAAC,WAAW,CAAC,mBAAmB,GAAG,6DAAsB,CAAC,mBAAmB,CAAC;SACnF;IACH,CAAC;IAEO,UAAU;QAChB,IAAI,IAAI,CAAC,iBAAiB,CAAC,QAAQ,IAAI,sDAAe,CAAC,aAAa,EAAE;YACpE,IAAI,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,IAAI,IAAI,CAAC,iBAAiB,CAAC,YAAY,CAAC,CAAC;YACvF,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC;SACxC;aAAM;YACL,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;SACtB;IACH,CAAC;IAEO,YAAY;QAClB,IAAI,CAAC,iBAAiB,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC;QAClE,IAAI,CAAC,iBAAiB,CAAC,kBAAkB,GAAG,IAAI,CAAC,WAAW,CAAC,kBAAkB,CAAC;QAChF,IAAI,CAAC,iBAAiB,CAAC,mBAAmB,GAAG,IAAI,CAAC,WAAW,CAAC,mBAAmB,CAAC;QAClF,IAAI,CAAC,iBAAiB,CAAC,sBAAsB,GAAG,IAAI,CAAC,WAAW,CAAC,sBAAsB,CAAC;QACxF,IAAI,CAAC,iBAAiB,CAAC,sBAAsB,GAAG,IAAI,CAAC,WAAW,CAAC,sBAAsB,CAAC;QACxF,IAAI,CAAC,iBAAiB,CAAC,eAAe,GAAG,IAAI,CAAC,WAAW,CAAC,eAAe,CAAC;QAC1E,IAAI,CAAC,iBAAiB,CAAC,YAAY,GAAG,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC;QACpE,IAAI,CAAC,iBAAiB,CAAC,iBAAiB,GAAG,IAAI,CAAC,WAAW,CAAC,iBAAiB,CAAC;QAC9E,IAAI,CAAC,iBAAiB,CAAC,iBAAiB,GAAG,IAAI,CAAC,WAAW,CAAC,iBAAiB,CAAC;QAC9E,IAAI,CAAC,iBAAiB,CAAC,sBAAsB,GAAG,IAAI,CAAC,WAAW,CAAC,sBAAsB,CAAC;QACxF,IAAI,CAAC,iBAAiB,CAAC,sBAAsB,GAAG,IAAI,CAAC,WAAW,CAAC,sBAAsB,CAAC;QACxF,IAAI,CAAC,iBAAiB,CAAC,uBAAuB,GAAG,IAAI,CAAC,WAAW,CAAC,uBAAuB,CAAC;QAC1F,IAAI,CAAC,iBAAiB,CAAC,uBAAuB,GAAG,IAAI,CAAC,WAAW,CAAC,uBAAuB,CAAC;QAC1F,IAAI,CAAC,iBAAiB,CAAC,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC;QAE5D,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;QAC1D,IAAI,CAAC,kBAAkB,CAAC,IAAI,EAAE,CAAC;IACjC,CAAC;IAEO,gBAAgB,CACtB,iBAA0B,KAAK,EAC/B,oBAA6B,IAAI,EACjC,mBAA4B,KAAK,EACjC,YAAqB,KAAK;QAE1B,QAAQ,IAAI,CAAC,WAAW,CAAC,mBAAmB,EAAE;YAC5C,KAAK,6DAAsB,CAAC,SAAS;gBACnC,IAAI,CAAC,qBAAqB,CAAC,cAAc,EAAE,iBAAiB,CAAC,CAAC;gBAC9D,MAAM;YACR,KAAK,6DAAsB,CAAC,YAAY;gBACtC,IAAI,CAAC,wBAAwB,CAAC,cAAc,CAAC,CAAC;gBAC9C,MAAM;YACR,KAAK,6DAAsB,CAAC,kBAAkB;gBAC5C,IAAI,CAAC,+BAA+B,CAAC,cAAc,CAAC,CAAC;gBACrD,MAAM;YACR,KAAK,6DAAsB,CAAC,mBAAmB;gBAC7C,IAAI,CAAC,gCAAgC,CAAC,cAAc,CAAC,CAAC;gBACtD,MAAM;YACR;gBACE,MAAM;SACT;QAED,IAAI,CAAC,WAAW,EAAE,CAAC;QAEnB,IAAI,CAAC,SAAS,EAAE;YACd,IAAI,CAAC,YAAY,EAAE,CAAC;SACrB;QAED,IAAI,CAAC,gBAAgB,EAAE;YACrB,IAAI,CAAC,UAAU,CAAC,oBAAoB,EAAE,CAAC;SACxC;IACH,CAAC;IAEO,WAAW;QACjB,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC;QACjD,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,kBAAkB,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC;QACvF,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC,WAAW,CAAC,mBAAmB,CAAC,QAAQ,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;YACtF,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,mBAAmB,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,mBAAmB,CAAC,CAAC;QACzG,IAAI,CAAC,uBAAuB,GAAG,IAAI,CAAC,WAAW,CAAC,sBAAsB,CAAC;QACvE,IAAI,CAAC,uBAAuB,GAAG,IAAI,CAAC,WAAW,CAAC,sBAAsB,CAAC;QACvE,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,WAAW,CAAC,eAAe,CAAC;QACzD,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC;QACnD,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,WAAW,CAAC,iBAAiB,CAAC;QAC7D,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,WAAW,CAAC,iBAAiB,CAAC;QAC7D,IAAI,CAAC,uBAAuB,GAAG,IAAI,CAAC,WAAW,CAAC,sBAAsB,CAAC;QACvE,IAAI,CAAC,uBAAuB,GAAG,IAAI,CAAC,WAAW,CAAC,sBAAsB,CAAC;QACvE,IAAI,CAAC,wBAAwB,GAAG,IAAI,CAAC,WAAW,CAAC,uBAAuB,CAAC;QACzE,IAAI,CAAC,wBAAwB,GAAG,IAAI,CAAC,WAAW,CAAC,uBAAuB,CAAC;QACzE,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,QAAQ,CAAC;QAC5D,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,OAAO,CAAC;QAC1D,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,QAAQ,CAAC;QAC5D,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,OAAO,CAAC;QAC1D,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC;QAC3C,IAAI,CAAC,qBAAqB,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,uBAAuB,CAAC,GAAG,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC;QACvH,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,kBAAkB,CAAC,GAAG,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;QAC3G,IAAI,CAAC,wBAAwB,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,uBAAuB,CAAC,GAAG,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC;QAC1H,IAAI,CAAC,yBAAyB,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,wBAAwB,CAAC,GAAG,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC;IAC/H,CAAC;IAEO,qBAAqB,CAAC,cAAuB,EACnD,kBAA2B;QAC3B,IAAI,CAAC,WAAW,CAAC,aAAa,GAAG,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC;QAC9D,IAAI,cAAc,IAAI,kBAAkB,EAAE;YACxC,IAAI,CAAC,WAAW,CAAC,mBAAmB,GAAG,IAAI,CAAC,oBAAoB,CAAC,QAAQ,GAAG,CAAC,CAAC;YAE9E,IAAI,IAAI,CAAC,WAAW,CAAC,mBAAmB,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,WAAW,GAAG,CAAC,CAAC;gBAC3E,IAAI,GAAG,IAAI,CAAC,oBAAoB,CAAC,QAAQ,EAAE;gBAC3C,IAAI,CAAC,WAAW,CAAC,mBAAmB,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC,oBAAoB,CAAC,QAAQ,CAAC;oBAChF,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC;aAChC;YAED,IAAI,CAAC,WAAW,CAAC,mBAAmB,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,mBAAmB,GAAG,EAAE,CAAC,GAAG,EAAE,CAAC;SACnG;QAED,IAAI,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,mBAAmB,GAAG,EAAE,GAAG,GAAG,CAAC,CAAC;QAEzE,IAAI,CAAC,WAAW,CAAC,sBAAsB,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC;QAClE,IAAI,CAAC,WAAW,CAAC,sBAAsB,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC;QAE7F,IAAI,MAAc,CAAC;QACnB,IAAI,cAAc,EAAE;YAClB,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YACrD,IAAI,CAAC,WAAW,CAAC,eAAe,GAAG,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC;YAEjE,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;SACxD;QAED,IAAI,IAAI,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,mBAAmB,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,aAAa,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;QAE7F,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,oBAAoB,CAAC,QAAQ,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;QAC1F,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACzC,IAAI,CAAC,QAAQ,GAAG,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC;QAElC,IAAI,IAAI,CAAC,oBAAoB,CAAC,SAAS,GAAG,CAAC,EAAE;YAC3C,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,eAAe,GAAG,EAAE,CAAC,CAAC;SACzE;QAED,IAAI,cAAc,EAAE;YAClB,IAAI,CAAC,WAAW,CAAC,sBAAsB,GAAG,MAAM,CAAC;SAClD;QAED,IAAI,CAAC,4BAA4B,CAAC,cAAc,CAAC,CAAC;QAClD,IAAI,CAAC,gBAAgB,EAAE,CAAC;IAC1B,CAAC;IAEO,wBAAwB,CAAC,iBAA0B,KAAK;QAC9D,IAAI,CAAC,WAAW,CAAC,aAAa,GAAG,IAAI,CAAC,oBAAoB,CAAC,UAAU,GAAG,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC;QAErG,IAAI,cAAc,EAAE;YAClB,IAAI,CAAC,WAAW,CAAC,kBAAkB,GAAG,GAAG,GAAG,IAAI,CAAC,oBAAoB,CAAC,UAAU,CAAC;YACjF,IAAI,CAAC,WAAW,CAAC,mBAAmB,GAAG,IAAI,CAAC,WAAW,CAAC,kBAAkB,GAAG,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC;YAE1G,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YAErD,IAAI,CAAC,WAAW,CAAC,eAAe,GAAG,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC;SAClE;QAED,IAAI,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;QAE3D,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,oBAAoB,CAAC,QAAQ,GAAG,CAAC,CAAC;QAEvD,IAAI,IAAI,CAAC,oBAAoB,CAAC,SAAS,GAAG,CAAC,EAAE;YAC3C,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,eAAe,GAAG,EAAE,CAAC;SACxE;QAED,IAAI,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC;QAC5B,IAAI,CAAC,GAAG,MAAM,GAAG,OAAO,CAAC;QAEzB,IAAI,cAAc,EAAE;YAClB,IAAI,CAAC,WAAW,CAAC,sBAAsB,GAAG,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC;SAC7D;QAED,IAAI,IAAI,CAAC,WAAW,CAAC,QAAQ,IAAI,sDAAe,CAAC,aAAa,EAAE;YAC9D,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YAE1C,IAAI,IAAI,CAAC,QAAQ,GAAG,CAAC,KAAK,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC,EAAE;gBACvD,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC;aACnC;YAED,IAAI,IAAI,CAAC,QAAQ,GAAG,CAAC,EAAE;gBACrB,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC;aACnB;YAED,IAAI,CAAC,WAAW,CAAC,sBAAsB,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAC7D,IAAI,CAAC,WAAW,CAAC,sBAAsB,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;YAEnD,IAAI,IAAI,CAAC,WAAW,CAAC,sBAAsB,GAAG,CAAC,KAAK,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,sBAAsB,GAAG,CAAC,CAAC,EAAE;gBAC3G,IAAI,CAAC,WAAW,CAAC,sBAAsB,GAAG,IAAI,CAAC,WAAW,CAAC,sBAAsB,GAAG,CAAC,CAAC;aACvF;YAED,IAAI,cAAc,EAAE;gBAClB,IAAI,IAAI,CAAC,WAAW,CAAC,sBAAsB,GAAG,CAAC,GAAG,IAAI,CAAC,QAAQ,EAAE;oBAC/D,IAAI,CAAC,WAAW,CAAC,sBAAsB,GAAG,IAAI,CAAC,WAAW,CAAC,sBAAsB,GAAG,CAAC,CAAC;iBACvF;aACF;YACD,IAAI,IAAI,CAAC,WAAW,CAAC,sBAAsB,GAAG,IAAI,CAAC,QAAQ,EAAE;gBAC3D,IAAI,CAAC,WAAW,CAAC,sBAAsB,GAAG,IAAI,CAAC,QAAQ,CAAC;aACzD;YAED,IAAI,IAAI,CAAC,WAAW,CAAC,sBAAsB,GAAG,CAAC,EAAE;gBAC/C,IAAI,CAAC,WAAW,CAAC,sBAAsB,GAAG,CAAC,CAAC;aAC7C;SACF;aAAM;YACL,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC,CAAC;YAE/C,OAAO,IAAI,CAAC,QAAQ,GAAG,EAAE,KAAK,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC,EAAE;gBAC5D,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC;gBAClC,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;aAC3C;YAED,IAAI,IAAI,CAAC,QAAQ,GAAG,EAAE,EAAE;gBACtB,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC;aACpB;YAED,IAAI,CAAC,WAAW,CAAC,sBAAsB,GAAG,IAAI,CAAC,WAAW,CAAC,sBAAsB,GAAG,EAAE,CAAC;YAEvF,IAAI,IAAI,CAAC,WAAW,CAAC,sBAAsB,GAAG,IAAI,CAAC,QAAQ,EAAE;gBAC3D,IAAI,CAAC,WAAW,CAAC,sBAAsB,GAAG,IAAI,CAAC,QAAQ,CAAC;aACzD;YAED,IAAI,CAAC,WAAW,CAAC,sBAAsB,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,sBAAsB,CAAC,CAAC;YAE9F,OAAO,IAAI,CAAC,WAAW,CAAC,sBAAsB,GAAG,EAAE,KAAK,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,sBAAsB,GAAG,EAAE,CAAC,EAAE;gBAChH,IAAI,CAAC,WAAW,CAAC,sBAAsB,GAAG,IAAI,CAAC,WAAW,CAAC,sBAAsB,GAAG,CAAC,CAAC;gBACtF,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,sBAAsB,CAAC,CAAC;aACrD;YAED,IAAI,IAAI,CAAC,WAAW,CAAC,sBAAsB,GAAG,EAAE,EAAE;gBAChD,IAAI,CAAC,WAAW,CAAC,sBAAsB,GAAG,EAAE,CAAC;aAC9C;YAED,IAAI,CAAC,WAAW,CAAC,sBAAsB,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,sBAAsB;gBAC1F,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,sBAAsB,GAAG,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC;YAElE,IAAI,CAAC,WAAW,CAAC,sBAAsB,GAAG,IAAI,CAAC,WAAW,CAAC,sBAAsB,GAAG,EAAE,CAAC;SACxF;QACD,IAAI,CAAC,WAAW,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;QAE1C,IAAI,CAAC,8BAA8B,GAAG,GAAG,CAAC;QAC1C,IAAI,CAAC,GAAG,IAAI,CAAC,oBAAoB,CAAC,QAAQ,GAAG,CAAC,CAAC;QAC/C,IAAI,CAAC,wBAAwB,GAAG,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC,sBAAsB,GAAG,EAAE,CAAC;QACjF,IAAI,IAAI,CAAC,wBAAwB,GAAG,CAAC,EAAE;YACrC,IAAI,CAAC,wBAAwB,GAAG,CAAC,CAAC;SACnC;QACD,IAAI,CAAC,4BAA4B,GAAG,4DAAoB,CAAC,yBAAyB,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC;QAClH,IAAI,CAAC,WAAW,CAAC,uBAAuB,GAAG,IAAI,CAAC,wBAAwB,CAAC;QACzE,IAAI,CAAC,WAAW,CAAC,6BAA6B,GAAG,IAAI,CAAC,8BAA8B,CAAC;QAErF,IAAI,CAAC,gBAAgB,EAAE,CAAC;IAC1B,CAAC;IAEO,+BAA+B,CAAC,iBAA0B,KAAK;QACrE,IAAI,CAAC,WAAW,CAAC,aAAa,GAAG,IAAI,CAAC,oBAAoB,CAAC,UAAU,GAAG,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC;QAErG,IAAI,cAAc,EAAE;YAClB,IAAI,CAAC,WAAW,CAAC,kBAAkB,GAAG,GAAG,GAAG,IAAI,CAAC,oBAAoB,CAAC,UAAU,CAAC;YACjF,IAAI,CAAC,WAAW,CAAC,mBAAmB,GAAG,IAAI,CAAC,WAAW,CAAC,kBAAkB,GAAG,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC;YAE1G,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YAErD,IAAI,CAAC,WAAW,CAAC,eAAe,GAAG,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC;SAClE;QAED,IAAI,YAAY,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,oBAAoB,CAAC,WAAW,GAAG,IAAI,CAAC,EAAE,GAAG,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,oBAAoB,CAAC,QAAQ,GAAG,CAAC,GAAG,IAAI,CAAC,oBAAoB,CAAC,KAAK,CAAC,CAAC;YAC/J,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,oBAAoB,CAAC,WAAW,GAAG,IAAI,CAAC,EAAE,GAAG,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,oBAAoB,CAAC,cAAc,GAAG,CAAC,CAAC,CAAC,CAAC;QAErH,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,oBAAoB,CAAC,QAAQ,GAAG,CAAC,CAAC;YACrG,IAAI,CAAC,oBAAoB,CAAC,KAAK,GAAG,CAAC,IAAI,CAAC,oBAAoB,CAAC,cAAc,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QACxF,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,oBAAoB,CAAC,KAAK,CAAC;QAEhD,IAAI,IAAI,CAAC,oBAAoB,CAAC,SAAS,GAAG,CAAC,EAAE;YAC3C,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,eAAe,GAAG,EAAE,CAAC,CAAC;SACzE;QAED,IAAI,CAAC,GAAG,IAAI,CAAC,gCAAgC,EAAE,CAAC;QAEhD,IAAI,cAAc,EAAE;YAClB,IAAI,CAAC,WAAW,CAAC,sBAAsB,GAAG,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC;YAC5D,IAAI,CAAC,WAAW,CAAC,uBAAuB,GAAG,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC;SAC9D;QAED,IAAI,IAAI,CAAC,WAAW,CAAC,QAAQ,IAAI,sDAAe,CAAC,aAAa,EAAE;YAC9D,IAAI,CAAC,sBAAsB,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC;SAChD;aAAM;YACL,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC,CAAC;YAE/C,OAAO,IAAI,CAAC,QAAQ,GAAG,EAAE,KAAK,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC,EAAE;gBAC5D,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC;gBAClC,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;aAC3C;YAED,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC,CAAC;YAE/C,OAAO,IAAI,CAAC,QAAQ,GAAG,EAAE,KAAK,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC,EAAE;gBAC5D,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC;gBAClC,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;aAC3C;YAED,IAAI,IAAI,CAAC,QAAQ,GAAG,CAAC,EAAE;gBACrB,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC;aACnB;YAED,IAAI,IAAI,CAAC,QAAQ,GAAG,EAAE,EAAE;gBACtB,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC;aACpB;YAED,IAAI,CAAC,WAAW,CAAC,uBAAuB,GAAG,IAAI,CAAC,WAAW,CAAC,uBAAuB,GAAG,EAAE,CAAC;YACzF,IAAI,IAAI,CAAC,WAAW,CAAC,uBAAuB,GAAG,IAAI,CAAC,QAAQ,EAAE;gBAC5D,IAAI,CAAC,WAAW,CAAC,uBAAuB,GAAG,IAAI,CAAC,QAAQ,CAAC;aAC1D;YAED,IAAI,CAAC,WAAW,CAAC,sBAAsB,GAAG,IAAI,CAAC,WAAW,CAAC,sBAAsB,GAAG,EAAE,CAAC;YACvF,IAAI,IAAI,CAAC,WAAW,CAAC,sBAAsB,GAAG,IAAI,CAAC,QAAQ,EAAE;gBAC3D,IAAI,CAAC,WAAW,CAAC,sBAAsB,GAAG,IAAI,CAAC,QAAQ,CAAC;aACzD;YACD,IAAI,CAAC,WAAW,CAAC,uBAAuB,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,uBAAuB,CAAC,CAAC;YAChG,IAAI,CAAC,WAAW,CAAC,sBAAsB,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,sBAAsB,CAAC,CAAC;YAE9F,OAAO,IAAI,CAAC,WAAW,CAAC,uBAAuB,GAAG,EAAE,KAAK,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,uBAAuB,GAAG,EAAE,CAAC,EAAE;gBAClH,IAAI,CAAC,WAAW,CAAC,uBAAuB,GAAG,IAAI,CAAC,WAAW,CAAC,uBAAuB,GAAG,CAAC,CAAC;gBACxF,IAAI,CAAC,WAAW,CAAC,uBAAuB,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,uBAAuB,CAAC,CAAC;aACjG;YAED,OAAO,IAAI,CAAC,WAAW,CAAC,sBAAsB,GAAG,EAAE,KAAK,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,sBAAsB,GAAG,EAAE,CAAC,EAAE;gBAChH,IAAI,CAAC,WAAW,CAAC,sBAAsB,GAAG,IAAI,CAAC,WAAW,CAAC,sBAAsB,GAAG,CAAC,CAAC;gBACtF,IAAI,CAAC,WAAW,CAAC,sBAAsB,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,sBAAsB,CAAC,CAAC;aAC/F;YAED,IAAI,IAAI,CAAC,WAAW,CAAC,uBAAuB,GAAG,CAAC,EAAE;gBAChD,IAAI,CAAC,WAAW,CAAC,uBAAuB,GAAG,CAAC,CAAC;aAC9C;YAED,IAAI,IAAI,CAAC,WAAW,CAAC,sBAAsB,GAAG,EAAE,EAAE;gBAChD,IAAI,CAAC,WAAW,CAAC,sBAAsB,GAAG,EAAE,CAAC;aAC9C;YAED,IAAI,CAAC,WAAW,CAAC,uBAAuB,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,uBAAuB,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,uBAAuB,GAAG,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC;YAClK,IAAI,CAAC,WAAW,CAAC,uBAAuB,GAAG,IAAI,CAAC,WAAW,CAAC,uBAAuB,GAAG,EAAE,CAAC;YAGzF,IAAI,CAAC,WAAW,CAAC,sBAAsB,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,sBAAsB,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,sBAAsB,GAAG,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC;YAC/J,IAAI,CAAC,WAAW,CAAC,sBAAsB,GAAG,IAAI,CAAC,WAAW,CAAC,sBAAsB,GAAG,EAAE,CAAC;SACxF;QAED,IAAI,CAAC,WAAW,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;QAC1C,IAAI,CAAC,WAAW,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;QAE1C,IAAI,CAAC,8BAA8B,GAAG,GAAG,CAAC;QAC1C,IAAI,sBAAsB,GAAG,IAAI,CAAC,oBAAoB,CAAC,QAAQ,GAAG,CAAC,GAAG,IAAI,CAAC,oBAAoB,CAAC,cAAc,GAAG,CAAC,GAAG,IAAI,CAAC,oBAAoB,CAAC,KAAK,GAAG,EAAE,CAAC;QAC1J,IAAI,eAAe,GAAG,sBAAsB,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,oBAAoB,CAAC,WAAW,GAAG,IAAI,CAAC,EAAE,GAAG,GAAG,CAAC,CAAC;QAC/G,IAAI,CAAC,wBAAwB,GAAG,eAAe,GAAG,IAAI,CAAC,WAAW,CAAC,sBAAsB,GAAG,EAAE,CAAC;QAC/F,IAAI,IAAI,CAAC,wBAAwB,GAAG,CAAC,EAAE;YACrC,IAAI,CAAC,wBAAwB,GAAG,CAAC,CAAC;SACnC;QACD,IAAI,CAAC,4BAA4B,GAAG,4DAAoB,CAAC,yBAAyB,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC;QAClH,IAAI,CAAC,WAAW,CAAC,uBAAuB,GAAG,IAAI,CAAC,wBAAwB,CAAC;QACzE,IAAI,CAAC,WAAW,CAAC,6BAA6B,GAAG,IAAI,CAAC,8BAA8B,CAAC;QAErF,IAAI,IAAI,CAAC,oBAAoB,CAAC,KAAK,GAAG,CAAC,EAAE;YACvC,IAAI,CAAC,+BAA+B,GAAG,GAAG,CAAC;YAC3C,IAAI,CAAC,yBAAyB,GAAG,CAAC,IAAI,CAAC,oBAAoB,CAAC,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC,uBAAuB,CAAC,GAAG,EAAE,CAAC;YACnH,IAAI,IAAI,CAAC,yBAAyB,GAAG,CAAC,EAAE;gBACtC,IAAI,CAAC,yBAAyB,GAAG,CAAC,CAAC;aACpC;YACD,IAAI,CAAC,6BAA6B,GAAG,4DAAoB,CAAC,yBAAyB,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC;YACpH,IAAI,CAAC,WAAW,CAAC,wBAAwB,GAAG,IAAI,CAAC,yBAAyB,CAAC;YAC3E,IAAI,CAAC,WAAW,CAAC,8BAA8B,GAAG,IAAI,CAAC,+BAA+B,CAAC;SACxF;QAED,IAAI,CAAC,gBAAgB,EAAE,CAAC;IAC1B,CAAC;IAEO,gCAAgC;QACtC,IAAI,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;QAE3D,IAAI,OAAO,CAAC;QACZ,IAAI,IAAI,CAAC,QAAQ,GAAG,CAAC,EAAE;YACrB,OAAO,GAAG,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;SACzC;aAAM;YACL,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC;SACzB;QAED,OAAO,MAAM,GAAG,OAAO,CAAC;IAC1B,CAAC;IAEO,sBAAsB,CAAC,cAAuB,EAAE,CAAS;QAC/D,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAE1C,IAAI,IAAI,CAAC,QAAQ,GAAG,CAAC,KAAK,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC,EAAE;YACvD,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC;SACnC;QAED,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAE1C,IAAI,IAAI,CAAC,QAAQ,GAAG,CAAC,KAAK,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC,EAAE;YACvD,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC;SACnC;QAED,IAAI,IAAI,CAAC,QAAQ,GAAG,CAAC,EAAE;YACrB,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC;SACnB;QAED,IAAI,IAAI,CAAC,QAAQ,GAAG,CAAC,EAAE;YACrB,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC;SACnB;QAED,IAAI,CAAC,WAAW,CAAC,uBAAuB,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,uBAAuB,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;QACpH,IAAI,IAAI,CAAC,WAAW,CAAC,uBAAuB,GAAG,CAAC,KAAK,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,uBAAuB,GAAG,CAAC,CAAC,EAAE;YAC7G,IAAI,CAAC,WAAW,CAAC,uBAAuB,GAAG,IAAI,CAAC,WAAW,CAAC,uBAAuB,GAAG,CAAC,CAAC;SACzF;QAED,IAAI,CAAC,WAAW,CAAC,sBAAsB,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,sBAAsB,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;QAClH,IAAI,IAAI,CAAC,WAAW,CAAC,sBAAsB,GAAG,CAAC,KAAK,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,sBAAsB,GAAG,CAAC,CAAC,EAAE;YAC3G,IAAI,CAAC,WAAW,CAAC,sBAAsB,GAAG,IAAI,CAAC,WAAW,CAAC,sBAAsB,GAAG,CAAC,CAAC;SACvF;QAED,IAAI,cAAc,EAAE;YAClB,IAAI,IAAI,CAAC,WAAW,CAAC,uBAAuB,GAAG,CAAC,GAAG,IAAI,CAAC,QAAQ,EAAE;gBAChE,IAAI,CAAC,WAAW,CAAC,uBAAuB,GAAG,IAAI,CAAC,WAAW,CAAC,uBAAuB,GAAG,CAAC,CAAC;aACzF;YAED,IAAI,IAAI,CAAC,WAAW,CAAC,sBAAsB,GAAG,CAAC,GAAG,IAAI,CAAC,QAAQ,EAAE;gBAC/D,IAAI,CAAC,WAAW,CAAC,sBAAsB,GAAG,IAAI,CAAC,WAAW,CAAC,sBAAsB,GAAG,CAAC,CAAC;aACvF;SACF;QAED,IAAI,IAAI,CAAC,WAAW,CAAC,uBAAuB,GAAG,IAAI,CAAC,QAAQ,EAAE;YAC5D,IAAI,CAAC,WAAW,CAAC,uBAAuB,GAAG,IAAI,CAAC,QAAQ,CAAC;SAC1D;QAED,IAAI,IAAI,CAAC,WAAW,CAAC,sBAAsB,GAAG,IAAI,CAAC,QAAQ,EAAE;YAE3D,IAAI,CAAC,WAAW,CAAC,sBAAsB,GAAG,IAAI,CAAC,QAAQ,CAAC;SACzD;QAED,IAAI,IAAI,CAAC,WAAW,CAAC,uBAAuB,GAAG,CAAC,EAAE;YAChD,IAAI,CAAC,WAAW,CAAC,uBAAuB,GAAG,CAAC,CAAC;SAC9C;QAED,IAAI,IAAI,CAAC,WAAW,CAAC,sBAAsB,GAAG,CAAC,EAAE;YAC/C,IAAI,CAAC,WAAW,CAAC,sBAAsB,GAAG,CAAC,CAAC;SAC7C;IACH,CAAC;IAEO,gCAAgC,CAAC,iBAA0B,KAAK;QACtE,IAAI,CAAC,WAAW,CAAC,aAAa,GAAG,IAAI,CAAC,oBAAoB,CAAC,UAAU,GAAG,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC;QAErG,IAAI,cAAc,EAAE;YAClB,IAAI,CAAC,WAAW,CAAC,kBAAkB,GAAG,EAAE,CAAC;YAEzC,IAAI,IAAI,CAAC,WAAW,CAAC,kBAAkB,GAAG,IAAI,CAAC,oBAAoB,CAAC,UAAU,GAAG,EAAE,EAAE;gBACnF,IAAI,CAAC,WAAW,CAAC,kBAAkB,GAAG,EAAE,GAAG,IAAI,CAAC,oBAAoB,CAAC,UAAU,CAAC;aACjF;YAED,IAAI,CAAC,WAAW,CAAC,mBAAmB,GAAG,IAAI,CAAC,WAAW,CAAC,kBAAkB,GAAG,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC;SAC3G;QAED,IAAI,CAAC,WAAW,CAAC,kBAAkB,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,kBAAkB,GAAG,EAAE,CAAC,GAAG,EAAE,CAAC;QAChG,IAAI,CAAC,WAAW,CAAC,mBAAmB,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,mBAAmB,GAAG,EAAE,CAAC,GAAG,EAAE,CAAC;QAElG,IAAI,MAAc,CAAC;QACnB,IAAI,cAAc,EAAE;YAClB,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YACrD,IAAI,CAAC,WAAW,CAAC,eAAe,GAAG,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC;YAEjE,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;SACxD;QAED,IAAI,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,oBAAoB,CAAC,WAAW,GAAG,IAAI,CAAC,EAAE,GAAG,GAAG,CAAC,GAAG,IAAI,CAAC,oBAAoB,CAAC,QAAQ,CAAC;QACtH,IAAI,WAAW,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,oBAAoB,CAAC,UAAU,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC,kBAAkB,CAAC,GAAG,CAAC,CAAC;YACxG,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,WAAW,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC,mBAAmB,CAAC,GAAG,CAAC,CAAC,CAAC;QAEpF,IAAI,WAAW,GAAG,GAAG,GAAG,CAAC,CAAC,GAAG,WAAW,CAAC,CAAC;QAC1C,IAAI,cAAc,GAAG,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC,kBAAkB,CAAC;QAC7D,IAAI,eAAe,GAAG,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC,mBAAmB,CAAC;QAE/D,IAAI,CAAC,WAAW,CAAC,UAAU,GAAG,UAAU,CAAC;QACzC,IAAI,CAAC,WAAW,CAAC,WAAW,GAAG,WAAW,CAAC;QAC3C,IAAI,CAAC,WAAW,CAAC,WAAW,GAAG,WAAW,CAAC;QAC3C,IAAI,CAAC,WAAW,CAAC,cAAc,GAAG,cAAc,CAAC;QACjD,IAAI,CAAC,WAAW,CAAC,eAAe,GAAG,eAAe,CAAC;QAEnD,IAAI,eAAe,CAAC;QACpB,IAAI,IAAI,CAAC,WAAW,CAAC,WAAW,IAAI,CAAC,EAAE;YACrC,eAAe,GAAG,IAAI,CAAC,WAAW,CAAC,kBAAkB,GAAG,CAAC,CAAC;SAC3D;aAAM;YACL,eAAe,GAAG,IAAI,CAAC,WAAW,CAAC,mBAAmB,GAAG,CAAC;SAC3D;QAED,IAAI,QAAQ,CAAC;QACb,IAAI,IAAI,CAAC,WAAW,CAAC,WAAW,GAAG,IAAI,CAAC,oBAAoB,CAAC,UAAU,GAAG,CAAC,EAAE;YAC3E,QAAQ,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,YAAY,GAAG,EAAE,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,eAAe,GAAG,IAAI,CAAC,EAAE,GAAG,GAAG,CAAC,CAAC;SAC7F;aAAM;YACL,QAAQ,GAAG,CAAC,CAAC;SACd;QAED,IAAI,SAAS,CAAC;QACd,IAAI,IAAI,CAAC,oBAAoB,CAAC,cAAc,GAAG,QAAQ,EAAE;YACvD,SAAS,GAAG,IAAI,CAAC,oBAAoB,CAAC,cAAc,CAAC;SACtD;aAAM;YACL,SAAS,GAAG,QAAQ,CAAC;SACtB;QAED,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,WAAW,GAAG,IAAI,CAAC,EAAE,GAAG,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,oBAAoB,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC;QACzF,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,WAAW,GAAG,IAAI,CAAC,EAAE,GAAG,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,oBAAoB,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC;QAEzF,IAAI,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,WAAW,CAAC,GAAG,IAAI,CAAC,EAAE,GAAG,GAAG,CAAC,GAAG,SAAS,CAAC;QACnE,IAAI,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,WAAW,CAAC,GAAG,IAAI,CAAC,EAAE,GAAG,GAAG,CAAC,GAAG,SAAS,CAAC;QAEnE,CAAC,GAAG,IAAI,CAAC,oBAAoB,CAAC,QAAQ,GAAG,CAAC,GAAG,CAAC,CAAC;QAC/C,EAAE,GAAG,IAAI,CAAC,oBAAoB,CAAC,QAAQ,GAAG,EAAE,CAAC;QAE7C,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QAEzE,IAAI,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,oBAAoB,CAAC,QAAQ,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QACpG,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,GAAG,WAAW,CAAC,CAAC;QAClD,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;QAEtD,IAAI,cAAc,EAAE;YAClB,IAAI,CAAC,WAAW,CAAC,sBAAsB,GAAG,MAAM,CAAC;SAClD;QAED,IAAI,IAAI,CAAC,WAAW,CAAC,QAAQ,IAAI,sDAAe,CAAC,aAAa,EAAE;YAC9D,IAAI,CAAC,WAAW,CAAC,sBAAsB,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,sBAAsB,CAAC,CAAC;YAE9F,IAAI,IAAI,CAAC,WAAW,CAAC,sBAAsB,GAAG,IAAI,CAAC,QAAQ,EAAE;gBAC3D,IAAI,CAAC,WAAW,CAAC,sBAAsB,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;aACrE;YAED,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,sBAAsB,GAAG,CAAC,CAAC,KAAK,IAAI,CAAC,WAAW,CAAC,sBAAsB,GAAG,CAAC,EAAE;gBAC3G,IAAI,CAAC,WAAW,CAAC,sBAAsB,GAAG,IAAI,CAAC,WAAW,CAAC,sBAAsB,GAAG,CAAC,CAAC;aACvF;YAED,IAAI,IAAI,CAAC,WAAW,CAAC,sBAAsB,GAAG,CAAC,EAAE;gBAC/C,IAAI,CAAC,WAAW,CAAC,sBAAsB,GAAG,CAAC,CAAC;aAC7C;YAED,IAAI,CAAC,WAAW,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;SAC3C;aAAM;YACL,IAAI,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,sBAAsB,GAAG,EAAE,CAAC,CAAC;YAE3E,IAAI,WAAW,GAAG,IAAI,CAAC,QAAQ,GAAG,EAAE,EAAE;gBACpC,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC,CAAC;aAC9C;YAED,OAAO,IAAI,CAAC,KAAK,CAAC,WAAW,GAAG,EAAE,CAAC,KAAK,WAAW,GAAG,EAAE,EAAE;gBACxD,WAAW,GAAG,WAAW,GAAG,CAAC,CAAC;aAC/B;YAED,IAAI,WAAW,GAAG,EAAE,EAAE;gBACpB,WAAW,GAAG,EAAE,CAAC;aAClB;YAED,IAAI,CAAC,WAAW,CAAC,sBAAsB,GAAG,WAAW,GAAG,EAAE,CAAC;YAC3D,IAAI,CAAC,WAAW,CAAC,sBAAsB,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW,GAAG,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;YAExG,IAAI,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC,CAAC;YAEhD,OAAO,IAAI,CAAC,KAAK,CAAC,UAAU,GAAG,EAAE,CAAC,KAAK,UAAU,GAAG,EAAE,EAAE;gBACtD,UAAU,GAAG,UAAU,GAAG,CAAC,CAAC;aAC7B;YAED,IAAI,UAAU,GAAG,EAAE,EAAE;gBACnB,UAAU,GAAG,EAAE,CAAC;aACjB;YAED,IAAI,CAAC,WAAW,CAAC,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,GAAG,EAAE,CAAC,CAAC;SACzD;QAED,IAAI,CAAC,8BAA8B,GAAG,GAAG,CAAC;QAC1C,IAAI,CAAC,wBAAwB,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC,sBAAsB,CAAC,GAAG,EAAE,CAAC;QAC3G,IAAI,IAAI,CAAC,wBAAwB,GAAG,CAAC,EAAE;YACrC,IAAI,CAAC,wBAAwB,GAAG,CAAC,CAAC;SACnC;QACD,IAAI,CAAC,4BAA4B,GAAG,4DAAoB,CAAC,yBAAyB,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC;QAElH,IAAI,CAAC,WAAW,CAAC,uBAAuB,GAAG,IAAI,CAAC,wBAAwB,CAAC;QACzE,IAAI,CAAC,WAAW,CAAC,6BAA6B,GAAG,IAAI,CAAC,8BAA8B,CAAC;QAErF,IAAI,CAAC,gBAAgB,EAAE,CAAC;IAC1B,CAAC;IAEO,4BAA4B,CAAC,cAAuB;QAC1D,QAAQ,IAAI,CAAC,WAAW,CAAC,QAAQ,EAAE;YACjC,KAAK,sDAAe,CAAC,aAAa;gBAEhC,IAAI,CAAC,WAAW,CAAC,sBAAsB,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,sBAAsB,CAAC,CAAC;gBAE9F,IAAI,IAAI,CAAC,WAAW,CAAC,sBAAsB,GAAG,IAAI,CAAC,QAAQ,EAAE;oBAC3D,IAAI,CAAC,WAAW,CAAC,sBAAsB,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC;iBACpE;gBAED,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,sBAAsB,GAAG,CAAC,CAAC,KAAK,IAAI,CAAC,WAAW,CAAC,sBAAsB,GAAG,CAAC,EAAE;oBAC3G,IAAI,CAAC,WAAW,CAAC,sBAAsB,GAAG,IAAI,CAAC,WAAW,CAAC,sBAAsB,GAAG,CAAC,CAAC;iBACvF;gBAED,IAAI,IAAI,CAAC,WAAW,CAAC,sBAAsB,GAAG,CAAC,EAAE;oBAC/C,IAAI,CAAC,WAAW,CAAC,sBAAsB,GAAG,CAAC,CAAC;iBAC7C;gBAED,IAAI,cAAc,EAAE;oBAClB,IAAI,IAAI,CAAC,oBAAoB,CAAC,SAAS,GAAG,CAAC,EAAE;wBAC3C,IAAI,CAAC,WAAW,CAAC,iBAAiB,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,QAAQ;4BAC5D,CAAC,IAAI,CAAC,WAAW,CAAC,eAAe,GAAG,EAAE,CAAC;4BACvC,IAAI,CAAC,WAAW,CAAC,sBAAsB,CAAC,GAAG,CAAC,CAAC,CAAC;qBACjD;yBAAM;wBACL,IAAI,CAAC,WAAW,CAAC,iBAAiB,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC,sBAAsB,CAAC,GAAG,CAAC,CAAC,CAAC;qBAChH;iBACF;gBAED,IAAI,IAAI,CAAC,WAAW,CAAC,iBAAiB,GAAG,CAAC,KAAK,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,iBAAiB,GAAG,CAAC,CAAC,EAAE;oBACjG,IAAI,CAAC,WAAW,CAAC,iBAAiB,GAAG,IAAI,CAAC,WAAW,CAAC,iBAAiB,GAAG,CAAC,CAAC;iBAC7E;gBAED,IAAI,IAAI,CAAC,WAAW,CAAC,iBAAiB,GAAG,CAAC,EAAE;oBAC1C,IAAI,CAAC,WAAW,CAAC,iBAAiB,GAAG,CAAC,CAAC;oBAAA,CAAC;iBACzC;gBACD,MAAM;YACR,KAAK,sDAAe,CAAC,aAAa;gBAChC,IAAI,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,sBAAsB,GAAG,EAAE,CAAC,CAAC;gBAEtE,IAAI,MAAM,GAAG,IAAI,CAAC,QAAQ,GAAG,EAAE,EAAE;oBAC/B,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC,CAAC;iBACzC;gBAED,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,EAAE,CAAC,KAAK,MAAM,GAAG,EAAE,EAAE;oBAC9C,MAAM,GAAG,MAAM,GAAG,CAAC,CAAC;iBACrB;gBAED,IAAI,MAAM,GAAG,EAAE,EAAE;oBACf,MAAM,GAAG,EAAE,CAAC;iBACb;gBAED,IAAI,CAAC,WAAW,CAAC,sBAAsB,GAAG,MAAM,GAAG,EAAE,CAAC;gBACtD,IAAI,CAAC,WAAW,CAAC,sBAAsB,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;gBAE9F,IAAI,cAAc,EAAE;oBAClB,IAAI,IAAI,CAAC,oBAAoB,CAAC,SAAS,GAAG,CAAC,EAAE;wBAC3C,IAAI,CAAC,WAAW,CAAC,iBAAiB,GAAG,CAAC,CAAC,IAAI,CAAC,QAAQ;4BAClD,CAAC,IAAI,CAAC,WAAW,CAAC,eAAe,GAAG,EAAE,CAAC;4BACvC,IAAI,CAAC,WAAW,CAAC,sBAAsB,CAAC,GAAG,CAAC,CAAC;qBAChD;yBAAM;wBACL,IAAI,CAAC,WAAW,CAAC,iBAAiB,GAAG,CAAC,CAAC,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC,sBAAsB,CAAC,GAAG,CAAC,CAAC,CAAC;qBACtG;iBACF;gBAED,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,iBAAiB,GAAG,EAAE,CAAC,CAAC;gBAE7D,IAAI,MAAM,GAAG,CAAC,EAAE;oBACd,MAAM,GAAG,CAAC,CAAC;iBACZ;gBAED,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,EAAE,CAAC,KAAK,MAAM,GAAG,EAAE,EAAE;oBAC9C,MAAM,GAAG,MAAM,GAAG,CAAC,CAAC;iBACrB;gBAED,IAAI,CAAC,WAAW,CAAC,iBAAiB,GAAG,MAAM,GAAG,EAAE,CAAC;gBACjD,IAAI,CAAC,WAAW,CAAC,iBAAiB,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;gBAEzF,MAAM;YACR;gBACE,MAAM;SACT;IACH,CAAC;IAEO,gBAAgB;QACtB,IAAI,IAAI,CAAC,WAAW,CAAC,QAAQ,IAAI,sDAAe,CAAC,aAAa,EAAE;YAC9D,IAAI,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,eAAe,EAAE,CAAC,CAAC,IAAI,IAAI,CAAC,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,YAAY,EAAE,CAAC,CAAC,EAAE;gBACvH,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,QAAQ,GAAG,IAAI,CAAC,UAAU,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,eAAe,GAAG,EAAE,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,CAAC;aAC7J;iBAAM;gBACL,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,QAAQ,GAAG,IAAI,CAAC,UAAU,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,YAAY,GAAG,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,CAAC;aAChK;SACF;aAAM,IAAI,IAAI,CAAC,WAAW,CAAC,QAAQ,IAAI,sDAAe,CAAC,aAAa,EAAE;YACrE,IAAI,IAAI,CAAC,WAAW,CAAC,eAAe,IAAI,IAAI,CAAC,WAAW,CAAC,YAAY,EAAE;gBACrE,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,QAAQ,GAAG,IAAI,CAAC,UAAU,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,eAAe,GAAG,EAAE,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,CAAC;aAC7J;iBAAM;gBACL,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,QAAQ,GAAG,IAAI,CAAC,UAAU,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,YAAY,GAAG,EAAE,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,CAAC;aAC1J;SACF;QAED,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,QAAQ,GAAG,GAAG,CAAC,CAAC;QAEpG,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,OAAO,GAAG,CAAC,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC;QAC3G,IAAI,IAAI,CAAC,QAAQ,GAAG,CAAC,IAAI,IAAI,CAAC,WAAW,CAAC,uBAAuB,GAAG,CAAC,EAAE;YACrE,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,OAAO;gBAC7E,CAAC,IAAI,CAAC,WAAW,CAAC,sBAAsB,GAAG,IAAI,CAAC,WAAW,CAAC,uBAAuB,CAAC,CAAC;SACxF;aAAM;YACL,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC,sBAAsB,CAAC;SAC3H;QACD,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,OAAO,GAAG,EAAE,GAAG,GAAG,CAAC,GAAG,EAAE,CAAC;IAC9G,CAAC;IAEO,SAAS,CAAC,UAAkB,EAAE,OAAe;QACnD,IAAI,QAAQ,GAAG,CAAC,UAAU,GAAG,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,OAAO,CAAC;QACtG,IAAI,MAAM,GAAG,QAAQ,GAAG,OAAO,CAAC;QAChC,IAAI,CAAC,GAAG,MAAM,CAAC;QACf,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;QAE/C,IAAI,MAAM,GAAG,CAAC,KAAK,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,EAAE;YACzC,MAAM,GAAG,MAAM,GAAG,CAAC,CAAC;SACrB;QAED,IAAI,MAAM,GAAG,CAAC,EAAE;YACd,MAAM,GAAG,MAAM,GAAG,CAAC,CAAC;SACrB;QAED,OAAO,MAAM,CAAC;IAChB,CAAC;IAEO,eAAe,CAAC,UAAkB;QACxC,IAAI,MAAM,GAAG,UAAU,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,CAAC;QACrG,IAAI,OAAO,CAAC;QACZ,IAAI,IAAI,CAAC,WAAW,CAAC,QAAQ,IAAI,sDAAe,CAAC,aAAa,EAAE;YAC9D,IAAI,CAAC,WAAW,CAAC,YAAY,GAAG,EAAE,CAAC;YACnC,OAAO,GAAG,KAAK,CAAC;SACjB;aAAM;YACL,KAAK,IAAI,IAAI,IAAI,IAAI,CAAC,GAAG,EAAE;gBACzB,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,EAAE,IAAI,MAAM,EAAE;oBACzD,IAAI,CAAC,WAAW,CAAC,YAAY,GAAG,IAAI,CAAC,QAAQ,CAAC;oBAC9C,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;oBACvB,MAAM;iBACP;aACF;YAED,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,YAAY,EAAE;gBAClC,IAAI,CAAC,WAAW,CAAC,YAAY,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC;gBACvE,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC;aACjD;SACF;QAED,OAAO,OAAO,CAAC;IACjB,CAAC;IAEO,gBAAgB;QACtB,IAAI,IAAI,CAAC,oBAAoB,CAAC,OAAO,IAAI,4DAAqB,CAAC,KAAK,EAAE;YACpE,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,QAAQ,GAAG,IAAI,CAAC;YAC/C,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,OAAO,GAAG,EAAE,CAAC;SAC7C;aAAM;YACL,IAAI,WAAW,GAAG,UAAU,CAAC,IAAI,CAAC,oBAAoB,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;YAE5E,IAAI,IAAI,CAAC,oBAAoB,CAAC,OAAO,IAAI,4DAAqB,CAAC,eAAe;gBAC5E,CAAC,WAAW,GAAG,IAAI,IAAI,WAAW,KAAK,IAAI,IAAI,WAAW,KAAK,IAAI,CAAC,EAAE;gBACtE,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,QAAQ,GAAG,IAAI,CAAC;gBAC/C,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,OAAO,GAAG,EAAE,CAAC;aAC7C;iBAAM;gBACL,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,QAAQ,GAAG,IAAI,CAAC;gBAC/C,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,OAAO,GAAG,EAAE,CAAC;aAC7C;SACF;IACH,CAAC;IAEO,sBAAsB,CAAC,MAAc;QAC3C,IAAI,UAAkB,CAAC;QACvB,IAAI,UAAkB,CAAC;QAEvB,IAAI,MAAM,KAAK,EAAE,EAAE;YACjB,IAAI,YAAY,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YAErC,IAAI,CAAC,4EAAc,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,EAAE;gBACpC,OAAO,IAAI,CAAC;aACb;iBAAM;gBACL,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC;aACjD;YAED,IAAI,4EAAc,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,EAAE;gBACnC,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC;aACjD;iBACI;gBACH,IAAI,YAAY,CAAC,CAAC,CAAC,IAAI,EAAE,IAAI,YAAY,CAAC,CAAC,CAAC,IAAI,4EAAc,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,EAAE;oBAC/E,UAAU,GAAG,CAAE,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC;iBACnD;qBAAM;oBACL,UAAU,GAAG,CAAC,CAAC;iBAChB;aACF;SACF;aAAM;YACL,OAAO,IAAI,CAAC;SACb;QAED,IAAI,MAAM,GAAG,CAAC,UAAU,GAAG,EAAE,CAAC,GAAG,UAAU,CAAC;QAE5C,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,mBAAmB,CAAC,KAAK;QACvB,IAAI,CAAC,4EAAc,CAAC,KAAK,CAAC,GAAG,CAAC;YAC5B,KAAK,CAAC,GAAG,KAAK,GAAG;YACjB,KAAK,CAAC,GAAG,KAAK,GAAG;YACjB,KAAK,CAAC,GAAG,KAAK,OAAO,EAAE;YACvB,KAAK,CAAC,cAAc,EAAE,CAAC;SACxB;IACH,CAAC;CAEF;AA3uCU;IAAR,2DAAK,EAAE;8BAAoB,sEAA8B;sEAAC;AACjD;IAAT,4DAAM,EAAE;;4EAA8E;AAE9E;IAAR,2DAAK,EAAE;8BAAuB,gEAAwB;yEAAC;AAC/C;IAAR,2DAAK,EAAE;8BAAuB,2DAAmB;yEAAC;AAEzC;IAAT,4DAAM,EAAE;;uEAAyC;AAGlD;IADC,+DAAS,CAAC,kGAAkC,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;8BAC1D,kGAAkC;+DAAC;AAV5C,2BAA2B;IALvC,+DAAS,CAAC;QACT,QAAQ,EAAE,oCAAoC;QAC9C,mQAAqD;KAEtD,CAAC;;GACW,2BAA2B,CA4uCvC;AA5uCuC;;;;;;;;;;;;;;;;;;;;;;;ACdU;AACD;;;;;;;;;;;;;;;;;;;;ACDC;AACiC;AAC5E,MAAM,+BAA+B;IAejC,MAAM,CAAC,4BAA4B,CAAC,CAAS,EAAE,SAAiB,EAAE,kBAA0B;QAC/F,IAAI,SAAS,IAAI,CAAC,GAAG,CAAC,EAAE;YACpB,OAAO,CAAC,CAAC;SACZ;QACD,IAAI,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,kBAAkB,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;QAC5E,IAAI,CAAC,GAAG,CAAC,KAAK,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC;QAChC,IAAI,CAAC,GAAG,CAAC;YAAE,CAAC,GAAG,CAAC,CAAC;QACjB,OAAO,CAAC,CAAC;IACb,CAAC;IAEM,MAAM,CAAC,oBAAoB,CAAC,WAAmB,EAAE,YAAoB,EAAE,OAAe,EAAE,OAAe;QAC1G,IAAI,cAAc,GAAmD,EAAE,CAAC;QACxE,IAAI,aAAa,GAAW,CAAC,CAAC;QAC9B,IAAI,IAAI,GAAW,CAAC,CAAC;QACrB,IAAI,eAAe,GAAG,WAAW,GAAG,CAAC,CAAC;QACtC,GAAG;YACC,IAAI,GAAG,CAAC,eAAe,GAAG,aAAa,GAAG,GAAG,CAAC,GAAG,CAAC,aAAa,GAAG,CAAC,CAAC,CAAC;YACrE,IAAI,IAAI,IAAI,OAAO,IAAI,IAAI,IAAI,OAAO,EAAE;gBACpC,cAAc,CAAC,IAAI,CAAC,EAAE,kBAAkB,EAAE,IAAI,CAAC,IAAI,CAAC,YAAY,GAAG,EAAE,GAAG,aAAa,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,GAAG,IAAI,CAAC,GAAG,IAAI,EAAE,CAAC,CAAC;aACnI;YACD,aAAa,EAAE,CAAC;SACnB,QAAQ,IAAI,GAAG,OAAO,EAAE;QACzB,IAAI,cAAc,CAAC,MAAM,IAAI,CAAC,EAAE;YAC5B,cAAc,CAAC,IAAI,CAAC,EAAE,kBAAkB,EAAE,IAAI,CAAC,IAAI,CAAC,YAAY,GAAG,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC;SACrF;QACD,OAAO,cAAc,CAAC;IAC1B,CAAC;IAEM,MAAM,CAAC,WAAW,CAAC,GAA6B;QACnD,GAAG,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,KAAK,EAAE,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IAC7D,CAAC;IAEM,MAAM,CAAC,cAAc,CAAC,GAA6B,EAAE,GAAW,EAAE,SAAiB,EAAE;QACxF,IAAI,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,EAAE,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,MAAM,CAAC;QAC1E,OAAO,OAAO,GAAG,CAAC,GAAG,GAAG,EAAE,CAAC,CAAC;IAChC,CAAC;IAEM,MAAM,CAAC,eAAe,CAAC,GAA6B;QACvD,GAAG,CAAC,SAAS,GAAG,CAAC,CAAC;QAClB,GAAG,CAAC,WAAW,GAAG,KAAK,CAAC;QACxB,GAAG,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,KAAK,EAAE,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QAC1D,GAAG,CAAC,SAAS,GAAG,CAAC,CAAC;IACtB,CAAC;IAEM,MAAM,CAAC,oBAAoB,CAAC,GAA6B,EAAE,MAAc,EAAE,KAAa;QAC3F,GAAG,CAAC,SAAS,EAAE,CAAC;QAChB,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,GAAG,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,MAAM,GAAG,KAAK,EAAE,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;QAC5F,GAAG,CAAC,MAAM,EAAE,CAAC;IACjB,CAAC;IAEM,MAAM,CAAC,wBAAwB,CAAC,GAA6B,EAAE,CAAW,EAAE,CAAW,EAAE,SAAiB;QAC7G,GAAG,CAAC,QAAQ,GAAG,OAAO,CAAC;QACvB,IAAI,CAAC,gBAAgB,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,SAAS,CAAC,CAAC;QAC5C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YAC/B,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,MAAM,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;SAClC;QACD,IAAI,CAAC,gBAAgB,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,SAAS,CAAC,CAAC;IAChD,CAAC;IAEM,MAAM,CAAC,6BAA6B,CAAC,GAA6B,EAAE,KAAa,EAAE,CAAS,EAAE,CAAS,EAAE,KAAa,EAAE,IAAY;QACvI,GAAG,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC,EAAE,CAAC,GAAG,+BAA+B,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC;QACzE,GAAG,CAAC,SAAS,EAAE,CAAC;QAChB,CAAC,IAAI,IAAI,GAAG,CAAC,GAAG,KAAK,CAAC;QACtB,CAAC,IAAI,+BAA+B,CAAC,QAAQ,GAAG,CAAC,CAAC;QAClD,GAAG,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QACjB,CAAC,IAAI,+BAA+B,CAAC,QAAQ,GAAG,CAAC,CAAC;QAClD,GAAG,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QACjB,CAAC,IAAI,+BAA+B,CAAC,QAAQ,GAAG,CAAC,CAAC;QAClD,GAAG,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QACjB,CAAC,IAAI,IAAI,GAAG,KAAK,CAAC;QAClB,GAAG,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QACjB,CAAC,IAAI,+BAA+B,CAAC,QAAQ,GAAG,CAAC,CAAC;QAClD,GAAG,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QACjB,CAAC,IAAI,+BAA+B,CAAC,QAAQ,GAAG,CAAC,CAAC;QAClD,GAAG,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QACjB,GAAG,CAAC,MAAM,EAAE,CAAC;IACjB,CAAC;IAEM,MAAM,CAAC,8BAA8B,CAAC,GAA6B,EAAE,KAAa,EAAE,CAAS,EAAE,CAAS,EAAE,KAAa,EAAE,IAAY;QACxI,GAAG,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC,EAAE,CAAC,GAAG,+BAA+B,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC;QACzE,GAAG,CAAC,SAAS,EAAE,CAAC;QAChB,CAAC,IAAI,IAAI,GAAG,CAAC,GAAG,KAAK,CAAC;QACtB,CAAC,IAAI,+BAA+B,CAAC,QAAQ,GAAG,CAAC,CAAC;QAClD,GAAG,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QACjB,CAAC,IAAI,+BAA+B,CAAC,QAAQ,GAAG,CAAC,CAAC;QAClD,GAAG,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QACjB,CAAC,IAAI,+BAA+B,CAAC,QAAQ,GAAG,CAAC,CAAC;QAClD,GAAG,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QACjB,CAAC,IAAI,IAAI,GAAG,KAAK,CAAC;QAClB,GAAG,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QACjB,CAAC,IAAI,+BAA+B,CAAC,QAAQ,GAAG,CAAC,CAAC;QAClD,GAAG,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QACjB,CAAC,IAAI,+BAA+B,CAAC,QAAQ,GAAG,CAAC,CAAC;QAClD,GAAG,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QACjB,GAAG,CAAC,MAAM,EAAE,CAAC;IACjB,CAAC;IAEM,MAAM,CAAC,iCAAiC,CAAC,GAA6B,EAAE,KAAa,EAAE,CAAS,EAAE,CAAS,EAAE,KAAa,EAAE,IAAY;QAC3I,GAAG,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;QAC1B,GAAG,CAAC,SAAS,EAAE,CAAC;QAChB,CAAC,IAAI,IAAI,GAAG,CAAC,GAAG,KAAK,GAAG,+BAA+B,CAAC,QAAQ,GAAG,CAAC,CAAC;QACrE,CAAC,IAAI,+BAA+B,CAAC,QAAQ,GAAG,CAAC,CAAC;QAClD,GAAG,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QACjB,CAAC,IAAI,+BAA+B,CAAC,QAAQ,GAAG,CAAC,CAAC;QAClD,GAAG,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QACjB,CAAC,IAAI,+BAA+B,CAAC,QAAQ,GAAG,CAAC,CAAC;QAClD,GAAG,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QACjB,CAAC,IAAI,IAAI,GAAG,KAAK,CAAC;QAClB,GAAG,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QACjB,CAAC,IAAI,+BAA+B,CAAC,QAAQ,GAAG,CAAC,CAAC;QAClD,GAAG,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QACjB,CAAC,IAAI,+BAA+B,CAAC,QAAQ,GAAG,CAAC,CAAC;QAClD,GAAG,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QACjB,GAAG,CAAC,MAAM,EAAE,CAAC;IACjB,CAAC;IAEM,MAAM,CAAC,8BAA8B,CAAC,GAA6B,EAAE,KAAa,EAAE,CAAS,EAAE,CAAS,EAAE,KAAa,EAAE,IAAY;QACxI,GAAG,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;QAE1B,GAAG,CAAC,SAAS,EAAE,CAAC;QAChB,CAAC,IAAI,IAAI,GAAG,CAAC,GAAG,KAAK,GAAG,+BAA+B,CAAC,QAAQ,GAAG,CAAC,CAAC;QACrE,CAAC,IAAI,+BAA+B,CAAC,QAAQ,GAAG,CAAC,CAAC;QAClD,GAAG,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QACjB,CAAC,IAAI,+BAA+B,CAAC,QAAQ,GAAG,CAAC,CAAC;QAClD,GAAG,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QACjB,CAAC,IAAI,+BAA+B,CAAC,QAAQ,GAAG,CAAC,CAAC;QAClD,GAAG,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QACjB,CAAC,IAAI,IAAI,GAAG,KAAK,CAAC;QAClB,GAAG,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QACjB,CAAC,IAAI,+BAA+B,CAAC,QAAQ,GAAG,CAAC,CAAC;QAClD,GAAG,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QACjB,CAAC,IAAI,+BAA+B,CAAC,QAAQ,GAAG,CAAC,CAAC;QAClD,GAAG,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QACjB,GAAG,CAAC,MAAM,EAAE,CAAC;IACjB,CAAC;IAEM,MAAM,CAAC,8BAA8B,CAAC,GAA6B,EAAE,KAAa,EAAE,CAAS,EAAE,CAAS,EAAE,KAAa,EAAE,IAAY;QACxI,GAAG,CAAC,SAAS,EAAE,CAAC;QAChB,GAAG,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QACjB,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC;QACxB,CAAC,IAAI,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QAClE,GAAG,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QACjB,GAAG,CAAC,MAAM,EAAE,CAAC;QACb,CAAC,IAAI,+BAA+B,CAAC,QAAQ,CAAC;QAC9C,GAAG,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;IAC9B,CAAC;IAEM,MAAM,CAAC,2BAA2B,CAAC,GAA6B,EAAE,KAAa,EAAE,CAAS,EAAE,CAAS,EAAE,KAAa,EAAE,IAAY;QACrI,GAAG,CAAC,SAAS,EAAE,CAAC;QAChB,GAAG,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QACjB,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC;QACxB,CAAC,IAAI,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QAClE,GAAG,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QACjB,GAAG,CAAC,MAAM,EAAE,CAAC;QACb,CAAC,IAAI,+BAA+B,CAAC,QAAQ,GAAG,CAAC,CAAC;QAClD,GAAG,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;IAC9B,CAAC;IAEM,MAAM,CAAC,eAAe,CAAC,GAA6B,EAAE,CAAS,EAAE,CAAS,EAAE,KAAa,EAAE,SAAiB,CAAC;QAChH,IAAI,SAAS,GAAG,GAAG,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC;QAC7C,GAAG,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,SAAS,GAAG,MAAM,GAAG,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,SAAS,GAAG,MAAM,GAAG,CAAC,EAAE,+BAA+B,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC;QACzH,GAAG,CAAC,SAAS,EAAE,CAAC;QAChB,GAAG,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,SAAS,GAAG,MAAM,GAAG,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,SAAS,GAAG,MAAM,GAAG,CAAC,EAAE,+BAA+B,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC;QACpH,GAAG,CAAC,MAAM,EAAE,CAAC;QACb,GAAG,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC,GAAG,SAAS,GAAG,CAAC,EAAE,CAAC,GAAG,+BAA+B,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC;IAC7F,CAAC;IAEM,MAAM,CAAC,yBAAyB,CAAC,GAA6B,EAAE,CAAW,EAAE,CAAW,EAAE,SAAiB;QAC9G,GAAG,CAAC,QAAQ,GAAG,OAAO,CAAC;QACvB,IAAI,CAAC,iBAAiB,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,SAAS,CAAC,CAAC;QAC7C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YAC/B,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,MAAM,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;SAClC;QACD,IAAI,CAAC,iBAAiB,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,SAAS,CAAC,CAAC;IACjD,CAAC;IAEM,MAAM,CAAC,wBAAwB,CAAC,GAA6B,EAAE,CAAW,EAAE,CAAW,EAAE,SAAiB;QAC7G,GAAG,CAAC,QAAQ,GAAG,OAAO,CAAC;QACvB,IAAI,CAAC,gBAAgB,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,SAAS,CAAC,CAAC;QAC5C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YAC/B,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,MAAM,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;SAClC;QACD,IAAI,CAAC,gBAAgB,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,SAAS,CAAC,CAAC;IAChD,CAAC;IAEM,MAAM,CAAC,oCAAoC,CAAC,GAA6B,EAAE,KAAa,EAAE,CAAS,EAAE,CAAS,EAAE,KAAa,EAAE,IAAY;QAC9I,GAAG,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;QAC1B,GAAG,CAAC,SAAS,EAAE,CAAC;QAChB,CAAC,IAAI,IAAI,GAAG,CAAC,GAAG,KAAK,CAAC;QACtB,CAAC,IAAI,+BAA+B,CAAC,QAAQ,GAAG,CAAC,CAAC;QAClD,GAAG,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QACjB,CAAC,IAAI,+BAA+B,CAAC,QAAQ,GAAG,CAAC,CAAC;QAClD,GAAG,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QACjB,CAAC,IAAI,+BAA+B,CAAC,QAAQ,GAAG,CAAC,CAAC;QAClD,GAAG,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QACjB,CAAC,IAAI,IAAI,GAAG,KAAK,CAAC;QAClB,GAAG,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QACjB,CAAC,IAAI,+BAA+B,CAAC,QAAQ,GAAG,CAAC,CAAC;QAClD,GAAG,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QACjB,CAAC,IAAI,+BAA+B,CAAC,QAAQ,GAAG,CAAC,CAAC;QAClD,GAAG,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QACjB,GAAG,CAAC,MAAM,EAAE,CAAC;IACjB,CAAC;IAEO,MAAM,CAAC,gBAAgB,CAAC,GAA6B,EAAE,CAAW,EAAE,CAAW,EAAE,SAAiB;QACtG,GAAG,CAAC,SAAS,EAAE,CAAC;QAChB,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACvB,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC;QAC7C,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACvB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;YACnC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;SAC1B;QAED,GAAG,CAAC,SAAS,GAAG,SAAS,CAAC;QAC1B,GAAG,CAAC,IAAI,EAAE,CAAC;QACX,GAAG,CAAC,MAAM,EAAE,CAAC;QAEb,GAAG,CAAC,SAAS,EAAE,CAAC;QAChB,GAAG,CAAC,WAAW,GAAG,MAAM,CAAC;QACzB,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC;QAC7C,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC;QAC7C,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACvB,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACvB,GAAG,CAAC,MAAM,EAAE,CAAC;QACb,GAAG,CAAC,WAAW,GAAG,OAAO,CAAC;IAC9B,CAAC;IAEO,MAAM,CAAC,iBAAiB,CAAC,GAA6B,EAAE,CAAW,EAAE,CAAW,EAAE,SAAiB;QACvG,GAAG,CAAC,SAAS,EAAE,CAAC;QAChB,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACvB,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACvB,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACvB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;YACxB,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;SAC1B;QAED,GAAG,CAAC,SAAS,GAAG,SAAS,CAAC;QAC1B,GAAG,CAAC,IAAI,EAAE,CAAC;QACX,GAAG,CAAC,MAAM,EAAE,CAAC;QAEb,GAAG,CAAC,SAAS,EAAE,CAAC;QAChB,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QACzB,KAAK,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,EAAE,EAAE;YAC3B,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;SAC1B;QACD,GAAG,CAAC,SAAS,GAAG,SAAS,CAAC;QAC1B,GAAG,CAAC,IAAI,EAAE,CAAC;QACX,GAAG,CAAC,MAAM,EAAE,CAAC;QAEb,GAAG,CAAC,SAAS,EAAE,CAAC;QAChB,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QACzB,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QACzB,GAAG,CAAC,MAAM,EAAE,CAAC;QAEb,GAAG,CAAC,SAAS,EAAE,CAAC;QAChB,GAAG,CAAC,WAAW,GAAG,MAAM,CAAC;QACzB,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACvB,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACvB,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACvB,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAEvB,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QACzB,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QACzB,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QACzB,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QACzB,GAAG,CAAC,MAAM,EAAE,CAAC;QACb,GAAG,CAAC,WAAW,GAAG,OAAO,CAAC;IAC9B,CAAC;IAEO,MAAM,CAAC,gBAAgB,CAAC,GAA6B,EAAE,CAAW,EAAE,CAAW,EAAE,SAAiB;QACtG,GAAG,CAAC,SAAS,EAAE,CAAC;QAChB,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACvB,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACvB,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACvB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE;YACzB,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;SAC1B;QACD,GAAG,CAAC,SAAS,GAAG,SAAS,CAAC;QAC1B,GAAG,CAAC,IAAI,EAAE,CAAC;QACX,GAAG,CAAC,MAAM,EAAE,CAAC;QAEb,GAAG,CAAC,SAAS,EAAE,CAAC;QAChB,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QACzB,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QACzB,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QACzB,KAAK,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,EAAE,EAAE;YAC3B,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;SAC1B;QACD,GAAG,CAAC,SAAS,GAAG,SAAS,CAAC;QAC1B,GAAG,CAAC,IAAI,EAAE,CAAC;QACX,GAAG,CAAC,MAAM,EAAE,CAAC;QAEb,GAAG,CAAC,SAAS,EAAE,CAAC;QAChB,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QACzB,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QACzB,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QAEzB,KAAK,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,EAAE,EAAE;YAC3B,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;SAC1B;QACD,GAAG,CAAC,SAAS,GAAG,SAAS,CAAC;QAC1B,GAAG,CAAC,IAAI,EAAE,CAAC;QACX,GAAG,CAAC,MAAM,EAAE,CAAC;QAEb,GAAG,CAAC,SAAS,EAAE,CAAC;QAChB,GAAG,CAAC,WAAW,GAAG,MAAM,CAAC;QACzB,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACvB,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACvB,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACvB,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACvB,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QACzB,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QACzB,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QACzB,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QACzB,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QACzB,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QACzB,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QACzB,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QACzB,GAAG,CAAC,MAAM,EAAE,CAAC;QACb,GAAG,CAAC,WAAW,GAAG,OAAO,CAAC;IAC9B,CAAC;;AA7Ua,wCAAQ,GAAW,EAAE,CAAC;AAEtB,oDAAoB,GAAuC;IACrE,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE;IAC9B,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE;CACnC,CAAC;AAEY,6DAA6B,GAAG;IAC1C,EAAE,MAAM,EAAE,sFAA2C,CAAC,UAAU,EAAE,UAAU,EAAE,qDAAc,CAAC,MAAM,EAAE,SAAS,EAAE,OAAO,GAAG;IAC1H,EAAE,MAAM,EAAE,sFAA2C,CAAC,iBAAiB,EAAE,UAAU,EAAE,qDAAc,CAAC,GAAG,EAAE,SAAS,EAAE,gBAAgB,EAAE;IACtI,EAAE,MAAM,EAAE,sFAA2C,CAAC,oBAAoB,EAAE,UAAU,EAAE,qDAAc,CAAC,EAAE,EAAE,SAAS,EAAE,iBAAiB,EAAE;CAC5I,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACfiD;AAC+C;AAET;AAC9B;AACwD;AAOvH,IAAa,mCAAmC,GAAhD,MAAa,mCAAmC;IAuD9C;QAlDU,2BAAsB,GAAG,IAAI,0DAAY,EAAW,CAAC;QACrD,4BAAuB,GAAG,IAAI,0DAAY,EAAE,CAAC;QAoBvD,mBAAc,GAAY,KAAK,CAAC;QAChC,yBAAoB,GAAY,KAAK,CAAC;QACtC,mBAAc,GAAY,KAAK,CAAC;QAChC,yBAAoB,GAAY,KAAK,CAAC;QACtC,mBAAc,GAAY,KAAK,CAAC;QAChC,yBAAoB,GAAY,KAAK,CAAC;QACtC,yBAAoB,GAAY,KAAK,CAAC;QACtC,qBAAgB,GAAY,KAAK,CAAC;QAC1B,cAAS,GAAY,KAAK,CAAC;QAEnC,0BAAqB,GAAG,wGAA+B,CAAC,oBAAoB,CAAC;QAa7E,iBAAY,GAAG,wGAA+B,CAAC,6BAA6B,CAAC;IAM7D,CAAC;IAEjB,QAAQ;QACN,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;QACtD,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC;QACnC,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC;QACrC,IAAI,IAAI,CAAC,uBAAuB,CAAC,EAAE,IAAI,IAAI,EAAE;YAC3C,IAAI,CAAC,kCAAkC,EAAE,CAAC;SAC3C;QAED,IAAI,CAAC,eAAe,EAAE,CAAC;IAEzB,CAAC;IAED,cAAc;QACZ,IAAI,IAAI,CAAC,EAAE,IAAI,EAAE,EAAE;YACjB,IAAI,YAAY,GAAG,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YACtC,IAAI,GAAG,GAAG,UAAU,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC;YACtC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,IAAI,GAAG,GAAG,IAAI,CAAC,EAAE;gBAC3C,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,GAAG,GAAG,EAAE,CAAC;gBAC3C,IAAI,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE;oBAC3B,IAAI,KAAK,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;oBACjC,GAAG,GAAG,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC;oBACzC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE;wBACf,IAAI,CAAC,uBAAuB,CAAC,EAAE,IAAI,GAAG,CAAC;qBACxC;iBACF;gBAED,IAAI,CAAC,KAAK,EAAE,CAAC;gBACb,IAAI,CAAC,UAAU,EAAE,CAAC;gBAClB,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC;gBAC1B,IAAI,CAAC,uBAAuB,CAAC,IAAI,EAAE,CAAC;aACrC;SACF;QACD,IAAI,CAAC,EAAE,GAAG,4DAAoB,CAAC,yBAAyB,CAAC,IAAI,CAAC,uBAAuB,CAAC,EAAE,CAAC,CAAC;IAC5F,CAAC;IAED,cAAc;QACZ,IAAI,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE;YAC5B,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC;YAC/C,IAAI,CAAC,KAAK,EAAE,CAAC;YACb,IAAI,CAAC,mBAAmB,EAAE,CAAC;YAC3B,IAAI,CAAC,UAAU,EAAE,CAAC;YAClB,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC;YAC1B,IAAI,CAAC,uBAAuB,CAAC,IAAI,EAAE,CAAC;SACrC;;YACI,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC;IAClE,CAAC;IAED,cAAc;QACZ,IAAI,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE;YAC5B,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC;YAC/C,IAAI,CAAC,mBAAmB,EAAE,CAAC;YAC3B,IAAI,CAAC,UAAU,EAAE,CAAC;YAClB,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC;YAC1B,IAAI,CAAC,uBAAuB,CAAC,IAAI,EAAE,CAAC;SACrC;;YACI,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC;IAClE,CAAC;IAED,cAAc;QACZ,IAAI,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE;YAC5B,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC;YAC/C,IAAI,CAAC,mBAAmB,EAAE,CAAC;YAC3B,IAAI,CAAC,UAAU,EAAE,CAAC;YAClB,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC;YAC1B,IAAI,CAAC,uBAAuB,CAAC,IAAI,EAAE,CAAC;SACrC;;YACI,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC;IAClE,CAAC;IAED,cAAc;QACZ,IAAI,IAAI,CAAC,EAAE,IAAI,CAAC,IAAI,IAAI,CAAC,EAAE,IAAI,GAAG,IAAI,IAAI,CAAC,EAAE,IAAI,IAAI,EAAE;YACrD,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,CAAC;YAC1C,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,GAAG,IAAI,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC;YACxE,IAAI,CAAC,YAAY,EAAE,CAAC;YACpB,IAAI,CAAC,uBAAuB,CAAC,IAAI,EAAE,CAAC;YACpC,gFAAgF;SACjF;;YACI,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,uBAAuB,CAAC,EAAE,CAAC;IACjD,CAAC;IAED,cAAc;QACZ,IAAI,IAAI,CAAC,EAAE,IAAI,IAAI,EAAE;YACnB,IAAI,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC,oBAAoB,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC,CAAC;YAC9F,IAAI,SAAS,IAAI,IAAI,CAAC,uBAAuB,CAAC,EAAE,EAAE;gBAChD,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,SAAS,CAAC;gBAC5C,IAAI,CAAC,mBAAmB,EAAE,CAAC;gBAC3B,IAAI,CAAC,UAAU,EAAE,CAAC;gBAClB,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC;gBAC1B,IAAI,CAAC,uBAAuB,CAAC,IAAI,EAAE,CAAC;aACrC;SACF;QACD,2DAA2D;QAC3D,kBAAkB;QAClB,wBAAwB;QACxB,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,uBAAuB,CAAC,EAAE,CAAC;IAE5C,CAAC;IAED,cAAc;QACZ,IAAI,IAAI,CAAC,EAAE,IAAI,IAAI,EAAE;YACnB,IAAI,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC,oBAAoB,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC,CAAC;YAC9F,IAAI,SAAS,IAAI,IAAI,CAAC,uBAAuB,CAAC,EAAE,EAAE;gBAChD,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,SAAS,CAAC;gBAC5C,IAAI,CAAC,mBAAmB,EAAE,CAAC;gBAC3B,IAAI,CAAC,YAAY,EAAE,CAAC;gBACpB,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC;gBAC1B,IAAI,CAAC,uBAAuB,CAAC,IAAI,EAAE,CAAC;aACrC;SACF;QAED,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,uBAAuB,CAAC,EAAE,CAAC;QAC1C,gEAAgE;QAChE,qBAAqB;QACrB,2BAA2B;IAC7B,CAAC;IAED,cAAc;QACZ,IAAI,IAAI,CAAC,EAAE,IAAI,IAAI,EAAE;YACnB,IAAI,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC,oBAAoB,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC,CAAC;YAC9F,IAAI,SAAS,IAAI,IAAI,CAAC,uBAAuB,CAAC,EAAE,EAAE;gBAChD,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,SAAS;gBAC3C,IAAI,CAAC,mBAAmB,EAAE,CAAC;gBAC3B,IAAI,CAAC,UAAU,EAAE,CAAC;gBAClB,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC;gBAC1B,IAAI,CAAC,uBAAuB,CAAC,IAAI,EAAE,CAAC;aACrC;SACF;QAED,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,uBAAuB,CAAC,EAAE,CAAC;IAC5C,CAAC;IAED,qBAAqB;QACnB,IAAI,CAAC,mBAAmB,EAAE,CAAC;QAC3B,IAAI,CAAC,uBAAuB,CAAC,IAAI,EAAE,CAAC;IACtC,CAAC;IAED,qBAAqB,CAAC,YAAoB;QACxC,QAAQ,YAAY,EAAE;YACpB,KAAK,CAAC;gBACJ,IAAI,CAAC,uBAAuB,CAAC,mBAAmB,GAAG,IAAI,CAAC,eAAe,CAAC,kBAAkB,CAAC;gBAC3F,IAAI,CAAC,uBAAuB,CAAC,uBAAuB,GAAG,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC;gBACjF,MAAM;YACR,KAAK,CAAC;gBACJ,IAAI,CAAC,uBAAuB,CAAC,mBAAmB,GAAG,IAAI,CAAC,eAAe,CAAC,kBAAkB,CAAC;gBAC3F,IAAI,CAAC,uBAAuB,CAAC,uBAAuB,GAAG,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC;gBACjF,MAAM;YACR,KAAK,CAAC;gBACJ,IAAI,CAAC,uBAAuB,CAAC,mBAAmB,GAAG,IAAI,CAAC,eAAe,CAAC,kBAAkB,CAAC;gBAC3F,IAAI,CAAC,uBAAuB,CAAC,uBAAuB,GAAG,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC;gBACjF,MAAM;SACT;QAED,IAAI,CAAC,uBAAuB,CAAC,IAAI,EAAE,CAAC;IACtC,CAAC;IAED,UAAU,CAAC,KAAK;QACd,IAAI,CAAC,4EAAc,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,GAAG,KAAK,GAAG,IAAI,KAAK,CAAC,GAAG,KAAK,GAAG,IAAI,KAAK,CAAC,GAAG,KAAK,OAAO,EAAE;YACjG,KAAK,CAAC,cAAc,EAAE,CAAC;SACxB;IACH,CAAC;IAEO,UAAU;QAChB,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,GAAG,CAAC,CAAC;QAChF,0FAA0F;QAC1F,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC,uBAAuB,CAAC,EAAE,IAAI,IAAI,CAAC,uBAAuB,CAAC,EAAE,CAAC;QAC/F,2EAA2E;QAC3E,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,GAAG,CAAC,CAAC;QAChF,qFAAqF;QACrF,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC,uBAAuB,CAAC,EAAE,IAAI,IAAI,CAAC,uBAAuB,CAAC,EAAE,CAAC;QAC/F,2EAA2E;QAC3E,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC;QAC5E,wFAAwF;QACxF,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;QACtJ,wGAAwG;QACxG,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC,uBAAuB,CAAC,EAAE,IAAI,IAAI,CAAC,uBAAuB,CAAC,EAAE,CAAC;QAC/F,2EAA2E;QAE3E,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,cAAc,IAAI,IAAI,CAAC,oBAAoB,IAAI,IAAI,CAAC,cAAc,IAAI,IAAI,CAAC,oBAAoB;YACnH,IAAI,CAAC,cAAc,IAAI,IAAI,CAAC,oBAAoB,IAAI,IAAI,CAAC,oBAAoB,IAAI,IAAI,CAAC,gBAAgB,CAAE;QAC1G,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAEjD,IAAI,CAAC,YAAY,EAAE,CAAC;IACtB,CAAC;IAEO,UAAU,CAAC,KAAa;QAC9B,OAAO,KAAK,IAAI,CAAC,IAAI,KAAK,GAAG,CAAC,IAAI,CAAC,CAAC;IACtC,CAAC;IAEO,kCAAkC;QACxC,IAAI,CAAS,CAAC;QACd,CAAC,IAAI,CAAC,uBAAuB,CAAC,cAAc,EAAE,IAAI,CAAC,uBAAuB,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,mBAAmB,CAAC,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC,CAAC;QACrJ,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,IAAI,CAAC,UAAU,CAAC,oBAAoB,CAAC,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;QAC5G,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,IAAI,CAAC,uBAAuB,CAAC,EAAE,CAAC;QAClE,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,EAAE,CAAC,uBAAsB;QAC3D,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,CAAC,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,uBAAsB;QACtH,8BAA8B;QAC9B,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;QAC5E,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC,GAAG,EAAE,CAAC;QACtK,iDAAiD;QACjD,CAAC,GAAG,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,IAAI,CAAC,uBAAuB,CAAC,EAAE,CAAC;QAClJ,mBAAmB;QACnB,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,uBAAuB,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,GAAG,EAAE,CAAC;QACjI,IAAI,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,EAAE;YAAE,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,EAAE,CAAC;QAC/E,0DAA0D;QAC1D,CAAC,GAAG,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,CAAC,CAAC;QAC9E,mBAAmB;QACnB,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,uBAAuB,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,GAAG,EAAE,CAAC;QACjI,0DAA0D;QAC1D,IAAI,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,EAAE;YAAE,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,EAAE,CAAC;IACjF,CAAC;IAEO,eAAe;QACrB,IAAI,CAAC,EAAE,GAAG,4DAAoB,CAAC,yBAAyB,CAAC,IAAI,CAAC,uBAAuB,CAAC,EAAE,CAAC,CAAC;QAC1F,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC;QAC3D,aAAa;QACb,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC;QAC3D,aAAa;QACb,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC;QAC3D,aAAa;QACb,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,uBAAuB,CAAC,EAAE,CAAC;QAC1C,4BAA4B;QAC5B,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,uBAAuB,CAAC,EAAE,CAAC;QAC1C,IAAI;QACJ,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,uBAAuB,CAAC,EAAE,CAAC;QAC1C,IAAI;QACJ,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,uBAAuB,CAAC,EAAE,CAAC;QAC1C,IAAI;QACJ,IAAI,CAAC,KAAK,EAAE,CAAC;QACb,IAAI,CAAC,mBAAmB,EAAE,CAAC;QAC3B,IAAI,CAAC,kBAAkB,EAAE,CAAC;QAC1B,IAAI,CAAC,YAAY,EAAE,CAAC;IACtB,CAAC;IAEM,kBAAkB;QACvB,IAAI,CAAC,iBAAiB,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;QAChC,IAAI,CAAC,IAAI,CAAC,uBAAuB,CAAC,mBAAmB,EAAE;YACrD,IAAI,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC;SAC/B;aAAM;YACL,IAAI,CAAC,eAAe,CAAC,kBAAkB,GAAG,IAAI,CAAC,uBAAuB,CAAC,mBAAmB,CAAC;YAC3F,IAAI,CAAC,eAAe,CAAC,IAAI,GAAG,IAAI,CAAC,uBAAuB,CAAC,uBAAuB,CAAC;SAClF;QAED,IAAI,CAAC,iBAAiB,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;QAChC,IAAI,CAAC,IAAI,CAAC,uBAAuB,CAAC,mBAAmB,EAAE;YACrD,IAAI,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC;SAC/B;aAAM;YACL,IAAI,CAAC,eAAe,CAAC,kBAAkB,GAAG,IAAI,CAAC,uBAAuB,CAAC,mBAAmB,CAAC;YAC3F,IAAI,CAAC,eAAe,CAAC,IAAI,GAAG,IAAI,CAAC,uBAAuB,CAAC,uBAAuB,CAAC;SAClF;QAED,IAAI,CAAC,iBAAiB,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;QAChC,IAAI,CAAC,IAAI,CAAC,uBAAuB,CAAC,mBAAmB,EAAE;YACrD,IAAI,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC;SAC/B;aAAM;YACL,IAAI,CAAC,eAAe,CAAC,kBAAkB,GAAG,IAAI,CAAC,uBAAuB,CAAC,mBAAmB,CAAC;YAC3F,IAAI,CAAC,eAAe,CAAC,IAAI,GAAG,IAAI,CAAC,uBAAuB,CAAC,uBAAuB,CAAC;SAClF;IACH,CAAC;IAEO,iBAAiB,CAAC,SAAiB,EAAE,UAAmB,KAAK;QACnE,IAAI,oBAAoB,GAA6E,EAAE,CAAC;QACxG,IAAI,SAAiB,CAAC;QACtB,IAAI,YAAoB,CAAC;QACzB,QAAQ,SAAS,EAAE;YACjB,KAAK,CAAC;gBACJ,SAAS,GAAG,IAAI,CAAC,uBAAuB,CAAC,EAAE,CAAC;gBAC5C,YAAY,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC;gBAC/D,MAAM;YACR,KAAK,CAAC;gBACJ,SAAS,GAAG,IAAI,CAAC,uBAAuB,CAAC,EAAE,CAAC;gBAC5C,YAAY,GAAG,CAAC,GAAG,IAAI,CAAC,uBAAuB,CAAC,EAAE,CAAC;gBACnD,MAAM;YACR,KAAK,CAAC;gBACJ,SAAS,GAAG,IAAI,CAAC,uBAAuB,CAAC,EAAE,CAAC;gBAC5C,YAAY,GAAG,CAAC,GAAG,IAAI,CAAC,uBAAuB,CAAC,EAAE,CAAC;gBACnD,MAAM;SACT;QAED,IAAI,cAAc,GAAG,wGAA+B,CAAC,oBAAoB,CAAC,SAAS,EAAE,YAAY,EAAE,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;QACrJ,cAAc,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;YAC5B,oBAAoB,CAAC,IAAI,CAAC;gBACxB,KAAK,EAAE,aAAa,IAAI,CAAC,kBAAkB,WAAW,IAAI,CAAC,IAAI,GAAG;gBAClE,KAAK,EAAE,EAAE,kBAAkB,EAAE,IAAI,CAAC,kBAAkB,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE;aACxE,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,QAAQ,SAAS,EAAE;YACjB,KAAK,CAAC;gBACJ,IAAI,CAAC,sBAAsB,GAAG,oBAAoB,CAAC;gBACnD,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,sBAAsB,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;gBAC5D,IAAI,CAAC,OAAO,EAAE;oBACZ,IAAI,CAAC,uBAAuB,CAAC,mBAAmB,GAAG,IAAI,CAAC,eAAe,CAAC,kBAAkB,CAAC;oBAC3F,IAAI,CAAC,uBAAuB,CAAC,uBAAuB,GAAG,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC;iBAClF;gBACD,MAAM;YACR,KAAK,CAAC;gBACJ,IAAI,CAAC,sBAAsB,GAAG,oBAAoB,CAAC;gBACnD,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,sBAAsB,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;gBAC5D,IAAI,CAAC,OAAO,EAAE;oBACZ,IAAI,CAAC,uBAAuB,CAAC,mBAAmB,GAAG,IAAI,CAAC,eAAe,CAAC,kBAAkB,CAAC;oBAC3F,IAAI,CAAC,uBAAuB,CAAC,uBAAuB,GAAG,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC;iBAClF;gBACD,MAAM;YACR,KAAK,CAAC;gBACJ,IAAI,CAAC,sBAAsB,GAAG,oBAAoB,CAAC;gBACnD,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,sBAAsB,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;gBAC5D,IAAI,CAAC,OAAO,EAAE;oBACZ,IAAI,CAAC,uBAAuB,CAAC,mBAAmB,GAAG,IAAI,CAAC,eAAe,CAAC,kBAAkB,CAAC;oBAC3F,IAAI,CAAC,uBAAuB,CAAC,uBAAuB,GAAG,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC;iBAClF;gBACD,MAAM;SACT;IACH,CAAC;IAEO,KAAK;QACX,IAAI,CAAC,EAAE,GAAG,wGAA+B,CAAC,4BAA4B,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,EAAE,IAAI,CAAC,uBAAuB,CAAC,EAAE,EAAE,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;QACxM,IAAI,CAAC,EAAE,GAAG,4DAAoB,CAAC,yBAAyB,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACpE,CAAC;IAEO,mBAAmB;QACzB,IAAI,CAAC,cAAc,GAAG,EAAE,CAAC;QACzB,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,cAAc,EAAE,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,eAAe,EAAE,IAAI,CAAC,UAAU,CAAC,GAAG,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC;QACzI,IAAI,gBAAgB,GAAG,CAAC,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC,uBAAuB,CAAC,EAAE;YAC3F,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC,uBAAuB,CAAC,EAAE;YACrE,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC,uBAAuB,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC;QAC/E,2DAA2D;QAC3D,IAAI,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,UAAU,GAAG,gBAAgB,CAAC,GAAG,EAAE,CAAC,GAAG,EAAE,CAAC;QAC/E,uDAAuD;QAEvD,IAAI,GAAG,GAAG,IAAI,CAAC,UAAU,CAAC,kBAAkB,CAAC,IAAI,CAAC,uBAAuB,CAAC,cAAc,EAAE,IAAI,CAAC,uBAAuB,CAAC,EAAE,CAAC,CAAC;QAC3H,IAAI,CAAC,gBAAgB,GAAG,EAAE,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,IAAI,GAAG,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;QAC/E,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,cAAc,EAAE,GAAG,EAAE,eAAe,EAAE,EAAE,EAAE,KAAK,EAAE,IAAI,CAAC,gBAAgB,EAAE,CAAC,CAAC;IACxH,CAAC;IAEO,YAAY;QAClB,IAAI,IAAI,CAAC,SAAS,EAAE;YAClB,wGAA+B,CAAC,eAAe,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YAC1D,OAAO;SACR;QACD,wGAA+B,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACtD,IAAI,CAAC,KAAK,GAAG,wGAA+B,CAAC,cAAc,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,oBAAoB,CAAC,QAAQ,CAAC,CAAC;QAC1G,IAAI,CAAC,GAAG,CAAC,WAAW,GAAG,IAAI,CAAC,2BAA2B,CAAC;QACxD,IAAI,CAAC,eAAe,EAAE,CAAC;QACvB,IAAI,CAAC,iBAAiB,EAAE,CAAC;QACzB,IAAI,CAAC,gBAAgB,EAAE,CAAC;IAE1B,CAAC;IAEO,gBAAgB;QACtB,IAAI,CAAC,GAAG,CAAC,IAAI,GAAG,GAAG,wGAA+B,CAAC,QAAQ,UAAU,CAAC;QACtE,IAAI,CAAC,GAAG,CAAC,WAAW,GAAG,IAAI,CAAC,2BAA2B,CAAC;QACxD,IAAI,CAAC,GAAG,CAAC,SAAS,GAAG,IAAI,CAAC,2BAA2B,CAAC;QACtD,IAAI,CAAC,UAAU,EAAE,CAAC;QAClB,IAAI,CAAC,UAAU,EAAE,CAAC;QAClB,IAAI,CAAC,UAAU,EAAE,CAAC;QAClB,IAAI,CAAC,UAAU,EAAE,CAAC;QAClB,IAAI,CAAC,UAAU,EAAE,CAAC;QAClB,IAAI,CAAC,UAAU,EAAE,CAAC;QAClB,IAAI,CAAC,UAAU,EAAE,CAAC;QAClB,IAAI,CAAC,UAAU,EAAE,CAAC;QAClB,IAAI,CAAC,UAAU,EAAE,CAAC;QAClB,IAAI,CAAC,UAAU,EAAE;QACjB,IAAI,CAAC,UAAU,EAAE;QACjB,IAAI,CAAC,UAAU,EAAE;IACnB,CAAC;IAEO,UAAU;QAChB,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,GAAG,CAAC,GAAG,wGAA+B,CAAC,QAAQ,GAAG,CAAC,CAAC;QACtE,IAAI,CAAC,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,GAAG,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,GAAG,wGAA+B,CAAC,QAAQ,GAAG,CAAC,CAAC;QAC1H,wGAA+B,CAAC,8BAA8B,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,uBAAuB,CAAC,EAAE,CAAC,CAAC;IACnI,CAAC;IAEO,UAAU;QAChB,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,GAAG,CAAC,GAAG,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,GAAG,wGAA+B,CAAC,QAAQ,GAAG,CAAC,CAAC;QAC5K,IAAI,CAAC,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;QACxB,wGAA+B,CAAC,8BAA8B,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,uBAAuB,CAAC,EAAE,CAAC,CAAC;IACnI,CAAC;IAEO,UAAU;QAChB,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,GAAG,CAAC,GAAG,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK;YAC1H,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,IAAI,CAAC,KAAK,GAAG,wGAA+B,CAAC,QAAQ,GAAG,CAAC,CAAC;QAC7I,IAAI,CAAC,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;QACxB,wGAA+B,CAAC,8BAA8B,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,uBAAuB,CAAC,EAAE,CAAC,CAAC;IACnI,CAAC;IAEO,UAAU;QAChB,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,GAAG,CAAC,GAAG,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK;YAC1H,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,GAAG,wGAA+B,CAAC,QAAQ,GAAG,CAAC,CAAC;QAClG,IAAI,CAAC,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,GAAG,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,GAAG,wGAA+B,CAAC,QAAQ,CAAC;QACtH,wGAA+B,CAAC,iCAAiC,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,uBAAuB,CAAC,EAAE,CAAC,CAAC;IACtI,CAAC;IAEO,UAAU;QAChB,IAAI,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,CAAC,EAAE;YACvC,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC;YACvB,IAAI,CAAC,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;YACxB,wGAA+B,CAAC,8BAA8B,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,uBAAuB,CAAC,EAAE,CAAC,CAAC;SAClI;IACH,CAAC;IAEO,UAAU;QAChB,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,GAAG,CAAC,GAAG,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,GAAG,wGAA+B,CAAC,QAAQ,GAAG,CAAC,CAAC;QACzH,IAAI,CAAC,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,GAAG,IAAI,CAAC,KAAK,GAAG,wGAA+B,CAAC,QAAQ,CAAC;QACtG,wGAA+B,CAAC,iCAAiC,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,uBAAuB,CAAC,EAAE,CAAC,CAAC;IACtI,CAAC;IAEO,UAAU;QAChB,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,GAAG,CAAC,GAAG,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK;YAC1H,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,GAAG,wGAA+B,CAAC,QAAQ,GAAG,CAAC,CAAC;QACjJ,IAAI,CAAC,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,GAAG,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,GAAG,wGAA+B,CAAC,QAAQ,GAAG,CAAC,CAAC;QAC1H,wGAA+B,CAAC,8BAA8B,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,uBAAuB,CAAC,EAAE,CAAC,CAAC;IACnI,CAAC;IAEO,UAAU;QAChB,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,GAAG,CAAC,GAAG,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK;YAC1H,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC;QACnD,IAAI,CAAC,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,GAAG,wGAA+B,CAAC,QAAQ,GAAG,CAAC,CAAC;QACvE,wGAA+B,CAAC,eAAe,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC;IACvE,CAAC;IAEO,UAAU;QAChB,IAAI,IAAI,CAAC,EAAE,GAAG,CAAC,EAAE;YACf,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,GAAG,CAAC,GAAG,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,GAAG,wGAA+B,CAAC,QAAQ,GAAG,CAAC,CAAC;YAC5K,IAAI,CAAC,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,GAAG,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC;YACtG,wGAA+B,CAAC,8BAA8B,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC;SAC1G;IACH,CAAC;IAEO,UAAU;QAChB,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,GAAG,CAAC,GAAG,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC;QAC1E,IAAI,CAAC,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,GAAG,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC;QAC3E,wGAA+B,CAAC,eAAe,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC;IACvE,CAAC;IAEO,UAAU;QAChB,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC;QAC1L,IAAI,CAAC,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,GAAG,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC;QAC3E,wGAA+B,CAAC,eAAe,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC;IACvE,CAAC;IAEO,UAAU;QAChB,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC;QACxJ,IAAI,CAAC,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,GAAG,wGAA+B,CAAC,QAAQ,GAAG,CAAC,CAAC;QACvE,wGAA+B,CAAC,eAAe,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC;IACvE,CAAC;IAEO,eAAe;QACrB,uBAAuB;QACvB,IAAI,CAAC,GAAa,IAAI,CAAC,gBAAgB,EAAE,CAAC;QAC1C,IAAI,CAAC,GAAa,IAAI,CAAC,gBAAgB,EAAE,CAAC;QAC1C,wGAA+B,CAAC,wBAAwB,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,yBAAyB,CAAC,CAAC;IAC3G,CAAC;IAEO,gBAAgB;QACtB,IAAI,CAAC,GAAa,EAAE,CAAC;QACrB,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;QAChJ,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;QAC7C,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;QAC7C,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACb,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;QAC7C,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACb,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACd,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACd,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACd,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACd,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACd,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACd,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACb,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;QAChJ,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YACjC,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC;SAC5C;QACD,OAAO,CAAC,CAAC;IACX,CAAC;IAEO,gBAAgB;QACtB,IAAI,CAAC,GAAa,EAAE,CAAC;QACrB,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;QACrF,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACb,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACb,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,uBAAuB,CAAC,EAAE,CAAC,CAAC;QAC/C,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACb,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,uBAAuB,CAAC,EAAE,CAAC,CAAC;QAC/C,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACb,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACb,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACb,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACb,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACb,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,uBAAuB,CAAC,EAAE,CAAC,CAAC;QAChD,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QACd,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,uBAAuB,CAAC,EAAE,CAAC,CAAC;QAC/C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YACjC,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC;SAC3C;QACD,OAAO,CAAC,CAAC;IACX,CAAC;IAEO,iBAAiB;QACvB,wGAA+B,CAAC,oBAAoB,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,UAAU,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;QAChG,wGAA+B,CAAC,oBAAoB,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,uBAAuB,CAAC,EAAE,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;IAC9G,CAAC;CAEF;AA9iBU;IAAR,2DAAK,EAAE;8BAAuB,gEAAwB;iFAAC;AAC/C;IAAR,2DAAK,EAAE;8BAA0B,8DAAsB;oFAAC;AAChD;IAAR,2DAAK,EAAE;8BAAa,qEAA6B;uEAAC;AAEzC;IAAT,4DAAM,EAAE;;mFAAsD;AACrD;IAAT,4DAAM,EAAE;;oFAA8C;AAE9C;IAAR,2DAAK,EAAE;;sFAAmC;AAClC;IAAR,2DAAK,EAAE;;wFAAoC;AAG5C;IADC,+DAAS,CAAC,kBAAkB,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;8BAChC,wDAAU;mEAAoB;AAZnC,mCAAmC;IAL/C,+DAAS,CAAC;QACT,QAAQ,EAAE,8CAA8C;QACxD,4TAA+D;KAEhE,CAAC;;GACW,mCAAmC,CA+iB/C;AA/iB+C;;;;;;;;;;;;;;;;;;;;ACZY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACAL;AAC+C;AAET;AAC9B;AAC6E;AAO5I,IAAa,0CAA0C,GAAvD,MAAa,0CAA0C;IAgDrD;QAxCU,2BAAsB,GAAG,IAAI,0DAAY,EAAW,CAAC;QACrD,4BAAuB,GAAG,IAAI,0DAAY,EAAE,CAAC;QAcvD,mBAAc,GAAY,KAAK,CAAC;QAChC,qBAAgB,GAAY,KAAK,CAAC;QAClC,mBAAc,GAAY,KAAK,CAAC;QAChC,0BAAqB,GAAY,KAAK,CAAC;QACvC,yBAAoB,GAAY,KAAK,CAAC;QACtC,yBAAoB,GAAY,KAAK,CAAC;QACtC,qBAAgB,GAAY,KAAK,CAAC;QAC1B,cAAS,GAAY,KAAK,CAAC;QAEnC,0BAAqB,GAAG,wGAA+B,CAAC,oBAAoB,CAAC;QAU7E,iBAAY,GAAG,wGAA+B,CAAC,6BAA6B,CAAC;IAM7D,CAAC;IAEjB,QAAQ;QACN,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;QACtD,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC;QACnC,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC;QAErC,IAAI,IAAI,CAAC,uBAAuB,CAAC,EAAE,IAAI,SAAS,IAAI,IAAI,CAAC,uBAAuB,CAAC,EAAE,IAAI,IAAI,EAAE;YAC3F,IAAI,CAAC,kCAAkC,EAAE,CAAC;SAC3C;QAED,IAAI,CAAC,eAAe,EAAE,CAAC;IACzB,CAAC;IAED,cAAc;QACZ,IAAI,IAAI,CAAC,EAAE,IAAI,EAAE,EAAE;YACjB,IAAI,YAAY,GAAG,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YACtC,IAAI,GAAG,GAAG,UAAU,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC;YACtC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,IAAI,GAAG,GAAG,IAAI,CAAC,EAAE;gBAC3C,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,GAAG,GAAG,EAAE,CAAC;gBAC3C,IAAI,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE;oBAC3B,IAAI,KAAK,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;oBACjC,GAAG,GAAG,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC;oBACzC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE;wBACf,IAAI,CAAC,uBAAuB,CAAC,EAAE,IAAI,GAAG,CAAC;qBACxC;iBACF;gBACD,IAAI,CAAC,KAAK,EAAE,CAAC;gBACb,IAAI,CAAC,UAAU,EAAE,CAAC;gBAClB,IAAI,CAAC,YAAY,EAAE,CAAC;gBACpB,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC;gBAC1B,IAAI,CAAC,uBAAuB,CAAC,IAAI,EAAE,CAAC;aACrC;SACF;QACD,IAAI,CAAC,EAAE,GAAG,4DAAoB,CAAC,yBAAyB,CAAC,IAAI,CAAC,uBAAuB,CAAC,EAAE,CAAC,CAAC;IAC5F,CAAC;IAED,cAAc;QACZ,IAAI,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE;YAC5B,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC;YAC/C,IAAI,CAAC,KAAK,EAAE,CAAC;YACb,IAAI,CAAC,mBAAmB,EAAE,CAAC;YAC3B,IAAI,CAAC,UAAU,EAAE,CAAC;YAClB,IAAI,CAAC,YAAY,EAAE,CAAC;YACpB,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC;YAC1B,IAAI,CAAC,uBAAuB,CAAC,IAAI,EAAE,CAAC;SACrC;;YACI,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC;IAClE,CAAC;IAED,cAAc;QACZ,IAAI,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE;YAC5B,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC;YAC/C,IAAI,CAAC,mBAAmB,EAAE,CAAC;YAC3B,IAAI,CAAC,UAAU,EAAE,CAAC;YAClB,IAAI,CAAC,YAAY,EAAE,CAAC;YACpB,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC;YAC1B,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC;YAC1B,IAAI,CAAC,uBAAuB,CAAC,IAAI,EAAE,CAAC;SACrC;;YACI,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC;IAClE,CAAC;IAED,cAAc;QACZ,IAAI,IAAI,CAAC,EAAE,IAAI,IAAI,EAAE;YACnB,IAAI,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC,oBAAoB,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC,CAAC;YAC9F,IAAI,SAAS,IAAI,IAAI,CAAC,uBAAuB,CAAC,EAAE,EAAE;gBAChD,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,SAAS,CAAC;gBAC5C,IAAI,CAAC,mBAAmB,EAAE,CAAC;gBAC3B,IAAI,CAAC,UAAU,EAAE,CAAC;gBAClB,IAAI,CAAC,YAAY,EAAE,CAAC;gBACpB,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC;gBAC1B,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC;gBAC1B,IAAI,CAAC,uBAAuB,CAAC,IAAI,EAAE,CAAC;aACrC;SACF;QACD,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,uBAAuB,CAAC,EAAE,CAAC;IAC5C,CAAC;IAED,cAAc;QACZ,IAAI,IAAI,CAAC,EAAE,IAAI,IAAI,EAAE;YACnB,IAAI,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC,oBAAoB,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,UAAU,CAAC,kBAAkB,CAAC,CAAC;YAClG,IAAI,SAAS,IAAI,IAAI,CAAC,uBAAuB,CAAC,EAAE,EAAE;gBAChD,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,SAAS,CAAC;gBAC5C,IAAI,CAAC,mBAAmB,EAAE,CAAC;gBAC3B,IAAI,CAAC,UAAU,EAAE,CAAC;gBAClB,IAAI,CAAC,YAAY,EAAE,CAAC;gBACpB,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC;gBAC1B,IAAI,CAAC,uBAAuB,CAAC,IAAI,EAAE,CAAC;aACrC;SACF;QACD,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,uBAAuB,CAAC,EAAE,CAAC;IAC5C,CAAC;IAED,cAAc;QACZ,IAAI,IAAI,CAAC,EAAE,IAAI,CAAC,IAAI,IAAI,CAAC,EAAE,IAAI,GAAG,IAAI,IAAI,CAAC,EAAE,IAAI,IAAI,EAAE;YACrD,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,CAAC;YAC1C,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,GAAG,IAAI,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC;YACxE,IAAI,CAAC,YAAY,EAAE,CAAC;YACpB,IAAI,CAAC,uBAAuB,CAAC,IAAI,EAAE,CAAC;SACrC;;YACI,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,uBAAuB,CAAC,EAAE,CAAC;IACjD,CAAC;IAED,qBAAqB;QACnB,IAAI,CAAC,mBAAmB,EAAE,CAAC;QAC3B,IAAI,CAAC,uBAAuB,CAAC,IAAI,EAAE,CAAC;IACtC,CAAC;IAED,qBAAqB,CAAC,YAAoB;QACxC,QAAQ,YAAY,EAAE;YACpB,KAAK,CAAC;gBACJ,IAAI,CAAC,uBAAuB,CAAC,mBAAmB,GAAG,IAAI,CAAC,eAAe,CAAC,kBAAkB,CAAC;gBAC3F,IAAI,CAAC,uBAAuB,CAAC,uBAAuB,GAAG,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC;gBACjF,MAAM;YACR,KAAK,CAAC;gBACJ,IAAI,CAAC,uBAAuB,CAAC,mBAAmB,GAAG,IAAI,CAAC,eAAe,CAAC,kBAAkB,CAAC;gBAC3F,IAAI,CAAC,uBAAuB,CAAC,uBAAuB,GAAG,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC;gBACjF,MAAM;SACT;QAED,IAAI,CAAC,uBAAuB,CAAC,IAAI,EAAE,CAAC;IACtC,CAAC;IAED,UAAU,CAAC,KAAK;QACd,IAAI,CAAC,4EAAc,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,GAAG,KAAK,GAAG,IAAI,KAAK,CAAC,GAAG,KAAK,GAAG,IAAI,KAAK,CAAC,GAAG,KAAK,OAAO,EAAE;YACjG,KAAK,CAAC,cAAc,EAAE,CAAC;SACxB;IACH,CAAC;IAEO,UAAU,CAAC,KAAa;QAC9B,OAAO,KAAK,IAAI,CAAC,IAAI,KAAK,GAAG,CAAC,IAAI,CAAC,CAAC;IACtC,CAAC;IAEO,kCAAkC;QACxC,IAAI,CAAS,CAAC;QACd,IAAI,CAAS,CAAC;QACd,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE;YACvB,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE;gBACvB,IAAI,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG;oBAAE,MAAM;aACjE;YACD,IAAI,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG;gBAAE,MAAM;SACjE;QACD,IAAI,CAAC,GAAG,CAAC,EAAE;YACT,CAAC,GAAG,CAAC,CAAC;YACN,CAAC,GAAG,CAAC,CAAC;SACP;QACD,CAAC,IAAI,CAAC,uBAAuB,CAAC,cAAc,EAAE,IAAI,CAAC,uBAAuB,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,mBAAmB,CAAC,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC,CAAC;QACrJ,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,EAAE,CAAC,iBAAgB;QACrD,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,CAAC,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC;QAChG,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,GAAG,CAAC,GAAG,IAAI,CAAC,CAAC;QACnE,yBAAyB;QACzB,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,uBAAuB,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC,GAAG,EAAE,CAAC;QAC/M,IAAI,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,EAAE;YAAE,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,EAAE,CAAC;QAC/E,iEAAiE;QACjE,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,IAAI,CAAC,UAAU,CAAC,oBAAoB,CAAC,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,GAAG,EAAE,IAAI,CAAC,UAAU,CAAC,kBAAkB,CAAC,CAAC;QAClJ,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,uBAAuB,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,IAAI,CAAC,uBAAuB,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC,GAAG,EAAE,CAAC;QACrR,IAAI,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,EAAE;YAAE,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,EAAE,CAAC;QAC/E,IAAI,IAAI,CAAC,uBAAuB,CAAC,EAAE,IAAI,IAAI,CAAC,uBAAuB,CAAC,EAAE;YAAE,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,EAAE,CAAC;QAC/I,2GAA2G;QAC3G,qCAAqC;IACvC,CAAC;IAEO,eAAe;QACrB,IAAI,CAAC,EAAE,GAAG,4DAAoB,CAAC,yBAAyB,CAAC,IAAI,CAAC,uBAAuB,CAAC,EAAE,CAAC,CAAC;QAC1F,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC;QAC3D,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC;QAC3D,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,uBAAuB,CAAC,EAAE,CAAC;QAC1C,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,uBAAuB,CAAC,EAAE,CAAC;QAC1C,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,uBAAuB,CAAC,EAAE,CAAC;QAC1C,IAAI,CAAC,KAAK,EAAE,CAAC;QACb,IAAI,CAAC,kBAAkB,EAAE,CAAC;QAC1B,IAAI,CAAC,YAAY,EAAE,CAAC;QACpB,IAAI,CAAC,mBAAmB,EAAE,CAAC;IAC7B,CAAC;IAEM,kBAAkB;QACvB,IAAI,CAAC,iBAAiB,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;QAChC,IAAI,CAAC,IAAI,CAAC,uBAAuB,CAAC,mBAAmB,EAAE;YACrD,IAAI,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC;SAC/B;aAAM;YACL,IAAI,CAAC,eAAe,CAAC,kBAAkB,GAAG,IAAI,CAAC,uBAAuB,CAAC,mBAAmB,CAAC;YAC3F,IAAI,CAAC,eAAe,CAAC,IAAI,GAAG,IAAI,CAAC,uBAAuB,CAAC,uBAAuB,CAAC;SAClF;QAED,IAAI,CAAC,iBAAiB,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;QAChC,IAAI,CAAC,IAAI,CAAC,uBAAuB,CAAC,mBAAmB,EAAE;YACrD,IAAI,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC;SAC/B;aAAM;YACL,IAAI,CAAC,eAAe,CAAC,kBAAkB,GAAG,IAAI,CAAC,uBAAuB,CAAC,mBAAmB,CAAC;YAC3F,IAAI,CAAC,eAAe,CAAC,IAAI,GAAG,IAAI,CAAC,uBAAuB,CAAC,uBAAuB,CAAC;SAClF;IACH,CAAC;IAEO,iBAAiB,CAAC,SAAiB,EAAE,UAAmB,KAAK;QACnE,IAAI,oBAAoB,GAA6E,EAAE,CAAC;QACxG,IAAI,SAAiB,CAAC;QACtB,IAAI,YAAoB,CAAC;QACzB,QAAQ,SAAS,EAAE;YACjB,KAAK,CAAC;gBACJ,SAAS,GAAG,IAAI,CAAC,uBAAuB,CAAC,EAAE,CAAC;gBAC5C,YAAY,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,uBAAuB,CAAC,EAAE,CAAC,CAAC;gBACjG,MAAM;YACR,KAAK,CAAC;gBACJ,SAAS,GAAG,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,IAAI,CAAC,uBAAuB,CAAC,EAAE,CAAC;gBAC9E,YAAY,GAAG,CAAC,GAAG,IAAI,CAAC,uBAAuB,CAAC,EAAE,CAAC;gBACnD,MAAM;SACT;QAED,IAAI,cAAc,GAAG,wGAA+B,CAAC,oBAAoB,CAAC,SAAS,EAAE,YAAY,EAAE,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;QACrJ,cAAc,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;YAC5B,oBAAoB,CAAC,IAAI,CAAC;gBACxB,KAAK,EAAE,aAAa,IAAI,CAAC,kBAAkB,WAAW,IAAI,CAAC,IAAI,GAAG;gBAClE,KAAK,EAAE,EAAE,kBAAkB,EAAE,IAAI,CAAC,kBAAkB,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE;aACxE,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,QAAQ,SAAS,EAAE;YACjB,KAAK,CAAC;gBACJ,IAAI,CAAC,sBAAsB,GAAG,oBAAoB,CAAC;gBACnD,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,sBAAsB,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;gBAC5D,IAAI,CAAC,OAAO,EAAE;oBACZ,IAAI,CAAC,uBAAuB,CAAC,mBAAmB,GAAG,IAAI,CAAC,eAAe,CAAC,kBAAkB,CAAC;oBAC3F,IAAI,CAAC,uBAAuB,CAAC,uBAAuB,GAAG,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC;iBAClF;gBACD,MAAM;YACR,KAAK,CAAC;gBACJ,IAAI,CAAC,sBAAsB,GAAG,oBAAoB,CAAC;gBACnD,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,sBAAsB,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;gBAC5D,IAAI,CAAC,OAAO,EAAE;oBACZ,IAAI,CAAC,uBAAuB,CAAC,mBAAmB,GAAG,IAAI,CAAC,eAAe,CAAC,kBAAkB,CAAC;oBAC3F,IAAI,CAAC,uBAAuB,CAAC,uBAAuB,GAAG,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC;iBAClF;gBACD,MAAM;SACT;IACH,CAAC;IAEO,KAAK;QACX,IAAI,CAAC,EAAE,GAAG,wGAA+B,CAAC,4BAA4B,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,EAAE,IAAI,CAAC,uBAAuB,CAAC,EAAE,EAAE,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;QACxM,IAAI,CAAC,EAAE,GAAG,4DAAoB,CAAC,yBAAyB,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACpE,CAAC;IAEO,mBAAmB;QACzB,IAAI,CAAC,cAAc,GAAG,EAAE,CAAC;QACzB,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,cAAc,EAAE,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,eAAe,EAAE,IAAI,CAAC,UAAU,CAAC,GAAG,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC;QACzI,IAAI,gBAAgB,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,IAAI,CAAC,uBAAuB,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,uBAAuB,CAAC,EAAE,CAAC;YACjI,CAAC,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC,uBAAuB,CAAC,EAAE,CAAC,CAAC,GAAG,GAAG,CAAC;QACjF,gEAAgE;QAChE,IAAI,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,UAAU,GAAG,gBAAgB,CAAC,GAAG,EAAE,CAAC,GAAG,EAAE,CAAC;QAC/E,IAAI,GAAG,GAAG,IAAI,CAAC,UAAU,CAAC,kBAAkB,CAAC,IAAI,CAAC,uBAAuB,CAAC,cAAc,EAAE,IAAI,CAAC,uBAAuB,CAAC,EAAE,CAAC,CAAC;QAC3H,IAAI,CAAC,gBAAgB,GAAG,EAAE,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,IAAI,GAAG,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;QAC/E,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,cAAc,EAAE,GAAG,EAAE,eAAe,EAAE,EAAE,EAAE,KAAK,EAAE,IAAI,CAAC,gBAAgB,EAAE,CAAC,CAAC;IACxH,CAAC;IAEO,UAAU;QAChB,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,GAAG,CAAC,CAAC;QAChF,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,IAAI,CAAC,uBAAuB,CAAC,EAAE,CAAC;QAC1F,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,GAAG,CAAC,CAAC;QAChF,IAAI,CAAC,qBAAqB,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC,uBAAuB,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;QACzL,4GAA4G;QAC5G,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC,uBAAuB,CAAC,EAAE,IAAI,IAAI,CAAC,uBAAuB,CAAC,EAAE,CAAC;QAC/F,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC,uBAAuB,CAAC,EAAE,IAAI,IAAI,CAAC,uBAAuB,CAAC,EAAE,CAAC;QAC/F,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,cAAc,IAAI,IAAI,CAAC,gBAAgB,IAAI,IAAI,CAAC,cAAc,IAAI,IAAI,CAAC,qBAAqB,IAAI,IAAI,CAAC,oBAAoB,IAAI,IAAI,CAAC,oBAAoB,IAAI,IAAI,CAAC,gBAAgB,CAAC;QAEtM,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IACnD,CAAC;IAEO,YAAY;QAClB,IAAI,IAAI,CAAC,SAAS,EAAE;YAClB,wGAA+B,CAAC,eAAe,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YAC1D,OAAO;SACR;QACD,wGAA+B,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACtD,IAAI,CAAC,KAAK,GAAG,wGAA+B,CAAC,cAAc,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,oBAAoB,CAAC,QAAQ,CAAC,CAAC;QAC1G,IAAI,CAAC,GAAG,CAAC,WAAW,GAAG,IAAI,CAAC,2BAA2B,CAAC;QACxD,IAAI,CAAC,eAAe,EAAE,CAAC;QACvB,IAAI,CAAC,iBAAiB,EAAE,CAAC;QACzB,IAAI,CAAC,gBAAgB,EAAE,CAAC;IAC1B,CAAC;IAEO,eAAe;QACrB,uBAAuB;QACvB,IAAI,CAAC,GAAa,IAAI,CAAC,gBAAgB,EAAE,CAAC;QAC1C,IAAI,CAAC,GAAa,IAAI,CAAC,gBAAgB,EAAE,CAAC;QAC1C,wGAA+B,CAAC,wBAAwB,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,yBAAyB,CAAC,CAAC;IAC3G,CAAC;IAEO,gBAAgB;QACtB,IAAI,CAAC,GAAa,EAAE,CAAC;QACrB,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;QAC9I,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;QAC7C,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;QAC7C,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACb,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;QAC5C,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACb,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;QAC5C,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACb,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACb,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;QAC9I,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YACjC,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC;SAC5C;QACD,OAAO,CAAC,CAAC;IACX,CAAC;IAEO,gBAAgB;QACtB,IAAI,CAAC,GAAa,EAAE,CAAC;QACrB,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;QACrF,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACb,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACb,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,IAAI,CAAC,uBAAuB,CAAC,EAAE,CAAC,CAAC,CAAC;QACnF,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACb,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACb,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACb,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,uBAAuB,CAAC,EAAE,CAAC,CAAC;QAC/C,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACb,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACb,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YACjC,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC;SAC3C;QACD,OAAO,CAAC,CAAC;IACX,CAAC;IAEO,iBAAiB;QACvB,wGAA+B,CAAC,oBAAoB,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,UAAU,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;QAChG,wGAA+B,CAAC,oBAAoB,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,uBAAuB,CAAC,EAAE,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;IAC9G,CAAC;IAEO,gBAAgB;QACtB,IAAI,CAAC,GAAG,CAAC,IAAI,GAAG,GAAG,wGAA+B,CAAC,QAAQ,UAAU,CAAC;QACtE,IAAI,CAAC,GAAG,CAAC,WAAW,GAAG,IAAI,CAAC,2BAA2B,CAAC;QACxD,IAAI,CAAC,GAAG,CAAC,SAAS,GAAG,IAAI,CAAC,2BAA2B,CAAC;QACtD,IAAI,CAAC,UAAU,EAAE,CAAC;QAClB,IAAI,CAAC,UAAU,EAAE,CAAC;QAClB,IAAI,CAAC,UAAU,EAAE,CAAC;QAClB,IAAI,CAAC,UAAU,EAAE,CAAC;QAClB,IAAI,CAAC,UAAU,EAAE,CAAC;QAClB,IAAI,CAAC,UAAU,EAAE,CAAC;QAClB,IAAI,CAAC,UAAU,EAAE,CAAC;IACpB,CAAC;IAEO,UAAU;QAChB,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,GAAG,CAAC,GAAG,wGAA+B,CAAC,QAAQ,GAAG,CAAC,CAAC;QACtE,IAAI,CAAC,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,GAAG,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,GAAG,wGAA+B,CAAC,QAAQ,GAAG,CAAC,CAAC;QAC1H,wGAA+B,CAAC,8BAA8B,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,uBAAuB,CAAC,EAAE,CAAC,CAAC;IACnI,CAAC;IAEO,UAAU;QAChB,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,GAAG,CAAC,GAAG,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,GAAG,wGAA+B,CAAC,QAAQ,GAAG,CAAC,CAAC;QAC5K,IAAI,CAAC,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;QACxB,wGAA+B,CAAC,8BAA8B,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,uBAAuB,CAAC,EAAE,CAAC,CAAC;IACnI,CAAC;IAEO,UAAU;QAChB,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,GAAG,CAAC,GAAG,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,IAAI,CAAC,KAAK,GAAG,wGAA+B,CAAC,QAAQ,CAAC;QACvN,IAAI,CAAC,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;QACxB,wGAA+B,CAAC,6BAA6B,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,uBAAuB,CAAC,EAAE,CAAC,CAAC;IAClI,CAAC;IAEO,UAAU;QAChB,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,GAAG,CAAC,GAAG,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,GAAG,wGAA+B,CAAC,QAAQ,GAAG,CAAC,CAAC;QACzH,IAAI,CAAC,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,GAAG,IAAI,CAAC,KAAK,GAAG,wGAA+B,CAAC,QAAQ,CAAC;QACtG,wGAA+B,CAAC,iCAAiC,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,uBAAuB,CAAC,EAAE,CAAC;IACrI,CAAC;IAEO,UAAU;QAChB,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC;QACxJ,IAAI,CAAC,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,GAAG,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC;QAC3E,wGAA+B,CAAC,eAAe,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC;IACvE,CAAC;IAEO,UAAU;QAChB,IAAI,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,CAAC,EAAE;YACvC,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC;YACvB,IAAI,CAAC,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;YACxB,wGAA+B,CAAC,8BAA8B,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,uBAAuB,CAAC,EAAE,CAAC,CAAC;SAClI;IACH,CAAC;IAEO,UAAU;QAChB,IAAI,IAAI,CAAC,EAAE,GAAG,CAAC,EAAE;YACf,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,GAAG,CAAC,GAAG,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,GAAG,wGAA+B,CAAC,QAAQ,GAAG,CAAC,CAAC;YAC5K,IAAI,CAAC,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,GAAG,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC;YACtG,wGAA+B,CAAC,8BAA8B,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC;SAC1G;IACH,CAAC;CACF;AAjbU;IAAR,2DAAK,EAAE;8BAAuB,gEAAwB;wFAAC;AAC/C;IAAR,2DAAK,EAAE;8BAA0B,8DAAsB;2FAAC;AAChD;IAAR,2DAAK,EAAE;8BAAa,qEAA6B;8EAAC;AAE1C;IAAR,2DAAK,EAAE;;6FAAmC;AAClC;IAAR,2DAAK,EAAE;;+FAAqC;AAEnC;IAAT,4DAAM,EAAE;;0FAAsD;AACrD;IAAT,4DAAM,EAAE;;2FAA8C;AAGvD;IADC,+DAAS,CAAC,kBAAkB,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;8BAChC,wDAAU;0EAAoB;AAZnC,0CAA0C;IALtD,+DAAS,CAAC;QACT,QAAQ,EAAE,sDAAsD;QAChE,oVAAuE;KAExE,CAAC;;GACW,0CAA0C,CAkbtD;AAlbsD;;;;;;;;;;;;;;;;;;;;ACZa;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACAb;AAC+C;AAEvC;AAC6E;AAC7C;AAO/F,IAAa,mCAAmC,GAAhD,MAAa,mCAAmC;IA8C9C;QAtCU,2BAAsB,GAAG,IAAI,0DAAY,EAAW,CAAC;QACrD,4BAAuB,GAAG,IAAI,0DAAY,EAAE,CAAC;QAcvD,yBAAoB,GAAY,KAAK,CAAC;QACtC,0BAAqB,GAAY,KAAK,CAAC;QACvC,mBAAc,GAAY,KAAK,CAAC;QAChC,mBAAc,GAAY,KAAK,CAAC;QAChC,qBAAgB,GAAY,KAAK,CAAC;QAC1B,cAAS,GAAY,KAAK,CAAC;QAEnC,0BAAqB,GAAG,wGAA+B,CAAC,oBAAoB,CAAC;QAS7E,iBAAY,GAAG,wGAA+B,CAAC,6BAA6B,CAAC;IAO7D,CAAC;IAEjB,QAAQ;QACN,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;QACtD,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC;QACnC,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC;QAErC,IAAI,IAAI,CAAC,uBAAuB,CAAC,EAAE,IAAI,SAAS,IAAI,IAAI,CAAC,uBAAuB,CAAC,EAAE,IAAI,IAAI,EAAE;YAC3F,IAAI,CAAC,kCAAkC,EAAE,CAAC;SAC3C;QAED,IAAI,CAAC,eAAe,EAAE,CAAC;IACzB,CAAC;IAED,cAAc;QACZ,IAAI,IAAI,CAAC,EAAE,IAAI,EAAE,EAAE;YACjB,IAAI,YAAY,GAAG,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YACtC,IAAI,GAAG,GAAG,UAAU,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC;YACtC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,IAAI,GAAG,GAAG,IAAI,CAAC,EAAE;gBAC3C,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,GAAG,GAAG,EAAE,CAAC;gBAC3C,IAAI,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE;oBAC3B,IAAI,KAAK,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;oBACjC,GAAG,GAAG,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC;oBACzC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE;wBACf,IAAI,CAAC,uBAAuB,CAAC,EAAE,IAAI,GAAG,CAAC;qBACxC;iBACF;gBACD,IAAI,CAAC,KAAK,EAAE,CAAC;gBACb,IAAI,CAAC,UAAU,EAAE,CAAC;gBAClB,IAAI,CAAC,YAAY,EAAE,CAAC;gBACpB,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC;gBAC1B,IAAI,CAAC,uBAAuB,CAAC,IAAI,EAAE,CAAC;aACrC;SACF;QACD,IAAI,CAAC,EAAE,GAAG,4DAAoB,CAAC,yBAAyB,CAAC,IAAI,CAAC,uBAAuB,CAAC,EAAE,CAAC,CAAC;IAC5F,CAAC;IAED,cAAc;QACZ,IAAI,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE;YAC5B,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC;YAC/C,IAAI,CAAC,KAAK,EAAE,CAAC;YACb,IAAI,CAAC,mBAAmB,EAAE,CAAC;YAC3B,IAAI,CAAC,UAAU,EAAE,CAAC;YAClB,IAAI,CAAC,YAAY,EAAE,CAAC;YACpB,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC;YAC1B,IAAI,CAAC,uBAAuB,CAAC,IAAI,EAAE,CAAC;SACrC;;YACI,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC;IAClE,CAAC;IAED,cAAc;QACZ,IAAI,IAAI,CAAC,EAAE,IAAI,IAAI,EAAE;YACnB,IAAI,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC,oBAAoB,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC,CAAC;YAC9F,IAAI,SAAS,IAAI,IAAI,CAAC,uBAAuB,CAAC,EAAE,EAAE;gBAChD,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,SAAS,CAAC;gBAC5C,IAAI,CAAC,mBAAmB,EAAE,CAAC;gBAC3B,IAAI,CAAC,UAAU,EAAE,CAAC;gBAClB,IAAI,CAAC,YAAY,EAAE,CAAC;gBACpB,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC;gBAC1B,IAAI,CAAC,uBAAuB,CAAC,IAAI,EAAE,CAAC;aACrC;SACF;QACD,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,uBAAuB,CAAC,EAAE,CAAC;IAC5C,CAAC;IAED,cAAc;QACZ,IAAI,IAAI,CAAC,EAAE,IAAI,IAAI,EAAE;YACnB,IAAI,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC,oBAAoB,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC,CAAC;YAC9F,IAAI,SAAS,IAAI,IAAI,CAAC,uBAAuB,CAAC,EAAE,EAAE;gBAChD,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,SAAS,CAAC;gBAC5C,IAAI,CAAC,mBAAmB,EAAE,CAAC;gBAC3B,IAAI,CAAC,UAAU,EAAE,CAAC;gBAClB,IAAI,CAAC,YAAY,EAAE,CAAC;gBACpB,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC;gBAC1B,IAAI,CAAC,uBAAuB,CAAC,IAAI,EAAE,CAAC;aACrC;SACF;QACD,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,uBAAuB,CAAC,EAAE,CAAC;IAC5C,CAAC;IAED,cAAc;QACZ,IAAI,IAAI,CAAC,EAAE,IAAI,CAAC,IAAI,IAAI,CAAC,EAAE,IAAI,GAAG,IAAI,IAAI,CAAC,EAAE,IAAI,IAAI,EAAE;YACrD,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,CAAC;YAC1C,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,GAAG,IAAI,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC;YACxE,IAAI,CAAC,YAAY,EAAE,CAAC;YACpB,IAAI,CAAC,uBAAuB,CAAC,IAAI,EAAE,CAAC;SACrC;;YACI,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,uBAAuB,CAAC,EAAE,CAAC;IACjD,CAAC;IAED,cAAc;QACZ,IAAI,IAAI,CAAC,EAAE,IAAI,CAAC,IAAI,IAAI,CAAC,EAAE,GAAG,CAAC,IAAI,CAAC,EAAE;YACpC,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC;YAC/C,IAAI,CAAC,mBAAmB,EAAE,CAAC;YAC3B,IAAI,CAAC,UAAU,EAAE,CAAC;YAClB,IAAI,CAAC,YAAY,EAAE,CAAC;YACpB,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC;YAC1B,IAAI,CAAC,uBAAuB,CAAC,IAAI,EAAE,CAAC;SACrC;;YACI,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC;IAClE,CAAC;IAED,qBAAqB;QACnB,IAAI,CAAC,mBAAmB,EAAE,CAAC;QAC3B,IAAI,CAAC,uBAAuB,CAAC,IAAI,EAAE,CAAC;IACtC,CAAC;IAED,qBAAqB,CAAC,YAAoB;QACxC,QAAQ,YAAY,EAAE;YACpB,KAAK,CAAC;gBACJ,IAAI,CAAC,uBAAuB,CAAC,mBAAmB,GAAG,IAAI,CAAC,eAAe,CAAC,kBAAkB,CAAC;gBAC3F,IAAI,CAAC,uBAAuB,CAAC,uBAAuB,GAAG,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC;gBACjF,MAAM;YACR;gBACE,IAAI,CAAC,uBAAuB,CAAC,mBAAmB,GAAG,IAAI,CAAC,eAAe,CAAC,kBAAkB,CAAC;gBAC3F,IAAI,CAAC,uBAAuB,CAAC,uBAAuB,GAAG,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC;gBACjF,MAAM;SACT;QAED,IAAI,CAAC,uBAAuB,CAAC,IAAI,EAAE,CAAC;IACtC,CAAC;IAED,UAAU,CAAC,KAAK;QACd,IAAI,CAAC,4EAAc,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,GAAG,KAAK,GAAG,IAAI,KAAK,CAAC,GAAG,KAAK,GAAG,IAAI,KAAK,CAAC,GAAG,KAAK,OAAO,EAAE;YACjG,KAAK,CAAC,cAAc,EAAE,CAAC;SACxB;IACH,CAAC;IAEO,UAAU,CAAC,KAAa;QAC9B,OAAO,KAAK,IAAI,CAAC,IAAI,KAAK,GAAG,CAAC,IAAI,CAAC,CAAC;IACtC,CAAC;IAEO,UAAU;QAChB,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC,uBAAuB,CAAC,EAAE,IAAI,IAAI,CAAC,uBAAuB,CAAC,EAAE,CAAC;QAC/F,IAAI,CAAC,qBAAqB,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC,uBAAuB,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;QACzL,4GAA4G;QAC5G,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,GAAG,CAAC,CAAC;QAChF,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,GAAG,CAAC,CAAC;QAChF,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,oBAAoB,IAAI,IAAI,CAAC,qBAAqB,IAAI,IAAI,CAAC,cAAc,IAAI,IAAI,CAAC,cAAc,IAAI,IAAI,CAAC,gBAAgB,CAAC;QAEhJ,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IACnD,CAAC;IAEO,kCAAkC;QACxC,CAAC,IAAI,CAAC,uBAAuB,CAAC,cAAc,EAAE,IAAI,CAAC,uBAAuB,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,mBAAmB,CAAC,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC,CAAC;QACrJ,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,EAAE,CAAC,gBAAe;QACpD,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,CAAC,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC;QAChG,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,GAAG,CAAC,GAAG,IAAI,CAAC,CAAC;QACnE,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,uBAAuB,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC,GAAG,EAAE,CAAC;QAC/M,IAAI,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,EAAE;YAAE,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,EAAE,CAAC;QAC/E,sEAAsE;QACtE,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,IAAI,CAAC,uBAAuB,CAAC,EAAE,CAAC;QAClE,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,uBAAuB,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QAC7I,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC,GAAG,EAAE,CAAC;QACtK,wDAAwD;IAC1D,CAAC;IAEO,eAAe;QACrB,IAAI,CAAC,EAAE,GAAG,4DAAoB,CAAC,yBAAyB,CAAC,IAAI,CAAC,uBAAuB,CAAC,EAAE,CAAC,CAAC;QAC1F,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC;QAC3D,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,uBAAuB,CAAC,EAAE,CAAC;QAC1C,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,uBAAuB,CAAC,EAAE,CAAC;QAC1C,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,uBAAuB,CAAC,EAAE,CAAC,mBAAkB;QAC5D,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC;QAE3D,IAAI,CAAC,KAAK,EAAE,CAAC;QACb,IAAI,CAAC,mBAAmB,EAAE,CAAC;QAC3B,IAAI,CAAC,kBAAkB,EAAE,CAAC;QAC1B,IAAI,CAAC,YAAY,EAAE,CAAC;IACtB,CAAC;IAEM,kBAAkB;QACvB,IAAI,CAAC,iBAAiB,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;QAChC,IAAI,CAAC,IAAI,CAAC,uBAAuB,CAAC,mBAAmB,EAAE;YACrD,IAAI,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC;SAC/B;aAAM;YACL,IAAI,CAAC,eAAe,CAAC,kBAAkB,GAAG,IAAI,CAAC,uBAAuB,CAAC,mBAAmB,CAAC;YAC3F,IAAI,CAAC,eAAe,CAAC,IAAI,GAAG,IAAI,CAAC,uBAAuB,CAAC,uBAAuB,CAAC;SAClF;QAED,IAAI,CAAC,iBAAiB,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;QAChC,IAAI,CAAC,IAAI,CAAC,uBAAuB,CAAC,mBAAmB,EAAE;YACrD,IAAI,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC;SAC/B;aAAM;YACL,IAAI,CAAC,eAAe,CAAC,kBAAkB,GAAG,IAAI,CAAC,uBAAuB,CAAC,mBAAmB,CAAC;YAC3F,IAAI,CAAC,eAAe,CAAC,IAAI,GAAG,IAAI,CAAC,uBAAuB,CAAC,uBAAuB,CAAC;SAClF;IACH,CAAC;IAEO,iBAAiB,CAAC,SAAiB,EAAE,UAAmB,KAAK;QACnE,IAAI,oBAAoB,GAA6E,EAAE,CAAC;QACxG,IAAI,SAAiB,CAAC;QACtB,IAAI,YAAoB,CAAC;QACzB,QAAQ,SAAS,EAAE;YACjB,KAAK,CAAC;gBACJ,SAAS,GAAG,IAAI,CAAC,uBAAuB,CAAC,EAAE,CAAC;gBAC5C,YAAY,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC;gBAC/D,MAAM;YACR,KAAK,CAAC;gBACJ,SAAS,GAAG,IAAI,CAAC,uBAAuB,CAAC,EAAE,CAAC;gBAC5C,YAAY,GAAG,CAAC,GAAG,IAAI,CAAC,uBAAuB,CAAC,EAAE,CAAC;gBACnD,MAAM;SACT;QAED,IAAI,cAAc,GAAG,wGAA+B,CAAC,oBAAoB,CAAC,SAAS,EAAE,YAAY,EAAE,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;QACrJ,cAAc,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;YAC5B,oBAAoB,CAAC,IAAI,CAAC;gBACxB,KAAK,EAAE,aAAa,IAAI,CAAC,kBAAkB,WAAW,IAAI,CAAC,IAAI,GAAG;gBAClE,KAAK,EAAE,EAAE,kBAAkB,EAAE,IAAI,CAAC,kBAAkB,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE;aACxE,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,QAAQ,SAAS,EAAE;YACjB,KAAK,CAAC;gBACJ,IAAI,CAAC,sBAAsB,GAAG,oBAAoB,CAAC;gBACnD,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,sBAAsB,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;gBAC5D,IAAI,CAAC,OAAO,EAAE;oBACZ,IAAI,CAAC,uBAAuB,CAAC,mBAAmB,GAAG,IAAI,CAAC,eAAe,CAAC,kBAAkB,CAAC;oBAC3F,IAAI,CAAC,uBAAuB,CAAC,uBAAuB,GAAG,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC;iBAClF;gBACD,MAAM;YACR,KAAK,CAAC;gBACJ,IAAI,CAAC,sBAAsB,GAAG,oBAAoB,CAAC;gBACnD,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,sBAAsB,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;gBAC5D,IAAI,CAAC,OAAO,EAAE;oBACZ,IAAI,CAAC,uBAAuB,CAAC,mBAAmB,GAAG,IAAI,CAAC,eAAe,CAAC,kBAAkB,CAAC;oBAC3F,IAAI,CAAC,uBAAuB,CAAC,uBAAuB,GAAG,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC;iBAClF;gBACD,MAAM;SACT;IACH,CAAC;IAEO,KAAK;QACX,IAAI,CAAC,EAAE,GAAG,wGAA+B,CAAC,4BAA4B,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,EAAE,IAAI,CAAC,uBAAuB,CAAC,EAAE,EAAE,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;QACxM,IAAI,CAAC,EAAE,GAAG,4DAAoB,CAAC,yBAAyB,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACpE,CAAC;IAEO,mBAAmB;QACzB,IAAI,CAAC,cAAc,GAAG,EAAE,CAAC;QACzB,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,cAAc,EAAE,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,eAAe,EAAE,IAAI,CAAC,UAAU,CAAC,GAAG,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC;QACzI,IAAI,gBAAgB,GAAG,CAAC,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC,uBAAuB,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC;QAC7K,2DAA2D;QAC3D,IAAI,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,UAAU,GAAG,gBAAgB,CAAC,GAAG,EAAE,CAAC,GAAG,EAAE,CAAC;QAC/E,IAAI,GAAG,GAAG,IAAI,CAAC,UAAU,CAAC,kBAAkB,CAAC,IAAI,CAAC,uBAAuB,CAAC,cAAc,EAAE,IAAI,CAAC,uBAAuB,CAAC,EAAE,CAAC,CAAC;QAC3H,IAAI,CAAC,gBAAgB,GAAG,EAAE,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,IAAI,GAAG,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;QAC/E,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,cAAc,EAAE,GAAG,EAAE,eAAe,EAAE,EAAE,EAAE,KAAK,EAAE,IAAI,CAAC,gBAAgB,EAAE,CAAC,CAAC;IACxH,CAAC;IAEO,YAAY;QAClB,IAAI,IAAI,CAAC,SAAS,EAAE;YAClB,wGAA+B,CAAC,eAAe,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YAC1D,OAAO;SACR;QACD,wGAA+B,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACtD,IAAI,CAAC,KAAK,GAAG,wGAA+B,CAAC,cAAc,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,oBAAoB,CAAC,QAAQ,CAAC,CAAC;QAC1G,IAAI,CAAC,GAAG,CAAC,WAAW,GAAG,IAAI,CAAC,2BAA2B,CAAC;QACxD,IAAI,CAAC,eAAe,EAAE,CAAC;QACvB,IAAI,CAAC,iBAAiB,EAAE,CAAC;QACzB,IAAI,CAAC,gBAAgB,EAAE,CAAC;IAC1B,CAAC;IAEO,eAAe;QACrB,uBAAuB;QACvB,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,iBAAiB,EAAE,CAAC;QACtC,wGAA+B,CAAC,wBAAwB,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,yBAAyB,CAAC,CAAC;IAC3G,CAAC;IAEO,iBAAiB;QACvB,IAAI,CAAC,GAAa,EAAE,CAAC;QACrB,IAAI,CAAC,GAAa,EAAE,CAAC;QACrB,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;QACrF,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACb,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACb,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,uBAAuB,CAAC,EAAE,CAAC,CAAC;QAC/C,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACb,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACb,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACb,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,uBAAuB,CAAC,EAAE,CAAC,CAAC;QAC/C,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACb,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACb,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YACjC,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC;SAC3C;QAED,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;QAC9I,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;QAC7C,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;QAC7C,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACb,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;QAC5C,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACb,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;QAC5C,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACb,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACb,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;QAC9I,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YACjC,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC;SAC5C;QAED,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAChB,CAAC;IAEO,iBAAiB;QACvB,wGAA+B,CAAC,oBAAoB,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,UAAU,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;QAChG,wGAA+B,CAAC,oBAAoB,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,uBAAuB,CAAC,EAAE,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;IAC9G,CAAC;IAEO,gBAAgB;QACtB,IAAI,CAAC,GAAG,CAAC,IAAI,GAAG,GAAG,wGAA+B,CAAC,QAAQ,UAAU,CAAC;QACtE,IAAI,CAAC,GAAG,CAAC,WAAW,GAAG,IAAI,CAAC,2BAA2B,CAAC;QACxD,IAAI,CAAC,GAAG,CAAC,SAAS,GAAG,IAAI,CAAC,2BAA2B,CAAC;QACtD,IAAI,CAAC,UAAU,EAAE,CAAC;QAClB,IAAI,CAAC,UAAU,EAAE,CAAC;QAClB,IAAI,CAAC,UAAU,EAAE,CAAC;QAClB,IAAI,CAAC,UAAU,EAAE,CAAC;QAClB,IAAI,CAAC,UAAU,EAAE,CAAC;QAClB,IAAI,CAAC,UAAU,EAAE,CAAC;QAClB,IAAI,CAAC,UAAU,EAAE,CAAC;QAClB,IAAI,CAAC,UAAU,EAAE,CAAC;QAClB,IAAI,CAAC,UAAU,EAAE,CAAC;IACpB,CAAC;IAEO,UAAU;QAChB,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,GAAG,CAAC,GAAG,wGAA+B,CAAC,QAAQ,GAAG,CAAC,CAAC;QACtE,IAAI,CAAC,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,GAAG,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,GAAG,wGAA+B,CAAC,QAAQ,GAAG,CAAC,CAAC;QAC1H,wGAA+B,CAAC,8BAA8B,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,uBAAuB,CAAC,EAAE,CAAC,CAAC;IACnI,CAAC;IAEO,UAAU;QAChB,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,GAAG,CAAC,GAAG,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,GAAG,wGAA+B,CAAC,QAAQ,GAAG,CAAC,CAAC;QAC5K,IAAI,CAAC,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;QACxB,wGAA+B,CAAC,8BAA8B,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,uBAAuB,CAAC,EAAE,CAAC,CAAC;IACnI,CAAC;IAEO,UAAU;QAChB,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,GAAG,CAAC,GAAG,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,GAAG,wGAA+B,CAAC,QAAQ,GAAG,CAAC,CAAC;QACzH,IAAI,CAAC,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,GAAG,IAAI,CAAC,KAAK,GAAG,wGAA+B,CAAC,QAAQ,CAAC;QACtG,wGAA+B,CAAC,iCAAiC,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,uBAAuB,CAAC,EAAE,CAAC,CAAC;IACtI,CAAC;IAEO,UAAU;QAChB,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,GAAG,CAAC,GAAG,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,IAAI,CAAC,KAAK,GAAG,wGAA+B,CAAC,QAAQ,CAAC;QACvN,IAAI,CAAC,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;QACxB,wGAA+B,CAAC,6BAA6B,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,uBAAuB,CAAC,EAAE,CAAC,CAAC;IAClI,CAAC;IAEO,UAAU;QAChB,IAAI,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,CAAC,EAAE;YACvC,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC;YACvB,IAAI,CAAC,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;YACxB,wGAA+B,CAAC,8BAA8B,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,uBAAuB,CAAC,EAAE,CAAC,CAAC;SAClI;IACH,CAAC;IAEO,UAAU;QAChB,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,GAAG,CAAC,GAAG,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK;YAC1H,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,GAAG,wGAA+B,CAAC,QAAQ,GAAG,CAAC,CAAC;QAClG,IAAI,CAAC,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,GAAG,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,GAAG,wGAA+B,CAAC,QAAQ,CAAC;QACtH,wGAA+B,CAAC,iCAAiC,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,uBAAuB,CAAC,EAAE,CAAC,CAAC;IACtI,CAAC;IAEO,UAAU;QAChB,IAAI,IAAI,CAAC,EAAE,GAAG,CAAC,EAAE;YACf,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,GAAG,CAAC,GAAG,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,GAAG,wGAA+B,CAAC,QAAQ,GAAG,CAAC,CAAC;YAC5K,IAAI,CAAC,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,GAAG,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC;YACtG,wGAA+B,CAAC,8BAA8B,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC;SAC1G;IACH,CAAC;IAEO,UAAU;QAChB,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,GAAG,CAAC,GAAG,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC;QAC1E,IAAI,CAAC,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,GAAG,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC;QAC3E,wGAA+B,CAAC,eAAe,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC;IACvE,CAAC;IAEO,UAAU;QAChB,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC;QACxJ,IAAI,CAAC,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,GAAG,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC;QAC3E,wGAA+B,CAAC,eAAe,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC;IACvE,CAAC;CACF;AAxaU;IAAR,2DAAK,EAAE;8BAAuB,gEAAwB;iFAAC;AAC/C;IAAR,2DAAK,EAAE;8BAA0B,8DAAsB;oFAAC;AAChD;IAAR,2DAAK,EAAE;8BAAa,qEAA6B;uEAAC;AAE1C;IAAR,2DAAK,EAAE;;sFAAmC;AAClC;IAAR,2DAAK,EAAE;;wFAAqC;AAEnC;IAAT,4DAAM,EAAE;;mFAAsD;AACrD;IAAT,4DAAM,EAAE;;oFAA8C;AAGvD;IADC,+DAAS,CAAC,kBAAkB,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;8BAChC,wDAAU;mEAAoB;AAZnC,mCAAmC;IAL/C,+DAAS,CAAC;QACT,QAAQ,EAAE,8CAA8C;QACxD,4TAA+D;KAEhE,CAAC;;GACW,mCAAmC,CAya/C;AAza+C;;;;;;;;;;;;;;;;;;;;ACZY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACAL;AAC+C;AAET;AAC9B;AACwD;AAOvH,IAAa,yCAAyC,GAAtD,MAAa,yCAAyC;IAyCpD;QAjCU,2BAAsB,GAAG,IAAI,0DAAY,EAAW,CAAC;QACrD,4BAAuB,GAAG,IAAI,0DAAY,EAAE,CAAC;QAavD,mBAAc,GAAY,KAAK,CAAC;QAChC,yBAAoB,GAAY,KAAK,CAAC;QACtC,yBAAoB,GAAY,KAAK,CAAC;QACtC,qBAAgB,GAAY,KAAK,CAAC;QAC1B,cAAS,GAAY,KAAK,CAAC;QAEnC,0BAAqB,GAAG,wGAA+B,CAAC,oBAAoB,CAAC;QAM7E,iBAAY,GAAG,wGAA+B,CAAC,6BAA6B,CAAC;IAO7D,CAAC;IAEjB,QAAQ;QACN,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;QACtD,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC;QACnC,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC;QACrC,IAAI,IAAI,CAAC,uBAAuB,CAAC,EAAE,IAAI,SAAS,IAAI,IAAI,CAAC,uBAAuB,CAAC,EAAE,IAAI,IAAI,EAAE;YAC3F,IAAI,CAAC,kCAAkC,EAAE,CAAC;SAC3C;QAED,IAAI,CAAC,eAAe,EAAE,CAAC;QACvB,IAAI,CAAC,YAAY,EAAE,CAAC;IACtB,CAAC;IAED,cAAc;QACZ,IAAI,IAAI,CAAC,EAAE,IAAI,EAAE,EAAE;YACjB,IAAI,YAAY,GAAG,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YACtC,IAAI,GAAG,GAAG,UAAU,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC;YACtC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,IAAI,GAAG,GAAG,IAAI,CAAC,EAAE;gBAC3C,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,GAAG,GAAG,EAAE,CAAC;gBAC3C,IAAI,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE;oBAC3B,IAAI,KAAK,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;oBACjC,GAAG,GAAG,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC;oBACzC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE;wBACf,IAAI,CAAC,uBAAuB,CAAC,EAAE,IAAI,GAAG,CAAC;qBACxC;iBACF;gBACD,IAAI,CAAC,KAAK,EAAE,CAAC;gBACb,IAAI,CAAC,UAAU,EAAE,CAAC;gBAClB,IAAI,CAAC,YAAY,EAAE,CAAC;gBACpB,IAAI,CAAC,iBAAiB,EAAE,CAAC;gBACzB,IAAI,CAAC,uBAAuB,CAAC,IAAI,EAAE,CAAC;aACrC;SACF;QACD,IAAI,CAAC,EAAE,GAAG,4DAAoB,CAAC,yBAAyB,CAAC,IAAI,CAAC,uBAAuB,CAAC,EAAE,CAAC,CAAC;QAAA,CAAC;IAC7F,CAAC;IAED,cAAc;QACZ,IAAI,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE;YAC5B,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC;YAC/C,IAAI,CAAC,mBAAmB,EAAE,CAAC;YAC3B,IAAI,CAAC,UAAU,EAAE,CAAC;YAClB,IAAI,CAAC,KAAK,EAAE,CAAC;YACb,IAAI,CAAC,YAAY,EAAE,CAAC;YACpB,IAAI,CAAC,iBAAiB,EAAE,CAAC;YACzB,IAAI,CAAC,uBAAuB,CAAC,IAAI,EAAE,CAAC;SACrC;;YACI,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC;IAClE,CAAC;IAED,cAAc;QACZ,IAAI,IAAI,CAAC,EAAE,IAAI,IAAI,EAAE;YACnB,IAAI,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC,oBAAoB,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC,CAAC;YAC9F,IAAI,SAAS,IAAI,IAAI,CAAC,uBAAuB,CAAC,EAAE,EAAE;gBAChD,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,SAAS;gBAC3C,IAAI,CAAC,mBAAmB,EAAE,CAAC;gBAC3B,IAAI,CAAC,UAAU,EAAE,CAAC;gBAClB,IAAI,CAAC,YAAY,EAAE,CAAC;gBACpB,IAAI,CAAC,iBAAiB,EAAE,CAAC;gBACzB,IAAI,CAAC,uBAAuB,CAAC,IAAI,EAAE,CAAC;aACrC;SACF;QAED,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,uBAAuB,CAAC,EAAE,CAAC;IAC5C,CAAC;IAED,cAAc;QACZ,IAAI,IAAI,CAAC,EAAE,IAAI,CAAC,IAAI,IAAI,CAAC,EAAE,IAAI,GAAG,IAAI,IAAI,CAAC,EAAE,IAAI,IAAI,EAAE;YACrD,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,CAAC;YAC1C,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,GAAG,IAAI,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC;YACxE,IAAI,CAAC,YAAY,EAAE,CAAC;YACpB,IAAI,CAAC,uBAAuB,CAAC,IAAI,EAAE,CAAC;SACrC;;YACI,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,uBAAuB,CAAC,EAAE,CAAC;IACjD,CAAC;IAED,qBAAqB;QACnB,IAAI,CAAC,mBAAmB,EAAE,CAAC;QAC3B,IAAI,CAAC,uBAAuB,CAAC,IAAI,EAAE,CAAC;IACtC,CAAC;IAED,qBAAqB;QACnB,IAAI,CAAC,uBAAuB,CAAC,mBAAmB,GAAG,IAAI,CAAC,cAAc,CAAC,kBAAkB,CAAC;QAC1F,IAAI,CAAC,uBAAuB,CAAC,uBAAuB,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC;QAChF,IAAI,CAAC,uBAAuB,CAAC,IAAI,EAAE,CAAC;IACtC,CAAC;IAED,UAAU,CAAC,KAAK;QACd,IAAI,CAAC,4EAAc,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,GAAG,KAAK,GAAG,IAAI,KAAK,CAAC,GAAG,KAAK,GAAG,IAAI,KAAK,CAAC,GAAG,KAAK,OAAO,EAAE;YACjG,KAAK,CAAC,cAAc,EAAE,CAAC;SACxB;IACH,CAAC;IAEO,UAAU;QAChB,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,GAAG,CAAC,CAAC;QAChF,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;QACtJ,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC,uBAAuB,CAAC,EAAE,IAAI,IAAI,CAAC,uBAAuB,CAAC,EAAE,CAAC;QAC/F,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,cAAc,IAAI,IAAI,CAAC,oBAAoB,IAAI,IAAI,CAAC,oBAAoB,IAAI,IAAI,CAAC,gBAAgB,CAAC;QACxH,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IACnD,CAAC;IAEO,UAAU,CAAC,KAAa;QAC9B,OAAO,KAAK,IAAI,CAAC,IAAI,KAAK,GAAG,CAAC,IAAI,CAAC,CAAC;IACtC,CAAC;IAEO,kCAAkC;QACxC,CAAC,IAAI,CAAC,uBAAuB,CAAC,cAAc,EAAE,IAAI,CAAC,uBAAuB,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,mBAAmB,CAAC,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC,CAAC;QACrJ,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,EAAE,CAAC,iBAAgB;QACrD,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,CAAC,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC;QAChG,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;QAC5E,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,uBAAuB,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC,GAAG,EAAE,CAAC;QAC/M,mEAAmE;QACnE,IAAI,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,EAAE;YAAE,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,EAAE,CAAC;IAEjF,CAAC;IAEO,eAAe;QACrB,IAAI,CAAC,EAAE,GAAG,4DAAoB,CAAC,yBAAyB,CAAC,IAAI,CAAC,uBAAuB,CAAC,EAAE,CAAC,CAAC;QAC1F,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC;QAC3D,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,uBAAuB,CAAC,EAAE,CAAC;QAC1C,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,uBAAuB,CAAC,EAAE,CAAC;QAC1C,IAAI,CAAC,KAAK,EAAE,CAAC;QACb,IAAI,CAAC,mBAAmB,EAAE,CAAC;QAC3B,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC;QAC7B,IAAI,CAAC,IAAI,CAAC,uBAAuB,CAAC,mBAAmB,EAAE;YACrD,IAAI,CAAC,qBAAqB,EAAE,CAAC;SAC9B;aAAM;YACL,IAAI,CAAC,cAAc,CAAC,kBAAkB,GAAG,IAAI,CAAC,uBAAuB,CAAC,mBAAmB,CAAC;YAC1F,IAAI,CAAC,cAAc,CAAC,IAAI,GAAG,IAAI,CAAC,uBAAuB,CAAC,uBAAuB,CAAC;SACjF;IACH,CAAC;IAEO,KAAK;QACX,IAAI,CAAC,EAAE,GAAG,wGAA+B,CAAC,4BAA4B,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,EAAE,IAAI,CAAC,uBAAuB,CAAC,EAAE,EAAE,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;QACxM,IAAI,CAAC,EAAE,GAAG,4DAAoB,CAAC,yBAAyB,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACpE,CAAC;IAEO,mBAAmB;QACzB,IAAI,CAAC,cAAc,GAAG,EAAE,CAAC;QACzB,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,cAAc,EAAE,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,eAAe,EAAE,IAAI,CAAC,UAAU,CAAC,GAAG,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC;QAEzI,IAAI,gBAAgB,GAAG,CAAC,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC,uBAAuB,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC;QACrG,sCAAsC;QACtC,IAAI,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,UAAU,GAAG,gBAAgB,CAAC,GAAG,EAAE,CAAC,GAAG,EAAE,CAAC;QAE/E,IAAI,GAAG,GAAG,IAAI,CAAC,UAAU,CAAC,kBAAkB,CAAC,IAAI,CAAC,uBAAuB,CAAC,cAAc,EAAE,IAAI,CAAC,uBAAuB,CAAC,EAAE,CAAC,CAAC;QAC3H,6CAA6C;QAC7C,IAAI,CAAC,gBAAgB,GAAG,EAAE,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,IAAI,GAAG,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;QAC/E,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,cAAc,EAAE,GAAG,EAAE,eAAe,EAAE,EAAE,EAAE,KAAK,EAAE,IAAI,CAAC,gBAAgB,EAAE,CAAC,CAAC;IACxH,CAAC;IAEO,iBAAiB,CAAC,UAAmB,KAAK;QAChD,IAAI,cAAc,GAAG,wGAA+B,CAAC,oBAAoB,CAAC,IAAI,CAAC,uBAAuB,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;QAC9M,IAAI,CAAC,qBAAqB,GAAG,EAAE,CAAC;QAChC,cAAc,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;YAC5B,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC;gBAC9B,KAAK,EAAE,GAAG,IAAI,CAAC,kBAAkB,WAAW,IAAI,CAAC,IAAI,GAAG;gBACxD,KAAK,EAAE,EAAE,kBAAkB,EAAE,IAAI,CAAC,kBAAkB,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE;aACxE,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;QAE1D,IAAI,CAAC,OAAO,EAAE;YACZ,IAAI,CAAC,uBAAuB,CAAC,mBAAmB,GAAG,IAAI,CAAC,cAAc,CAAC,kBAAkB,CAAC;YAC1F,IAAI,CAAC,uBAAuB,CAAC,uBAAuB,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC;SACjF;IACH,CAAC;IAEO,YAAY;QAClB,IAAI,IAAI,CAAC,SAAS,EAAE;YAClB,wGAA+B,CAAC,eAAe,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YAC1D,OAAO;SACR;QACD,wGAA+B,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACtD,IAAI,CAAC,KAAK,GAAG,wGAA+B,CAAC,cAAc,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,oBAAoB,CAAC,QAAQ,CAAC,CAAC;QAC1G,IAAI,CAAC,GAAG,CAAC,WAAW,GAAG,IAAI,CAAC,2BAA2B,CAAC;QACxD,IAAI,CAAC,eAAe,EAAE,CAAC;QACvB,IAAI,CAAC,iBAAiB,EAAE,CAAC;QACzB,IAAI,CAAC,gBAAgB,EAAE,CAAC;IAC1B,CAAC;IAEO,gBAAgB;QACtB,IAAI,CAAC,GAAG,CAAC,IAAI,GAAG,GAAG,wGAA+B,CAAC,QAAQ,UAAU,CAAC;QACtE,IAAI,CAAC,GAAG,CAAC,WAAW,GAAG,IAAI,CAAC,2BAA2B,CAAC;QACxD,IAAI,CAAC,GAAG,CAAC,SAAS,GAAG,IAAI,CAAC,2BAA2B,CAAC;QACtD,IAAI,CAAC,UAAU,EAAE,CAAC;QAClB,IAAI,CAAC,UAAU,EAAE,CAAC;QAClB,IAAI,CAAC,UAAU,EAAE,CAAC;QAClB,IAAI,CAAC,UAAU,EAAE,CAAC;QAClB,IAAI,CAAC,UAAU,EAAE,CAAC;IACpB,CAAC;IAEO,UAAU;QAChB,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,GAAG,CAAC,GAAG,wGAA+B,CAAC,QAAQ,GAAG,CAAC,CAAC;QACtE,IAAI,CAAC,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,GAAG,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,GAAG,wGAA+B,CAAC,QAAQ,GAAG,CAAC,CAAC;QAC1H,wGAA+B,CAAC,8BAA8B,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,uBAAuB,CAAC,EAAE,CAAC,CAAC;IACnI,CAAC;IAEO,UAAU;QAChB,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,GAAG,CAAC,GAAG,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,GAAG,wGAA+B,CAAC,QAAQ,CAAC;QACxK,IAAI,CAAC,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;QACxB,wGAA+B,CAAC,6BAA6B,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,uBAAuB,CAAC,EAAE,CAAC,CAAC;IAClI,CAAC;IAEO,UAAU;QAChB,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,GAAG,CAAC,GAAG,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,GAAG,wGAA+B,CAAC,QAAQ,GAAG,CAAC,CAAC;QACzH,IAAI,CAAC,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,GAAG,IAAI,CAAC,KAAK,GAAG,wGAA+B,CAAC,QAAQ,CAAC;QACtG,wGAA+B,CAAC,iCAAiC,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,uBAAuB,CAAC,EAAE,CAAC,CAAC;IACtI,CAAC;IAEO,UAAU;QAChB,IAAI,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,CAAC,EAAE;YACvC,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC;YACvB,IAAI,CAAC,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;YACxB,wGAA+B,CAAC,8BAA8B,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,uBAAuB,CAAC,EAAE,CAAC,CAAC;SAClI;IACH,CAAC;IAEO,UAAU;QAChB,IAAI,IAAI,CAAC,EAAE,GAAG,CAAC,EAAE;YACf,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,GAAG,CAAC,GAAG,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,GAAG,wGAA+B,CAAC,QAAQ,GAAG,CAAC,CAAC;YAC5K,IAAI,CAAC,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,GAAG,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC;YACtG,wGAA+B,CAAC,8BAA8B,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC;SAC1G;IACH,CAAC;IAEO,eAAe;QACrB,uBAAuB;QACvB,IAAI,CAAC,GAAa,IAAI,CAAC,gBAAgB,EAAE,CAAC;QAC1C,IAAI,CAAC,GAAa,IAAI,CAAC,gBAAgB,EAAE,CAAC;QAC1C,wGAA+B,CAAC,wBAAwB,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,yBAAyB,CAAC,CAAC;IAC3G,CAAC;IAEO,gBAAgB;QACtB,IAAI,CAAC,GAAa,EAAE,CAAC;QACrB,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;QAChJ,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;QAC7C,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;QAC5C,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACb,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACb,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;QAChJ,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YACjC,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC;SAC5C;QACD,OAAO,CAAC,CAAC;IACX,CAAC;IAEO,gBAAgB;QACtB,IAAI,CAAC,GAAa,EAAE,CAAC;QACrB,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;QACrF,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACb,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACb,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,uBAAuB,CAAC,EAAE,CAAC,CAAC;QAC/C,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,uBAAuB,CAAC,EAAE,CAAC,CAAC;QAC/C,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;QACrF,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YACjC,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC;SAC3C;QACD,OAAO,CAAC,CAAC;IACX,CAAC;IAEO,iBAAiB;QACvB,wGAA+B,CAAC,oBAAoB,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,UAAU,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;QAChG,wGAA+B,CAAC,oBAAoB,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,uBAAuB,CAAC,EAAE,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;IAC9G,CAAC;CACF;AAlTU;IAAR,2DAAK,EAAE;8BAAuB,gEAAwB;uFAAC;AAC/C;IAAR,2DAAK,EAAE;8BAA0B,8DAAsB;0FAAC;AAChD;IAAR,2DAAK,EAAE;8BAAa,qEAA6B;6EAAC;AAE1C;IAAR,2DAAK,EAAE;;4FAAmC;AAClC;IAAR,2DAAK,EAAE;;8FAAqC;AAEnC;IAAT,4DAAM,EAAE;;yFAAsD;AACrD;IAAT,4DAAM,EAAE;;0FAA8C;AAGvD;IADC,+DAAS,CAAC,kBAAkB,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;8BAChC,wDAAU;yEAAoB;AAZnC,yCAAyC;IALrD,+DAAS,CAAC;QACT,QAAQ,EAAE,qDAAqD;QAC/D,iVAAsE;KAEvE,CAAC;;GACW,yCAAyC,CAmTrD;AAnTqD;;;;;;;;;;;;;;;;;;;;ACZa;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACAuB;AACnC;AAC+C;AAET;AAC9B;AACwD;AAOvH,IAAa,2CAA2C,GAAxD,MAAa,2CAA2C;IA8DtD;QAzDU,2BAAsB,GAAG,IAAI,0DAAY,EAAW,CAAC;QACrD,4BAAuB,GAAG,IAAI,0DAAY,EAAE,CAAC;QAuBvD,0BAAqB,GAAY,KAAK,CAAC;QACvC,yBAAoB,GAAY,KAAK,CAAC;QACtC,mBAAc,GAAY,KAAK,CAAC;QAChC,mBAAc,GAAY,KAAK,CAAC;QAChC,mBAAc,GAAY,KAAK,CAAC;QAChC,qBAAgB,GAAY,KAAK,CAAC;QAClC,yBAAoB,GAAY,KAAK,CAAC;QACtC,qBAAgB,GAAY,KAAK,CAAC;QAC1B,cAAS,GAAY,KAAK,CAAC;QAEnC,0BAAqB,GAAG,wGAA+B,CAAC,oBAAoB,CAAC;QAa7E,iBAAY,GAAG,wGAA+B,CAAC,6BAA6B,CAAC;IAU7D,CAAC;IAHjB,IAAY,iBAAiB;QAC3B,OAAO,IAAI,CAAC,uBAAuB,CAAC,YAAY,IAAI,0FAA6B,CAAC,eAAe;IACnG,CAAC;IAGD,QAAQ;QACN,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;QACtD,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC;QACnC,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC;QACrC,IAAI,IAAI,CAAC,uBAAuB,CAAC,EAAE,IAAI,IAAI,EAAE;YAC3C,IAAI,CAAC,kCAAkC,EAAE,CAAC;SAC3C;QAED,IAAI,CAAC,eAAe,EAAE,CAAC;IACzB,CAAC;IAED,cAAc;QACZ,IAAI,IAAI,CAAC,EAAE,IAAI,EAAE,EAAE;YACjB,IAAI,YAAY,GAAG,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YACtC,IAAI,GAAG,GAAG,UAAU,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC;YACtC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,IAAI,GAAG,GAAG,IAAI,CAAC,EAAE;gBAC3C,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,GAAG,GAAG,EAAE,CAAC;gBAC3C,IAAI,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE;oBAC3B,IAAI,KAAK,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;oBACjC,GAAG,GAAG,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC;oBACzC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE;wBACf,IAAI,CAAC,uBAAuB,CAAC,EAAE,IAAI,GAAG,CAAC;qBACxC;iBACF;gBACD,IAAI,CAAC,KAAK,EAAE,CAAC;gBACb,IAAI,CAAC,UAAU,EAAE,CAAC;gBAClB,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC;gBAC1B,IAAI,CAAC,YAAY,EAAE,CAAC;gBACpB,IAAI,CAAC,uBAAuB,CAAC,IAAI,EAAE,CAAC;aACrC;SACF;QACD,IAAI,CAAC,EAAE,GAAG,4DAAoB,CAAC,yBAAyB,CAAC,IAAI,CAAC,uBAAuB,CAAC,EAAE,CAAC,CAAC;IAC5F,CAAC;IAED,cAAc;QACZ,IAAI,IAAI,CAAC,EAAE,IAAI,CAAC,IAAI,IAAI,CAAC,EAAE,GAAG,CAAC,IAAI,CAAC,EAAE;YACpC,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC;YAC/C,IAAI,CAAC,KAAK,EAAE,CAAC;YACb,IAAI,CAAC,mBAAmB,EAAE,CAAC;YAC3B,IAAI,CAAC,UAAU,EAAE,CAAC;YAClB,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC;YAC1B,IAAI,CAAC,YAAY,EAAE,CAAC;YACpB,IAAI,CAAC,uBAAuB,CAAC,IAAI,EAAE,CAAC;SACrC;;YACI,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC;IAClE,CAAC;IAED,cAAc;QACZ,IAAI,IAAI,CAAC,EAAE,IAAI,CAAC,IAAI,IAAI,CAAC,EAAE,GAAG,CAAC,IAAI,CAAC,EAAE;YACpC,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC;YAC/C,IAAI,CAAC,KAAK,EAAE,CAAC;YACb,IAAI,CAAC,mBAAmB,EAAE,CAAC;YAC3B,IAAI,CAAC,UAAU,EAAE,CAAC;YAClB,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC;YAC1B,IAAI,CAAC,YAAY,EAAE,CAAC;YACpB,IAAI,CAAC,uBAAuB,CAAC,IAAI,EAAE,CAAC;SACrC;;YACI,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC;IAClE,CAAC;IAED,cAAc;QACZ,IAAI,IAAI,CAAC,EAAE,IAAI,CAAC,IAAI,IAAI,CAAC,EAAE,GAAG,CAAC,IAAI,CAAC,EAAE;YACpC,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC;YAC/C,IAAI,CAAC,mBAAmB,EAAE,CAAC;YAC3B,IAAI,CAAC,UAAU,EAAE,CAAC;YAClB,IAAI,CAAC,YAAY,EAAE,CAAC;YACpB,IAAI,CAAC,iBAAiB,IAAI,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC;YACpD,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC;YAC1B,IAAI,CAAC,uBAAuB,CAAC,IAAI,EAAE,CAAC;SACrC;;YACI,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC;IAClE,CAAC;IAED,cAAc;QACZ,IAAI,IAAI,CAAC,EAAE,IAAI,IAAI,EAAE;YACnB,IAAI,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC,oBAAoB,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC,CAAC;YAC9F,IAAI,SAAS,IAAI,IAAI,CAAC,uBAAuB,CAAC,EAAE,EAAE;gBAChD,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,SAAS,CAAC;gBAC5C,IAAI,CAAC,mBAAmB,EAAE,CAAC;gBAC3B,IAAI,CAAC,UAAU,EAAE,CAAC;gBAClB,IAAI,CAAC,YAAY,EAAE,CAAC;gBACpB,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC;gBAC1B,IAAI,CAAC,uBAAuB,CAAC,IAAI,EAAE,CAAC;aACrC;SACF;QACD,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,uBAAuB,CAAC,EAAE,CAAC;IAC5C,CAAC;IAED,cAAc;QACZ,IAAI,IAAI,CAAC,EAAE,IAAI,IAAI,EAAE;YACnB,IAAI,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC,oBAAoB,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC,CAAC;YAC9F,IAAI,SAAS,IAAI,IAAI,CAAC,uBAAuB,CAAC,EAAE,EAAE;gBAChD,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,SAAS,CAAC;gBAC5C,IAAI,CAAC,mBAAmB,EAAE,CAAC;gBAC3B,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC;gBAC1B,IAAI,CAAC,iBAAiB,IAAI,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC;gBACpD,IAAI,CAAC,YAAY,EAAE,CAAC;gBACpB,IAAI,CAAC,uBAAuB,CAAC,IAAI,EAAE,CAAC;aACrC;SACF;QACD,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,uBAAuB,CAAC,EAAE,CAAC;IAC5C,CAAC;IAED,cAAc;QACZ,IAAI,IAAI,CAAC,EAAE,IAAI,IAAI,EAAE;YACnB,IAAI,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC,oBAAoB,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,kBAAkB,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC,CAAC;YAC5J,IAAI,SAAS,IAAI,IAAI,CAAC,uBAAuB,CAAC,EAAE,EAAE;gBAChD,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,SAAS,CAAC;gBAC5C,IAAI,CAAC,mBAAmB,EAAE,CAAC;gBAC3B,IAAI,CAAC,UAAU,EAAE,CAAC;gBAClB,IAAI,CAAC,YAAY,EAAE,CAAC;gBACpB,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC;gBAC1B,IAAI,CAAC,uBAAuB,CAAC,IAAI,EAAE,CAAC;aACrC;SACF;QACD,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,uBAAuB,CAAC,EAAE,CAAC;IAC5C,CAAC;IAED,cAAc;QACZ,IAAI,IAAI,CAAC,EAAE,IAAI,CAAC,IAAI,IAAI,CAAC,EAAE,IAAI,GAAG,IAAI,IAAI,CAAC,EAAE,IAAI,IAAI,EAAE;YACrD,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,CAAC;YAC1C,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,GAAG,IAAI,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC;YACxE,IAAI,CAAC,YAAY,EAAE,CAAC;YACpB,IAAI,CAAC,uBAAuB,CAAC,IAAI,EAAE,CAAC;SACrC;;YACI,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,uBAAuB,CAAC,EAAE,CAAC;IACjD,CAAC;IAED,cAAc;QACZ,IAAI,IAAI,CAAC,EAAE,IAAI,EAAE,EAAE;YACjB,IAAI,YAAY,GAAG,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YACtC,IAAI,GAAG,GAAG,UAAU,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC;YACtC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,IAAI,GAAG,GAAG,IAAI,CAAC,EAAE;gBAC3C,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,GAAG,GAAG,EAAE,CAAC;gBAC3C,IAAI,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE;oBAC3B,IAAI,KAAK,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;oBACjC,GAAG,GAAG,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC;oBACzC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE;wBACf,IAAI,CAAC,uBAAuB,CAAC,EAAE,IAAI,GAAG,CAAC;qBACxC;iBACF;gBACD,IAAI,CAAC,KAAK,EAAE,CAAC;gBACb,IAAI,CAAC,UAAU,EAAE,CAAC;gBAClB,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC;gBAC1B,IAAI,CAAC,YAAY,EAAE,CAAC;gBACpB,IAAI,CAAC,uBAAuB,CAAC,IAAI,EAAE,CAAC;aACrC;SACF;QACD,IAAI,CAAC,EAAE,GAAG,4DAAoB,CAAC,yBAAyB,CAAC,IAAI,CAAC,uBAAuB,CAAC,EAAE,CAAC,CAAC;IAC5F,CAAC;IAED,qBAAqB;QACnB,IAAI,CAAC,mBAAmB,EAAE,CAAC;QAC3B,IAAI,CAAC,uBAAuB,CAAC,IAAI,EAAE,CAAC;IACtC,CAAC;IAED,qBAAqB,CAAC,YAAoB;QACxC,QAAQ,YAAY,EAAE;YACpB,KAAK,CAAC;gBACJ,IAAI,CAAC,uBAAuB,CAAC,mBAAmB,GAAG,IAAI,CAAC,eAAe,CAAC,kBAAkB,CAAC;gBAC3F,IAAI,CAAC,uBAAuB,CAAC,uBAAuB,GAAG,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC;gBACjF,MAAM;YACR,KAAK,CAAC;gBACJ,IAAI,CAAC,uBAAuB,CAAC,mBAAmB,GAAG,IAAI,CAAC,eAAe,CAAC,kBAAkB,CAAC;gBAC3F,IAAI,CAAC,uBAAuB,CAAC,uBAAuB,GAAG,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC;gBACjF,MAAM;YACR,KAAK,CAAC;gBACJ,IAAI,CAAC,uBAAuB,CAAC,mBAAmB,GAAG,IAAI,CAAC,eAAe,CAAC,kBAAkB,CAAC;gBAC3F,IAAI,CAAC,uBAAuB,CAAC,uBAAuB,GAAG,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC;gBACjF,MAAM;SACT;QAED,IAAI,CAAC,uBAAuB,CAAC,IAAI,EAAE,CAAC;IACtC,CAAC;IAED,UAAU,CAAC,KAAK;QACd,IAAI,CAAC,4EAAc,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,GAAG,KAAK,GAAG,IAAI,KAAK,CAAC,GAAG,KAAK,GAAG,IAAI,KAAK,CAAC,GAAG,KAAK,OAAO,EAAE;YACjG,KAAK,CAAC,cAAc,EAAE,CAAC;SACxB;IACH,CAAC;IAEO,kCAAkC;QACxC,CAAC,IAAI,CAAC,uBAAuB,CAAC,cAAc,EAAE,IAAI,CAAC,uBAAuB,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,mBAAmB,CAAC,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC,CAAC;QACrJ,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,IAAI,CAAC,uBAAuB,CAAC,EAAE,CAAC;QAClE,IAAI,CAAC,uBAAuB,CAAC,cAAc,GAAG,IAAI,CAAC,uBAAuB,CAAC,cAAc,CAAC;QAC1F,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,EAAE,CAAC,gBAAe;QACpD,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,CAAC,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC;QAChG,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;QAC5E,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,uBAAuB,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC,GAAG,EAAE,CAAC;QAC/M,IAAI,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,EAAE;YAAE,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,EAAE,CAAC;QAC/E,sEAAsE;QACtE,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC;QAC9E,yBAAyB;QACzB,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,uBAAuB,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,IAAI,CAAC,uBAAuB,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC,GAAG,EAAE,CAAC;QACvM,IAAI,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,EAAE;YAAE,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,EAAE,CAAC;QAC/E,kEAAkE;QAClE,IAAI,IAAI,CAAC,iBAAiB,EAAE;YAC1B,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,IAAI,CAAC,UAAU,CAAC,oBAAoB,CAAC,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,GAAG,EAAE,IAAI,CAAC,UAAU,CAAC,kBAAkB,CAAC,CAAC;YAClJ,gEAAgE;YAChE,mBAAmB;YACnB,wBAAwB;YACxB,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,IAAI,CAAC,uBAAuB,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;gBAC1I,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,uBAAuB,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,IAAI,CAAC,uBAAuB,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC,GAAG,EAAE,CAAC;YACvK,yEAAyE;YACzE,IAAI,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,EAAE;gBAAE,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,EAAE,CAAC;YAC/E,qBAAqB;YAErB,OAAO,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,CAAC,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,IAAI,CAAC,uBAAuB,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,uBAAuB,CAAC,EAAE;kBAC5K,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,IAAI,CAAC,uBAAuB,CAAC,EAAE,IAAI,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,EAAE,EAAE;gBAC7G,IAAI,CAAC,uBAAuB,CAAC,EAAE,IAAI,EAAE,CAAC;aACvC;YACD,4DAA4D;YAC5D,0BAA0B;YAC1B,OAAO;SACR;QAED,oEAAoE;QAEpE,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,IAAI,CAAC,uBAAuB,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,EAAE,CAAC;QAC9J,IAAI,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,EAAE;YAAE,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,EAAE,CAAC;QAC/E,oDAAoD;QACpD,0BAA0B;QAC1B,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,IAAI,CAAC,uBAAuB,CAAC,EAAE,CAAC;QAClE,IAAI,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,uBAAuB,CAAC,EAAE,CAAC,CAAC;QACzE,YAAY;QACZ,OAAO,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,CAAC,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,IAAI,CAAC,uBAAuB,CAAC,EAAE,CAAC;cAC1I,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,IAAI,CAAC,uBAAuB,CAAC,EAAE,IAAI,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,GAAG,EAAE;YAC9G,CAAC,EAAE,CAAC;YACJ,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;SAC9D;QACD,uDAAuD;QACvD,2CAA2C;IAC7C,CAAC;IAEO,eAAe;QACrB,IAAI,CAAC,EAAE,GAAG,4DAAoB,CAAC,yBAAyB,CAAC,IAAI,CAAC,uBAAuB,CAAC,EAAE,CAAC,CAAC;QAC1F,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC;QAC3D,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC;QAC3D,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC;QAC3D,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,uBAAuB,CAAC,EAAE,CAAC;QAC1C,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,uBAAuB,CAAC,EAAE,CAAC;QAC1C,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,uBAAuB,CAAC,EAAE,CAAC;QAC1C,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,uBAAuB,CAAC,EAAE,CAAC;QAC1C,IAAI,CAAC,EAAE,GAAG,4DAAoB,CAAC,yBAAyB,CAAC,IAAI,CAAC,uBAAuB,CAAC,EAAE,CAAC,CAAC;QAC1F,IAAI,CAAC,UAAU,GAAG,4DAAoB,CAAC,yBAAyB,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC;QAC9G,mHAAmH;QAEnH,IAAI,CAAC,KAAK,EAAE,CAAC;QACb,IAAI,CAAC,KAAK,EAAE,CAAC;QACb,IAAI,CAAC,mBAAmB,EAAE,CAAC;QAC3B,IAAI,CAAC,kBAAkB,EAAE,CAAC;QAC1B,IAAI,CAAC,YAAY,EAAE,CAAC;IACtB,CAAC;IAEM,kBAAkB;QACvB,IAAI,CAAC,iBAAiB,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;QAChC,IAAI,CAAC,IAAI,CAAC,uBAAuB,CAAC,mBAAmB,EAAE;YACrD,IAAI,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC;SAC/B;aAAM;YACL,IAAI,CAAC,eAAe,CAAC,kBAAkB,GAAG,IAAI,CAAC,uBAAuB,CAAC,mBAAmB,CAAC;YAC3F,IAAI,CAAC,eAAe,CAAC,IAAI,GAAG,IAAI,CAAC,uBAAuB,CAAC,uBAAuB,CAAC;SAClF;QAED,IAAI,CAAC,iBAAiB,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;QAChC,IAAI,CAAC,IAAI,CAAC,uBAAuB,CAAC,mBAAmB,EAAE;YACrD,IAAI,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC;SAC/B;aAAM;YACL,IAAI,CAAC,eAAe,CAAC,kBAAkB,GAAG,IAAI,CAAC,uBAAuB,CAAC,mBAAmB,CAAC;YAC3F,IAAI,CAAC,eAAe,CAAC,IAAI,GAAG,IAAI,CAAC,uBAAuB,CAAC,uBAAuB,CAAC;SAClF;QAED,IAAI,CAAC,iBAAiB,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;QAChC,IAAI,CAAC,IAAI,CAAC,uBAAuB,CAAC,mBAAmB,EAAE;YACrD,IAAI,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC;SAC/B;aAAM;YACL,IAAI,CAAC,eAAe,CAAC,kBAAkB,GAAG,IAAI,CAAC,uBAAuB,CAAC,mBAAmB,CAAC;YAC3F,IAAI,CAAC,eAAe,CAAC,IAAI,GAAG,IAAI,CAAC,uBAAuB,CAAC,uBAAuB,CAAC;SAClF;IACH,CAAC;IAEO,iBAAiB,CAAC,SAAiB,EAAE,UAAmB,KAAK;QACnE,IAAI,oBAAoB,GAA6E,EAAE,CAAC;QACxG,IAAI,SAAiB,CAAC;QACtB,IAAI,YAAoB,CAAC;QACzB,QAAQ,SAAS,EAAE;YACjB,KAAK,CAAC;gBACJ,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE;oBAC3B,SAAS,GAAG,IAAI,CAAC,uBAAuB,CAAC,EAAE,CAAC;oBAC5C,YAAY,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC;iBAChE;qBAAM;oBACL,SAAS,GAAG,IAAI,CAAC,uBAAuB,CAAC,EAAE,CAAC;oBAC5C,YAAY,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,uBAAuB,CAAC,EAAE,CAAC,CAAC;iBAClG;gBACD,MAAM;YACR,KAAK,CAAC;gBACJ,SAAS,GAAG,IAAI,CAAC,uBAAuB,CAAC,EAAE,CAAC;gBAC5C,YAAY,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC;gBAC/D,MAAM;YACR,KAAK,CAAC;gBACJ,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE;oBAC3B,SAAS,GAAG,IAAI,CAAC,uBAAuB,CAAC,EAAE,CAAC;oBAC5C,YAAY,GAAG,CAAC,GAAG,IAAI,CAAC,uBAAuB,CAAC,EAAE,CAAC;iBACpD;qBAAM;oBACL,SAAS,GAAG,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,IAAI,CAAC,uBAAuB,CAAC,EAAE,CAAC;oBAC9E,YAAY,GAAG,IAAI,CAAC,uBAAuB,CAAC,EAAE,CAAC;iBAChD;gBACD,MAAM;SACT;QAED,IAAI,cAAc,GAAG,wGAA+B,CAAC,oBAAoB,CAAC,SAAS,EAAE,YAAY,EAAE,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;QACrJ,cAAc,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;YAC5B,oBAAoB,CAAC,IAAI,CAAC;gBACxB,KAAK,EAAE,aAAa,IAAI,CAAC,kBAAkB,WAAW,IAAI,CAAC,IAAI,GAAG;gBAClE,KAAK,EAAE,EAAE,kBAAkB,EAAE,IAAI,CAAC,kBAAkB,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE;aACxE,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,QAAQ,SAAS,EAAE;YACjB,KAAK,CAAC;gBACJ,IAAI,CAAC,sBAAsB,GAAG,oBAAoB,CAAC;gBACnD,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,sBAAsB,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;gBAC5D,IAAI,CAAC,OAAO,EAAE;oBACZ,IAAI,CAAC,uBAAuB,CAAC,mBAAmB,GAAG,IAAI,CAAC,eAAe,CAAC,kBAAkB,CAAC;oBAC3F,IAAI,CAAC,uBAAuB,CAAC,uBAAuB,GAAG,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC;iBAClF;gBACD,MAAM;YACR,KAAK,CAAC;gBACJ,IAAI,CAAC,sBAAsB,GAAG,oBAAoB,CAAC;gBACnD,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,sBAAsB,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;gBAC5D,IAAI,CAAC,OAAO,EAAE;oBACZ,IAAI,CAAC,uBAAuB,CAAC,mBAAmB,GAAG,IAAI,CAAC,eAAe,CAAC,kBAAkB,CAAC;oBAC3F,IAAI,CAAC,uBAAuB,CAAC,uBAAuB,GAAG,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC;iBAClF;gBACD,MAAM;YACR,KAAK,CAAC;gBACJ,IAAI,CAAC,sBAAsB,GAAG,oBAAoB,CAAC;gBACnD,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,sBAAsB,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;gBAC5D,IAAI,CAAC,OAAO,EAAE;oBACZ,IAAI,CAAC,uBAAuB,CAAC,mBAAmB,GAAG,IAAI,CAAC,eAAe,CAAC,kBAAkB,CAAC;oBAC3F,IAAI,CAAC,uBAAuB,CAAC,uBAAuB,GAAG,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC;iBAClF;gBACD,MAAM;SACT;IACH,CAAC;IAEO,KAAK;QACX,IAAI,CAAC,EAAE,GAAG,wGAA+B,CAAC,4BAA4B,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,EAAE,IAAI,CAAC,uBAAuB,CAAC,EAAE,EAAE,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;QACxM,IAAI,CAAC,EAAE,GAAG,4DAAoB,CAAC,yBAAyB,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACpE,CAAC;IAEO,KAAK;QACX,IAAI,CAAC,EAAE,GAAG,wGAA+B,CAAC,4BAA4B,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,EAAE,IAAI,CAAC,uBAAuB,CAAC,EAAE,EAAE,IAAI,CAAC,uBAAuB,CAAC,EAAE,CAAC,CAAC;QAC9J,IAAI,CAAC,EAAE,GAAG,4DAAoB,CAAC,yBAAyB,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACpE,CAAC;IAEO,mBAAmB;QACzB,IAAI,CAAC,cAAc,GAAG,EAAE,CAAC;QACzB,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,cAAc,EAAE,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,eAAe,EAAE,IAAI,CAAC,UAAU,CAAC,GAAG,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC;QACzI,IAAI,YAAY,GAAG,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,IAAI,CAAC,uBAAuB,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,uBAAuB,CAAC,EAAE,CAAC,GAAG,GAAG;YACnO,6EAA6E;YAC7E,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,IAAI,CAAC,uBAAuB,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC;QAC1J,6CAA6C;QAC7C,IAAI,YAAY,GAAG,CAAC,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC;QACjG,oDAAoD;QACpD,IAAI,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,UAAU,GAAG,CAAC,CAAC,GAAG,YAAY,CAAC,GAAG,EAAE,CAAC,GAAG,EAAE,CAAC;QAClF,4EAA4E;QAC5E,IAAI,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,UAAU,GAAG,CAAC,CAAC,GAAG,YAAY,CAAC,GAAG,EAAE,CAAC,GAAG,EAAE,CAAC;QAClF,4EAA4E;QAE5E,IAAI,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,kBAAkB,CAAC,IAAI,CAAC,uBAAuB,CAAC,cAAc,EAAE,IAAI,CAAC,uBAAuB,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;QAC/H,IAAI,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,kBAAkB,CAAC,IAAI,CAAC,uBAAuB,CAAC,cAAc,EAAE,IAAI,CAAC,uBAAuB,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;QAC/H,mDAAmD;QACnD,mDAAmD;QACnD,IAAI,OAAO,GAAG,GAAG,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,IAAI,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;QACvE,IAAI,OAAO,GAAG,GAAG,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,IAAI,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;QACvE,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,UAAU,EAAE,cAAc,EAAE,IAAI,EAAE,eAAe,EAAE,GAAG,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC;QAC5G,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,UAAU,EAAE,cAAc,EAAE,IAAI,EAAE,eAAe,EAAE,GAAG,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC;QAC5G,IAAI,CAAC,gBAAgB,GAAG,OAAO,IAAI,OAAO,CAAC;IAC7C,CAAC;IAEO,UAAU;QAChB,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC,uBAAuB,CAAC,EAAE,IAAI,IAAI,CAAC,uBAAuB,CAAC,EAAE,CAAC;QAC/F,IAAI,CAAC,qBAAqB,GAAG,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,CAAC,IAAI,IAAI,CAAC,uBAAuB,CAAC,EAAE,CAAC;QAC1I,uGAAuG;QACvG,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,GAAG,CAAC,CAAC;QAChF,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,GAAG,CAAC,CAAC;QAChF,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,uBAAuB,CAAC,EAAE,IAAI,IAAI,CAAC,uBAAuB,CAAC,EAAE,CAAC;QAC3F,IAAI,IAAI,CAAC,iBAAiB,EAAE;YAC1B,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC;SACrH;aACI;YACH,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC;SAC7E;QACD,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,oBAAoB,IAAI,IAAI,CAAC,qBAAqB,IAAI,IAAI,CAAC,cAAc,IAAI,IAAI,CAAC,cAAc;eACjH,IAAI,CAAC,gBAAgB,IAAI,IAAI,CAAC,oBAAoB,IAAI,IAAI,CAAC,cAAc,IAAI,IAAI,CAAC,gBAAgB,CAAC;QAExG,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IACnD,CAAC;IAEO,YAAY;QAClB,IAAI,IAAI,CAAC,SAAS,EAAE;YAClB,wGAA+B,CAAC,eAAe,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YAC1D,OAAO;SACR;QACD,wGAA+B,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACtD,IAAI,CAAC,KAAK,GAAG,wGAA+B,CAAC,cAAc,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,oBAAoB,CAAC,QAAQ,CAAC,CAAC;QAC1G,IAAI,CAAC,GAAG,CAAC,WAAW,GAAG,IAAI,CAAC,2BAA2B,CAAC;QACxD,IAAI,CAAC,eAAe,EAAE,CAAC;QACvB,IAAI,CAAC,iBAAiB,EAAE,CAAC;QACzB,IAAI,CAAC,gBAAgB,EAAE,CAAC;IAC1B,CAAC;IAEO,eAAe;QACrB,uBAAuB;QACvB,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,iBAAiB,EAAE,CAAC;QACtC,wGAA+B,CAAC,yBAAyB,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,yBAAyB,CAAC,CAAC;IAC5G,CAAC;IAEO,iBAAiB;QACvB,IAAI,CAAC,GAAa,EAAE,CAAC;QACrB,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,IAAI,CAAC,uBAAuB,CAAC,EAAE,CAAC,CAAC,CAAC;QAC7E,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACb,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACb,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,IAAI,CAAC,uBAAuB,CAAC,EAAE,CAAC;YACjG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,IAAI,CAAC,uBAAuB,CAAC,EAAE,CAAC,CAAC;QACjH,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACb,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACb,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACb,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,uBAAuB,CAAC,EAAE,CAAC,CAAC;QAC/C,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACb,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACb,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;QACrF,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QACd,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QACd,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,uBAAuB,CAAC,EAAE,CAAC,CAAC;QAChD,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QACd,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,uBAAuB,CAAC,EAAE,CAAC,CAAC;QAChD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YACjC,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC;SAC3C;QAED,IAAI,CAAC,GAAa,EAAE,CAAC;QACrB,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,IAAI,CAAC,uBAAuB,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;QACtI,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;QAC7C,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,CAAC,CAAC;YACnE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;QACjD,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACb,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,CAAC,CAAC;YAClE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;QAChD,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACb,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;QAC5C,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACb,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACb,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,uBAAuB,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;QACpG,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;QAC9I,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;QAC7C,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;QAC5C,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QACd,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QACd,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;QAC9I,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YACjC,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC;SAC5C;QAED,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAChB,CAAC;IAEO,iBAAiB;QACvB,wGAA+B,CAAC,oBAAoB,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,UAAU,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;QAChG,wGAA+B,CAAC,oBAAoB,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,uBAAuB,CAAC,EAAE,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;IAC9G,CAAC;IAEO,gBAAgB;QACtB,IAAI,CAAC,GAAG,CAAC,IAAI,GAAG,GAAG,wGAA+B,CAAC,QAAQ,UAAU,CAAC;QACtE,IAAI,CAAC,GAAG,CAAC,WAAW,GAAG,IAAI,CAAC,2BAA2B,CAAC;QACxD,IAAI,CAAC,GAAG,CAAC,SAAS,GAAG,IAAI,CAAC,2BAA2B,CAAC;QACtD,IAAI,CAAC,UAAU,EAAE,CAAC;QAClB,IAAI,CAAC,UAAU,EAAE,CAAC;QAClB,IAAI,CAAC,UAAU,EAAE,CAAC;QAClB,IAAI,CAAC,UAAU,EAAE,CAAC;QAClB,IAAI,CAAC,UAAU,EAAE,CAAC;QAClB,IAAI,CAAC,UAAU,EAAE,CAAC;QAClB,IAAI,CAAC,UAAU,EAAE,CAAC;QAClB,IAAI,CAAC,UAAU,EAAE,CAAC;QAClB,IAAI,CAAC,UAAU,EAAE,CAAC;QAClB,IAAI,CAAC,UAAU,EAAE,CAAC;QAClB,IAAI,CAAC,UAAU,EAAE,CAAC;QAClB,IAAI,CAAC,UAAU,EAAE,CAAC;QAClB,IAAI,CAAC,UAAU,EAAE,CAAC;QAClB,IAAI,CAAC,UAAU,EAAE,CAAC;IACpB,CAAC;IAEO,UAAU;QAChB,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,GAAG,CAAC,GAAG,wGAA+B,CAAC,QAAQ,GAAG,CAAC,CAAC;QACtE,IAAI,CAAC,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,GAAG,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,GAAG,wGAA+B,CAAC,QAAQ,GAAG,CAAC,CAAC;QAC1H,wGAA+B,CAAC,8BAA8B,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,uBAAuB,CAAC,EAAE,CAAC,CAAC;IACnI,CAAC;IAEO,UAAU;QAChB,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,GAAG,CAAC,GAAG,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,GAAG,wGAA+B,CAAC,QAAQ,GAAG,CAAC,CAAC;QAC5K,IAAI,CAAC,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;QACxB,wGAA+B,CAAC,8BAA8B,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,uBAAuB,CAAC,EAAE,CAAC,CAAC;IACnI,CAAC;IAEO,UAAU;QAChB,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,GAAG,CAAC,GAAG,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,IAAI,CAAC,KAAK,GAAG,wGAA+B,CAAC,QAAQ,GAAG,CAAC,CAAC;QACrH,IAAI,CAAC,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;QACxB,wGAA+B,CAAC,8BAA8B,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,uBAAuB,CAAC,EAAE,CAAC,CAAC;IACnI,CAAC;IAEO,UAAU;QAChB,IAAI,IAAI,CAAC,iBAAiB,EAAE;YAC1B,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,GAAG,CAAC,GAAG,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,IAAI,CAAC,KAAK,GAAG,wGAA+B,CAAC,QAAQ,CAAC;YAChK,IAAI,CAAC,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;YACxB,wGAA+B,CAAC,6BAA6B,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,uBAAuB,CAAC,EAAE,CAAC,CAAC;YAChI,OAAO;SACR;QACD,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,GAAG,wGAA+B,CAAC,QAAQ,GAAG,CAAC,CAAC;QAC/L,IAAI,CAAC,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,GAAG,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,GAAG,wGAA+B,CAAC,QAAQ,CAAC;QACtH,wGAA+B,CAAC,iCAAiC,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,uBAAuB,CAAC,EAAE,CAAC,CAAC;IACtI,CAAC;IAEO,UAAU;QAChB,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,GAAG,CAAC,GAAG,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,GAAG,wGAA+B,CAAC,QAAQ,GAAG,CAAC,CAAC;QACzH,IAAI,CAAC,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,GAAG,IAAI,CAAC,KAAK,GAAG,wGAA+B,CAAC,QAAQ,CAAC;QACtG,wGAA+B,CAAC,iCAAiC,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,uBAAuB,CAAC,EAAE,CAAC,CAAC;IACtI,CAAC;IAEO,UAAU;QAChB,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,GAAG,wGAA+B,CAAC,QAAQ,GAAG,CAAC,CAAC;QAC7J,IAAI,CAAC,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,GAAG,IAAI,CAAC,KAAK,GAAG,wGAA+B,CAAC,QAAQ,CAAC;QACtG,wGAA+B,CAAC,iCAAiC,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,uBAAuB,CAAC,EAAE,CAAC,CAAC;IACtI,CAAC;IAEO,UAAU;QAChB,IAAI,IAAI,CAAC,iBAAiB,EAAE;YAC1B,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC;YAC9G,IAAI,CAAC,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,GAAG,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC;YAC3E,wGAA+B,CAAC,eAAe,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC;YACrE,OAAO;SACR;QAED,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,IAAI,CAAC,uBAAuB,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,KAAK,GAAG,wGAA+B,CAAC,QAAQ,GAAG,CAAC,CAAC;QAC3L,IAAI,CAAC,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;QACxB,wGAA+B,CAAC,8BAA8B,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,uBAAuB,CAAC,EAAE,CAAC,CAAC;IACnI,CAAC;IAEO,UAAU;QAChB,IAAI,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,CAAC,EAAE;YACvC,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC;YACvB,IAAI,CAAC,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;YACxB,wGAA+B,CAAC,2BAA2B,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,uBAAuB,CAAC,EAAE,CAAC,CAAC;SAC/H;IACH,CAAC;IAEO,UAAU;QAChB,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,GAAG,CAAC,GAAG,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,GAAG,wGAA+B,CAAC,QAAQ,GAAG,CAAC,CAAC;QACzH,IAAI,CAAC,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,GAAG,IAAI,CAAC,KAAK,GAAG,wGAA+B,CAAC,QAAQ,CAAC;QACtG,wGAA+B,CAAC,iCAAiC,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,uBAAuB,CAAC,EAAE,CAAC,CAAC;IACtI,CAAC;IAEO,UAAU;QAChB,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC;QAC9G,IAAI,CAAC,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,GAAG,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC;QAC3E,wGAA+B,CAAC,eAAe,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC;IAC1E,CAAC;IAEO,UAAU;QAChB,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,GAAG,CAAC,GAAG,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC;QAC1E,IAAI,CAAC,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,GAAG,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC;QAC3E,wGAA+B,CAAC,eAAe,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC;IACvE,CAAC;IAEO,UAAU;QAChB,IAAI,IAAI,CAAC,EAAE,GAAG,CAAC,EAAE;YACf,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,GAAG,CAAC,GAAG,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,GAAG,wGAA+B,CAAC,QAAQ,GAAG,CAAC,CAAC;YAC5K,IAAI,CAAC,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,GAAG,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC;YACtG,wGAA+B,CAAC,8BAA8B,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC;SAC1G;IACH,CAAC;IAEO,UAAU;QAChB,IAAI,IAAI,CAAC,EAAE,GAAG,CAAC,EAAE;YACf,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,GAAG,CAAC,GAAG,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,IAAI,CAAC,KAAK,GAAG,wGAA+B,CAAC,QAAQ,GAAG,CAAC,CAAC;YACrH,IAAI,CAAC,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,GAAG,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC;YACtG,wGAA+B,CAAC,8BAA8B,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC;SAC1G;IACH,CAAC;IAEO,UAAU;QAChB,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE;YAC3B,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC;YAChJ,IAAI,CAAC,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,GAAG,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC;YAC3E,wGAA+B,CAAC,eAAe,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC;SACtE;IACH,CAAC;CACF;AAnpBU;IAAR,2DAAK,EAAE;8BAAuB,gEAAwB;yFAAC;AAC/C;IAAR,2DAAK,EAAE;8BAA0B,8DAAsB;4FAAC;AAChD;IAAR,2DAAK,EAAE;8BAAa,qEAA6B;+EAAC;AAEzC;IAAT,4DAAM,EAAE;;2FAAsD;AACrD;IAAT,4DAAM,EAAE;;4FAA8C;AAE9C;IAAR,2DAAK,EAAE;;8FAAmC;AAClC;IAAR,2DAAK,EAAE;;gGAAoC;AAG5C;IADC,+DAAS,CAAC,kBAAkB,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;8BAChC,wDAAU;2EAAoB;AAZnC,2CAA2C;IALvD,+DAAS,CAAC;QACT,QAAQ,EAAE,uDAAuD;QACjE,uVAAwE;KAEzE,CAAC;;GACW,2CAA2C,CAopBvD;AAppBuD;;;;;;;;;;;;;;;;;;;;ACba;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACAd;AAC+C;AAET;AAC9B;AACwD;AAOvH,IAAa,0CAA0C,GAAvD,MAAa,0CAA0C;IAuErD;QAlEU,2BAAsB,GAAG,IAAI,0DAAY,EAAW,CAAC;QACrD,4BAAuB,GAAG,IAAI,0DAAY,EAAE,CAAC;QA8BvD,yBAAoB,GAAY,KAAK,CAAC;QACtC,0BAAqB,GAAY,KAAK,CAAC;QACvC,mBAAc,GAAY,KAAK,CAAC;QAChC,mBAAc,GAAY,KAAK,CAAC;QAChC,mBAAc,GAAY,KAAK,CAAC;QAChC,qBAAgB,GAAY,KAAK,CAAC;QAClC,mBAAc,GAAY,KAAK,CAAC;QAChC,0BAAqB,GAAY,KAAK,CAAC;QACvC,yBAAoB,GAAY,KAAK,CAAC;QACtC,qBAAgB,GAAY,KAAK,CAAC;QAC1B,cAAS,GAAY,KAAK,CAAC;QAEnC,0BAAqB,GAAG,wGAA+B,CAAC,oBAAoB,CAAC;QAiB7E,iBAAY,GAAG,wGAA+B,CAAC,6BAA6B,CAAC;IAM7D,CAAC;IAEjB,QAAQ;QACN,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;QACtD,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,GAAG,CAAC,CAAC;QACzC,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC;QAC1C,IAAI,IAAI,CAAC,uBAAuB,CAAC,EAAE,IAAI,IAAI,EAAE;YAC3C,IAAI,CAAC,kCAAkC,EAAE,CAAC;SAC3C;QAED,IAAI,CAAC,eAAe,EAAE,CAAC;IACzB,CAAC;IAED,cAAc;QACZ,IAAI,IAAI,CAAC,EAAE,IAAI,EAAE,EAAE;YACjB,IAAI,YAAY,GAAG,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YACtC,IAAI,GAAG,GAAG,UAAU,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC;YACtC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,IAAI,GAAG,GAAG,IAAI,CAAC,EAAE;gBAC3C,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,GAAG,GAAG,EAAE,CAAC;gBAC3C,IAAI,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE;oBAC3B,IAAI,KAAK,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;oBACjC,GAAG,GAAG,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC;oBACzC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE;wBACf,IAAI,CAAC,uBAAuB,CAAC,EAAE,IAAI,GAAG,CAAC;qBACxC;iBACF;gBACD,IAAI,CAAC,KAAK,EAAE,CAAC;gBACb,IAAI,CAAC,UAAU,EAAE,CAAC;gBAClB,IAAI,CAAC,YAAY,EAAE,CAAC;gBACpB,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC;gBAC1B,IAAI,CAAC,uBAAuB,CAAC,IAAI,EAAE,CAAC;aACrC;SACF;QACD,IAAI,CAAC,EAAE,GAAG,4DAAoB,CAAC,yBAAyB,CAAC,IAAI,CAAC,uBAAuB,CAAC,EAAE,CAAC,CAAC;IAC5F,CAAC;IAED,cAAc;QACZ,IAAI,IAAI,CAAC,EAAE,IAAI,CAAC,IAAI,IAAI,CAAC,EAAE,GAAG,CAAC,IAAI,CAAC,EAAE;YACpC,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC;YAC/C,IAAI,CAAC,KAAK,EAAE,CAAC;YACb,IAAI,CAAC,mBAAmB,EAAE,CAAC;YAC3B,IAAI,CAAC,UAAU,EAAE,CAAC;YAClB,IAAI,CAAC,YAAY,EAAE,CAAC;YACpB,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC;YAC1B,IAAI,CAAC,uBAAuB,CAAC,IAAI,EAAE,CAAC;SACrC;;YACI,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC;IAClE,CAAC;IAED,cAAc;QACZ,IAAI,IAAI,CAAC,EAAE,IAAI,CAAC,IAAI,IAAI,CAAC,EAAE,GAAG,CAAC,IAAI,CAAC,EAAE;YACpC,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC;YAC/C,IAAI,CAAC,KAAK,EAAE,CAAC;YACb,IAAI,CAAC,mBAAmB,EAAE,CAAC;YAC3B,IAAI,CAAC,UAAU,EAAE,CAAC;YAClB,IAAI,CAAC,YAAY,EAAE,CAAC;YACpB,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC;YAC1B,IAAI,CAAC,uBAAuB,CAAC,IAAI,EAAE,CAAC;SACrC;;YACI,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC;IAClE,CAAC;IAED,cAAc;QACZ,IAAI,IAAI,CAAC,EAAE,IAAI,CAAC,IAAI,IAAI,CAAC,EAAE,GAAG,CAAC,IAAI,CAAC,EAAE;YACpC,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC;YAC/C,IAAI,CAAC,KAAK,EAAE,CAAC;YACb,IAAI,CAAC,mBAAmB,EAAE,CAAC;YAC3B,IAAI,CAAC,UAAU,EAAE,CAAC;YAClB,IAAI,CAAC,YAAY,EAAE,CAAC;YACpB,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC;YAC1B,IAAI,CAAC,uBAAuB,CAAC,IAAI,EAAE,CAAC;SACrC;;YACI,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC;IAClE,CAAC;IAED,cAAc;QACZ,IAAI,IAAI,CAAC,EAAE,IAAI,CAAC,IAAI,IAAI,CAAC,EAAE,GAAG,CAAC,IAAI,CAAC,EAAE;YACpC,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC;YAC/C,IAAI,CAAC,mBAAmB,EAAE,CAAC;YAC3B,IAAI,CAAC,UAAU,EAAE,CAAC;YAClB,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC;YAC1B,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC;YAC1B,IAAI,CAAC,YAAY,EAAE,CAAC;YACpB,IAAI,CAAC,uBAAuB,CAAC,IAAI,EAAE,CAAC;SACrC;;YACI,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC;IAClE,CAAC;IAED,cAAc;QACZ,IAAI,IAAI,CAAC,EAAE,IAAI,IAAI,EAAE;YACnB,IAAI,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC,oBAAoB,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC,CAAC;YAC9F,IAAI,SAAS,IAAI,IAAI,CAAC,uBAAuB,CAAC,EAAE,EAAE;gBAChD,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,SAAS,CAAC;gBAC5C,IAAI,CAAC,mBAAmB,EAAE,CAAC;gBAC3B,IAAI,CAAC,UAAU,EAAE,CAAC;gBAClB,IAAI,CAAC,YAAY,EAAE,CAAC;gBACpB,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC;gBAC1B,IAAI,CAAC,uBAAuB,CAAC,IAAI,EAAE,CAAC;aACrC;SACF;QACD,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,uBAAuB,CAAC,EAAE,CAAC;IAC5C,CAAC;IAED,cAAc;QACZ,IAAI,IAAI,CAAC,EAAE,IAAI,IAAI,EAAE;YACnB,IAAI,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC,oBAAoB,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC,CAAC;YAC9F,IAAI,SAAS,IAAI,IAAI,CAAC,uBAAuB,CAAC,EAAE,EAAE;gBAChD,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,SAAS,CAAC;gBAC5C,IAAI,CAAC,mBAAmB,EAAE,CAAC;gBAC3B,IAAI,CAAC,UAAU,EAAE,CAAC;gBAClB,IAAI,CAAC,YAAY,EAAE,CAAC;gBACpB,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC;gBAC1B,IAAI,CAAC,uBAAuB,CAAC,IAAI,EAAE,CAAC;aACrC;SACF;QACD,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,uBAAuB,CAAC,EAAE,CAAC;IAC5C,CAAC;IAED,cAAc;QACZ,IAAI,IAAI,CAAC,EAAE,IAAI,IAAI,EAAE;YACnB,IAAI,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC,oBAAoB,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC,CAAC;YAC9F,IAAI,SAAS,IAAI,IAAI,CAAC,uBAAuB,CAAC,EAAE,EAAE;gBAChD,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,SAAS,CAAC;gBAC5C,IAAI,CAAC,mBAAmB,EAAE,CAAC;gBAC3B,IAAI,CAAC,YAAY,EAAE,CAAC;gBACpB,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC;gBAC1B,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC;gBAC1B,IAAI,CAAC,uBAAuB,CAAC,IAAI,EAAE,CAAC;aACrC;SACF;QACD,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,uBAAuB,CAAC,EAAE,CAAC;IAC5C,CAAC;IAED,cAAc;QACZ,IAAI,IAAI,CAAC,EAAE,IAAI,CAAC,IAAI,IAAI,CAAC,EAAE,IAAI,GAAG,IAAI,IAAI,CAAC,EAAE,IAAI,IAAI,EAAE;YACrD,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,EAAE,CAAC;YACnB,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,GAAG,IAAI,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC;YACxE,IAAI,CAAC,YAAY,EAAE,CAAC;YACpB,IAAI,CAAC,uBAAuB,CAAC,IAAI,EAAE,CAAC;SACrC;;YACI,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC;IAC1B,CAAC;IAED,cAAc;QACZ,IAAI,IAAI,CAAC,EAAE,IAAI,EAAE,EAAE;YACjB,IAAI,YAAY,GAAG,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YACtC,IAAI,GAAG,GAAG,UAAU,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC;YACtC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,IAAI,GAAG,GAAG,IAAI,CAAC,EAAE;gBAC3C,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,GAAG,GAAG,EAAE,CAAC;gBAC3C,IAAI,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE;oBAC3B,IAAI,KAAK,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;oBACjC,GAAG,GAAG,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC;oBACzC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE;wBACf,IAAI,CAAC,uBAAuB,CAAC,EAAE,IAAI,GAAG,CAAC;qBACxC;iBACF;gBACD,IAAI,CAAC,KAAK,EAAE,CAAC;gBACb,IAAI,CAAC,UAAU,EAAE,CAAC;gBAClB,IAAI,CAAC,YAAY,EAAE,CAAC;gBACpB,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC;gBAC1B,IAAI,CAAC,uBAAuB,CAAC,IAAI,EAAE,CAAC;aACrC;SACF;QACD,IAAI,CAAC,EAAE,GAAG,4DAAoB,CAAC,yBAAyB,CAAC,IAAI,CAAC,uBAAuB,CAAC,EAAE,CAAC,CAAC;IAC5F,CAAC;IAED,cAAc;QACZ,IAAI,IAAI,CAAC,EAAE,IAAI,EAAE,EAAE;YACjB,IAAI,YAAY,GAAG,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YACtC,IAAI,GAAG,GAAG,UAAU,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC;YACtC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,IAAI,GAAG,GAAG,IAAI,CAAC,EAAE;gBAC3C,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,GAAG,GAAG,EAAE,CAAC;gBAC3C,IAAI,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE;oBAC3B,IAAI,KAAK,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;oBACjC,GAAG,GAAG,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC;oBACzC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE;wBACf,IAAI,CAAC,uBAAuB,CAAC,EAAE,IAAI,GAAG,CAAC;qBACxC;iBACF;gBACD,IAAI,CAAC,KAAK,EAAE,CAAC;gBACb,IAAI,CAAC,UAAU,EAAE,CAAC;gBAClB,IAAI,CAAC,YAAY,EAAE,CAAC;gBACpB,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC;gBAC1B,IAAI,CAAC,uBAAuB,CAAC,IAAI,EAAE,CAAC;aACrC;SACF;QACD,IAAI,CAAC,EAAE,GAAG,4DAAoB,CAAC,yBAAyB,CAAC,IAAI,CAAC,uBAAuB,CAAC,EAAE,CAAC,CAAC;IAC5F,CAAC;IAED,cAAc;QACZ,IAAI,IAAI,CAAC,EAAE,IAAI,IAAI,EAAE;YACnB,IAAI,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC,oBAAoB,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,UAAU,CAAC,kBAAkB,CAAC,CAAC;YAClG,IAAI,SAAS,IAAI,IAAI,CAAC,uBAAuB,CAAC,EAAE,EAAE;gBAChD,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,SAAS,CAAC;gBAC5C,IAAI,CAAC,mBAAmB,EAAE,CAAC;gBAC3B,IAAI,CAAC,UAAU,EAAE,CAAC;gBAClB,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC;gBAC1B,IAAI,CAAC,YAAY,EAAE,CAAC;gBACpB,IAAI,CAAC,uBAAuB,CAAC,IAAI,EAAE,CAAC;aACrC;SACF;QACD,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,uBAAuB,CAAC,EAAE,CAAC;IAC5C,CAAC;IAED,qBAAqB;QACnB,IAAI,CAAC,mBAAmB,EAAE,CAAC;QAC3B,IAAI,CAAC,uBAAuB,CAAC,IAAI,EAAE,CAAC;IACtC,CAAC;IAED,qBAAqB,CAAC,YAAoB;QACxC,QAAQ,YAAY,EAAE;YACpB,KAAK,CAAC;gBACJ,IAAI,CAAC,uBAAuB,CAAC,mBAAmB,GAAG,IAAI,CAAC,eAAe,CAAC,kBAAkB,CAAC;gBAC3F,IAAI,CAAC,uBAAuB,CAAC,uBAAuB,GAAG,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC;gBACjF,MAAM;YACR,KAAK,CAAC;gBACJ,IAAI,CAAC,uBAAuB,CAAC,mBAAmB,GAAG,IAAI,CAAC,eAAe,CAAC,kBAAkB,CAAC;gBAC3F,IAAI,CAAC,uBAAuB,CAAC,uBAAuB,GAAG,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC;gBACjF,MAAM;YACR,KAAK,CAAC;gBACJ,IAAI,CAAC,uBAAuB,CAAC,mBAAmB,GAAG,IAAI,CAAC,eAAe,CAAC,kBAAkB,CAAC;gBAC3F,IAAI,CAAC,uBAAuB,CAAC,uBAAuB,GAAG,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC;gBACjF,MAAM;YACR,KAAK,CAAC;gBACJ,IAAI,CAAC,uBAAuB,CAAC,mBAAmB,GAAG,IAAI,CAAC,eAAe,CAAC,kBAAkB,CAAC;gBAC3F,IAAI,CAAC,uBAAuB,CAAC,uBAAuB,GAAG,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC;gBACjF,MAAM;SACT;QAED,IAAI,CAAC,uBAAuB,CAAC,IAAI,EAAE,CAAC;IACtC,CAAC;IAED,UAAU,CAAC,KAAK;QACd,IAAI,CAAC,4EAAc,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,GAAG,KAAK,GAAG,IAAI,KAAK,CAAC,GAAG,KAAK,GAAG,IAAI,KAAK,CAAC,GAAG,KAAK,OAAO,EAAE;YACjG,KAAK,CAAC,cAAc,EAAE,CAAC;SACxB;IACH,CAAC;IAEO,UAAU;QAChB,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC,uBAAuB,CAAC,EAAE,IAAI,IAAI,CAAC,uBAAuB,CAAC,EAAE,CAAC;QAC/F,IAAI,CAAC,qBAAqB,GAAG,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,CAAC,IAAI,IAAI,CAAC,uBAAuB,CAAC,EAAE,CAAC;QAC1I,uGAAuG;QACvG,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,GAAG,CAAC,CAAC;QAChF,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,GAAG,CAAC,CAAC;QAChF,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,GAAG,CAAC,CAAC;QAChF,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,IAAI,CAAC,uBAAuB,CAAC,EAAE,CAAC;QAC1F,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,GAAG,CAAC,CAAC;QAChF,IAAI,CAAC,qBAAqB,GAAG,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,IAAI,CAAC,uBAAuB,CAAC,EAAE,IAAI,IAAI,CAAC,uBAAuB,CAAC,EAAE,CAAC;QAClI,mGAAmG;QACnG,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC;QAEpH,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,oBAAoB,IAAI,IAAI,CAAC,qBAAqB,IAAI,IAAI,CAAC,cAAc,IAAI,IAAI,CAAC,cAAc;eACjH,IAAI,CAAC,cAAc,IAAI,IAAI,CAAC,gBAAgB,IAAI,IAAI,CAAC,cAAc,IAAI,IAAI,CAAC,qBAAqB,IAAI,IAAI,CAAC,oBAAoB,IAAI,IAAI,CAAC,gBAAgB,CAAC;QAC7J,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IACnD,CAAC;IAEO,kCAAkC;QACxC,CAAC,IAAI,CAAC,uBAAuB,CAAC,cAAc,EAAE,IAAI,CAAC,uBAAuB,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,mBAAmB,CAAC,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC,CAAC;QACrJ,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,IAAI,CAAC,uBAAuB,CAAC,EAAE,CAAC;QAClE,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,IAAI,CAAC,uBAAuB,CAAC,EAAE,CAAC;QAClE,IAAI,CAAC,uBAAuB,CAAC,cAAc,GAAG,IAAI,CAAC,uBAAuB,CAAC,cAAc,CAAC;QAC1F,IAAI,CAAC,uBAAuB,CAAC,cAAc,GAAG,IAAI,CAAC,uBAAuB,CAAC,cAAc,CAAC;QAC1F,IAAI,CAAC,GAAG,GAAG,EAAE,CAAC;QACd,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,CAAC,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC;QACzE,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,GAAG,CAAC,GAAG,IAAI,CAAC,CAAC;QAC7E,wBAAwB;QACxB,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,IAAI,CAAC,oCAAoC,CAAC,IAAI,CAAC,uBAAuB,CAAC,EAAE,EAAE,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;QACxL,sEAAsE;QACtE,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,GAAG,CAAC,GAAG,MAAM,CAAC,CAAC;QAC/E,0BAA0B;QAC1B,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC;QAC9E,yBAAyB;QACzB,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,IAAI,CAAC,oCAAoC,CAAC,IAAI,CAAC,uBAAuB,CAAC,EAAE,EAAE,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,IAAI,CAAC,uBAAuB,CAAC,EAAE,CAAC,CAAC;QAChL,iEAAiE;QACjE,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,IAAI,CAAC,oCAAoC,CAAC,IAAI,CAAC,uBAAuB,CAAC,EAAE,EAAE,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,IAAI,CAAC,uBAAuB,CAAC,EAAE,CAAC,CAAC;QAChL,iEAAiE;QACjE,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,IAAI,CAAC,UAAU,CAAC,oBAAoB,CAAC,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,GAAG,EAAE,IAAI,CAAC,UAAU,CAAC,kBAAkB,CAAC,CAAC;QAClJ,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,IAAI,CAAC,uBAAuB,CAAC,EAAE;YACnI,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,uBAAuB,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,IAAI,CAAC,uBAAuB,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC,GAAG,EAAE;YACtK,CAAC,CAAC,EAAE,CAAC;QACP,oEAAoE;IACtE,CAAC;IAEO,oCAAoC,CAAC,KAAa,EAAE,MAAc;QACxE,IAAI,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC,GAAG,EAAE,CAAC;QAChG,IAAI,SAAS,GAAG,EAAE;YAAE,SAAS,GAAG,EAAE,CAAC;QACnC,OAAO,SAAS,CAAC;IACnB,CAAC;IAEO,eAAe;QACrB,IAAI,CAAC,EAAE,GAAG,4DAAoB,CAAC,yBAAyB,CAAC,IAAI,CAAC,uBAAuB,CAAC,EAAE,CAAC,CAAC;QAC1F,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC;QAC3D,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC;QAC3D,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC;QAC3D,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC;QAC3D,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,uBAAuB,CAAC,EAAE,CAAC;QAC1C,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,uBAAuB,CAAC,EAAE,CAAC;QAC1C,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,uBAAuB,CAAC,EAAE,CAAC;QAC1C,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,GAAG,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,EAAE,CAAC;QAC/F,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC;QACnB,IAAI,CAAC,EAAE,GAAG,4DAAoB,CAAC,yBAAyB,CAAC,IAAI,CAAC,uBAAuB,CAAC,EAAE,CAAC,CAAC;QAC1F,IAAI,CAAC,EAAE,GAAG,4DAAoB,CAAC,yBAAyB,CAAC,IAAI,CAAC,uBAAuB,CAAC,EAAE,CAAC,CAAC;QAC1F,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,uBAAuB,CAAC,EAAE,CAAC;QAC1C,IAAI,CAAC,UAAU,GAAG,4DAAoB,CAAC,yBAAyB,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,GAAG,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC;QAC/G,IAAI,CAAC,UAAU,GAAG,4DAAoB,CAAC,yBAAyB,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC;QAE9G,IAAI,CAAC,KAAK,EAAE,CAAC;QACb,IAAI,CAAC,KAAK,EAAE,CAAC;QACb,IAAI,CAAC,KAAK,EAAE,CAAC;QACb,IAAI,CAAC,mBAAmB,EAAE,CAAC;QAC3B,IAAI,CAAC,kBAAkB,EAAE,CAAC;QAC1B,IAAI,CAAC,YAAY,EAAE,CAAC;IACtB,CAAC;IAEM,kBAAkB;QACvB,IAAI,CAAC,iBAAiB,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;QAChC,IAAI,CAAC,IAAI,CAAC,uBAAuB,CAAC,mBAAmB,EAAE;YACrD,IAAI,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC;SAC/B;aAAM;YACL,IAAI,CAAC,eAAe,CAAC,kBAAkB,GAAG,IAAI,CAAC,uBAAuB,CAAC,mBAAmB,CAAC;YAC3F,IAAI,CAAC,eAAe,CAAC,IAAI,GAAG,IAAI,CAAC,uBAAuB,CAAC,uBAAuB,CAAC;SAClF;QAED,IAAI,CAAC,iBAAiB,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;QAChC,IAAI,CAAC,IAAI,CAAC,uBAAuB,CAAC,mBAAmB,EAAE;YACrD,IAAI,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC;SAC/B;aAAM;YACL,IAAI,CAAC,eAAe,CAAC,kBAAkB,GAAG,IAAI,CAAC,uBAAuB,CAAC,mBAAmB,CAAC;YAC3F,IAAI,CAAC,eAAe,CAAC,IAAI,GAAG,IAAI,CAAC,uBAAuB,CAAC,uBAAuB,CAAC;SAClF;QAED,IAAI,CAAC,iBAAiB,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;QAChC,IAAI,CAAC,IAAI,CAAC,uBAAuB,CAAC,mBAAmB,EAAE;YACrD,IAAI,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC;SAC/B;aAAM;YACL,IAAI,CAAC,eAAe,CAAC,kBAAkB,GAAG,IAAI,CAAC,uBAAuB,CAAC,mBAAmB,CAAC;YAC3F,IAAI,CAAC,eAAe,CAAC,IAAI,GAAG,IAAI,CAAC,uBAAuB,CAAC,uBAAuB,CAAC;SAClF;QAED,IAAI,CAAC,iBAAiB,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;QAChC,IAAI,CAAC,IAAI,CAAC,uBAAuB,CAAC,mBAAmB,EAAE;YACrD,IAAI,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC;SAC/B;aAAM;YACL,IAAI,CAAC,eAAe,CAAC,kBAAkB,GAAG,IAAI,CAAC,uBAAuB,CAAC,mBAAmB,CAAC;YAC3F,IAAI,CAAC,eAAe,CAAC,IAAI,GAAG,IAAI,CAAC,uBAAuB,CAAC,uBAAuB,CAAC;SAClF;IACH,CAAC;IAEO,iBAAiB,CAAC,SAAiB,EAAE,UAAmB,KAAK;QACnE,IAAI,oBAAoB,GAA6E,EAAE,CAAC;QACxG,IAAI,SAAiB,CAAC;QACtB,IAAI,YAAoB,CAAC;QACzB,QAAQ,SAAS,EAAE;YACjB,KAAK,CAAC;gBACJ,SAAS,GAAG,IAAI,CAAC,uBAAuB,CAAC,EAAE,CAAC;gBAC5C,YAAY,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,uBAAuB,CAAC,EAAE,CAAC,CAAC;gBACjG,MAAM;YACR,KAAK,CAAC;gBACJ,SAAS,GAAG,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,IAAI,CAAC,uBAAuB,CAAC,EAAE,CAAC;gBAC9E,YAAY,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,uBAAuB,CAAC,EAAE,CAAC,CAAC;gBACrD,MAAM;YACR,KAAK,CAAC;gBACJ,SAAS,GAAG,IAAI,CAAC,uBAAuB,CAAC,EAAE,CAAC;gBAC5C,YAAY,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC;gBAC/D,MAAM;YACR,KAAK,CAAC;gBACJ,SAAS,GAAG,IAAI,CAAC,uBAAuB,CAAC,EAAE,CAAC;gBAC5C,YAAY,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC;gBAC/D,MAAM;SACT;QAED,IAAI,cAAc,GAAG,wGAA+B,CAAC,oBAAoB,CAAC,SAAS,EAAE,YAAY,EAAE,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;QACrJ,cAAc,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;YAC5B,oBAAoB,CAAC,IAAI,CAAC;gBACxB,KAAK,EAAE,aAAa,IAAI,CAAC,kBAAkB,WAAW,IAAI,CAAC,IAAI,GAAG;gBAClE,KAAK,EAAE,EAAE,kBAAkB,EAAE,IAAI,CAAC,kBAAkB,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE;aACxE,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,QAAQ,SAAS,EAAE;YACjB,KAAK,CAAC;gBACJ,IAAI,CAAC,sBAAsB,GAAG,oBAAoB,CAAC;gBACnD,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,sBAAsB,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;gBAC5D,IAAI,CAAC,OAAO,EAAE;oBACZ,IAAI,CAAC,uBAAuB,CAAC,mBAAmB,GAAG,IAAI,CAAC,eAAe,CAAC,kBAAkB,CAAC;oBAC3F,IAAI,CAAC,uBAAuB,CAAC,uBAAuB,GAAG,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC;iBAClF;gBACD,MAAM;YACR,KAAK,CAAC;gBACJ,IAAI,CAAC,sBAAsB,GAAG,oBAAoB,CAAC;gBACnD,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,sBAAsB,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;gBAC5D,IAAI,CAAC,OAAO,EAAE;oBACZ,IAAI,CAAC,uBAAuB,CAAC,mBAAmB,GAAG,IAAI,CAAC,eAAe,CAAC,kBAAkB,CAAC;oBAC3F,IAAI,CAAC,uBAAuB,CAAC,uBAAuB,GAAG,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC;iBAClF;gBACD,MAAM;YACR,KAAK,CAAC;gBACJ,IAAI,CAAC,sBAAsB,GAAG,oBAAoB,CAAC;gBACnD,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,sBAAsB,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;gBAC5D,IAAI,CAAC,OAAO,EAAE;oBACZ,IAAI,CAAC,uBAAuB,CAAC,mBAAmB,GAAG,IAAI,CAAC,eAAe,CAAC,kBAAkB,CAAC;oBAC3F,IAAI,CAAC,uBAAuB,CAAC,uBAAuB,GAAG,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC;iBAClF;gBACD,MAAM;YACR,KAAK,CAAC;gBACJ,IAAI,CAAC,sBAAsB,GAAG,oBAAoB,CAAC;gBACnD,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,sBAAsB,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;gBAC5D,IAAI,CAAC,OAAO,EAAE;oBACZ,IAAI,CAAC,uBAAuB,CAAC,mBAAmB,GAAG,IAAI,CAAC,eAAe,CAAC,kBAAkB,CAAC;oBAC3F,IAAI,CAAC,uBAAuB,CAAC,uBAAuB,GAAG,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC;iBAClF;gBACD,MAAM;SACT;IACH,CAAC;IAEO,KAAK;QACX,IAAI,CAAC,EAAE,GAAG,wGAA+B,CAAC,4BAA4B,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,EAAE,IAAI,CAAC,uBAAuB,CAAC,EAAE,EAAE,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;QACxM,IAAI,CAAC,EAAE,GAAG,4DAAoB,CAAC,yBAAyB,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACpE,CAAC;IAEO,KAAK;QACX,IAAI,CAAC,EAAE,GAAG,wGAA+B,CAAC,4BAA4B,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,EAAE,IAAI,CAAC,uBAAuB,CAAC,EAAE,EAAE,IAAI,CAAC,uBAAuB,CAAC,EAAE,CAAC,CAAC;QAC9J,IAAI,CAAC,EAAE,GAAG,4DAAoB,CAAC,yBAAyB,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACpE,CAAC;IAEO,KAAK;QACX,IAAI,CAAC,EAAE,GAAG,wGAA+B,CAAC,4BAA4B,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,EAAE,IAAI,CAAC,uBAAuB,CAAC,EAAE,EAAE,IAAI,CAAC,uBAAuB,CAAC,EAAE,CAAC,CAAC;QAC9J,IAAI,CAAC,EAAE,GAAG,4DAAoB,CAAC,yBAAyB,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACpE,CAAC;IAEO,mBAAmB;QACzB,IAAI,CAAC,cAAc,GAAG,EAAE,CAAC;QACzB,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,cAAc,EAAE,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,eAAe,EAAE,IAAI,CAAC,UAAU,CAAC,GAAG,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC;QACzI,IAAI,YAAY,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,IAAI,CAAC,uBAAuB,CAAC,EAAE;cACrF,CAAC,GAAG,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,CAAC,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,IAAI,CAAC,uBAAuB,CAAC,EAAE,CAAC,CAAC,GAAG,GAAG,CAAC;QACrH,6DAA6D;QAC7D,IAAI,YAAY,GAAG,CAAC,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC;QACjG,4CAA4C;QAC5C,IAAI,YAAY,GAAG,CAAC,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC;QACjG,4CAA4C;QAC5C,IAAI,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,UAAU,GAAG,CAAC,CAAC,GAAG,YAAY,CAAC,GAAG,EAAE,CAAC,GAAG,EAAE,CAAC;QAClF,4EAA4E;QAC5E,IAAI,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,UAAU,GAAG,CAAC,CAAC,GAAG,YAAY,CAAC,GAAG,EAAE,CAAC,GAAG,EAAE,CAAC;QAClF,4EAA4E;QAC5E,IAAI,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,UAAU,GAAG,CAAC,CAAC,GAAG,YAAY,CAAC,GAAG,EAAE,CAAC,GAAG,EAAE,CAAC;QAClF,4EAA4E;QAE5E,IAAI,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,kBAAkB,CAAC,IAAI,CAAC,uBAAuB,CAAC,cAAc,EAAE,IAAI,CAAC,uBAAuB,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;QAAA,CAAC;QAChI,IAAI,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,kBAAkB,CAAC,IAAI,CAAC,uBAAuB,CAAC,cAAc,EAAE,IAAI,CAAC,uBAAuB,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;QAC/H,IAAI,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,kBAAkB,CAAC,IAAI,CAAC,uBAAuB,CAAC,cAAc,EAAE,IAAI,CAAC,uBAAuB,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;QAE/H,IAAI,OAAO,GAAG,GAAG,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,IAAI,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;QACvE,IAAI,OAAO,GAAG,GAAG,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,IAAI,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;QACvE,IAAI,OAAO,GAAG,GAAG,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,IAAI,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;QACvE,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,UAAU,EAAE,cAAc,EAAE,IAAI,EAAE,eAAe,EAAE,GAAG,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC;QAC5G,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,UAAU,EAAE,cAAc,EAAE,IAAI,EAAE,eAAe,EAAE,GAAG,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC;QAC5G,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,UAAU,EAAE,cAAc,EAAE,IAAI,EAAE,eAAe,EAAE,GAAG,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC;QAC5G,IAAI,CAAC,gBAAgB,GAAG,OAAO,IAAI,OAAO,IAAI,OAAO,CAAC;IACxD,CAAC;IAEO,YAAY;QAClB,IAAI,IAAI,CAAC,SAAS,EAAE;YAClB,wGAA+B,CAAC,eAAe,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YAC1D,OAAO;SACR;QAED,wGAA+B,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACtD,IAAI,CAAC,KAAK,GAAG,wGAA+B,CAAC,cAAc,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,oBAAoB,CAAC,QAAQ,CAAC,CAAC;QAC1G,IAAI,CAAC,GAAG,CAAC,WAAW,GAAG,IAAI,CAAC,2BAA2B,CAAC;QACxD,IAAI,CAAC,eAAe,EAAE,CAAC;QACvB,IAAI,CAAC,iBAAiB,EAAE,CAAC;QACzB,IAAI,CAAC,gBAAgB,EAAE,CAAC;IAC1B,CAAC;IAEO,eAAe;QACrB,uBAAuB;QACvB,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,iBAAiB,EAAE,CAAC;QACtC,wGAA+B,CAAC,wBAAwB,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,yBAAyB,CAAC,CAAC;IAC3G,CAAC;IAEO,iBAAiB;QACvB,IAAI,CAAC,GAAa,EAAE,CAAC;QACrB,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,IAAI,CAAC,uBAAuB,CAAC,EAAE,CAAC,CAAC;QAC3E,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACb,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACb,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,IAAI,CAAC,uBAAuB,CAAC,EAAE,CAAC,CAAC;QAC3E,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACb,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACb,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACb,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,uBAAuB,CAAC,EAAE,CAAC,CAAC;QAC/C,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACb,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACb,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,IAAI,CAAC,uBAAuB,CAAC,EAAE,CAAC,CAAC;QAC3E,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QACd,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QACd,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,uBAAuB,CAAC,EAAE,CAAC,CAAC;QAChD,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QACd,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,uBAAuB,CAAC,EAAE,CAAC,CAAC;QACzC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;QACrF,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QACd,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QACd,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,uBAAuB,CAAC,EAAE,CAAC,CAAC;QAChD,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QACd,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QACd,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YACjC,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC;SACzC;QAED,IAAI,CAAC,GAAa,EAAE,CAAC;QACrB,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,IAAI,CAAC,uBAAuB,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;QACtI,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;QAC7C,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;QAC7C,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACb,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;QAC5C,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACb,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;QAC5C,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACb,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACb,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,uBAAuB,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;QACpG,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,IAAI,CAAC,uBAAuB,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;QACtI,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;QAC7C,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;QAC5C,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QACd,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QACd,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,uBAAuB,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;QACpG,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;QAC9I,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;QAC7C,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;QAC5C,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QACd,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QACd,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;QAC9I,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YACjC,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC;SACzC;QAED,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAChB,CAAC;IAEO,iBAAiB;QACvB,wGAA+B,CAAC,oBAAoB,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,UAAU,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;QAChG,wGAA+B,CAAC,oBAAoB,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,uBAAuB,CAAC,EAAE,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;IAC9G,CAAC;IAEO,gBAAgB;QACtB,IAAI,CAAC,GAAG,CAAC,IAAI,GAAG,GAAG,wGAA+B,CAAC,QAAQ,UAAU,CAAC;QACtE,IAAI,CAAC,GAAG,CAAC,WAAW,GAAG,IAAI,CAAC,2BAA2B,CAAC;QACxD,IAAI,CAAC,GAAG,CAAC,SAAS,GAAG,IAAI,CAAC,2BAA2B,CAAC;QACtD,IAAI,CAAC,UAAU,EAAE,CAAC;QAClB,IAAI,CAAC,UAAU,EAAE,CAAC;QAClB,IAAI,CAAC,UAAU,EAAE,CAAC;QAClB,IAAI,CAAC,UAAU,EAAE,CAAC;QAClB,IAAI,CAAC,UAAU,EAAE,CAAC;QAClB,IAAI,CAAC,UAAU,EAAE,CAAC;QAClB,IAAI,CAAC,UAAU,EAAE,CAAC;QAClB,IAAI,CAAC,UAAU,EAAE,CAAC;QAClB,IAAI,CAAC,UAAU,EAAE,CAAC;QAClB,IAAI,CAAC,UAAU,EAAE,CAAC;QAClB,IAAI,CAAC,UAAU,EAAE,CAAC;QAClB,IAAI,CAAC,UAAU,EAAE,CAAC;QAClB,IAAI,CAAC,UAAU,EAAE,CAAC;QAClB,IAAI,CAAC,UAAU,EAAE,CAAC;QAClB,IAAI,CAAC,UAAU,EAAE,CAAC;QAClB,IAAI,CAAC,UAAU,EAAE,CAAC;QAClB,IAAI,CAAC,UAAU,EAAE,CAAC;QAClB,IAAI,CAAC,UAAU,EAAE,CAAC;IACpB,CAAC;IAEO,UAAU;QAChB,IAAI,CAAC,GAAG,IAAI,CAAC,OAAO,GAAG,wGAA+B,CAAC,QAAQ,GAAG,CAAC,CAAC;QACpE,IAAI,CAAC,GAAG,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,GAAG,wGAA+B,CAAC,QAAQ,GAAG,CAAC,CAAC;QACvH,wGAA+B,CAAC,8BAA8B,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,uBAAuB,CAAC,EAAE,CAAC,CAAC;IACnI,CAAC;IAEO,UAAU;QAChB,IAAI,CAAC,GAAG,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,GAAG,wGAA+B,CAAC,QAAQ,GAAG,CAAC,CAAC;QAC1K,IAAI,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC;QACrB,wGAA+B,CAAC,8BAA8B,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,uBAAuB,CAAC,EAAE,CAAC,CAAC;IACnI,CAAC;IAEO,UAAU;QAChB,IAAI,CAAC,GAAG,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,IAAI,CAAC,KAAK,GAAG,wGAA+B,CAAC,QAAQ,GAAG,CAAC,CAAC;QACnH,IAAI,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC;QACrB,wGAA+B,CAAC,8BAA8B,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,uBAAuB,CAAC,EAAE,CAAC,CAAC;IACnI,CAAC;IAEO,UAAU;QAChB,IAAI,CAAC,GAAG,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,IAAI,CAAC,KAAK,GAAG,wGAA+B,CAAC,QAAQ,GAAG,CAAC,CAAC;QACnH,IAAI,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC;QACrB,wGAA+B,CAAC,8BAA8B,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,uBAAuB,CAAC,EAAE,CAAC,CAAC;IACnI,CAAC;IAEO,UAAU;QAChB,IAAI,CAAC,GAAG,IAAI,CAAC,OAAO,GAAG,CAAC,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,IAAI,CAAC,uBAAuB,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,KAAK,GAAG,wGAA+B,CAAC,QAAQ,GAAG,CAAC,CAAC;QACvJ,IAAI,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC;QACrB,wGAA+B,CAAC,8BAA8B,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,uBAAuB,CAAC,EAAE,CAAC,CAAC;IACnI,CAAC;IAEO,UAAU;QAChB,IAAI,CAAC,GAAG,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,GAAG,wGAA+B,CAAC,QAAQ,GAAG,CAAC,CAAC;QACvH,IAAI,CAAC,GAAG,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,GAAG,IAAI,CAAC,KAAK,GAAG,wGAA+B,CAAC,QAAQ,CAAC;QACnG,wGAA+B,CAAC,iCAAiC,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,uBAAuB,CAAC,EAAE,CAAC,CAAC;IACtI,CAAC;IAEO,UAAU;QAChB,IAAI,CAAC,GAAG,IAAI,CAAC,OAAO,GAAG,CAAC,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,GAAG,wGAA+B,CAAC,QAAQ,GAAG,CAAC,CAAC;QAC3J,IAAI,CAAC,GAAG,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,GAAG,IAAI,CAAC,KAAK,GAAG,wGAA+B,CAAC,QAAQ,CAAC;QACnG,wGAA+B,CAAC,iCAAiC,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,uBAAuB,CAAC,EAAE,CAAC,CAAC;IACtI,CAAC;IAEO,UAAU;QAChB,IAAI,CAAC,GAAG,IAAI,CAAC,OAAO,GAAG,CAAC,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,GAAG,wGAA+B,CAAC,QAAQ,GAAG,CAAC,CAAC;QAC3J,IAAI,CAAC,GAAG,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,uBAAuB,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,GAAG,wGAA+B,CAAC,QAAQ,CAAC;QAC1K,wGAA+B,CAAC,iCAAiC,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,uBAAuB,CAAC,EAAE,CAAC,CAAC;IACtI,CAAC;IAEO,UAAU;QAChB,IAAI,IAAI,CAAC,GAAG,GAAG,CAAC,EAAE;YAChB,IAAI,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC;YACrB,IAAI,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC;YACrB,wGAA+B,CAAC,2BAA2B,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,uBAAuB,CAAC,EAAE,CAAC,CAAC;SAC/H;IACH,CAAC;IAEO,UAAU;QAChB,IAAI,CAAC,GAAG,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,GAAG,wGAA+B,CAAC,QAAQ,GAAG,CAAC,CAAC;QACvH,IAAI,CAAC,GAAG,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,GAAG,IAAI,CAAC,KAAK,GAAG,wGAA+B,CAAC,QAAQ,GAAG,CAAC,CAAC;QACvG,wGAA+B,CAAC,8BAA8B,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,uBAAuB,CAAC,EAAE,CAAC,CAAC;IACnI,CAAC;IAEO,UAAU;QAChB,IAAI,CAAC,GAAG,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,GAAG,wGAA+B,CAAC,QAAQ,GAAG,CAAC,CAAC;QACvH,IAAI,CAAC,GAAG,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,GAAG,IAAI,CAAC,KAAK,GAAG,wGAA+B,CAAC,QAAQ,CAAC;QACnG,wGAA+B,CAAC,iCAAiC,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,uBAAuB,CAAC,EAAE,CAAC,CAAC;IACtI,CAAC;IAEO,UAAU;QAChB,IAAI,CAAC,GAAG,IAAI,CAAC,OAAO,GAAG,CAAC,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC;QAC5G,IAAI,CAAC,GAAG,IAAI,CAAC,OAAO,GAAG,wGAA+B,CAAC,QAAQ,GAAG,CAAC,CAAC;QACpE,wGAA+B,CAAC,eAAe,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC;IACvE,CAAC;IAEO,UAAU;QAChB,IAAI,CAAC,GAAG,IAAI,CAAC,OAAO,GAAG,CAAC,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC;QAC5G,IAAI,CAAC,GAAG,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC;QACxE,wGAA+B,CAAC,eAAe,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC;IACvE,CAAC;IAEO,UAAU;QAChB,IAAI,CAAC,GAAG,IAAI,CAAC,OAAO,GAAG,CAAC,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC;QAC5G,IAAI,CAAC,GAAG,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC;QAAA,CAAC;QACzE,wGAA+B,CAAC,eAAe,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC;IACvE,CAAC;IAEO,UAAU;QAChB,IAAI,CAAC,GAAG,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC;QACxE,IAAI,CAAC,GAAG,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC;QAAA,CAAC;QACzE,wGAA+B,CAAC,eAAe,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC;IACvE,CAAC;IAEO,UAAU;QAChB,IAAI,CAAC,GAAG,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,GAAG,wGAA+B,CAAC,QAAQ,GAAG,CAAC,CAAC;QAC1K,IAAI,CAAC,GAAG,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC;QACnG,wGAA+B,CAAC,8BAA8B,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC;IAC3G,CAAC;IAEO,UAAU;QAChB,IAAI,CAAC,GAAG,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,IAAI,CAAC,KAAK,GAAG,wGAA+B,CAAC,QAAQ,GAAG,CAAC,CAAC;QACnH,IAAI,CAAC,GAAG,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC;QACnG,wGAA+B,CAAC,8BAA8B,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC;IAC3G,CAAC;IAEO,UAAU;QAChB,IAAI,CAAC,GAAG,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,IAAI,CAAC,KAAK,GAAG,wGAA+B,CAAC,QAAQ,GAAG,CAAC,CAAC;QACnH,IAAI,CAAC,GAAG,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,uBAAuB,CAAC,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC;QACnG,wGAA+B,CAAC,8BAA8B,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC;IAC3G,CAAC;CACF;AA1uBU;IAAR,2DAAK,EAAE;8BAAuB,gEAAwB;wFAAC;AAC/C;IAAR,2DAAK,EAAE;8BAA0B,8DAAsB;2FAAC;AAChD;IAAR,2DAAK,EAAE;8BAAa,qEAA6B;8EAAC;AAEzC;IAAT,4DAAM,EAAE;;0FAAsD;AACrD;IAAT,4DAAM,EAAE;;2FAA8C;AAE9C;IAAR,2DAAK,EAAE;;6FAAmC;AAClC;IAAR,2DAAK,EAAE;;+FAAoC;AAG5C;IADC,+DAAS,CAAC,kBAAkB,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;8BAChC,wDAAU;0EAAoB;AAZnC,0CAA0C;IALtD,+DAAS,CAAC;QACT,QAAQ,EAAE,sDAAsD;QAChE,oVAAuE;KAExE,CAAC;;GACW,0CAA0C,CA2uBtD;AA3uBsD;;;;;;;;;;;;;;;;;;;;ACZa;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACAW;AAEsF;AAC7E;AACiD;AAOzI,IAAa,+BAA+B,GAA5C,MAAa,+BAA+B;IAmB1C;QAfU,kCAA6B,GAAG,IAAI,0DAAY,EAA0B,CAAC;QAE3E,6BAAwB,GAAG,IAAI,0DAAY,EAAE,CAAC;QAG9C,2BAAsB,GAAG,IAAI,0DAAY,EAAW,CAAC;QAK/D,sBAAiB,GAAG,oEAA6B,CAAC;QAGlD,+BAA0B,GAAW,MAAM,CAAC;QAC5C,iCAA4B,GAAW,OAAO,CAAC;IAC/B,CAAC;IAEjB,QAAQ;QACN,IAAI,WAAmB,CAAC;QACxB,IAAI,CAAC,qBAAqB,GAAG,IAAI,qEAA6B,EAAE,CAAC;QACjE,IAAI,CAAC,mBAAmB,GAAG,EAAE,CAAC;QAC9B,IAAI,IAAI,CAAC,oBAAoB,CAAC,UAAU,GAAG,CAAC,EAAE;YAC5C,IAAI,CAAC,qBAAqB,CAAC,mFAAwC,CAAC,CAAC;YACrE,IAAI,IAAI,CAAC,uBAAuB,CAAC,YAAY,IAAI,IAAI,EAAE;gBACrD,IAAI,CAAC,aAAa,GAAG,oEAA6B,CAAC,OAAO,CAAC;aAC5D;;gBACI,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,uBAAuB,CAAC,YAAY,CAAC;YACpE,WAAW,GAAG,CAAC,CAAC;SACjB;QAED,IAAI,IAAI,CAAC,oBAAoB,CAAC,UAAU,IAAI,CAAC,EAAE;YAC7C,IAAI,CAAC,qBAAqB,CAAC,oFAAyC,CAAC,CAAC;YACtE,IAAI,IAAI,CAAC,uBAAuB,CAAC,YAAY,IAAI,IAAI,EAAE;gBACrD,IAAI,CAAC,aAAa,GAAG,oEAA6B,CAAC,eAAe,CAAC;aACpE;;gBACI,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,uBAAuB,CAAC,YAAY,CAAC;YACpE,WAAW,GAAG,CAAC,CAAC;SACjB;QAED,IAAI,IAAI,CAAC,oBAAoB,CAAC,UAAU,IAAI,CAAC,EAAE;YAC7C,IAAI,CAAC,qBAAqB,CAAC,mFAAwC,CAAC,CAAC;YACrE,IAAI,CAAC,aAAa,GAAG,oEAA6B,CAAC,cAAc,CAAC;YAClE,IAAI,IAAI,CAAC,uBAAuB,CAAC,YAAY,IAAI,IAAI,EAAE;gBACrD,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,uBAAuB,CAAC,YAAY,CAAC;aAChE;YACD,WAAW,GAAG,CAAC,CAAC;SACjB;QAED,IAAI,CAAC,uBAAuB,CAAC,YAAY,GAAG,IAAI,CAAC,aAAa,CAAC;QAG/D,IAAI,CAAC,qBAAqB,CAAC,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,oBAAoB,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,oBAAoB,CAAC,UAAU,GAAG,IAAI,CAAC;QAC1J,IAAI,CAAC,qBAAqB,CAAC,GAAG,GAAG,IAAI,CAAC,oBAAoB,CAAC,QAAQ,GAAG,CAAC,CAAC;QACxE,IAAI,IAAI,CAAC,oBAAoB,CAAC,OAAO,IAAI,4DAAqB,CAAC,KAAK,EAAE;YACpE,IAAI,CAAC,qBAAqB,CAAC,IAAI,GAAG,IAAI,CAAC;YACvC,IAAI,CAAC,qBAAqB,CAAC,GAAG,GAAG,EAAE,CAAC;SACrC;aACI;YACH,IAAI,CAAC,qBAAqB,CAAC,IAAI,GAAG,IAAI,CAAC;YACvC,IAAI,CAAC,qBAAqB,CAAC,GAAG,GAAG,EAAE,CAAC;SACrC;QAED,IAAI,IAAI,CAAC,oBAAoB,CAAC,OAAO,IAAI,4DAAqB,CAAC,eAAe,EAAE;YAC9E,IAAI,SAAS,GAAG,UAAU,CAAC,IAAI,CAAC,oBAAoB,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;YAC1E,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,SAAS,IAAI,IAAI,IAAI,SAAS,IAAI,IAAI,IAAI,SAAS,GAAG,IAAI,EAAE;gBACnF,IAAI,CAAC,qBAAqB,CAAC,IAAI,GAAG,IAAI,CAAC;gBACvC,IAAI,CAAC,qBAAqB,CAAC,GAAG,GAAG,EAAE,CAAC;aACrC;SACF;QAED,IAAI,CAAC,qBAAqB,CAAC,GAAG,GAAG,IAAI,CAAC,qBAAqB,CAAC,UAAU,GAAG,CAAC,IAAI,CAAC,qBAAqB,CAAC,IAAI,GAAG,WAAW,CAAC,CAAC;QACzH,0DAA0D;QAC1D,6GAA6G;QAC7G,4DAA4D;QAC5D,IAAI,CAAC,qBAAqB,CAAC,OAAO,GAAG,IAAI,CAAC,oBAAoB,CAAC,SAAS,GAAG,GAAG;YAC5E,CAAC,CAAC,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,oBAAoB,CAAC,SAAS,EAAE,CAAC,KAAK,CAAC;YAC/D,CAAC,CAAC,CAAC,CAAC;QAEN,IAAI,IAAI,CAAC,qBAAqB,CAAC,OAAO,GAAG,IAAI,EAAE;YAC7C,IAAI,CAAC,qBAAqB,CAAC,OAAO,GAAG,IAAI;SAC1C;QACD,IAAI,IAAI,CAAC,qBAAqB,CAAC,OAAO,GAAG,CAAC,EAAE;YAC1C,IAAI,CAAC,qBAAqB,CAAC,OAAO,GAAG,CAAC,CAAC;SACxC;IACH,CAAC;IAED,cAAc;QACZ,IAAI,CAAC,uBAAuB,GAAG,IAAI,8DAAsB,EAAE,CAAC;QAC5D,IAAI,CAAC,6BAA6B,CAAC,IAAI,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC;QACtE,IAAI,CAAC,uBAAuB,CAAC,YAAY,GAAG,IAAI,CAAC,aAAa,CAAC;QAC/D,IAAI,CAAC,wBAAwB,CAAC,IAAI,EAAE,CAAC;IACvC,CAAC;IAED,qBAAqB;QACnB,IAAI,CAAC,wBAAwB,CAAC,IAAI,EAAE,CAAC;IACvC,CAAC;IAED,uBAAuB,CAAC,GAAY;QAClC,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACxC,CAAC;IAEO,qBAAqB,CAAC,MAAW;QACvC,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE;YACjD,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,KAAe,EAAE,KAAK,EAAE,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;SAC/E;IACH,CAAC;CAEF;AA9GU;IAAR,2DAAK,EAAE;8BAAuB,2DAAmB;6EAAC;AAC1C;IAAR,2DAAK,EAAE;8BAAuB,gEAAwB;6EAAC;AAC/C;IAAR,2DAAK,EAAE;8BAA0B,8DAAsB;gFAAC;AAC/C;IAAT,4DAAM,EAAE;;sFAA4E;AAE3E;IAAT,4DAAM,EAAE;;iFAA+C;AAE/C;IAAR,2DAAK,EAAE;;yEAA2B;AACzB;IAAT,4DAAM,EAAE;;+EAAsD;AATpD,+BAA+B;IAL3C,+DAAS,CAAC;QACT,QAAQ,EAAE,yCAAyC;QACnD,kRAA0D;KAE3D,CAAC;;GACW,+BAA+B,CA+G3C;AA/G2C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACXW;AACL;AACA;AACQ;AACD;AACE;AACD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACLG;AACZ;AAEF;AACwC;AACQ;AAIvE;AACoC;AACT;AACgG;AAOnJ,IAAa,2BAA2B,GAAxC,MAAa,2BAA2B;IA0BtC,YAAoB,kBAA+C,EACzD,MAAsB,EAAU,iBAAmD;QADzE,uBAAkB,GAAlB,kBAAkB,CAA6B;QACzD,WAAM,GAAN,MAAM,CAAgB;QAAU,sBAAiB,GAAjB,iBAAiB,CAAkC;QAZ7F,yBAAoB,GAAiB,mDAAY,CAAC,UAAU,CAAC;QAC7D,WAAM,GAA6C,EAAE,CAAC;QACtD,sBAAiB,GAAY,KAAK,CAAC;QACnC,cAAS,GAAG,mDAAY,CAAC;QACzB,eAAU,GAAY,KAAK,CAAC;QAC5B,YAAO,GAAY,KAAK,CAAC;QACzB,oBAAe,GAAY,KAAK,CAAC;QACjC,qBAAgB,GAAY,KAAK,CAAC;QAE1B,UAAK,GAAW,0BAA0B,CAAC;IAK/C,CAAC;IAEC,QAAQ;;YACZ,IAAI,CAAC,kBAAkB,CAAC,sBAAsB,EAAE,CAAC;YACjD,IAAI,CAAC,iBAAiB,CAAC,gCAAgC,EAAE,CAAC;YAC1D,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;YAEpB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,mDAAY,CAAC,yBAAyB,EAAE,KAAK,EAAE,uDAAY,CAAC,mDAAY,CAAC,yBAAyB,CAAC,EAAE,CAAC,CAAC;YACjI,IAAI,CAAC,kBAAkB,GAAG,IAAI,kEAA0B,EAAE,CAAC;YAC3D,IAAI,CAAC,kBAAkB,CAAC,YAAY,GAAG,IAAI,gEAAwB,EAAE,CAAC;YACtE,IAAI,CAAC,kBAAkB,CAAC,WAAW,GAAG,EAAE,CAAC;YACzC,IAAI,CAAC,kBAAkB,CAAC,OAAO,GAAG,yDAAkB,CAAC,gBAAgB,CAAC;YACtE,IAAI,OAAe,CAAC;YACpB,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC,UAAe,EAAE,EAAE;gBACpD,OAAO,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC;YAC7B,CAAC,CAAC,CAAC;YAEH,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE;gBACnB,IAAI,MAAM,GAAG,MAAM,IAAI,CAAC,iBAAiB,CAAC,mBAAmB,CAAC,OAAO,CAAC,CAAC;gBACvE,IAAI,MAAM,EAAE;oBACV,IAAI,CAAC,CAAC,MAAM,YAAY,kDAAU,CAAC,EAAE;wBACnC,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC;wBAC9B,IAAI,CAAC,aAAa,EAAE,CAAC;qBACtB;yBACI,IAAI,MAAM,YAAY,kDAAU,IAAI,CAAC,MAAM,CAAC,IAAI,IAAI,qDAAa,CAAC,eAAe,IAAI,MAAM,CAAC,IAAI,IAAI,qDAAa,CAAC,aAAa,CAAC,EAAE;wBACrI,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;qBACrB;iBACF;aACF;YACD,IAAI,CAAC,UAAU,GAAG,mDAAY,CAAC,yBAAyB,CAAC;YACzD,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;QACvB,CAAC;KAAA;IAED,gBAAgB,CAAC,MAAkC;QACjD,IAAI,KAAK,GAAG,MAAoC,CAAC;QACjD,IAAI,CAAC,kBAAkB,CAAC,EAAE,GAAG,KAAK,CAAC,EAAE,CAAC;QACtC,IAAI,CAAC,kBAAkB,CAAC,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC;QAChD,IAAI,CAAC,kBAAkB,CAAC,sBAAsB,GAAG,KAAK,CAAC,sBAAsB,CAAC;QAC9E,IAAI,CAAC,kBAAkB,CAAC,oBAAoB,GAAG,IAAI,2DAAmB,EAAE,CAAC;QACzE,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,kBAAkB,CAAC,oBAAoB,EAAE,MAAM,CAAC,oBAAoB,CAAC,CAAC;QACzF,IAAI,CAAC,kBAAkB,CAAC,oBAAoB,CAAC,WAAW,GAAG,EAAE,CAAC;QAC9D,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,kBAAkB,CAAC,oBAAoB,CAAC,WAAW,EAAE,MAAM,CAAC,oBAAoB,CAAC,WAAW,CAAC,CAAC;QACjH,IAAI,CAAC,kBAAkB,CAAC,oBAAoB,CAAC,WAAW,GAAG,MAAM,CAAC,oBAAoB,CAAC,WAAW,CAAC;QACnG,IAAI,CAAC,kBAAkB,CAAC,UAAU,GAAG,IAAI,0DAAkB,EAAE,CAAC;QAC9D,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,kBAAkB,CAAC,UAAU,EAAE,MAAM,CAAC,UAAU,CAAC,CAAC;QACrE,IAAI,CAAC,kBAAkB,CAAC,WAAW,GAAG,EAAE,CAAC;QACzC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,kBAAkB,CAAC,WAAW,EAAE,MAAM,CAAC,WAAW,CAAC,CAAC;QAEvE,IAAI,MAAM,CAAC,cAAc,EAAE;YACzB,IAAI,CAAC,kBAAkB,CAAC,cAAc,GAAG,IAAI,6DAAqB,EAAE,CAAC;YACrE,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,kBAAkB,CAAC,cAAc,EAAE,MAAM,CAAC,cAAc,CAAC,CAAC;SAC9E;QAED,IAAI,MAAM,CAAC,gBAAgB,EAAE;YAC3B,IAAI,CAAC,kBAAkB,CAAC,gBAAgB,GAAG,IAAI,8DAAsB,EAAE,CAAC;YACxE,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,kBAAkB,CAAC,gBAAgB,EAAE,MAAM,CAAC,gBAAgB,CAAC,CAAC;SAClF;QAED,IAAI,MAAM,CAAC,UAAU,EAAE;YACrB,IAAI,CAAC,kBAAkB,CAAC,UAAU,GAAG,IAAI,sEAA8B,EAAE,CAAC;YAC1E,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,kBAAkB,CAAC,UAAU,EAAE,MAAM,CAAC,UAAU,CAAC,CAAC;SACtE;QAED,IAAI,CAAC,kBAAkB,CAAC,YAAY,GAAG,IAAI,gEAAwB,EAAE,CAAC;QACtE,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,kBAAkB,CAAC,YAAY,EAAE,MAAM,CAAC,YAAY,CAAC,CAAC;QACzE,IAAI,CAAC,kBAAkB,CAAC,iBAAiB,GAAG,IAAI,yDAAiB,EAAE,CAAC;QACpE,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,kBAAkB,CAAC,iBAAiB,EAAE,MAAM,CAAC,iBAAiB,CAAC,CAAC;QACnF,IAAI,CAAC,kBAAkB,CAAC,iBAAiB,CAAC,aAAa,GAAG,MAAM,CAAC,iBAAiB,CAAC,aAAa,CAAC;QACjG,IAAI,CAAC,UAAU,GAAG,mDAAY,CAAC,yBAAyB,CAAC;IAC3D,CAAC;IAED,aAAa;QACX,IAAI,IAAI,CAAC,kBAAkB,CAAC,oBAAoB;YAC9C,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,mDAAY,CAAC,sBAAsB,EAAE,KAAK,EAAE,uDAAY,CAAC,mDAAY,CAAC,sBAAsB,CAAC,EAAE,CAAC,CAAC;QAC7H,IAAI,IAAI,CAAC,kBAAkB,CAAC,cAAc;YACxC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,mDAAY,CAAC,wBAAwB,EAAE,KAAK,EAAE,uDAAY,CAAC,mDAAY,CAAC,wBAAwB,CAAC,EAAE,CAAC,CAAC;QACjI,IAAI,IAAI,CAAC,kBAAkB,CAAC,gBAAgB;YAC1C,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,mDAAY,CAAC,gBAAgB,EAAE,KAAK,EAAE,uDAAY,CAAC,mDAAY,CAAC,gBAAgB,CAAC,EAAE,CAAC,CAAC;QACjH,IAAI,IAAI,CAAC,kBAAkB,CAAC,UAAU;YACpC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,mDAAY,CAAC,UAAU,EAAE,KAAK,EAAE,uDAAY,CAAC,mDAAY,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;QACrG,IAAI,IAAI,CAAC,kBAAkB,CAAC,UAAU;YACpC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,mDAAY,CAAC,UAAU,EAAE,KAAK,EAAE,uDAAY,CAAC,mDAAY,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;IACvG,CAAC;IAED,YAAY,CAAC,YAA0B;QACrC,IAAI,CAAC,UAAU,GAAG,YAAY,CAAC;IACjC,CAAC;IAED,UAAU;QACR,IAAI,gBAAgB,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,IAAI,IAAI,CAAC,UAAU,CAAC,CAAC;QAC9E,IAAI,gBAAgB,IAAI,CAAC,EAAE;YACzB,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,EAAE,gBAAgB,CAAC,CAAC,KAAK,CAAC;SACzD;IACH,CAAC;IAED,UAAU;QACR,QAAQ,IAAI,CAAC,UAAU,EAAE;YACvB,KAAK,mDAAY,CAAC,yBAAyB;gBACzC,IAAI,IAAI,CAAC,gBAAgB,EAAE,EAAE;oBAC3B,IAAI,CAAC,IAAI,CAAC,kBAAkB,CAAC,oBAAoB,EAAE;wBACjD,IAAI,CAAC,kBAAkB,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,GAAG,OAAO,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,EAAC,CAAC,CAAC,CAAC;wBAC5F,IAAI,CAAC,kBAAkB,CAAC,oBAAoB,GAAG,IAAI,2DAAmB,EAAE,CAAC;qBAC1E;oBACD,IAAI,CAAC,IAAI,CAAC,kBAAkB,CAAC,iBAAiB;wBAAE,IAAI,CAAC,kBAAkB,CAAC,iBAAiB,GAAG,IAAI,yDAAiB,EAAE,CAAC;oBACpH,IAAI,CAAC,aAAa,CAAC,mDAAY,CAAC,sBAAsB,CAAC,CAAC;iBACzD;gBACD,MAAM;YACR,KAAK,mDAAY,CAAC,sBAAsB;gBACtC,IAAI,IAAI,CAAC,gBAAgB,EAAE,EAAE;oBAC3B,IAAI,IAAI,CAAC,kBAAkB,CAAC,iBAAiB,CAAC,gBAAgB,EAAE;wBAC9D,IAAI,CAAC,IAAI,CAAC,kBAAkB,CAAC,cAAc;4BAAE,IAAI,CAAC,kBAAkB,CAAC,cAAc,GAAG,IAAI,6DAAqB,EAAE,CAAC;wBAClH,IAAI,CAAC,aAAa,CAAC,mDAAY,CAAC,wBAAwB,CAAC,CAAC;wBAC1D,MAAM;qBACP;oBACD,IAAI,IAAI,CAAC,kBAAkB,CAAC,iBAAiB,CAAC,aAAa,IAAI,6DAAsB,CAAC,UAAU,EAAE;wBAChG,IAAI,CAAC,IAAI,CAAC,kBAAkB,CAAC,gBAAgB;4BAAE,IAAI,CAAC,kBAAkB,CAAC,gBAAgB,GAAG,IAAI,8DAAsB,EAAE,CAAC;wBACvH,IAAI,CAAC,aAAa,CAAC,mDAAY,CAAC,gBAAgB,CAAC,CAAC;wBAClD,MAAM;qBACP;yBACI,IAAI,IAAI,CAAC,kBAAkB,CAAC,iBAAiB,CAAC,aAAa,IAAI,6DAAsB,CAAC,IAAI,EAAE;wBAC/F,IAAI,CAAC,IAAI,CAAC,kBAAkB,CAAC,UAAU;4BAAE,IAAI,CAAC,kBAAkB,CAAC,UAAU,GAAG,IAAI,sEAA8B,EAAE,CAAC;wBACnH,IAAI,CAAC,aAAa,CAAC,mDAAY,CAAC,UAAU,CAAC,CAAC;wBAC5C,MAAM;qBACP;yBACI;wBACH,IAAI,CAAC,kBAAkB,CAAC,cAAc,GAAG,IAAI,CAAC;wBAC9C,IAAI,CAAC,kBAAkB,CAAC,gBAAgB,GAAG,IAAI,CAAC;wBAChD,IAAI,CAAC,kBAAkB,CAAC,UAAU,GAAG,IAAI,CAAC;wBAC1C,IAAI,CAAC,IAAI,CAAC,kBAAkB,CAAC,UAAU;4BAAE,IAAI,CAAC,kBAAkB,CAAC,UAAU,GAAG,IAAI,0DAAkB,EAAE,CAAC;wBACvG,IAAI,CAAC,aAAa,CAAC,mDAAY,CAAC,UAAU,CAAC,CAAC;qBAC7C;iBACF;gBACD,MAAM;YACR,KAAK,mDAAY,CAAC,wBAAwB;gBACxC,IAAI,IAAI,CAAC,kBAAkB,CAAC,iBAAiB,CAAC,aAAa,IAAI,6DAAsB,CAAC,UAAU,EAAE;oBAChG,IAAI,CAAC,IAAI,CAAC,kBAAkB,CAAC,gBAAgB;wBAAE,IAAI,CAAC,kBAAkB,CAAC,gBAAgB,GAAG,IAAI,8DAAsB,EAAE,CAAC;oBACvH,IAAI,CAAC,aAAa,CAAC,mDAAY,CAAC,gBAAgB,CAAC,CAAC;oBAClD,MAAM;iBACP;qBACI,IAAI,IAAI,CAAC,kBAAkB,CAAC,iBAAiB,CAAC,aAAa,IAAI,6DAAsB,CAAC,IAAI,EAAE;oBAC/F,IAAI,CAAC,IAAI,CAAC,kBAAkB,CAAC,UAAU;wBAAE,IAAI,CAAC,kBAAkB,CAAC,UAAU,GAAG,IAAI,sEAA8B,EAAE,CAAC;oBACnH,IAAI,CAAC,aAAa,CAAC,mDAAY,CAAC,UAAU,CAAC,CAAC;oBAC5C,MAAM;iBACP;qBACI;oBACH,IAAI,CAAC,kBAAkB,CAAC,gBAAgB,GAAG,IAAI,CAAC;oBAChD,IAAI,CAAC,kBAAkB,CAAC,UAAU,GAAG,IAAI,CAAC;oBAC1C,IAAI,CAAC,IAAI,CAAC,kBAAkB,CAAC,UAAU;wBAAE,IAAI,CAAC,kBAAkB,CAAC,UAAU,GAAG,IAAI,0DAAkB,EAAE,CAAC;oBACvG,IAAI,CAAC,aAAa,CAAC,mDAAY,CAAC,UAAU,CAAC,CAAC;iBAC7C;gBACD,MAAM;YACR,KAAK,mDAAY,CAAC,gBAAgB;gBAChC,IAAI,IAAI,CAAC,gBAAgB,EAAE,EAAE;oBAC3B,IAAI,CAAC,IAAI,CAAC,kBAAkB,CAAC,iBAAiB,CAAC,gBAAgB,EAAE;wBAC/D,IAAI,CAAC,kBAAkB,CAAC,cAAc,GAAG,IAAI,CAAC;qBAC/C;oBACD,IAAI,CAAC,kBAAkB,CAAC,UAAU,GAAG,IAAI,CAAC;oBAC1C,IAAI,CAAC,IAAI,CAAC,kBAAkB,CAAC,UAAU;wBAAE,IAAI,CAAC,kBAAkB,CAAC,UAAU,GAAG,IAAI,0DAAkB,EAAE,CAAC;oBACvG,IAAI,CAAC,aAAa,CAAC,mDAAY,CAAC,UAAU,CAAC,CAAC;iBAC7C;gBACD,MAAM;YACR,KAAK,mDAAY,CAAC,UAAU;gBAC1B,IAAI,CAAC,IAAI,CAAC,kBAAkB,CAAC,iBAAiB,CAAC,gBAAgB,EAAE;oBAC/D,IAAI,CAAC,kBAAkB,CAAC,cAAc,GAAG,IAAI,CAAC;iBAC/C;gBACD,IAAI,CAAC,kBAAkB,CAAC,gBAAgB,GAAG,IAAI,CAAC;gBAChD,IAAI,CAAC,IAAI,CAAC,kBAAkB,CAAC,UAAU;oBAAE,IAAI,CAAC,kBAAkB,CAAC,UAAU,GAAG,IAAI,0DAAkB,EAAE,CAAC;gBACvG,IAAI,CAAC,aAAa,CAAC,mDAAY,CAAC,UAAU,CAAC,CAAC;gBAC5C,MAAM;SACT;QAAA,CAAC;IACJ,CAAC;IAED,gBAAgB;QACd,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC;QAC7B,QAAQ,IAAI,CAAC,UAAU,EAAE;YACvB,KAAK,mDAAY,CAAC,yBAAyB;gBACzC,IAAI,CAAC,cAAc,CAAC,mDAAY,CAAC,yBAAyB,CAAC,CAAC;gBAC5D,IAAI,CAAC,kBAAkB,CAAC,oBAAoB,GAAG,IAAI,CAAC;gBACpD,IAAI,CAAC,kBAAkB,CAAC,cAAc,GAAG,IAAI,CAAC;gBAC9C,IAAI,CAAC,kBAAkB,CAAC,gBAAgB,GAAG,IAAI,CAAC;gBAChD,IAAI,CAAC,kBAAkB,CAAC,UAAU,GAAG,IAAI,CAAC;gBAC1C,MAAM;YACR,KAAK,mDAAY,CAAC,sBAAsB;gBACtC,IAAI,CAAC,cAAc,CAAC,mDAAY,CAAC,sBAAsB,CAAC,CAAC;gBACzD,IAAI,CAAC,kBAAkB,CAAC,cAAc,GAAG,IAAI,CAAC;gBAC9C,IAAI,CAAC,kBAAkB,CAAC,gBAAgB,GAAG,IAAI,CAAC;gBAChD,IAAI,CAAC,kBAAkB,CAAC,UAAU,GAAG,IAAI,CAAC;gBAC1C,MAAM;SACT;IACH,CAAC;IAED,kBAAkB;QAChB,IAAI,IAAI,CAAC,UAAU,IAAI,mDAAY,CAAC,sBAAsB,EAAE;YAC1D,IAAI,CAAC,cAAc,CAAC,mDAAY,CAAC,sBAAsB,CAAC,CAAC;SAC1D;IACH,CAAC;IAEK,iBAAiB;;YACrB,IAAI,IAAI,CAAC,mBAAmB,CAAC,oBAAoB,EAAE,EAAE;gBACnD,IAAI,IAAI,CAAC,kBAAkB,CAAC,EAAE,IAAI,SAAS,IAAI,IAAI,CAAC,kBAAkB,CAAC,EAAE,IAAI,CAAC,EAAE;oBAC9E,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;oBACvB,IAAI,MAAM,GAAG,MAAM,IAAI,CAAC,iBAAiB,CAAC,oBAAoB,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;oBACxF,IAAI,CAAC,CAAC,MAAM,YAAY,kDAAU,CAAC,EAAE;wBACnC,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC;wBAC5B,UAAU,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,eAAe,GAAG,KAAK,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;wBAC1D,IAAI,CAAC,gBAAgB,GAAG,KAAK,CAAC;wBAC9B,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC;wBAC9B,IAAI,CAAC,UAAU,GAAG,mDAAY,CAAC,UAAU,CAAC;qBAC3C;yBAAM;wBACL,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;qBACrB;oBACD,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;iBACzB;qBACI;oBACH,IAAI,CAAC,WAAW,CAAC,gBAAgB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;iBAC/C;aACF;QACH,CAAC;KAAA;IAEK,SAAS;;YACb,IAAI,IAAI,CAAC,mBAAmB,CAAC,oBAAoB,EAAE,EAAE;gBACnD,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;gBACvB,IAAI,MAAM,GAAG,MAAM,IAAI,CAAC,iBAAiB,CAAC,gBAAgB,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;gBACpF,IAAI,CAAC,CAAC,MAAM,YAAY,kDAAU,CAAC,EAAE;oBACnC,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC;oBAC5B,UAAU,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,eAAe,GAAG,KAAK,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;oBAC1D,IAAI,CAAC,gBAAgB,GAAG,KAAK,CAAC;oBAC9B,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC;oBAC9B,IAAI,CAAC,UAAU,GAAG,mDAAY,CAAC,UAAU,CAAC;iBAC3C;qBAAM;oBACL,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;iBACrB;gBACD,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;aACzB;QACH,CAAC;KAAA;IAEK,cAAc;;YAClB,IAAI,CAAC,kBAAkB,CAAC,EAAE,GAAG,CAAC,CAAC;YAC/B,IAAI,CAAC,kBAAkB,CAAC,UAAU,CAAC,EAAE,GAAG,CAAC,CAAC;YAC1C,IAAI,CAAC,kBAAkB,CAAC,YAAY,CAAC,EAAE,GAAG,CAAC,CAAC;YAC5C,IAAI,CAAC,kBAAkB,CAAC,oBAAoB,CAAC,EAAE,GAAG,CAAC,CAAC;YACpD,IAAI,CAAC,kBAAkB,CAAC,oBAAoB,CAAC,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;gBACtE,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC;YACd,CAAC,CAAC,CAAC;YAEH,IAAI,IAAI,CAAC,kBAAkB,CAAC,iBAAiB,CAAC,gBAAgB,EAAE;gBAC9D,IAAI,CAAC,kBAAkB,CAAC,cAAc,CAAC,EAAE,GAAG,CAAC,CAAC;aAC/C;YACD,IAAI,IAAI,CAAC,kBAAkB,CAAC,iBAAiB,CAAC,aAAa,IAAI,6DAAsB,CAAC,UAAU,EAAE;gBAChG,IAAI,CAAC,kBAAkB,CAAC,gBAAgB,CAAC,EAAE,GAAG,CAAC,CAAC;aACjD;YACD,IAAI,IAAI,CAAC,kBAAkB,CAAC,iBAAiB,CAAC,aAAa,IAAI,6DAAsB,CAAC,IAAI,EAAE;gBAC1F,IAAI,CAAC,kBAAkB,CAAC,UAAU,CAAC,EAAE,GAAG,CAAC,CAAC;aAC3C;YACD,IAAI,CAAC,iBAAiB,EAAE,CAAC;QAC3B,CAAC;KAAA;IAED,gBAAgB;QACd,QAAQ,IAAI,CAAC,UAAU,EAAE;YACvB,KAAK,mDAAY,CAAC,yBAAyB;gBACzC,OAAO,CAAC,IAAI,CAAC,iBAAiB,IAAI,IAAI,CAAC,kBAAkB,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC;YACnF,KAAK,mDAAY,CAAC,sBAAsB;gBACtC,OAAO,IAAI,CAAC,kBAAkB,CAAC,oBAAoB,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,kBAAkB,CAAC,oBAAoB,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,IAAI,IAAI,CAAC,CAAC;YACpL,KAAK,mDAAY,CAAC,gBAAgB;gBAChC,OAAO,CAAC,IAAI,CAAC,iBAAiB,CAAC;YACjC;gBACE,OAAO,IAAI,CAAC;SACf;IACH,CAAC;IAED,mBAAmB;QACjB,IAAI,KAAK,GAAG,IAAI,CAAC,gBAAgB,EAAE,CAAC;QACpC,IAAI,CAAC,kBAAkB,CAAC,mCAAmC,CAAC,KAAK,CAAC,CAAC;IACrE,CAAC;IAED,kBAAkB;QAChB,IAAI,KAAK,GAAG,IAAI,CAAC,gBAAgB,EAAE,CAAC;QACpC,IAAI,CAAC,iBAAiB,CAAC,mCAAmC,CAAC,KAAK,CAAC,CAAC;IACpE,CAAC;IAEO,aAAa,CAAC,OAAqB;QACzC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,IAAI,OAAO,CAAC,EAAE;YAC9C,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,uDAAY,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;YACnE,IAAI,CAAC,UAAU,GAAG,OAAO,CAAC;SAC3B;aACI;YACH,IAAI,gBAAgB,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,IAAI,IAAI,CAAC,UAAU,CAAC,CAAC;YAC9E,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,EAAE,gBAAgB,CAAC,CAAC,KAAK,CAAC;SACzD;IACH,CAAC;IAEO,cAAc,CAAC,SAAuB;QAC5C,IAAI,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,IAAI,SAAS,CAAC,CAAC;QAC7D,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IAClD,CAAC;IAEO,gBAAgB;QACtB,IAAI,KAAK,GAAG,IAAI,oEAA4B,EAAE,CAAC;QAC/C,KAAK,CAAC,UAAU,GAAG,IAAI,CAAC,kBAAkB,CAAC,UAAU,CAAC;QACtD,KAAK,CAAC,YAAY,GAAG,IAAI,CAAC,kBAAkB,CAAC,YAAY,CAAC;QAC1D,KAAK,CAAC,WAAW,GAAG,IAAI,CAAC,kBAAkB,CAAC,WAAW,CAAC;QACxD,KAAK,CAAC,oBAAoB,GAAG,IAAI,CAAC,kBAAkB,CAAC,oBAAoB,CAAC;QAC1E,KAAK,CAAC,iBAAiB,GAAG,IAAI,CAAC,kBAAkB,CAAC,iBAAiB,CAAC;QACpE,KAAK,CAAC,cAAc,GAAG,IAAI,CAAC,kBAAkB,CAAC,cAAc,CAAC;QAC9D,KAAK,CAAC,gBAAgB,GAAG,IAAI,CAAC,kBAAkB,CAAC,gBAAgB,CAAC;QAClE,KAAK,CAAC,UAAU,GAAG,IAAI,CAAC,kBAAkB,CAAC,UAAU,CAAC;QACtD,OAAO,KAAK,CAAC;IACf,CAAC;CACF;;YAvTyC,qEAA2B;YACjD,8DAAc;YAA6B,0EAAgC;;AAzB7F;IADC,+DAAS,CAAC,8DAAsB,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;8BACrC,8DAAsB;wEAAC;AAGpD;IADC,+DAAS,CAAC,4EAAoC,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;8BACpD,4EAAoC;uEAAC;AAGjE;IADC,+DAAS,CAAC,+EAAuC,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;8BAC9D,+EAAuC;gEAAC;AAG7D;IADC,+DAAS,CAAC,iFAAyC,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;8BAC1D,iFAAyC;sEAAC;AAX1D,2BAA2B;IALvC,+DAAS,CAAC;QACT,QAAQ,EAAE,oCAAoC;QAC9C,6OAAqD;KAEtD,CAAC;qCA2BwC,qEAA2B;QACjD,8DAAc,EAA6B,0EAAgC;GA3BlF,2BAA2B,CAiVvC;AAjVuC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACpBM;AACI;AACV;AACK;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACH4B;AACJ;AACpC;AACW;AAGe;AAQlC;AACgF;AACnB;AAGsD;AAEvC;AAClD;AAEnD,8CAAK,CAAC,QAAQ,CAAC,cAAc,GAAG,8CAAK,CAAC,QAAQ,CAAC,IAAI,CAAC;AACpD,8CAAK,CAAC,WAAW,CAAC,cAAc,GAAG,8CAAK,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC;IAC/D,IAAI,EAAE,UAAS,IAAI;QACjB,IAAI,UAAU,GAAG,CAAC,EAChB,IAAI,GAAG,IAAI,CAAC,OAAO,EAAE,EACrB,MAAM,GAAG,IAAI,CAAC,IAAI,IAAI,EAAE,EACxB,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,EAC3B,gBAAgB,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC;QAE5C,SAAS,QAAQ,CAAC,QAAQ,EAAE,UAAU,EAAE,IAAI;YAC1C,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,WAAW,GAAG,QAAQ,CAAC;YAC1C,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,UAAU,GAAG,UAAU,CAAC;QAC7C,CAAC;QAED,IAAI,YAAY,GAAG,iBAAiB,CAAC;QACrC,IAAI,QAAQ,GAAa,EAAE,CAAC;QAC5B,IAAI,SAAiB,CAAC;QACtB,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;YACjB,IAAI,CAAC,CAAC,KAAK,CAAC,IAAI,EAAE;gBAChB,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;gBACxB,SAAS,GAAG,CAAC,CAAC,KAAK,CAAC,WAAW,CAAC;aACjC;QACH,CAAC,CAAC,CAAC;QAEH,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;YACnB,QAAQ,CAAC,SAAS,EAAE,EAAE,EAAE,IAAI,CAAC,CAAC;YAC9B,IAAI,CAAC,OAAO,CAAC,SAAS,GAAG,gBAAgB,CAAC,KAAK,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC;YAC/D,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;YACpB,UAAU,GAAG,CAAC,GAAG,CAAC,CAAC;YAEnB,QAAQ,CAAC,YAAY,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;YACrC,IAAI,CAAC,OAAO,CAAC,SAAS,GAAG,gBAAgB,CAAC,KAAK,CAAC,UAAU,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;YACnE,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;YACpB,UAAU,GAAG,CAAC,GAAG,CAAC,CAAC;QACrB,CAAC,CAAC,CAAC;QAEH,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE;YACvB,QAAQ,CAAC,SAAS,EAAE,EAAE,EAAE,IAAI,CAAC,CAAC;SAC/B;QACD,IAAI,CAAC,OAAO,CAAC,SAAS,GAAG,gBAAgB,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;QAC5D,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;QACpB,IAAI,CAAC,OAAO,CAAC,SAAS,GAAG,gBAAgB,CAAC;QAE1C,MAAM,CAAC,OAAO,CAAC,UAAS,KAAK;YAC3B,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACnB,CAAC,CAAC,CAAC;IACL,CAAC;CACF,CAAC,CAAC;AAOH,IAAa,6BAA6B,GAA1C,MAAa,6BAA6B;IA0FxC,YACU,mBAAkD,EAClD,YAAyB,EACzB,iBAA0C,EAC1C,YAAyB;QAHzB,wBAAmB,GAAnB,mBAAmB,CAA+B;QAClD,iBAAY,GAAZ,YAAY,CAAa;QACzB,sBAAiB,GAAjB,iBAAiB,CAAyB;QAC1C,iBAAY,GAAZ,YAAY,CAAa;QA7FlB,kCAA6B,GAAW,GAAG,CAAC;QAYrD,kBAAa,GAAmB,EAAE,CAAC;QAEnC,kCAA6B,GAAyB,IAAI,CAAC;QAMnE,gBAAW,GAAsB,IAAI,4DAAiB,EAAE,CAAC;QACzD,0BAAqB,GAAyB,IAAI,kGAAoB,EAAE,CAAC;QACzE,8BAAyB,GAAyB,IAAI,CAAC;QAIvD,qBAAgB,GAAuC,EAAE,CAAC;QAC1D,qBAAgB,GAAuC,EAAE,CAAC;QAC1D,sBAAiB,GAAuC,EAAE,CAAC;QAC3D,mBAAc,GAAuC,EAAE,CAAC;QACxD,uBAAkB,GAAuC,EAAE,CAAC;QAU5D,eAAU,GAAW,EAAE,CAAC;QACxB,eAAU,GAAqD,EAAE,CAAC;QAClE,uBAAkB,GAAmD,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,2DAAoB,CAAC,GAAG,EAAE,CAAC;QAGvH,iBAAY,GAAG,KAAK,CAAC;QAErB,uBAAkB,GAAY,KAAK,CAAC;QAU5B,gBAAW,GAAa;YAC9B,uBAAuB,EAAE,sBAAsB,EAAE,uBAAuB,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,sBAAsB,EAAE,uBAAuB;SACnK,CAAC;QA+hBF,wBAAmB,GAAG;YACpB,SAAS,EAAE,KAAK,CAAC,EAAE;gBACjB,IAAI,KAAK,CAAC,OAAO,IAAI,KAAK,CAAC,OAAO,CAAC,OAAO,IAAI,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,EAAE;oBAC1E,IAAI,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;oBAChD,IAAI,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC;oBACzB,IAAI,CAAC,GAAG,WAAW,CAAC,eAAe,EAAE,CAAC,CAAC,CAAC;oBACxC,IAAI,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC;oBACpC,IAAI,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC;oBAE1C,gBAAgB;oBAChB,GAAG,CAAC,IAAI,EAAE,CAAC;oBACX,GAAG,CAAC,SAAS,GAAG,CAAC,CAAC;oBAClB,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;oBACxB,GAAG,CAAC,WAAW,GAAG,SAAS,CAAC;oBAE5B,qBAAqB;oBACrB,GAAG,CAAC,SAAS,EAAE,CAAC;oBAChB,GAAG,CAAC,MAAM,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;oBACpB,GAAG,CAAC,MAAM,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;oBACvB,GAAG,CAAC,MAAM,EAAE,CAAC;oBACb,GAAG,CAAC,OAAO,EAAE,CAAC;iBACf;YACH,CAAC;SACF,CAAC;QAjhBA,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC;YAC/C,OAAO,EAAE,IAAI;YACb,QAAQ,EAAE,IAAI;YACd,SAAS,EAAE,IAAI;YACf,WAAW,EAAE,IAAI;YACjB,OAAO,EAAE,IAAI;SACd,CAAC,CAAC;IACL,CAAC;IAtDD,eAAe;QACb,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC;IACjC,CAAC;IAAA,CAAC;IAEF,aAAa;QACX,IAAI,CAAC,kBAAkB,GAAG,KAAK,CAAC;IAClC,CAAC;IAMD,IAAI,UAAU;QACZ,OAAO,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;IAC5B,CAAC;IAED,IAAI,QAAQ;QACV,OAAO,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;IAC9E,CAAC;IAED,IAAI,cAAc;QAChB,OAAO,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,KAAK,IAAI,CAAC,oBAAoB,CAAC,CAAC,KAAK,CAAC;IACvF,CAAC;IAED,IAAI,eAAe;QACjB,IAAI,IAAI,CAAC,mBAAmB,EAAE;YAC5B,OAAO,IAAI,GAAG,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,mBAAmB,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC;SAC5F;aAAM;YACL,OAAO,EAAE,CAAC;SACX;IACH,CAAC;IAED,IAAI,aAAa;QACf,OAAO,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,KAAK,IAAI,CAAC,mBAAmB,CAAC,CAAC,KAAK,CAAC;IACrF,CAAC;IAED,IAAI,cAAc;QAChB,OAAO,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,oDAAY,CAAC,YAAY,CAAC,IAAI,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,oDAAY,CAAC,WAAW,CAAC,CAAC;IAC7H,CAAC;IAkBK,QAAQ;;YACZ,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,gEAAqB,CAAC,EAAE;gBAChE,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;aAC5D;YAED,IAAI,CAAC,gBAAgB,EAAE,CAAC;YACxB,IAAI,CAAC,mBAAmB,CAAC,yBAAyB,CAAC,IAAI,CAAC,CAAC;YACzD,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;YACtD,IAAI,CAAC,aAAa,EAAE,CAAC;YACrB,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC;gBAC3C,cAAc,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC;gBACjC,SAAS,EAAE,EAAE;gBACb,WAAW,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC;gBAC9B,WAAW,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC;aAC7B,CAAC,CAAC;YAEH,IAAI,KAAK,GAAG,IAAI,IAAI,EAAE,CAAC;YACvB,KAAK,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;YAC3B,IAAI,CAAC,qBAAqB,CAAC,aAAa,GAAG,CAAC,KAAK,CAAC,OAAO,EAAE,GAAG,gEAAqB,CAAC,4BAA4B,CAAC,GAAG,CAAC,CAAC;YACtH,IAAI,CAAC,qBAAqB,CAAC,WAAW,GAAG,CAAC,KAAK,CAAC,OAAO,EAAE,GAAG,gEAAqB,CAAC,4BAA4B,CAAC,GAAG,CAAC,CAAC;YACpH,IAAI,CAAC,gBAAgB,EAAE,CAAC;QAC1B,CAAC;KAAA;IAED,WAAW;QACT,IAAI,CAAC,kBAAkB,EAAE,CAAC;IAC5B,CAAC;IAED,gBAAgB;QACd,MAAM,qBAAqB,GACzB,IAAI,CAAC,mBAAmB,CAAC,uBAAuB,CAAC,SAAS,CACxD,CAAC,SAAS,EAAE,EAAE;YACZ,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC;YAC5B,IAAI,CAAC,kBAAkB,EAAE,CAAC;QAC5B,CAAC,CACF,CAAC;QAEJ,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC;IACjD,CAAC;IAED,kBAAkB;QAChB,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC;QACnD,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;IAC5B,CAAC;IAEK,kBAAkB;;YACtB,IAAI,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE;gBACjD,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;oBAC7F,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC,EAAE,EAAE,SAAS,EAAE,CAAC,CAAC,SAAS,EAAE,CAAC;gBAChE,CAAC,CAAC,CAAC;gBAEH,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;gBACzD,MAAM,IAAI,CAAC,uBAAuB,EAAE,CAAC;aACtC;QACH,CAAC;KAAA;IAEK,uBAAuB;;YAC3B,IAAI,IAAI,CAAC,kBAAkB,EAAE;gBAC3B,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS;qBAC9F,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,UAAU,IAAI,CAAC,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC;qBACpD,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;qBAC5C,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE;oBAChB,OAAO,EAAE,KAAK,EAAE,QAAQ,CAAC,IAAI,EAAE,KAAK,EAAE,QAAQ,CAAC,EAAE,EAAE,CAAC;gBACtD,CAAC,CAAC,CAAC;gBAEL,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;gBAC1D,MAAM,IAAI,CAAC,wBAAwB,EAAE,CAAC;aACvC;QACH,CAAC;KAAA;IAEK,wBAAwB;;YAC5B,IAAI,IAAI,CAAC,mBAAmB,EAAE;gBAC5B,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC;qBACrF,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,IAAI,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC;qBAC1D,UAAU;qBACV,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;qBAC5C,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE;oBAChB,OAAO,EAAE,KAAK,EAAE,QAAQ,CAAC,IAAI,EAAE,KAAK,EAAE,QAAQ,CAAC,EAAE,EAAE,CAAC;gBACtD,CAAC,CAAC,CAAC;gBAEL,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;gBAC5D,MAAM,IAAI,CAAC,yBAAyB,EAAE,CAAC;aACxC;QACH,CAAC;KAAA;IAEK,yBAAyB;;YAC7B,IAAI,IAAI,CAAC,oBAAoB,EAAE;gBAC7B,IAAI,OAAO,GAAG,MAAM,IAAI,CAAC,mBAAmB,CAAC,UAAU,CAAC,IAAI,CAAC,oBAAoB,EAAE,IAAI,CAAC,mBAAmB,CAAiB,CAAC;gBAC7H,IAAI,OAAO,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE;oBACjC,IAAI,CAAC,oBAAoB,GAAG,OAAO,CAAC;oBAEpC,IAAI,CAAC,kBAAkB,GAAG,EAAE,CAAC;oBAC7B,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;wBAClB,IAAI,CAAC,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,IAAI,CAAC,CAAC,IAAI,CAAC,EAAE;4BAC7D,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,2DAAgB,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;yBAClF;oBACH,CAAC,CAAC,CAAC;oBAEH,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;oBAC5D,IAAI,CAAC,0BAA0B,EAAE,CAAC;iBACnC;aACF;QACH,CAAC;KAAA;IAEK,0BAA0B;;YAC9B,IAAI,IAAI,CAAC,oBAAoB,IAAI,IAAI,CAAC,oBAAoB,CAAC,MAAM,GAAG,CAAC,EAAE;gBACrE,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,oBAAoB,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,IAAI,IAAI,CAAC,mBAAmB,CAAC;qBAC5F,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE;oBACd,OAAO,EAAE,KAAK,EAAE,+DAAoB,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,IAAI,GAAG,8DAAmB,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,EAAE,EAAE,CAAC;gBACtH,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;gBAEpD,IAAI,CAAC,kBAAkB,GAAG,EAAE,CAAC;gBAC7B,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;aAC5D;QACH,CAAC;KAAA;IAEK,sBAAsB;;YAC1B,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC,OAAO,IAAI,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,IAAI,CAAC,EAAE;gBACzG,IAAI,CAAC,kBAAkB,GAAG,EAAE,CAAC;aAC9B;QACH,CAAC;KAAA;IAEK,cAAc,CAAC,OAAoB;;YACvC,OAAO,CAAC,aAAa,EAAE,CAAC;QAC1B,CAAC;KAAA;IAEK,aAAa,CAAC,OAAoB;;YACtC,OAAO,CAAC,eAAe,EAAE,CAAC;QAC5B,CAAC;KAAA;IAED,gBAAgB;QACd,IAAI,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE;YAC5C,IAAI,SAAS,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;YAC7C,IAAI,OAAO,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;YAE3C,MAAM,QAAQ,GAAG,IAAI,IAAI,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,GAAG,IAAI,IAAI,CAAC,SAAS,CAAC,CAAC,OAAO,EAAE,CAAC;YAC7E,MAAM,eAAe,GAAG,IAAI,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC;YAC5C,MAAM,UAAU,GAAG,QAAQ,GAAG,eAAe,CAAC;YAE9C,IAAI,UAAU,GAAG,EAAE,EAAE;gBACnB,MAAM,cAAc,GAAG,IAAI,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC;gBAChD,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,GAAG,CAAC,cAAc,CAAC,CAAC,CAAC;aAChF;SACF;IACH,CAAC;IAEK,gBAAgB;;YACpB,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;YAEzB,IAAI,OAAO,GAAyB,IAAI,kGAAoB,EAAE,CAAC;YAC/D,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC,oBAAoB,CAAC;YAChD,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC,kBAAkB,CAAC;YAC5C,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC;YAC5D,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC;YAE1D,IAAI,MAAM,GAAG,MAAM,IAAI,CAAC,mBAAmB,CAAC,6BAA6B,CAAC,OAAO,CAAC,CAAC;YACnF,IAAI,CAAC,UAAU,EAAE,CAAC;YAClB,IAAI,MAAM,EAAE;gBACV,IAAI,MAAM,YAAY,kDAAU,EAAE;oBAChC,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;oBAC3B,IAAI,CAAC,iBAAiB,GAAG,KAAK,CAAC;iBAChC;qBAAM;oBACL,IAAI,CAAC,cAAc,GAAG,KAAK,CAAC;oBAC5B,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC;oBAC9B,IAAI,IAAI,GAAG,MAA2C,CAAC;oBAEvD,IAAI,aAAa,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE,OAAO,CAAC,aAAa,EAAE,OAAO,CAAC,WAAW,CAAC,CAAC;oBAC1F,IAAI,aAAa,EAAE;wBACjB,IAAI,CAAC,KAAK,GAAG,IAAI,8CAAK,CAAC,IAAI,CAAC,GAAG,EAAE;4BAC/B,IAAI,EAAE,gBAAgB;4BACtB,OAAO,EAAE,CAAC,IAAI,CAAC,mBAAmB,CAAC;4BACnC,IAAI,EAAE;gCACJ,QAAQ,EAAE,aAAa;6BACxB;4BACD,OAAO,EAAE;gCACP,MAAM,EAAE;oCACN,OAAO,EAAE,IAAI;oCACb,QAAQ,EAAE,OAAO;oCACjB,KAAK,EAAE,OAAO;oCACd,MAAM,EAAE;wCACN,QAAQ,EAAE,EAAE;qCACb;iCACF;gCACD,MAAM,EAAE;oCACN,KAAK,EAAE,CAAC;4CACN,IAAI,EAAE,MAAM;4CACZ,IAAI,EAAE,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC;4CAC5B,MAAM,EAAE,OAAO;4CACf,KAAK,EAAE;gDACL,KAAK,EAAE;oDACL,OAAO,EAAE,IAAI;oDACb,SAAS,EAAE,MAAM;iDAClB;6CACF;yCACF,CAAC;iCACH;gCACD,QAAQ,EAAE;oCACR,IAAI,EAAE,OAAO;oCACb,SAAS,EAAE,KAAK;oCAChB,SAAS,EAAE;wCACT,KAAK,EAAE,UAAS,WAAW,EAAE,IAAI;4CAC/B,IAAI,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,YAAY,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;4CAChE,IAAI,KAAK,EAAE;gDACT,KAAK,IAAI,IAAI,CAAC;6CACf;4CACD,KAAK,IAAI,IAAI,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;4CACnE,OAAO,KAAK,CAAC;wCACf,CAAC;qCACF;iCACF;gCACD,QAAQ,EAAE;oCACR,IAAI,EAAE;wCACJ,OAAO,EAAE,CAAC;qCACX;iCACF;gCACD,KAAK,EAAE;oCACL,SAAS,EAAE,KAAK;iCACjB;6BACF;yBACF,CAAC,CAAC;qBACJ;yBAAM;wBACL,IAAI,CAAC,gBAAgB,EAAE,CAAC;wBACxB,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;wBAC3B,IAAI,CAAC,iBAAiB,GAAG,KAAK,CAAC;qBAChC;iBACF;aACF;iBAAM;gBACL,IAAI,CAAC,gBAAgB,EAAE,CAAC;gBACxB,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;gBAC3B,IAAI,CAAC,iBAAiB,GAAG,KAAK,CAAC;aAChC;YACD,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;QAC5B,CAAC;KAAA;IAED,sBAAsB;QACpB,IAAI,CAAC,iBAAiB,GAAG,KAAK,CAAC;QAC/B,IAAI,IAAI,CAAC,UAAU,IAAI,SAAS,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,IAAI,CAAC,EAAE;YAC/D,IAAI,CAAC,aAAa,EAAE,CAAC;SACtB;QACD,IAAI,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,SAAS,IAAI,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,IAAI,EAAE;YACjE,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;SACzC;QACD,IAAI,CAAC,qBAAqB,CAAC,aAAa,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,GAAG,gEAAqB,CAAC,4BAA4B,CAAC,GAAG,CAAC,CAAC;QACnI,IAAI,CAAC,qBAAqB,CAAC,WAAW,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,GAAG,gEAAqB,CAAC,4BAA4B,CAAC,GAAG,CAAC,CAAC;QACjI,IAAI,CAAC,6BAA6B,GAAG,IAAI,CAAC,yBAAyB,CAAC;QACpE,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC;IACzB,CAAC;IAED,eAAe;QACb,IAAI,IAAI,CAAC,qBAAqB,CAAC,aAAa,IAAI,IAAI,IAAI,IAAI,CAAC,qBAAqB,CAAC,WAAW,IAAI,IAAI,EAAE;YACtG,IAAI,CAAC,aAAa,EAAE,CAAC;YACrB,OAAO;SACR;QAED,IAAI,CAAC,UAAU,GAAG,EAAE,CAAC;QACrB,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,qBAAqB,CAAC,aAAa,GAAG,gEAAqB,CAAC,4BAA4B,CAAC,CAAC,CAAC;QAC9H,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,qBAAqB,CAAC,WAAW,GAAG,gEAAqB,CAAC,4BAA4B,CAAC,CAAC,CAAC;QAE5H,IAAI,SAAS,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,qBAAqB,CAAC,aAAa,GAAG,gEAAqB,CAAC,4BAA4B,CAAC,CAAC;QACxH,IAAI,OAAO,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,qBAAqB,CAAC,WAAW,GAAG,gEAAqB,CAAC,4BAA4B,CAAC,CAAC;QAEpH,MAAM,QAAQ,GAAG,IAAI,IAAI,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,GAAG,IAAI,IAAI,CAAC,SAAS,CAAC,CAAC,OAAO,EAAE,CAAC;QAC7E,MAAM,UAAU,GAAG,QAAQ,GAAG,IAAI,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC;QAClD,IAAI,SAA+B,CAAC;QAEpC,IAAI,UAAU,GAAG,CAAC,EAAE;YAClB,SAAS,GAAG,2DAAoB,CAAC,KAAK,CAAC;SACxC;aAAM,IAAI,UAAU,GAAG,CAAC,EAAE;YACzB,SAAS,GAAG,2DAAoB,CAAC,IAAI,CAAC;SACvC;aAAM;YACL,SAAS,GAAG,2DAAoB,CAAC,GAAG,CAAC;SACtC;QAED,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,IAAI,SAAS,CAAC,CAAC;IAC5E,CAAC;IAED,cAAc,CAAC,gBAAsC;QACnD,IAAI,OAAO,GAAG,IAAI,IAAI,EAAE,CAAC;QACzB,IAAI,SAAS,GAAG,IAAI,IAAI,EAAE,CAAC;QAC3B,OAAO,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;QAC7B,SAAS,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;QAC/B,IAAI,CAAC,UAAU,GAAG,EAAE,CAAC;QACrB,QAAQ,gBAAgB,EAAE;YACxB,KAAK,2DAAoB,CAAC,IAAI;gBAC5B,SAAS,CAAC,OAAO,CAAC,SAAS,CAAC,OAAO,EAAE,GAAG,gEAAqB,CAAC,kBAAkB,CAAC,CAAC;gBAClF,MAAM;YACR,KAAK,2DAAoB,CAAC,KAAK;gBAC7B,SAAS,CAAC,OAAO,CAAC,SAAS,CAAC,OAAO,EAAE,GAAG,gEAAqB,CAAC,mBAAmB,CAAC,CAAC;gBACnF,MAAM;SACT;QACD,IAAI,CAAC,yBAAyB,GAAG,gBAAgB,CAAC;QAClD,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAChC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAC9B,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,IAAI,gBAAgB,CAAC,CAAC;IACnF,CAAC;IAEK,mBAAmB;;YACvB,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;YAEzB,IAAI,OAAO,GAAyC,IAAI,8FAAoC,EAAE,CAAC;YAC/F,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC,oBAAoB,CAAC;YAChD,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC,kBAAkB,CAAC;YAC5C,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC;YAC5D,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC;YAC1D,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC,eAAe,EAAE,CAAC,QAAQ,CAAC;YAEpE,IAAI,MAAM,GAAG,MAAM,IAAI,CAAC,iBAAiB,CAAC,mCAAmC,CAAC,OAAO,CAAC,CAAC;YACvF,IAAI,CAAC,CAAC,MAAM,YAAY,kDAAU,CAAC,EAAE;gBACnC,IAAI,QAAQ,GAAG,wBAAwB,GAAG,IAAI,CAAC,cAAc,GAAG,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC,cAAc,EAAE,CAAC;gBAClG,MAAM,GAAG,GAAG,GAAG,CAAC,eAAe,CAAC,MAAc,CAAC,CAAC;gBAChD,IAAI,YAAY,GAAG,QAAQ,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;gBAC/C,YAAY,CAAC,IAAI,GAAG,GAAG,CAAC;gBACxB,YAAY,CAAC,QAAQ,GAAG,QAAQ,CAAC;gBACjC,YAAY,CAAC,KAAK,EAAE,CAAC;aACtB;YAED,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;QAC5B,CAAC;KAAA;IAEO,aAAa;QACnB,IAAI,CAAC,6BAA6B,GAAG,IAAI,CAAC;QAC1C,IAAI,CAAC,yBAAyB,GAAG,IAAI,CAAC;QACtC,IAAI,CAAC,UAAU,GAAG,EAAE,CAAC;QACrB,IAAI,KAAK,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,KAAK,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;QAC3B,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC5B,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC9B,CAAC;IAEO,UAAU;QAChB,IAAI,IAAI,CAAC,KAAK,KAAK,SAAS,EAAE;YAC5B,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC;SACtB;IACH,CAAC;IAEO,gBAAgB;QACtB,IAAI,CAAC,UAAU,EAAE,CAAC;QAClB,IAAI,KAAK,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,KAAK,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;QAC3B,IAAI,CAAC,KAAK,GAAG,IAAI,8CAAK,CAAC,IAAI,CAAC,GAAG,EAAE;YAC/B,IAAI,EAAE,MAAM;YACZ,IAAI,EAAE;gBACJ,QAAQ,EAAE,EAAE;aACb;YACD,OAAO,EAAE;gBACP,MAAM,EAAE;oBACN,KAAK,EAAE,CAAC;4BACN,IAAI,EAAE,MAAM;4BACZ,IAAI,EAAE;gCACJ,IAAI,EAAE,MAAM;gCACZ,cAAc,EAAE;oCACd,IAAI,EAAE,OAAO;iCACd;6BACF;4BACD,KAAK,EAAE;gCACL,GAAG,EAAE,IAAI,IAAI,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;gCACpC,GAAG,EAAE,IAAI,IAAI,EAAE,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;6BACtC;yBACF,CAAC;oBACF,KAAK,EAAE,CAAC;4BACN,KAAK,EAAE;gCACL,GAAG,EAAE,GAAG;gCACR,GAAG,EAAE,CAAC;6BACP;yBACF,CAAC;iBACH;gBACD,QAAQ,EAAE;oBACR,IAAI,EAAE;wBACJ,OAAO,EAAE,CAAC;qBACX;iBACF;aACF;SACF,CAAC,CAAC;IACL,CAAC;IAEO,WAAW,CAAC,SAA4C;QAC9D,IAAI,KAAK,GAAa,EAAE,CAAC;QACzB,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;YACpB,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;YACzE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;QAC3E,CAAC,CAAC,CAAC;QACH,IAAI,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC;QACjC,IAAI,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC;QACjC,IAAI,QAAQ,GAAG,CAAC,CAAC,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,IAAI,GAAG,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC;QACvD,IAAI,QAAQ,IAAI,CAAC,EAAE;YACjB,OAAO;gBACL,IAAI,EAAE,QAAQ;gBACd,cAAc,EAAE;oBACd,IAAI,EAAE,OAAO;oBACb,GAAG,EAAE,YAAY;oBACjB,KAAK,EAAE,QAAQ;oBACf,IAAI,EAAE,MAAM;iBACb;gBACD,aAAa,EAAE,qBAAqB;aACrC,CAAC;SACH;QAED,IAAI,QAAQ,IAAI,EAAE,EAAE;YAClB,OAAO;gBACL,IAAI,EAAE,MAAM;gBACZ,cAAc,EAAE;oBACd,IAAI,EAAE,OAAO;oBACb,GAAG,EAAE,YAAY;oBACjB,KAAK,EAAE,QAAQ;oBACf,IAAI,EAAE,MAAM;iBACb;gBACD,aAAa,EAAE,qBAAqB;aACrC,CAAC;SACH;QAED,IAAI,QAAQ,IAAI,GAAG,EAAE;YACnB,OAAO;gBACL,IAAI,EAAE,KAAK;gBACX,cAAc,EAAE;oBACd,IAAI,EAAE,OAAO;oBACb,GAAG,EAAE,IAAI;oBACT,KAAK,EAAE,UAAU;oBACjB,IAAI,EAAE,MAAM;iBACb;gBACD,aAAa,EAAE,qBAAqB;aACrC,CAAC;SACH;QAED,OAAO;YACL,IAAI,EAAE,OAAO;YACb,cAAc,EAAE;gBACd,IAAI,EAAE,OAAO;gBACb,GAAG,EAAE,IAAI;gBACT,KAAK,EAAE,KAAK;gBACZ,IAAI,EAAE,MAAM;aACb;YACD,aAAa,EAAE,qBAAqB;SACrC,CAAC;IACJ,CAAC;IAEO,cAAc,CAAC,OAA0C,EAAE,WAAmB,EAAE,SAAiB;QACvG,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC,MAAM,IAAI,CAAC,EAAE;YACnC,OAAO,IAAI,CAAC;SACb;QAED,IAAI,OAAO,GAAU,EAAE,CAAC;QACxB,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE;YAC3B,IAAI,KAAa,CAAC;YAElB,IAAI,MAAM,GAAG,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,QAAQ,CAAC,CAAC;YACrE,IAAI,MAAM,EAAE;gBACV,IAAI,MAAM,CAAC,QAAQ,IAAI,yDAAkB,CAAC,eAAe,IAAI,MAAM,CAAC,QAAQ,IAAI,yDAAkB,CAAC,0BAA0B,EAAE;oBAC7H,KAAK,GAAG,2DAAgB,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;iBACvC;qBAAM;oBACL,KAAK,GAAG,+DAAoB,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,IAAI,GAAG,8DAAmB,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;iBACzF;aACF;iBAAM;gBACL,KAAK,GAAG,SAAS,GAAG,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;aACjC;YAED,OAAO,CAAC,IAAI,CAAC;gBACX,KAAK,EAAE,KAAK;gBACZ,IAAI,EAAE,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,WAAW,EAAE,WAAW,EAAE,SAAS,CAAC;gBACjE,IAAI,EAAE,KAAK;gBACX,WAAW,EAAE,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE;gBAC3F,WAAW,EAAE,CAAC;gBACd,WAAW,EAAE,CAAC;gBACd,gBAAgB,EAAE,CAAC;gBACnB,QAAQ,EAAE,IAAI;aACf,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,OAAO,OAAO,CAAC;IACjB,CAAC;IAEO,eAAe,CAAC,SAA4B,EAAE,WAAmB,EAAE,SAAiB;QAC1F,IAAI,KAAK,GAAG,IAAI,CAAC,6BAA6B,CAAC;QAC/C,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,GAAG,EAAE,GAAG,IAAI,CAAC,GAAG,WAAW,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC;QACtF,IAAI,QAAQ,GAAG,EAAE,IAAI,QAAQ,IAAI,EAAE,EAAE;YACnC,KAAK,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC;SACtB;QACD,IAAI,QAAQ,GAAG,EAAE,EAAE;YACjB,KAAK,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC;SACtB;QAED,IAAI,MAAM,GAA6B,EAAE,CAAC;QAC1C,IAAI,SAAS,GAAW,IAAI,CAAC,GAAG,CAAC,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC;QACrE,SAAS,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE;YACrB,IAAI,IAAI,GAAW,EAAE,CAAC,SAAS,GAAG,SAAS,CAAC;YAC5C,IAAI,IAAI,GAAG,KAAK,EAAE;gBAChB,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,IAAI,IAAI,CAAC,CAAC,EAAE,CAAC,SAAS,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,gEAAqB,CAAC,4BAA4B,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC;aACvH;YACD,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,IAAI,IAAI,CAAC,EAAE,CAAC,SAAS,GAAG,gEAAqB,CAAC,4BAA4B,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;YAC7G,SAAS,GAAG,EAAE,CAAC,SAAS,CAAC;QAC3B,CAAC,CAAC,CAAC;QACH,OAAO,MAAM,CAAC;IAChB,CAAC;IAEO,WAAW;QACjB,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,GAAG,GAAG,CAAC;QAC7C,OAAO,OAAO,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,MAAM,CAAC;IAC7E,CAAC;IA2BD,YAAY;QACV,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,uDAAgB,CAAC,iBAAiB,CAAC,CAAC;IACnE,CAAC;CACF;;YA5hBgC,uEAA6B;YACpC,0DAAW;YACN,iEAAuB;YAC5B,qDAAW;;AA3FnC;IADC,+DAAS,CAAC,UAAU,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;8BACvB,yDAAQ;+DAAC;AAG3B;IADC,+DAAS,CAAC,aAAa,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;8BAC3B,wDAAU;6DAAoB;AAG9C;IADC,+DAAS,CAAC,+DAAsB,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;8BAC3C,+DAAsB;oEAAC;AATnC,6BAA6B;IALzC,+DAAS,CAAC;QACT,QAAQ,EAAE,sCAAsC;QAChD,mPAAuD;KACxD,CAAC;qCA6F+B,uEAA6B;QACpC,0DAAW;QACN,iEAAuB;QAC5B,qDAAW;GA9FxB,6BAA6B,CAunBzC;AAvnByC;;;;;;;;;;;;;;;;;;;;AC9EU;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACM7B;AAEmC;AAKzC;AAMc;AACuB;AAMtD,IAAa,2BAA2B,GAAxC,MAAa,2BAA2B;IAUtC;QANA,sBAAiB,GAA+B,EAAE,CAAC;QACnD,wBAAmB,GAAW,EAAE,CAAC;IAKjB,CAAC;IAEjB,WAAW,CAAC,OAAsB;QAChC,IAAI,CAAC,mBAAmB,GAAG,EAAE,CAAC;QAC9B,IAAI,OAAO,CAAC,eAAe,EAAE;YAC3B,IAAI,CAAC,WAAW,EAAE,CAAC;SACpB;IACH,CAAC;IAED,WAAW;QACT,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE;YACzB,IAAI,CAAC,iBAAiB,GAAG,EAAE,CAAC;YAC5B,OAAO;SACR;QAED,MAAM,OAAO,GACX,iEAAsB,CAAC,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,CACjD,IAAI,CAAC,eAAe,CAAC,OAAO,CAC3B,CAAC;QAEJ,IAAI,aAAgC,CAAC;QACrC,IAAI,aAAgC,CAAC;QAErC,IACE,IAAI,CAAC,eAAe,CAAC,OAAO;YAC5B,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC;YACvC,CAAE,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAA0B;gBAC1D,wDAAiB,CAAC,KAAK;gBACtB,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAA0B;oBAC3D,wDAAiB,CAAC,KAAK,CAAC,EAC1B;YACA,aAAa,GAAG,wDAAiB,CAAC,KAAK,CAAC;YACxC,aAAa,GAAG,wDAAiB,CAAC,KAAK,CAAC;SACzC;aAAM;YACL,aAAa,GAAG,wDAAiB,CAAC,IAAI,CAAC;YACvC,aAAa,GAAG,wDAAiB,CAAC,IAAI,CAAC;SACxC;QAED,MAAM,KAAK,GAAG;YACZ,2DAAgB,CAAC,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,CAC3C,IAAI,CAAC,eAAe,CAAC,OAAO,CAC3B,CAAC,CAAC,CAAC;YACJ,2DAAgB,CAAC,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,CACzE,aAAa,CACZ;YACD,2DAAgB,CAAC,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,CACzE,aAAa,CACZ;SACF,CAAC;QAEF,MAAM,iBAAiB,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,CAC/C,CAAC,CAAC,EAAE,CAAE,MAAM,CAAC,CAAC,CAAuB,KAAK,wDAAiB,CAAC,IAAI,CACjE,CAAC;QACF,IAAI,CAAC,iBAAiB,GAAG,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC;aAC3C,MAAM,CAAC,CAAC,CAAC,IAAI,EAAE,eAAe,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,eAAe,CAAC;aACtD,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,eAAe,CAAC,EAAE,EAAE,CAAC,CAAC;YACjC,IAAI,EAAE,MAAM,CAAC,IAAI,CAAsB;YACvC,eAAe,EAAE,eAAyB;SAC3C,CAAC,CAAC;aACF,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,eAAe,EAAE,SAAS,EAAE,EAAE,EAAE;YAC5C,MAAM,OAAO,GAAG,IAAI,CAAC,eAAe,CAAC,OAAO;iBACzC,GAAG,CAAC,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE,CAAC,mBAAM,MAAM,IAAE,KAAK,EAAE,KAAK,GAAG,CAAC,IAAG,CAAC;iBACzD,MAAM,CACL,MAAM,CAAC,EAAE,CACP,MAAM,CAAC,IAAI,KAAK,IAAI;gBACpB,MAAM,CAAC,IAAI,KAAK,IAAI,GAAG,CAAC;gBACxB,CAAC,iBAAiB,IAAI,MAAM,CAAC,IAAI,KAAK,wDAAiB,CAAC,IAAI,CAAC,CAChE;iBACA,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;gBACd,KAAK,EAAE,MAAM,CAAC,KAAK;gBACnB,OAAO,EACL,MAAM,CAAC,KAAK;oBACZ,KAAK;oBACL,+DAAoB,CAAC,MAAM,CAAC,QAAQ,CAAC;oBACrC,IAAI;oBACJ,2DAAgB,CAAC,MAAM,CAAC,IAAI,CAAC;gBAC/B,SAAS,EAAE,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC;aAC9D,CAAC,CAAC;iBACF,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;YAExC,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,SAAS,GAAG,IAAI,CAAC,CAAC;YAC7D,MAAM,kBAAkB,GAAG,CAAC,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC;YACrG,IAAI,CAAC,mBAAmB,GAAG,kBAAkB,CAAC;YAE9C,OAAO;gBACL,SAAS;gBACT,OAAO;aACR,CAAC;QACJ,CAAC,CAAC,CAAC;IACP,CAAC;IAED,eAAe,CAAC,SAA6B;QAC3C,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;IAChE,CAAC;CACF;AAvGU;IAAR,2DAAK,EAAE;8BAAkB,0DAAkB;oEAAC;AACpC;IAAR,2DAAK,EAAE;;+DAAoB;AAM5B;IADC,+DAAS,CAAC,uEAA+B,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;8BAC1C,uEAA+B;4EAAC;AARtD,2BAA2B;IAJvC,+DAAS,CAAC;QACT,QAAQ,EAAE,mCAAmC;QAC7C,6RAAoD;KACrD,CAAC;;GACW,2BAA2B,CAwGvC;AAxGuC;;;;;;;;;;;;;;;;;;;;AC1BQ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACAC;AAK0B;AACnB;AACQ;AAMhE,IAAa,gCAAgC,GAA7C,MAAa,gCAAgC;IAoD3C;QAhDA,oBAAe,GAAG,qDAAc,CAAC;QACjC,iBAAY,GAAG;YACb;gBACE,MAAM,EAAE,EAAE;gBACV,UAAU,EAAE,qDAAc,CAAC,WAAW;gBACtC,SAAS,EAAE,OAAO;gBAClB,QAAQ,EAAE,CAAC,MAAuC,EAAE,EAAE,CAAC,MAAM,CAAC,KAAK;aACpE;YACD;gBACE,MAAM,EAAE,aAAa;gBACrB,UAAU,EAAE,qDAAc,CAAC,IAAI;gBAC/B,SAAS,EAAE,MAAM;gBACjB,UAAU,EAAE,IAAI;gBAChB,QAAQ,EAAE,CAAC,MAAuC,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI;aACxE;YACD;gBACE,MAAM,EAAE,UAAU;gBAClB,UAAU,EAAE,qDAAc,CAAC,cAAc;gBACzC,SAAS,EAAE,UAAU;gBACrB,UAAU,EAAE,IAAI;gBAChB,QAAQ,EAAE,CAAC,MAAuC,EAAE,EAAE,CACpD,MAAM,CAAC,QAAQ,CAAC,IAAI;aACvB;YACD;gBACE,MAAM,EAAE,MAAM;gBACd,UAAU,EAAE,qDAAc,CAAC,UAAU;gBACrC,SAAS,EAAE,MAAM;gBACjB,UAAU,EAAE,IAAI;gBAChB,QAAQ,EAAE,CAAC,MAAuC,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI;aACxE;YACD;gBACE,MAAM,EAAE,OAAO;gBACf,UAAU,EAAE,qDAAc,CAAC,WAAW;gBACtC,SAAS,EAAE,OAAO;gBAClB,QAAQ,EAAE,CAAC,MAAuC,EAAE,EAAE,CACpD,MAAM,CAAC,KAAK,KAAK,IAAI;oBACnB,CAAC,CAAC,GAAG,MAAM,CAAC,KAAK,IAAI,MAAM,CAAC,aAAa,EAAE;oBAC3C,CAAC,CAAC,SAAS;aAChB;YACD;gBACE,MAAM,EAAE,QAAQ;gBAChB,UAAU,EAAE,qDAAc,CAAC,MAAM;gBACjC,SAAS,EAAE,QAAQ;gBACnB,QAAQ,EAAE,CAAC,MAAuC,EAAE,EAAE,CACpD,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI;aAChE;SACF,CAAC;IAEc,CAAC;IAEjB,cAAc,CAAC,QAAgB;QAC7B,IAAI,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,QAAQ,CAAC,CAAC;QAEtD,IAAI,CAAC,MAAM,EAAE;YACX,OAAO,OAAO,CAAC;SAChB;QAED,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC;QAEhC,QAAQ,MAAM,EAAE;YACd,KAAK,6DAAsB,CAAC,IAAI;gBAC9B,OAAO,OAAO,CAAC;YACjB,KAAK,6DAAsB,CAAC,KAAK;gBAC/B,OAAO,KAAK,CAAC;YACf,KAAK,6DAAsB,CAAC,OAAO;gBACjC,OAAO,QAAQ,CAAC;YAClB,KAAK,6DAAsB,CAAC,KAAK;gBAC/B,OAAO,MAAM,CAAC;SACjB;IACH,CAAC;IAED,UAAU,CAAC,KAAgB;QACzB,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC;QAC1B,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC;QAE1B,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,OAAO,EAAE,EAAE;YACrC,MAAM,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC;YAC9B,MAAM,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC;YAE9B,IAAI,MAAM,GAAG,IAAI,CAAC;YAElB,IAAI,MAAM,IAAI,IAAI,IAAI,MAAM,IAAI,IAAI,EAAE;gBACpC,MAAM,GAAG,CAAC,CAAC,CAAC;aACb;iBAAM,IAAI,MAAM,IAAI,IAAI,IAAI,MAAM,IAAI,IAAI,EAAE;gBAC3C,MAAM,GAAG,CAAC,CAAC;aACZ;iBAAM,IAAI,MAAM,IAAI,IAAI,IAAI,MAAM,IAAI,IAAI,EAAE;gBAC3C,MAAM,GAAG,CAAC,CAAC;aACZ;iBAAM,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE;gBACnE,MAAM,GAAG,uDAAe,CAAC,cAAc,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;aACzD;iBAAM,IACL,MAAM,YAAY,kEAAa;gBAC/B,MAAM,YAAY,kEAAa,EAC/B;gBACA,MAAM,GAAG,uDAAe,CAAC,cAAc,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC;aACnE;iBAAM;gBACL,MAAM,GAAG,MAAM,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;aACzD;YAED,OAAO,MAAM,GAAG,KAAK,CAAC;QACxB,CAAC,CAAC,CAAC;IACL,CAAC;CACF;AAxGU;IAAR,2DAAK,EAAE;;iEAA4C;AAC3C;IAAR,2DAAK,EAAE;;iEAAkB;AAFf,gCAAgC;IAJ5C,+DAAS,CAAC;QACT,QAAQ,EAAE,yCAAyC;QACnD,+SAA0D;KAC3D,CAAC;;GACW,gCAAgC,CAyG5C;AAzG4C;;;;;;;;;;;;;;;;;;;;ACbU;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACAiB;AAC1B;AACW;AAMtC;AAG6C;AAMpC;AAOX;AAMjB,IAAa,oCAAoC,4CAAjD,MAAa,oCAAoC;IAyB/C,YACU,OAAe,EACf,MAAsB,EACtB,iBAA6C,EAC7C,mBAAkD;QAHlD,YAAO,GAAP,OAAO,CAAQ;QACf,WAAM,GAAN,MAAM,CAAgB;QACtB,sBAAiB,GAAjB,iBAAiB,CAA4B;QAC7C,wBAAmB,GAAnB,mBAAmB,CAA+B;QApB5D,iBAAY,GAAW,CAAC,CAAC;QAGzB,2BAAsB,GAAY,KAAK,CAAC;QACxC,iBAAY,GAAY,KAAK,CAAC;QAC9B,6BAAwB,GAAe,EAAE,CAAC;QAE1C,0BAAqB,GAAY,KAAK,CAAC;QACvC,uBAAkB,GAAmC,EAAE,CAAC;QACxD,aAAQ,GAAY,KAAK,CAAC;QAE1B,mBAAc,GAAW,EAAE,CAAC;QAEpB,kBAAa,GAAmB,EAAE,CAAC;QACnC,yBAAoB,GAAiB,IAAI,CAAC;IAO9C,CAAC;IAEL,IAAI,QAAQ;QACV,IAAI,CAAC,IAAI,CAAC,uBAAuB,EAAE;YACjC,OAAO,EAAE,CAAC;SACX;QAED,OAAO,IAAI,CAAC,uBAAuB,CAAC,OAAO,CAAC;IAC9C,CAAC;IAED,IAAI,WAAW;QACb,IAAI,CAAC,IAAI,CAAC,uBAAuB,EAAE;YACjC,OAAO,CAAC,CAAC,CAAC;SACX;QAED,OAAO,IAAI,CAAC,uBAAuB,CAAC,UAAU,CAAC;IACjD,CAAC;IAED,QAAQ;QACN,IAAI,CAAC,gBAAgB,EAAE,CAAC;IAC1B,CAAC;IAED,WAAW;QACT,IAAI,CAAC,kBAAkB,EAAE,CAAC;IAC5B,CAAC;IAED,gBAAgB;QACd,MAAM,uBAAuB,GAC3B,IAAI,CAAC,mBAAmB,CAAC,oBAAoB,CAAC,SAAS,CAAC,WAAW,CAAC,EAAE;YACpE,IAAI,CAAC,WAAW,EAAE;gBAChB,IAAI,CAAC,iBAAiB,EAAE,CAAC;gBACzB,OAAO;aACR;YAED,IAAI,CAAC,iBAAiB,CAAC,yBAAyB,CAAC,WAAW,CAAC,CAAC;QAChE,CAAC,CAAC,CAAC;QAEL,MAAM,kCAAkC,GACtC,IAAI,CAAC,iBAAiB,CAAC,uBAAuB,CAAC,SAAS,CACtD,sBAAsB,CAAC,EAAE;YACvB,IAAI,CAAC,sBAAsB,EAAE;gBAC3B,OAAO;aACR;YAED,IAAI,CAAC,cAAc,CAAC,sBAAsB,CAAC,CAAC;YAC5C,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;QACxB,CAAC,CACF,CAAC;QAEJ,MAAM,6BAA6B,GACjC,IAAI,CAAC,mBAAmB,CAAC,kBAAkB,CAAC,SAAS,CAAC,SAAS,CAAC,EAAE;YAChE,IAAI,CAAC,SAAS,EAAE;gBACd,OAAO;aACR;YAED,IAAI,CAAC,kBAAkB,GAAG,SAAS,CAAC;YACpC,IAAI,CAAC,kBAAkB,CAAC,SAAS,CAAC,CAAC;QAErC,CAAC,CAAC,CAAC;QAEL,IAAI,CAAC,mBAAmB,CAAC,yBAAyB,CAAC,IAAI,CAAC,CAAC;QACzD,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;QACrB,IAAI,CAAC,aAAa,CAAC,IAAI,CACrB,uBAAuB,EACvB,kCAAkC,EAClC,6BAA6B,CAC9B,CAAC;IACJ,CAAC;IAED,cAAc,CAAC,sBAA0D;QACvE,IAAI,CAAC,YAAY,GAAG,sBAAsB,CAAC,EAAE,CAAC;QAE9C,MAAM,0BAA0B,qBAC3B,sBAAsB,IACzB,OAAO,EAAE,sBAAsB,CAAC,OAAO;iBACpC,IAAI,CAAC,IAAI,CAAC,qCAAqC,CAAC;iBAChD,GAAG,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,CAAC,mBAAM,CAAC,IAAE,KAAK,EAAE,KAAK,GAAG,CAAC,IAAG,CAAC,GACnD,CAAC;QAEF,IAAI,CAAC,uBAAuB,GAAG,0BAA0B,CAAC;QAC1D,IAAI,CAAC,mBAAmB;YACtB,0EAAkC,CAAC,oBAAoB,CACrD,0BAA0B,CAC3B,CAAC;QAEJ,IAAI,CAAC,kBAAkB,EAAE,CAAC;QAC1B,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,uBAAuB,CAAC,YAAY,CAAC;QAC/D,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC;IAC1D,CAAC;IAED,kBAAkB;QAChB,IAAI,CAAC,IAAI,CAAC,uBAAuB,IAAI,IAAI,CAAC,sBAAsB,EAAE;YAChE,OAAO;SACR;QAED,IAAI,IAAI,CAAC,oBAAoB,EAAE;YAC7B,IAAI,CAAC,oBAAoB,CAAC,WAAW,EAAE,CAAC;YACxC,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC;SAClC;QAED,MAAM,cAAc,GAAW,sCAAoC,CAAC,uBAAuB,GAAG,IAAI,CAAC,uBAAuB,CAAC,eAAe,CAAC;QAC3I,IAAI,CAAC,oBAAoB,GAAG,qDAAQ,CAAC,cAAc,CAAC,CAAC,SAAS,CAAC,GAAG,EAAE;YAClE,IAAI,CAAC,iBAAiB,CAAC,yBAAyB,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QACtE,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,sBAAsB,GAAG,IAAI,CAAC;IACrC,CAAC;IAED,kBAAkB;QAChB,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC;QACjD,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;QAE1B,IAAI,IAAI,CAAC,oBAAoB,EAAE;YAC7B,IAAI,CAAC,oBAAoB,CAAC,WAAW,EAAE,CAAC;YACxC,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC;SAClC;QACD,IAAI,CAAC,uBAAuB,GAAG,IAAI,CAAC;QACpC,IAAI,CAAC,iBAAiB,CAAC,uBAAuB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC5D,CAAC;IAED,iBAAiB;QACf,IAAI,CAAC,uBAAuB,GAAG,IAAI,CAAC;QACpC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,MAAM,yDAAc,CAAC,aAAa,EAAE,CAAC,EAAE;YAC5D,UAAU,EAAE,IAAI,CAAC,MAAM;SACxB,CAAC,CAAC;IACL,CAAC;IAED,mBAAmB;QACjB,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,kBAAkB,EAAE,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;IAC5F,CAAC;IAED,qCAAqC,CACnC,CAAkC,EAClC,CAAkC;QAElC,MAAM,OAAO,GAAG,GAAG,2DAAgB,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,+DAAoB,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CACjF,GAAG,8DAAmB,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC;QACtC,MAAM,OAAO,GAAG,GAAG,2DAAgB,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,+DAAoB,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CACjF,GAAG,8DAAmB,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC;QAEtC,IAAI,OAAO,GAAG,OAAO,EAAE;YACrB,OAAO,CAAC,CAAC,CAAC;SACX;QAED,IAAI,OAAO,GAAG,OAAO,EAAE;YACrB,OAAO,CAAC,CAAC;SACV;QAED,OAAO,CAAC,CAAC;IACX,CAAC;IAED,kBAAkB,CAAC,SAAyC;QAC1D,MAAM,WAAW,GAAG,IAAI,CAAC,mBAAmB,CAAC,oBAAoB,CAAC,KAAK,CAAC;QACxE,MAAM,gBAAgB,GAAG,SAAS,CAAC,IAAI,CACrC,QAAQ,CAAC,EAAE,CACT,QAAQ,CAAC,UAAU;YACnB,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,WAAW,CAAC,CACxD,CAAC;QAEF,MAAM,cAAc,GAAe,gBAAgB,CAAC,UAAU,CAAC,GAAG,CAChE,8DAAsB,CAAC,aAAa,CACrC,CAAC;QAEF,IAAI,CAAC,wBAAwB,GAAG,cAAc,CAAC;QAC/C,IAAI,CAAC,sBAAsB,GAAG,cAAc,CAAC,IAAI,CAC/C,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,KAAK,WAAW,CACnC,CAAC;IAEJ,CAAC;IAED,oBAAoB;QAClB,IAAI,CAAC,qBAAqB,GAAG,CAAC,IAAI,CAAC,qBAAqB,CAAC;IAC3D,CAAC;IAED,qBAAqB,CAAC,KAAU;QAC9B,MAAM,EAAE,IAAI,EAAE,GAAG,KAAK,CAAC;QAEvB,IAAI,IAAI,EAAE;YACR,MAAM,EAAE,EAAE,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC;YAEzB,IAAI,CAAC,sBAAsB,GAAG,KAAK,CAAC;YACpC,IAAI,CAAC,qBAAqB,GAAG,KAAK,CAAC;YACnC,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;YACrB,IAAI,CAAC,uBAAuB,GAAG,IAAI,CAAC;YACpC,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC;YAChC,IAAI,CAAC,mBAAmB,CAAC,oBAAoB,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACvD,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,KAAK,CAAC;SAClC;IACH,CAAC;CACF;AA1NyB,4DAAuB,GAAW,IAAI,CAAC;;YAyB5C,sDAAM;YACP,8DAAc;YACH,oEAA0B;YACxB,uEAA6B;;AAtB5D;IAJC,+DAAS,CAAC,6EAAqC,EAAE;QAChD,IAAI,EAAE,KAAK;QACX,MAAM,EAAE,KAAK;KACd,CAAC;8BACiB,6EAAqC;+EAAC;AAP9C,oCAAoC;IAJhD,+DAAS,CAAC;QACT,QAAQ,EAAE,+CAA+C;QACzD,gSAAgE;KACjE,CAAC;qCA2BmB,sDAAM;QACP,8DAAc;QACH,oEAA0B;QACxB,uEAA6B;GA7BjD,oCAAoC,CA2NhD;AA3NgD;;;;;;;;;;;;;;;;;;;;;;;;;;AC9BX;AACM;AACiB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACFA;AACL;AACC;AAIc;AACP;AAO/C;AACiE;AAIzD;AAC0B;AAMnD,IAAa,uBAAuB,GAApC,MAAa,uBAAuB;IAkClC,YACU,mBAAkD,EAClD,OAAe,EACf,MAAsB,EAC9B,WAAwB,EAChB,YAAyB;QAJzB,wBAAmB,GAAnB,mBAAmB,CAA+B;QAClD,YAAO,GAAP,OAAO,CAAQ;QACf,WAAM,GAAN,MAAM,CAAgB;QAEtB,iBAAY,GAAZ,YAAY,CAAa;QAnCnC,sBAAiB,GAAY,KAAK,CAAC;QACnC,sBAAiB,GAAe,EAAE,CAAC;QAKnC,0BAAqB,GAAa,EAAE,CAAC;QACrC,0BAAqB,GAAa,EAAE,CAAC;QACrC,aAAQ,GAAY,KAAK,CAAC;QAClB,kBAAa,GAAmB,EAAE,CAAC;QA4BzC,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC,KAAK,CAAC;YACnC,YAAY,EAAE,CAAC,EAAE,CAAC;SACnB,CAAC,CAAC;IACL,CAAC;IA7BD,IAAI,oBAAoB;QACtB,IACE,CAAC,IAAI,CAAC,yBAAyB;YAC/B,CAAC,IAAI,CAAC,yBAAyB,CAAC,MAAM,EACtC;YACA,OAAO,CAAC,CAAC;SACV;QAED,MAAM,iBAAiB,GAAG,IAAI,CAAC,yBAAyB,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE;YACvE,OAAO,IAAI,CAAC,IAAI,CAAC,QAAQ,KAAK,wEAAiC,CAAC,SAAS,CAAC;QAC5E,CAAC,CAAC,CAAC;QAEH,OAAO,iBAAiB,CAAC,MAAM,CAAC;IAClC,CAAC;IAED,IAAI,cAAc;QAChB,OAAO,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,oDAAY,CAAC,YAAY,CAAC,IAAI,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,oDAAY,CAAC,WAAW,CAAC,CAAC;IAC7H,CAAC;IAcD,QAAQ;QACN,IAAI,CAAC,gBAAgB,EAAE,CAAC;IAC1B,CAAC;IAED,gBAAgB;QACd,MAAM,qBAAqB,GACzB,IAAI,CAAC,mBAAmB,CAAC,uBAAuB,CAAC,SAAS,CACxD,CAAC,SAAS,EAAE,EAAE;YACZ,IAAI,CAAC,6BAA6B,CAAC,SAAS,CAAC,CAAC;QAChD,CAAC,CACF,CAAC;QAEJ,MAAM,6BAA6B,GACjC,IAAI,CAAC,mBAAmB,CAAC,kBAAkB,CAAC,SAAS,CACnD,iBAAiB,CAAC,EAAE;YAElB,MAAM,eAAe,GAAG,iBAAiB;iBACtC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,UAAU,IAAI,CAAC,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC;iBACpD,GAAG,CAA+B,QAAQ,CAAC,EAAE,CAAC,mBAC1C,QAAQ,IACX,UAAU,EAAE,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,UAAU,EAAE,UAAU,EAAE,EAAE,CAC9D,uDAAe,CAAC,cAAc,CAC5B,UAAU,CAAC,IAAI,EACf,UAAU,CAAC,IAAI,CAChB,CACF,IACD,CAAC;iBACF,IAAI,CAAC,CAAC,SAAS,EAAE,SAAS,EAAE,EAAE,CAC7B,uDAAe,CAAC,cAAc,CAAC,SAAS,CAAC,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,CAC/D,CAAC;YAEJ,IAAI,CAAC,kBAAkB,GAAG,eAAe,CAAC;YAC1C,IAAI,CAAC,+BAA+B,EAAE,CAAC;YACvC,IAAI,CAAC,uCAAuC,EAAE,CAAC;YAC/C,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;QACxB,CAAC,CACF,CAAC;QAEJ,MAAM,aAAa,GAAG,IAAI,CAAC;QAC3B,IAAI,CAAC,mBAAmB,CAAC,yBAAyB,CAAC,aAAa,CAAC,CAAC;QAClE,IAAI,CAAC,IAAI,CAAC,kBAAkB,IAAI,IAAI,CAAC,kBAAkB,CAAC,MAAM,IAAI,CAAC,EAAE;YACnE,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;YACrB,IAAI,CAAC,mBAAmB,CAAC,oBAAoB,EAAE,CAAC;SACjD;QACD,IAAI,CAAC,aAAa,CAAC,IAAI,CACrB,qBAAqB,EACrB,6BAA6B,CAC9B,CAAC;IACJ,CAAC;IAED,gCAAgC,CAC9B,SAAwC;QAExC,MAAM,6BAA6B,GACjC,yEAA8B,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QAE1E,OAAO,6BAA6B,CAAC;IACvC,CAAC;IAED,cAAc;QACZ,IAAI,CAAC,iBAAiB,GAAG,CAAC,IAAI,CAAC,iBAAiB,CAAC;IACnD,CAAC;IAED,qBAAqB;QACnB,MAAM,YAAY,GAAa,IAAI,CAAC,yBAAyB;aAC1D,MAAM,CACL,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,KAAK,wEAAiC,CAAC,SAAS,CACvE;aACA,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAEzB,IAAI,CAAC,qBAAqB,GAAG,YAAY,CAAC;QAE1C,IAAI,CAAC,+BAA+B,EAAE,CAAC;IACzC,CAAC;IAED,QAAQ;QACN,MAAM,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,YAAY,CAAC;QACzD,MAAM,YAAY,GAAG,IAAI,CAAC,6BAA6B,CAAC,KAAK,CAAC,CAAC;QAE/D,IAAI,CAAC,qBAAqB,GAAG,YAAY,CAAC;QAE1C,IAAI,CAAC,+BAA+B,EAAE,CAAC;IACzC,CAAC;IAED,mBAAmB,CAAC,SAAwC;QAC1D,IAAI,CAAC,mBAAmB,CAAC,oBAAoB,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;QACjE,IAAI,CAAC,OAAO,CAAC,QAAQ,CACnB,CAAC,MAAM,yDAAc,CAAC,4BAA4B,EAAE,CAAC,EACrD;YACE,UAAU,EAAE,IAAI,CAAC,MAAM;SACxB,CACF,CAAC;IACJ,CAAC;IAED,YAAY;QACV,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,uDAAgB,CAAC,WAAW,CAAC,CAAC;IAC7D,CAAC;IAEO,6BAA6B,CAAC,SAA6B;QACjE,MAAM,wBAAwB,GAC5B,SAAS;YACT,SAAS;iBACN,GAAG,CAAC,wDAAgB,CAAC,aAAa,CAAC;iBACnC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;QAEpD,IAAI,CAAC,iBAAiB,GAAG,wBAAwB,CAAC;IACpD,CAAC;IAEO,wBAAwB;QAC9B,IAAI,CAAC,IAAI,CAAC,kBAAkB,EAAE;YAC5B,OAAO,EAAE,CAAC;SACX;QAED,MAAM,kBAAkB,GACtB,IAAI,CAAC,kBAAkB,CAAC,GAAG,CACzB,CAAC,QAAQ,EAAE,EAAE;YACX,MAAM,iBAAiB,qBAClB,QAAQ,IACX,QAAQ,EAAE,KAAK,GAChB,CAAC;YAEF,OAAO,iBAAiB,CAAC;QAC3B,CAAC,CACF,CAAC;QAEJ,OAAO,kBAAkB,CAAC;IAC5B,CAAC;IAEO,mCAAmC,CACzC,YAAsB;QAEtB,IAAI,CAAC,IAAI,CAAC,kBAAkB,EAAE;YAC5B,OAAO;SACR;QAED,MAAM,0BAA0B,GAAG,IAAI,CAAC,kBAAkB;aACvD,GAAG,CAAoC,CAAC,QAAQ,EAAE,EAAE;YACnD,MAAM,kBAAkB,GACtB,QAAQ,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;YAEjE,IAAI,CAAC,kBAAkB,IAAI,CAAC,kBAAkB,CAAC,MAAM,EAAE;gBACrD,OAAO,IAAI,CAAC;aACb;YAED,MAAM,iBAAiB,qBAClB,QAAQ,IACX,QAAQ,EAAE,IAAI,EACd,UAAU,EAAE,kBAAkB,GAC/B,CAAC;YAEF,OAAO,iBAAiB,CAAC;QAC3B,CAAC,CAAC;aACD,MAAM,CAAC,OAAO,CAAC,CAAC;QAEnB,OAAO,0BAA0B,CAAC;IACpC,CAAC;IAEO,6BAA6B,CAAC,WAAmB;QACvD,IAAI,WAAW,KAAK,EAAE,EAAE;YACtB,OAAO,EAAE,CAAC;SACX;QAED,MAAM,aAAa,GACjB,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAC5B,CAAC,MAAM,EAAE,QAAQ,EAAE,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAC,EACxD,EAAE,CACH,CAAC;QAEJ,WAAW,GAAG,WAAW,CAAC,WAAW,EAAE,CAAC;QAExC,MAAM,YAAY,GAAa,aAAa;aACzC,MAAM,CAAC,CAAC,SAAS,EAAE,EAAE;YACpB,MAAM,aAAa,GAAG,SAAS,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;YACnD,MAAM,oBAAoB,GAAG,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;YAClE,MAAM,iBAAiB,GAAG,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;YAE5D,OAAO,CACL,aAAa,CAAC,QAAQ,CAAC,WAAW,CAAC;gBACnC,oBAAoB,CAAC,QAAQ,CAAC,WAAW,CAAC;gBAC1C,iBAAiB,CAAC,QAAQ,CAAC,WAAW,CAAC,CACxC,CAAC;QACJ,CAAC,CAAC;aACD,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QAEpB,OAAO,YAAY,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC;IACzD,CAAC;IAEO,+BAA+B;QACrC,MAAM,iBAAiB,GAAG,IAAI,CAAC,qBAAqB,CAAC,MAAM,CAAC;QAC5D,MAAM,iBAAiB,GAAG,IAAI,CAAC,qBAAqB,CAAC,MAAM,CAAC;QAE5D,IAAI,iBAAiB,KAAK,CAAC,IAAI,iBAAiB,KAAK,CAAC,EAAE;YACtD,IAAI,CAAC,0BAA0B,GAAG,IAAI,CAAC,wBAAwB,EAAE,CAAC;YAClE,OAAO;SACR;QAED,MAAM,YAAY,GAChB,iBAAiB,GAAG,CAAC,IAAI,iBAAiB,GAAG,CAAC;YAC5C,CAAC,CAAC,IAAI,CAAC,qBAAqB,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,EAAE,CACzC,IAAI,CAAC,qBAAqB,CAAC,QAAQ,CAAC,EAAE,CAAC,CACxC;YACD,CAAC,CAAC,iBAAiB,GAAG,CAAC;gBACrB,CAAC,CAAC,IAAI,CAAC,qBAAqB;gBAC5B,CAAC,CAAC,IAAI,CAAC,qBAAqB,CAAC;QAEnC,MAAM,yBAAyB,GAC7B,IAAI,CAAC,mCAAmC,CAAC,YAAY,CAAC,CAAC;QAEzD,IAAI,CAAC,0BAA0B,GAAG,yBAAyB,CAAC;IAC9D,CAAC;IAEO,uCAAuC;QAC7C,MAAM,iBAAiB,GAAG,IAAI,CAAC,mBAAmB,CAAC,oBAAoB,CAAC,QAAQ,EAAE,CAAC;QAEnF,IAAI,CAAC,iBAAiB,EAAE;YACtB,OAAO;SACR;QACD,IAAI,yBAA4D,CAAC;QACjE,IAAI,CAAC,0BAA0B,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;YAC1C,IAAI,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,iBAAiB,CAAC,EAAE;gBACrD,yBAAyB,GAAG,CAAC,CAAC;aAC/B;QACH,CAAC,CAAC;QAEF,IAAI,CAAC,yBAAyB,EAAE;YAC9B,OAAO;SACR;QAED,yBAAyB,CAAC,QAAQ,GAAG,IAAI,CAAC;QAC1C,UAAU,CAAC,GAAG,EAAE;YACf,QAAQ,CAAC,cAAc,CAAC,aAAa,iBAAiB,OAAO,CAAC,CAAC,cAAc,CAAC;gBAC7E,QAAQ,EAAE,QAAQ;gBAClB,KAAK,EAAE,QAAQ;gBACf,MAAM,EAAE,SAAS;aAClB,CAAC,CAAC;YACH,IAAI,CAAC,mBAAmB,CAAC,oBAAoB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACzD,CAAC,EAAC,CAAC,CAAC,CAAC;IACP,CAAC;CACF;;YAzPgC,uEAA6B;YACzC,sDAAM;YACP,8DAAc;YACjB,0DAAW;YACF,qDAAW;;AArCnC;IADC,+DAAS,CAAC,8DAAsB,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;8BAC3C,8DAAsB;8DAAC;AAFnC,uBAAuB;IAJnC,+DAAS,CAAC;QACT,QAAQ,EAAE,gCAAgC;QAC1C,iOAAiD;KAClD,CAAC;qCAoC+B,uEAA6B;QACzC,sDAAM;QACP,8DAAc;QACjB,0DAAW;QACF,qDAAW;GAvCxB,uBAAuB,CA4RnC;AA5RmC;;;;;;;;;;;;;;;;;;;;;;;;;;;AC1BU;AACK;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACM5B;AAC0B;AAEL;AAQ3B;AAKE;AAOM;AAQJ;AACgD;AAEpB;AACuE;AAMxH,IAAa,4BAA4B,oCAAzC,MAAa,4BAA4B;IAoFvC,YACU,GAAe,EACf,KAAa,EACb,uBAA+C,EAC/C,mBAAkD,EAClD,YAAyB,EACzB,YAAyB;QALzB,QAAG,GAAH,GAAG,CAAY;QACf,UAAK,GAAL,KAAK,CAAQ;QACb,4BAAuB,GAAvB,uBAAuB,CAAwB;QAC/C,wBAAmB,GAAnB,mBAAmB,CAA+B;QAClD,iBAAY,GAAZ,YAAY,CAAa;QACzB,iBAAY,GAAZ,YAAY,CAAa;QAzEnC,oBAAe,GAAG,qDAAc,CAAC;QACjC,eAAU,GAAG,8BAA4B,CAAC,UAAU,CAAC;QACrD,eAAU,GAAG,8BAA4B,CAAC,kBAAkB,CAAC;QAG7D,gBAAW,GAAiD,EAAE,CAAC;QAC/D,sBAAiB,GAAY,KAAK,CAAC;QAEnC,iBAAY,GAA8B,IAAI,iEAAyB,CACrE,8BAA4B,CAAC,eAAe,CAC7C,CAAC;QACF,sBAAiB,GAAe,EAAE,CAAC;QAEnC,sBAAiB,GAAqD,EAAE,CAAC;QAEzE,eAAU,GAAW,EAAE,CAAC;QACxB,gBAAW,GAAsB,IAAI,4DAAiB,EAAE,CAAC;QACzD,8BAAyB,GAAyB,IAAI,CAAC;QACvD,aAAQ,GAAY,KAAK,CAAC;QAC1B,cAAS,GAAY,KAAK,CAAC;QAEnB,kCAA6B,GAAyB,IAAI,CAAC;QAC3D,kBAAa,GAAmB,EAAE,CAAC;QAE3C,iBAAY,GAAG;YACb;gBACE,MAAM,EAAE,aAAa;gBACrB,UAAU,EAAE,qDAAc,CAAC,IAAI;gBAC/B,SAAS,EAAE,4BAA4B;aACxC;YACD;gBACE,MAAM,EAAE,YAAY;gBACpB,UAAU,EAAE,qDAAc,CAAC,IAAI;gBAC/B,SAAS,EAAE,2BAA2B;aACvC;YACD;gBACE,MAAM,EAAE,aAAa;gBACrB,UAAU,EAAE,qDAAc,CAAC,SAAS;gBACpC,SAAS,EAAE,cAAc;aAC1B;YACD;gBACE,MAAM,EAAE,UAAU;gBAClB,UAAU,EAAE,qDAAc,CAAC,UAAU;gBACrC,SAAS,EAAE,OAAO;aACnB;SACF,CAAC;IA6BE,CAAC;IA3BL,IAAI,UAAU;QACZ,OAAO,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;IAC5B,CAAC;IACD,IAAI,QAAQ;QACV,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;IACvE,CAAC;IAED,IAAI,cAAc;QAChB,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,YAAY,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC;IAC1E,CAAC;IAED,IAAI,eAAe;QACjB,OAAO,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,oDAAY,CAAC,YAAY,CAAC,IAAI,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,oDAAY,CAAC,WAAW,CAAC,CAAC;IAC7H,CAAC;IAED,IAAI,uBAAuB;QACzB,MAAM,OAAO,GAAG,IAAI,IAAI,EAAE,CAAC;QAC3B,OAAO,GAAG,OAAO,CAAC,WAAW,EAAE,GAAG,CAAC,IAAI,OAAO,CAAC,WAAW,EAAE,EAAE,CAAC;IACjE,CAAC;IAWD,QAAQ;QACN,IAAI,CAAC,gBAAgB,EAAE,CAAC;QACxB,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;QACxB,IAAI,CAAC,aAAa,EAAE,CAAC;QAErB,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,6DAAkB,CAAC,EAAE;YAC7D,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;SAC7D;QAED,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,gEAAqB,CAAC,EAAE;YAChE,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;SACnE;QAED,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC;YAC3C,cAAc,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC;YACjC,SAAS,EAAE,EAAE;YACb,WAAW,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC;YAC9B,WAAW,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC;SAC7B,CAAC,CAAC;QAEH,IAAI,CAAC,sBAAsB,EAAE,CAAC;IAChC,CAAC;IAED,WAAW;QACT,IAAI,CAAC,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;QAC/B,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC;QAEhB,IAAI,CAAC,kBAAkB,EAAE,CAAC;IAC5B,CAAC;IAED,eAAe;QACb,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;IAC1B,CAAC;IAED,gBAAgB;QACd,MAAM,qBAAqB,GACzB,IAAI,CAAC,mBAAmB,CAAC,uBAAuB,CAAC,SAAS,CACxD,CAAC,SAAS,EAAE,EAAE;YACZ,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,6BAA6B,CAAC,SAAS,CAAC,CAAC;QACzE,CAAC,CACF,CAAC;QAEJ,MAAM,aAAa,GAAG,IAAI,CAAC;QAC3B,IAAI,CAAC,mBAAmB,CAAC,yBAAyB,CAAC,aAAa,CAAC,CAAC;QAElE,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC;IACjD,CAAC;IAED,kBAAkB;QAChB,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC;QACnD,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;IAC5B,CAAC;IAED,mBAAmB,CAAC,KAAuB;QACzC,OAAO,iEAAsB,CAAC,KAAK,CAAC,CAAC;IACvC,CAAC;IAED,mBAAmB,CAAC,KAAuB;QACzC,OAAO,6DAAkB,CAAC,KAAK,CAAC,CAAC;IACnC,CAAC;IAED,cAAc;QACZ,IAAI,CAAC,iBAAiB,GAAG,CAAC,IAAI,CAAC,iBAAiB,CAAC;IACnD,CAAC;IAEK,sBAAsB;;YAC1B,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;YACrB,IAAI,CAAC,YAAY,CAAC,WAAW,GAAG,CAAC,CAAC;YAClC,IAAI,MAAM,GAAG,CAAC,MAAM,IAAI,CAAC,uBAAuB,CAAC,oBAAoB,CACnE,IAAI,CAAC,YAAY,CAClB,CAA0B,CAAC;YAC5B,IAAI,MAAM,EAAE;gBACV,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CACvC,wDAAgB,CAAC,WAAW,CAAC,CAAC,CAAC,CAChC,CAAC;gBACF,IAAI,CAAC,iBAAiB,GAAG,MAAM,CAAC,UAAU,CAAC;aAC5C;YACD,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;QACxB,CAAC;KAAA;IAEK,aAAa;;YACjB,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;YACtB,IAAI,CAAC,YAAY,CAAC,WAAW,EAAE,CAAC;YAChC,IAAI,MAAM,GAAG,CAAC,MAAM,IAAI,CAAC,uBAAuB,CAAC,oBAAoB,CACnE,IAAI,CAAC,YAAY,CAClB,CAA0B,CAAC;YAC5B,IAAI,MAAM,EAAE;gBACV,IAAI,CAAC,SAAS,CAAC,IAAI,CACjB,GAAG,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,wDAAgB,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAC7D,CAAC;aACH;YACD,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;QACzB,CAAC;KAAA;IAED,qBAAqB;QACnB,IAAI,CAAC,YAAY,CAAC,YAAY,GAAG,EAAE,CAAC;QACpC,IAAI,CAAC,YAAY,CAAC,WAAW,GAAG,EAAE,CAAC;QACnC,IAAI,CAAC,yBAAyB,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE;YAC3C,QAAQ,CAAC,CAAC,IAAI,CAAC,QAAQ,EAAE;gBACvB,KAAK,wEAAiC,CAAC,QAAQ;oBAC7C,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;oBAC9C,MAAM;gBACR,KAAK,wEAAiC,CAAC,SAAS;oBAC9C,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;oBAC/C,MAAM;aACT;QACH,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,sBAAsB,EAAE,CAAC;IAChC,CAAC;IAEK,aAAa,CAAC,OAAoB;;YACtC,OAAO,CAAC,eAAe,EAAE,CAAC;QAC5B,CAAC;KAAA;IAEK,cAAc,CAAC,OAAoB;;YACvC,OAAO,CAAC,aAAa,EAAE,CAAC;QAC1B,CAAC;KAAA;IAED,WAAW,CAAC,SAA+B;QACzC,IAAI,OAAO,GAAG,IAAI,IAAI,EAAE,CAAC;QACzB,IAAI,SAAS,GAAG,IAAI,IAAI,EAAE,CAAC;QAC3B,OAAO,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;QAC7B,SAAS,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;QAC/B,IAAI,CAAC,UAAU,GAAG,EAAE,CAAC;QACrB,QAAQ,SAAS,EAAE;YACjB,KAAK,2DAAoB,CAAC,IAAI;gBAC5B,SAAS,CAAC,OAAO,CACf,SAAS,CAAC,OAAO,EAAE,GAAG,gEAAqB,CAAC,kBAAkB,CAC/D,CAAC;gBACF,MAAM;YACR,KAAK,2DAAoB,CAAC,KAAK;gBAC7B,SAAS,CAAC,OAAO,CACf,SAAS,CAAC,OAAO,EAAE,GAAG,gEAAqB,CAAC,mBAAmB,CAChE,CAAC;gBACF,MAAM;SACT;QACD,IAAI,CAAC,yBAAyB,GAAG,SAAS,CAAC;QAC3C,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAChC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAChC,CAAC;IAED,gBAAgB;QACd,IAAI,CAAC,aAAa,EAAE,CAAC;QACrB,IAAI,CAAC,yBAAyB,GAAG,IAAI,CAAC;QACtC,IAAI,CAAC,YAAY,CAAC,YAAY,GAAG,IAAI,CAAC;QACtC,IAAI,CAAC,YAAY,CAAC,UAAU,GAAG,IAAI,CAAC;QACpC,IAAI,CAAC,sBAAsB,EAAE,CAAC;IAChC,CAAC;IAED,sBAAsB;QACpB,IAAI,IAAI,CAAC,UAAU,IAAI,SAAS,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,IAAI,CAAC,EAAE;YAC/D,IAAI,CAAC,aAAa,EAAE,CAAC;SACtB;QACD,IAAI,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,SAAS,IAAI,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,IAAI,EAAE;YACjE,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;SACzC;QACD,IAAI,CAAC,YAAY,CAAC,YAAY;YAC5B,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE;gBAC3B,gEAAqB,CAAC,4BAA4B,CAAC;gBACrD,CAAC,CAAC;QACJ,IAAI,CAAC,YAAY,CAAC,UAAU;YAC1B,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE;gBAC3B,gEAAqB,CAAC,4BAA4B,CAAC;gBACrD,CAAC,CAAC;QACJ,IAAI,CAAC,sBAAsB,EAAE,CAAC;QAC9B,IAAI,CAAC,6BAA6B,GAAG,IAAI,CAAC,yBAAyB,CAAC;QACpE,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC;IACzB,CAAC;IAED,iBAAiB;QACf,IAAI,CAAC,yBAAyB,GAAG,IAAI,CAAC;IACxC,CAAC;IAED,eAAe;QACb,IACE,IAAI,CAAC,YAAY,CAAC,YAAY,IAAI,IAAI;YACtC,IAAI,CAAC,YAAY,CAAC,UAAU,IAAI,IAAI,EACpC;YACA,IAAI,CAAC,aAAa,EAAE,CAAC;YACrB,OAAO;SACR;QACD,IAAI,IAAI,CAAC,6BAA6B,IAAI,IAAI,EAAE;YAC9C,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,6BAA6B,CAAC,CAAC;YACrD,OAAO;SACR;QACD,IAAI,CAAC,UAAU,GAAG,EAAE,CAAC;QACrB,IAAI,CAAC,UAAU,CAAC,IAAI,CAClB,IAAI,IAAI,CACN,IAAI,CAAC,YAAY,CAAC,YAAY;YAC9B,gEAAqB,CAAC,4BAA4B,CACnD,CACF,CAAC;QACF,IAAI,CAAC,UAAU,CAAC,IAAI,CAClB,IAAI,IAAI,CACN,IAAI,CAAC,YAAY,CAAC,UAAU;YAC5B,gEAAqB,CAAC,4BAA4B,CACnD,CACF,CAAC;IACJ,CAAC;IAED,UAAU;QACR,MAAM,aAAa,GAAe,EAAE,CAAC;QACrC,MAAM,SAAS,GAAG,IAAI,CAAC,6BAA6B,CAAC,IAAI,CAAC,mBAAmB,CAAC,uBAAuB,CAAC,QAAQ,EAAE,CAAC,CAAC;QAClH,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;YACpB,IAAI,CAAC,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE;gBACzB,aAAa,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC;aACnC;QACH,CAAC,CACA,CAAC;QACF,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,aAAa,EAAE,kDAAW,CAAC,GAAG,CAAC,CAAC;IAC1D,CAAC;IAED,uBAAuB,CAAC,WAAmB;QACzC,IAAI,CAAC,qBAAqB,CAAC,YAAY,CAAC,WAAW,CAAC,CAAC;IACvD,CAAC;IAED,eAAe,CAAC,OAAgB,EAAE,SAAS,GAAG,KAAK;QACjD,IAAI,SAAS,EAAE;YACb,OAAO;SACR;QAED,IAAI,IAAI,CAAC,GAAG,EAAE;YACZ,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;SACpB;QAED,MAAM,mBAAmB,GAAG,GAAG,EAAE;YAC/B,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC,GAAG,EAAE;gBAChC,IAAI;oBACF,MAAM,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,aAAa,CAAC,aAAa,CAC7C,4EAA4E,CAC7E,CAAC;oBACF,IAAI,CAAC,EAAE,EAAE;wBACP,OAAO;qBACR;oBAED,IAAI,CAAC,GAAG,GAAG,IAAI,yDAAgB,CAAC,EAAE,EAAE;wBAClC,UAAU,EAAE,CAAC;wBACb,gBAAgB,EAAE,IAAI;wBACtB,kBAAkB,EAAE,EAAE;qBACvB,CAAC,CAAC;iBACJ;gBAAC,OAAO,KAAK,EAAE,GAAG;YACrB,CAAC,CAAC,CAAC;QACL,CAAC,CAAC;QAEF,IAAI,OAAO,EAAE;YACX,UAAU,CAAC,GAAG,EAAE;gBACd,mBAAmB,EAAE,CAAC;YACxB,CAAC,EAAE,OAAO,CAAC,CAAC;SACb;aAAM;YACL,mBAAmB,EAAE,CAAC;SACvB;IACH,CAAC;IAEO,aAAa;QACnB,IAAI,CAAC,6BAA6B,GAAG,IAAI,CAAC;QAC1C,IAAI,CAAC,yBAAyB,GAAG,IAAI,CAAC;QACtC,IAAI,CAAC,UAAU,GAAG,EAAE,CAAC;QACrB,IAAI,KAAK,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,KAAK,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;QAC3B,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC5B,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC9B,CAAC;IAEO,6BAA6B,CAAC,SAA6B;QACjE,MAAM,wBAAwB,GAC5B,SAAS;YACT,SAAS;iBACN,GAAG,CAAC,wDAAgB,CAAC,aAAa,CAAC;iBACnC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;QAEpD,OAAO,wBAAwB,CAAC;IAClC,CAAC;IAED,YAAY;QACV,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,uDAAgB,CAAC,gBAAgB,CAAC,CAAC;IAClE,CAAC;CACF;AAjXQ,uCAAU,GAAG,WAAW,CAAC;AACzB,+CAAkB,GAAG,CAAC,CAAC;AACvB,4CAAe,GAAG,EAAE,CAAC;;YAkFb,wDAAU;YACR,oDAAM;YACY,gEAAsB;YAC1B,uEAA6B;YACpC,0DAAW;YACX,qDAAW;;AApFnC;IADC,+DAAS,CAAC,UAAU,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;8BACvB,yDAAQ;8DAAC;AAG3B;IADC,+DAAS,CAAC,8DAAsB,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;8BAC3C,8DAAsB;mEAAC;AAG9C;IADC,+DAAS,CAAC,wEAAgC,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;8BACvD,wEAAgC;iEAAC;AAGtD;IADC,+DAAS,CAAC,yEAAiC,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;8BAC9C,yEAAiC;2EAAC;AAftD,4BAA4B;IAJxC,+DAAS,CAAC;QACT,QAAQ,EAAE,oCAAoC;QAC9C,6OAAqD;KACtD,CAAC;qCAsFe,wDAAU;QACR,oDAAM;QACY,gEAAsB;QAC1B,uEAA6B;QACpC,0DAAW;QACX,qDAAW;GA1FxB,4BAA4B,CAkXxC;AAlXwC;;;;;;;;;;;;;;;;;;;;AChDS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACA+E;AAChF;AAEO;AAEqB;AAEX;AAC4D;AACD;AACtD;AAOvE,IAAa,gBAAgB,wBAA7B,MAAa,gBAAgB;IAoE3B,YACU,8BAA6D,EAC7D,oBAAyC,EACzC,GAAe,EACf,KAAa,EACrB,WAAwB;QAJhB,mCAA8B,GAA9B,8BAA8B,CAA+B;QAC7D,yBAAoB,GAApB,oBAAoB,CAAqB;QACzC,QAAG,GAAH,GAAG,CAAY;QACf,UAAK,GAAL,KAAK,CAAQ;QAtDvB,kBAAa,GAAG,IAAI,0DAAY,EAAqB,CAAC;QAEtD,oBAAe,GAAG,qDAAc,CAAC;QACjC,gBAAW,GAAG,oDAAa,CAAC;QAC5B,eAAU,GAAG,kBAAgB,CAAC,iBAAiB,CAAC;QAChD,eAAU,GAAG,kBAAgB,CAAC,kBAAkB,CAAC;QAEjD,oBAAe,GAAG,kBAAgB,CAAC,gBAAgB,CAAC;QACpD,qBAAgB,GAAG,kBAAgB,CAAC,iBAAiB,CAAC;QACtD,kBAAa,GAAW,EAAE,CAAC;QAE3B,yBAAoB,GAAG,eAAe,CAAC;QAOvC,iBAAY,GAAG;YACb,EAAE,MAAM,EAAE,EAAE,EAAE,UAAU,EAAE,qDAAc,CAAC,QAAQ,EAAE,KAAK,EAAE,EAAE,EAAE,SAAS,EAAE,aAAa,EAAE;YACxF,EAAE,MAAM,EAAE,UAAU,EAAE,UAAU,EAAE,qDAAc,CAAC,YAAY,EAAE,SAAS,EAAE,kBAAgB,CAAC,iBAAiB,EAAE;YAC9G,EAAE,MAAM,EAAE,SAAS,EAAE,UAAU,EAAE,qDAAc,CAAC,OAAO,EAAE,SAAS,EAAE,kBAAgB,CAAC,gBAAgB,EAAE,KAAK,EAAE,GAAG,EAAE;YACnH,EAAE,MAAM,EAAE,kBAAkB,EAAE,UAAU,EAAE,qDAAc,CAAC,OAAO,EAAE,SAAS,EAAE,kBAAkB,EAAE;YACjG,EAAE,MAAM,EAAE,iBAAiB,EAAE,UAAU,EAAE,qDAAc,CAAC,MAAM,EAAE,SAAS,EAAE,UAAU,EAAE;YACvF,EAAE,MAAM,EAAE,gBAAgB,EAAE,UAAU,EAAE,qDAAc,CAAC,SAAS,EAAE,SAAS,EAAE,OAAO,EAAE;YACtF,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,qDAAc,CAAC,IAAI,EAAE,SAAS,EAAE,SAAS,EAAE,KAAK,EAAE,EAAE,EAAE;YACpF,EAAE,MAAM,EAAE,UAAU,EAAE,UAAU,EAAE,qDAAc,CAAC,eAAe,EAAE,SAAS,EAAE,iBAAiB,EAAE,KAAK,EAAE,EAAE,EAAE;SAC5G;QAED,mBAAc,GAAG;YACf,EAAE,MAAM,EAAE,EAAE,EAAE,UAAU,EAAE,qDAAc,CAAC,gBAAgB,EAAE,KAAK,EAAE,EAAE,EAAE;YACtE,EAAE,MAAM,EAAE,EAAE,EAAE,UAAU,EAAE,qDAAc,CAAC,sBAAsB,EAAE,KAAK,EAAE,EAAE,EAAE;YAC5E,EAAE,MAAM,EAAE,EAAE,EAAE,UAAU,EAAE,qDAAc,CAAC,gBAAgB,EAAE,KAAK,EAAE,EAAE,EAAE;YACtE,EAAE,MAAM,EAAE,EAAE,EAAE,UAAU,EAAE,qDAAc,CAAC,SAAS,EAAE,KAAK,EAAE,EAAE,EAAE;YAC/D,EAAE,MAAM,EAAE,EAAE,EAAE,UAAU,EAAE,qDAAc,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,EAAE;YAC1D,EAAE,MAAM,EAAE,EAAE,EAAE,UAAU,EAAE,qDAAc,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE,EAAE;SAC7D;QAQD,iBAAY,GAA+B,EAAE,CAAC;QAC9C,aAAQ,GAAY,KAAK,CAAC;QAWxB,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC,KAAK,CAAC;YACnC,YAAY,EAAE,CAAC,EAAE,CAAC;SACnB,CAAC,CAAC;IACL,CAAC;IA7CD,IAAI,cAAc;QAChB,OAAO,IAAI,CAAC,KAAK,KAAK,oDAAY,CAAC,WAAW,CAAC;IACjD,CAAC;IA8BD,IAAI,YAAY;QACd,OAAO,GAAG,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,IAAI,CAAC;IACrE,CAAC;IAaD,QAAQ;QACN,MAAM,IAAI,GAAG,IAAI,CAAC,oBAAoB,CAAC,YAAY,EAAE,CAAC;QACtD,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;QAErC,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE;YACxB,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,UAAU,KAAK,qDAAc,CAAC,gBAAgB,CAAC,CAAC;SACzG;QAED,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;QACxB,IAAI,CAAC,sBAAsB,GAAG,IAAI,CAAC,8BAA8B,CAAC,aAAa,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE;YAChG,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;YACvB,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;QACxB,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;QACrB,IAAI,CAAC,8BAA8B,CAAC,GAAG,EAAE,CAAC;IAC5C,CAAC;IAED,WAAW;QACT,IAAI,CAAC,sBAAsB,IAAI,IAAI,CAAC,sBAAsB,CAAC,WAAW,EAAE,CAAC;QACzE,IAAI,CAAC,sBAAsB,GAAG,IAAI,CAAC;QAEnC,IAAI,CAAC,4BAA4B,IAAI,IAAI,CAAC,4BAA4B,CAAC,WAAW,EAAE,CAAC;QACrF,IAAI,CAAC,4BAA4B,GAAG,IAAI,CAAC;QAEzC,IAAI,CAAC,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;QAC/B,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC;IAClB,CAAC;IAED,eAAe;QACb,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;IAC1B,CAAC;IAEK,MAAM,CAAC,QAA2B;;YACtC,MAAM,IAAI,CAAC,8BAA8B,CAAC,+BAA+B,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;YACvF,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACpC,CAAC;KAAA;IAEK,sBAAsB,CAAC,QAAuC;;YAClE,MAAM,IAAI,CAAC,8BAA8B,CAAC,yCAAyC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;YACjG,IAAI,iBAAiB,GAAG,MAAM,IAAI,CAAC,8BAA8B,CAAC,YAAY,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;YAClG,iBAAiB,qBACZ,iBAAiB,EACjB,QAAQ,CACZ;YACD,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;QAC/C,CAAC;KAAA;IAEK,kBAAkB,CAAC,QAA8B;;YACrD,IAAI,CAAC,QAAQ,EAAE;gBACb,OAAO;aACR;YAED,QAAQ,CAAC,wBAAwB,GAAG,IAAI,CAAC;YACzC,QAAQ,CAAC,aAAa,IAAG,MAAM,IAAI,CAAC,8BAA8B,CAAC,6BAA6B,CAAC,QAAQ,CAAC,EAAE,CAAY,EAAC;YACzH,QAAQ,CAAC,wBAAwB,GAAG,KAAK,CAAC;QAC5C,CAAC;KAAA;IAEK,mBAAmB,CAAC,QAA8B;;YACtD,IAAI,CAAC,QAAQ,EAAE;gBACb,OAAO;aACR;YAED,IAAI,QAAQ,CAAC,mBAAmB,IAAI,IAAI,CAAC,WAAW,CAAC,SAAS,EAAE;gBAC9D,IAAI,CAAC,wBAAwB,CAAC,MAAM,CAAC,EAAE,YAAY,EAAE,QAAQ,CAAC,YAAY,EAAE,UAAU,EAAE,QAAQ,CAAC,EAAE,EAAE,QAAQ,EAAE,QAAQ,CAAC,QAAQ,EAAE,OAAO,EAAE,kDAAW,CAAC,GAAG,EAAE,CAAC,CAAC;aAC/J;iBAAM;gBACL,IAAI,MAAM,GAAG,MAAM,IAAI,CAAC,8BAA8B,CAAC,sBAAsB,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;gBAE3F,IAAI,MAAM,YAAY,IAAI,EAAE;oBAC1B,MAAM,GAAG,GAAG,GAAG,CAAC,eAAe,CAAC,MAAc,CAAC,CAAC;oBAChD,IAAI,YAAY,GAAG,QAAQ,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;oBAC/C,YAAY,CAAC,IAAI,GAAG,GAAG,CAAC;oBACxB,YAAY,CAAC,QAAQ,GAAG,mBAAmB,CAAC;oBAC5C,YAAY,CAAC,KAAK,EAAE,CAAC;iBACtB;aACF;QACH,CAAC;KAAA;IAEK,sCAAsC,CAAC,QAA8B;;YACzE,IAAI,CAAC,QAAQ,EAAE;gBACb,OAAO;aACR;YAED,IAAI,CAAC,iDAAiD,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACxE,CAAC;KAAA;IAEM,eAAe,CAAC,OAAgB,EAAE,SAAS,GAAG,KAAK;QACxD,IAAI,SAAS,EAAE;YACb,OAAO;SACR;QAED,IAAI,IAAI,CAAC,GAAG,EAAE;YACZ,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;SACpB;QAED,MAAM,mBAAmB,GAAG,GAAG,EAAE;YAC/B,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC,GAAG,EAAE;gBAChC,IAAI;oBACF,MAAM,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,aAAa,CAAC,aAAa,CAAC,4EAA4E,CAAC,CAAC;oBAC9H,IAAI,CAAC,EAAE,EAAE;wBACP,OAAO;qBACR;oBAED,IAAI,CAAC,GAAG,GAAG,IAAI,yDAAgB,CAAC,EAAE,EAAE;wBAClC,UAAU,EAAE,CAAC;wBACb,gBAAgB,EAAE,IAAI;wBACtB,kBAAkB,EAAE,EAAE;qBACvB,CAAC,CAAC;iBACJ;gBAAC,OAAO,KAAK,EAAE;iBACf;YACH,CAAC,CAAC;QACJ,CAAC,CAAC;QAEF,IAAI,OAAO,EAAE;YACX,UAAU,CAAC,GAAG,EAAE;gBACd,mBAAmB,EAAE,CAAC;YACxB,CAAC,EAAE,OAAO,CAAC,CAAC;SACb;aAAM;YACL,mBAAmB,EAAE,CAAC;SACvB;IACH,CAAC;IAED,aAAa;QACX,IAAI,CAAC,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC;IAChC,CAAC;IAED,kBAAkB;QAChB,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,YAAY,CAAC,KAAK,CAAC;IACxE,CAAC;IAEK,aAAa,CAAC,QAA8B;;YAChD,IAAI,CAAC,QAAQ,EAAE;gBACb,OAAO;aACR;YACD,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC9C,CAAC;KAAA;CACF;AArNQ,kCAAiB,GAAG,cAAc,CAAC;AACnC,iCAAgB,GAAG,aAAa,CAAC;AACjC,mCAAkB,GAAG,CAAC,CAAC;;YAkEY,uEAA6B;YACvC,2DAAmB;YACpC,wDAAU;YACR,oDAAM;YACR,0DAAW;;AAnE1B;IADC,+DAAS,CAAC,+DAAuB,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;8BAClD,+DAAuB;yDAAC;AAGzC;IADC,+DAAS,CAAC,0EAAkC,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;8BACrD,0EAAkC;iEAAC;AAG5D;IADC,+DAAS,CAAC,yEAAiC,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;8BAC3C,yEAAiC;kEAAC;AAGpE;IADC,+DAAS,CAAC,qIAAgD,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;8BACjC,qIAAgD;2FAAC;AAG5G;IADC,4DAAM,EAAE;;uDAC6C;AAlB3C,gBAAgB;IAL5B,+DAAS,CAAC;QACT,QAAQ,EAAE,uBAAuB;QACjC,8MAAwC;KACzC,CAAC;qCAuE0C,uEAA6B;QACvC,2DAAmB;QACpC,wDAAU;QACR,oDAAM;QACR,0DAAW;GAzEf,gBAAgB,CAsN5B;AAtN4B;;;;;;;;;;;;;;;;;;;;ACjBQ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACAwB;AAE8B;AACjC;AAO1D,IAAa,eAAe,GAA5B,MAAa,eAAe;IAI1B,YACU,iBAA6C,EAC7C,8BAA6D;QAD7D,sBAAiB,GAAjB,iBAAiB,CAA4B;QAC7C,mCAA8B,GAA9B,8BAA8B,CAA+B;IACpE,CAAC;IAEJ,QAAQ;QACN,IAAI,CAAC,iBAAiB,CAAC,GAAG,EAAE,CAAC;IAC/B,CAAC;IAEK,MAAM,CAAC,QAA+B;;YAC1C,IAAI,QAAQ,EAAE;gBACZ,IAAI,iBAAiB,GAAG,MAAM,IAAI,CAAC,8BAA8B,CAAC,YAAY,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;gBAClG,iBAAiB,qBACZ,QAAQ,EACR,iBAAiB,CACrB;gBAED,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;aACzC;iBAAM;gBACL,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC;aACxB;QACH,CAAC;KAAA;CACF;;YArB8B,oEAA0B;YACb,uEAA6B;;AAJvE;IADC,+DAAS,CAAC,qEAA6B,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;8BACrD,qEAA6B;mDAAC;AAFvC,eAAe;IAJ3B,+DAAS,CAAC;QACT,QAAQ,EAAE,sBAAsB;QAChC,mMAAuC;KACxC,CAAC;qCAM6B,oEAA0B;QACb,uEAA6B;GAN5D,eAAe,CA0B3B;AA1B2B;;;;;;;;;;;;;;;;;;;;;;;ACVD;AACS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACDsD;AAGjB;AAQzE,IAAa,uBAAuB,GAApC,MAAa,uBAAuB;IAUlC,YAAoB,iBAAkD;QAAlD,sBAAiB,GAAjB,iBAAiB,CAAiC;QAP5D,6BAAwB,GAAG,IAAI,0DAAY,EAAE,CAAC;QAGxD,uBAAkB,GAAmE,EAAE,CAAC;IAId,CAAC;IAE3E,QAAQ;QACN,IAAI,CAAC,wBAAwB,GAAG,IAAI,CAAC,iBAAiB,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,KAAK,EAAE,EAAE;YACtF,IAAI,KAAK,EAAE;gBACT,IAAI,CAAC,mBAAmB,GAAG,EAAE,CAAC;gBAC9B,IAAI,WAAW,GAAmE,EAAE,CAAC;gBACrF,IAAI,cAAc,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;gBACjD,IAAI,KAAK,GAAG,CAAC,CAAC;gBACd,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;oBACnB,WAAW,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;oBAChE,KAAK,EAAE;oBACP,IAAI,KAAK,IAAI,cAAc,EAAE;wBAC3B,KAAK,GAAG,CAAC,CAAC;wBACV,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,EAAE,gBAAgB,EAAE,WAAW,EAAE,CAAC,CAAC;wBACjE,WAAW,GAAG,EAAE,CAAC;qBAClB;gBACH,CAAC,CAAC,CAAC;gBACH,IAAI,WAAW,CAAC,MAAM,IAAI,CAAC,EAAE;oBAC3B,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,EAAE,gBAAgB,EAAE,WAAW,EAAE,CAAC,CAAC;iBAClE;gBAED,IAAI,CAAC,kBAAkB,GAAG,EAAE,CAAC;gBAC7B,IAAI,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE;oBACnD,IAAI,CAAC,mBAAmB,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE;wBAC1C,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;4BAC9B,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;wBAC1F,CAAC,CAAC,CAAC;oBACL,CAAC,CAAC,CAAC;iBACJ;aACF;QACH,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,iBAAiB,CAAC,MAAM,EAAE,CAAC;IAClC,CAAC;IAED,WAAW;QACT,IAAI,CAAC,wBAAwB,CAAC,WAAW,EAAE,CAAC;IAC9C,CAAC;IAED,eAAe,CAAC,OAAO;QACrB,IAAI,IAAI,CAAC,kBAAkB,IAAI,IAAI,CAAC,kBAAkB,CAAC,MAAM,GAAG,CAAC,EAAE;YACjE,IAAI,CAAC,kBAAkB,CAAC,GAAG,EAAE,CAAC;YAC9B,OAAO,CAAC,OAAO,GAAG,KAAK,CAAC;SACzB;QAED,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,EAAE,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;QACpD,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;QAC3E,IAAI,CAAC,wBAAwB,CAAC,IAAI,EAAE,CAAC;IACvC,CAAC;CAEF;;YAlDwC,yEAA+B;;AAR7D;IAAR,2DAAK,EAAE;;4DAAwC;AACtC;IAAT,4DAAM,EAAE;;yEAA+C;AAH7C,uBAAuB;IALnC,+DAAS,CAAC;QACT,QAAQ,EAAE,8BAA8B;QACxC,iPAA+C;KAEhD,CAAC;qCAWuC,yEAA+B;GAV3D,uBAAuB,CA4DnC;AA5DmC;;;;;;;;;;;;;;;;;;;;ACXQ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACAmC;AAElC;AACW;AAEkB;AAO1E,IAAa,sBAAsB,GAAnC,MAAa,sBAAsB;IAYjC,YAAoB,iBAAmD;QAAnD,sBAAiB,GAAjB,iBAAiB,CAAkC;QAX7D,6BAAwB,GAAG,IAAI,0DAAY,EAAE,CAAC;QAI9C,kCAA6B,GAAG,IAAI,0DAAY,EAAU,CAAC;QAErE,oBAAe,GAAY,KAAK,CAAC;QACjC,iBAAY,GAAsD,EAAE,CAAC;QACrE,8BAAyB,GAAuC,EAAE,CAAC;QACnE,SAAI,GAAW,IAAI,CAAC;IAEuD,CAAC;IAE5E,QAAQ;QACN,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,0DAAe,CAAC,EAAE;YAC1D,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;SAC9D;QAED,IAAI,UAAU,GAAG,IAAI,CAAC,iBAAiB,CAAC,yBAAyB,CAAC,QAAQ,EAAE,CAAC;QAC7E,IAAI,CAAC,yBAAyB,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;QACpE,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;YACxB,IAAI,CAAC,yBAAyB,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,UAAU,CAAC,WAAW,EAAE,KAAK,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC;QAC9F,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,IAAI,CAAC,eAAe;YAAE,IAAI,CAAC,eAAe,GAAG,IAAI,0DAAkB,EAAE,CAAC;IAC7E,CAAC;IAED,oBAAoB;QAClB,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC;QAC5B,IAAI,SAAS,GAAG,IAAI,CAAC;QAErB,IACE,IAAI,CAAC,eAAe,CAAC,aAAa,IAAI,IAAI,IAAI,IAAI,CAAC,eAAe,CAAC,aAAa,GAAG,IAAI;YACvF,IAAI,CAAC,eAAe,CAAC,YAAY,IAAI,IAAI,IAAI,IAAI,CAAC,eAAe,CAAC,YAAY,CAAC,MAAM,GAAG,EAAE;YAC1F,IAAI,CAAC,eAAe,CAAC,WAAW,IAAI,IAAI,IAAI,IAAI,CAAC,eAAe,CAAC,WAAW,CAAC,MAAM,GAAG,EAAE;YACxF,IAAI,CAAC,eAAe,CAAC,WAAW,IAAI,IAAI,IAAI,IAAI,CAAC,eAAe,CAAC,WAAW,CAAC,MAAM,GAAG,EAAE,EACxF;YACA,SAAS,GAAG,KAAK,CAAC;SACnB;QACA,IAAI,IAAI,CAAC,eAAe,CAAC,IAAI;YAAE,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC,CAAC,SAAS,GAAG,KAAK,CAAC,CAAC,CAAC,SAAS,GAAG,IAAI,CAAC;QAC5G,IAAI,IAAI,CAAC,eAAe,CAAC,OAAO;YAAE,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC,CAAC,SAAS,GAAG,KAAK,CAAC,CAAC,CAAC,SAAS,GAAG,IAAI,CAAC;QAClH,IAAI,IAAI,CAAC,eAAe,CAAC,YAAY;YAAE,IAAI,CAAC,eAAe,CAAC,YAAY,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC,CAAC,SAAS,GAAG,KAAK,CAAC,CAAC,CAAC,SAAS,GAAG,IAAI,CAAC;QAC5H,IAAI,IAAI,CAAC,eAAe,CAAC,YAAY;YAAE,IAAI,CAAC,eAAe,CAAC,YAAY,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC,CAAC,SAAS,GAAG,KAAK,CAAC,CAAC,CAAC,SAAS,GAAG,IAAI,CAAC;QAC5H,IAAI,IAAI,CAAC,eAAe,CAAC,OAAO;YAAE,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC,CAAC,SAAS,GAAG,KAAK,CAAC,CAAC,CAAC,SAAS,GAAG,IAAI,CAAC;QAEnH,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,qBAAqB;QACnB,IAAI,CAAC,wBAAwB,CAAC,IAAI,EAAE,CAAC;IACvC,CAAC;IAED,0BAA0B;QACxB,IAAI,CAAC,wBAAwB,CAAC,IAAI,EAAE,CAAC;QACrC,IAAI,CAAC,6BAA6B,CAAC,IAAI,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC;QACtE,IAAI,IAAI,CAAC,uBAAuB,IAAI,IAAI,EAAE;YACxC,IAAI,gBAAgB,GAAG,IAAI,CAAC,iBAAiB,CAAC,yBAAyB,CAAC,QAAQ,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,IAAI,CAAC,uBAAuB,CAAC,CAAC;YACnI,IAAI,gBAAgB,EAAE;gBACpB,IAAI,CAAC,eAAe,CAAC,YAAY,GAAG,gBAAgB,CAAC,UAAU,CAAC,YAAY,CAAC;gBAC7E,IAAI,CAAC,eAAe,CAAC,WAAW,GAAG,gBAAgB,CAAC,UAAU,CAAC,WAAW,CAAC;gBAC3E,IAAI,CAAC,eAAe,CAAC,WAAW,GAAG,gBAAgB,CAAC,UAAU,CAAC,WAAW,CAAC;gBAC3E,IAAI,CAAC,eAAe,CAAC,IAAI,GAAG,gBAAgB,CAAC,UAAU,CAAC,IAAI,CAAC;gBAC7D,IAAI,CAAC,eAAe,CAAC,OAAO,GAAG,gBAAgB,CAAC,UAAU,CAAC,OAAO,CAAC;gBACnE,IAAI,CAAC,eAAe,CAAC,YAAY,GAAG,gBAAgB,CAAC,UAAU,CAAC,YAAY,CAAC;gBAC7E,IAAI,CAAC,eAAe,CAAC,YAAY,GAAG,gBAAgB,CAAC,UAAU,CAAC,YAAY,CAAC;gBAC7E,IAAI,CAAC,eAAe,CAAC,OAAO,GAAG,gBAAgB,CAAC,UAAU,CAAC,OAAO,CAAC;aACpE;SACF;IACH,CAAC;CACF;;YAzDwC,0EAAgC;;AAX7D;IAAT,4DAAM,EAAE;;wEAA+C;AAE/C;IAAR,2DAAK,EAAE;8BAAkB,0DAAkB;+DAAC;AACpC;IAAR,2DAAK,EAAE;;uEAAiC;AAC/B;IAAT,4DAAM,EAAE;;6EAA4D;AAL1D,sBAAsB;IALlC,+DAAS,CAAC;QACT,QAAQ,EAAE,8BAA8B;QACxC,iPAA+C;KAEhD,CAAC;qCAauC,0EAAgC;GAZ5D,sBAAsB,CAqElC;AArEkC;;;;;;;;;;;;;;;;;;;;ACZS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACAmC;AAO9D;AAEsC;AAOvD,IAAa,oCAAoC,GAAjD,MAAa,oCAAoC;IAmC/C;QAlCU,4BAAuB,GAAG,IAAI,0DAAY,EAAE,CAAC;QAiBvD,aAAQ,GAAwB;YAC9B,EAAE,IAAI,EAAE,YAAY,EAAE,SAAS,EAAE,KAAK,EAAE,OAAO,EAAE,gBAAgB,EAAE;YACnE,EAAE,IAAI,EAAE,YAAY,EAAE,SAAS,EAAE,KAAK,EAAE,OAAO,EAAE,gBAAgB,EAAE;SACpE,CAAC;QAEF,UAAK,GAAG;YACN,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE;YACjC,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE;YACxC,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE;YACnC,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE;YAClC,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE;YAClC,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,cAAc,EAAE;YAC5C,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,cAAc,EAAE;YAC5C,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,iBAAiB,EAAE;YAC7C,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,iBAAiB,EAAE;SAC9C,CAAC;IAEc,CAAC;IAEjB,QAAQ;QACN,IAAI,CAAC,UAAU,GAAG,EAAE,CAAC;QACrB,IAAI,CAAC,qBAAqB,GAAG,IAAI,oEAA4B,EAAE,CAAC;QAChE,IAAI,CAAC,YAAY,GAAG,IAAI,4DAAoB,EAAE,CAAC;QAC/C,IAAI,CAAC,aAAa,EAAE,CAAC;QACrB,IAAI,CAAC,qBAAqB,EAAE,CAAC;IAC/B,CAAC;IAED,aAAa;QACX,IAAI,IAAI,CAAC,WAAW,IAAI,yDAAkB,CAAC,gBAAgB,EAAE;YAC3D,IAAI,CAAC,KAAK,GAAI,IAAI,CAAC,oBAAiD,CAAC,SAAS,GAAG,CAAC,CAAC;SACpF;aAAM,IAAI,IAAI,CAAC,WAAW,IAAI,yDAAkB,CAAC,eAAe,EAAE;YACjE,IAAI,CAAC,KAAK,GAAI,IAAI,CAAC,oBAA0C,CAAC,IAAI,GAAG,CAAC,CAAC;SACxE;aAAM;YACL,OAAO,CAAC,GAAG,CAAC,2BAA2B,CAAC,CAAC;YACzC,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;SACpB;IACH,CAAC;IAED,qBAAqB;QACnB,IAAI,CAAC,0BAA0B,EAAE,CAAC;QAClC,IAAI,CAAC,+BAA+B,EAAE,CAAC;QACvC,IAAI,CAAC,qBAAqB,EAAE,CAAC;QAE7B,IAAI,IAAI,CAAC,mBAAmB,EAAE,EAAE;YAC9B,IAAI,CAAC,sBAAsB,EAAE,CAAC;SAC/B;aAAM;YACL,IAAI,CAAC,yBAAyB,EAAE,CAAC;YACjC,IAAI,CAAC,eAAe,EAAE,CAAC;SACxB;QAED,IAAI,CAAC,mBAAmB,EAAE,CAAC;IAC7B,CAAC;IAEO,eAAe;QACrB,IAAI,CAAC,mBAAmB,CAAC,IAAI,GAAG,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC;QAChE,IAAI,CAAC,mBAAmB,CAAC,GAAG,GAAG,IAAI,CAAC,qBAAqB,CAAC,GAAG,CAAC;IAChE,CAAC;IAEO,mBAAmB;QACzB,IAAI,IAAI,CAAC,mBAAmB,CAAC,GAAG,IAAI,IAAI,CAAC,mBAAmB,CAAC,IAAI,EAAE;YACjE,OAAO,IAAI,CAAC;SACb;QAED,OAAO,KAAK,CAAC;IACf,CAAC;IAED,gBAAgB;QACd,IAAI,IAAI,CAAC,qBAAqB,CAAC,GAAG,GAAG,CAAC,EAAE;YACtC,IAAI,CAAC,qBAAqB,CAAC,GAAG,GAAG,IAAI,CAAC,mBAAmB,CAAC,GAAG;SAC9D;aAAM;YACL,IAAI,IAAI,CAAC,qBAAqB,CAAC,GAAG,GAAG,EAAE,EAAE;gBACvC,IAAI,CAAC,qBAAqB,CAAC,GAAG,GAAG,EAAE,CAAC;aACrC;YAED,IAAI,CAAC,mBAAmB,CAAC,GAAG,GAAG,IAAI,CAAC,qBAAqB,CAAC,GAAG,CAAC;YAE9D,IAAI,CAAC,sBAAsB,EAAE,CAAC;YAC9B,IAAI,CAAC,oBAAoB,EAAE,CAAC;SAC7B;IACH,CAAC;IAEO,sBAAsB;QAC5B,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,KAAK,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC;QAC5F,IAAI,CAAC,qBAAqB,CAAC,IAAI,GAAG,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC;QAChE,IAAI,CAAC,qBAAqB,CAAC,GAAG,GAAG,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC;QAC9D,IAAI,CAAC,sBAAsB,EAAE,CAAC;IAChC,CAAC;IAEO,sBAAsB;QAC5B,IAAI,CAAC,qBAAqB,CAAC,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC,SAAS,GAAG,IAAI,CAAC,qBAAqB,CAAC,GAAG,GAAG,IAAI,CAAC,WAAW,CAAC;QAC/I,kDAAkD;QAClD,IAAI,CAAC,qBAAqB,CAAC,GAAG,GAAG,IAAI,CAAC,2BAA2B,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC,SAAS,GAAG,IAAI,CAAC,qBAAqB,CAAC,GAAG,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,IAAI,CAAC,CAAC;QACvL,sDAAsD;QACtD,IAAI,CAAC,qBAAqB,CAAC,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,qBAAqB,CAAC,MAAM,GAAG,GAAG,GAAG,GAAG,CAAC,CAAC;QAC9F,IAAI,CAAC,qBAAqB,CAAC,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC;IAC1F,CAAC;IAEO,0BAA0B;QAChC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YAChD,IAAI,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,EAAE;gBACnC,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC;gBACnB,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC;gBAElB,KAAK,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;oBACpD,IAAI,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,IAAI,IAAI,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,EAAE;wBACvG,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC;qBACpB;yBAAM,IAAI,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,IAAI,IAAI,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,EAAE;wBAC7G,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC;qBACnB;iBACF;gBAED,MAAM;aACP;SACF;IACH,CAAC;IAEO,+BAA+B;QACrC,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,IAAI,GAAG,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,CAAC;QAC7F,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,IAAI,GAAG,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,CAAC;QAC9F,qGAAqG;IACvG,CAAC;IAEO,yBAAyB;QAC/B,IAAI,OAAO,GAAG,CAAC,CAAC;QAChB,IAAI,OAAO,GAAG,CAAC,CAAC;QAChB,gEAAgE;QAEhE,IAAI,CAAC,mBAAmB,CAAC,OAAO,CAAC,CAAC;QAClC,kCAAkC;QAClC,oEAAoE;QACpE,sCAAsC;QACtC,0CAA0C;QAE1C,IAAI,OAAO,GAAG,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC;QAC9C,IAAI,OAAO,GAAG,OAAO,GAAG,CAAC,CAAC;QAC1B,IAAI,SAAS,GAAG,IAAI,CAAC,qBAAqB,CAAC,MAAM,CAAC;QAClD,IAAI,SAAS,GAAG,CAAC,CAAC;QAClB,KAAK,IAAI,CAAC,GAAG,OAAO,GAAG,CAAC,EAAE,CAAC,IAAI,OAAO,EAAE,CAAC,EAAE,EAAE;YAC3C,IAAI,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC;YAC5B,SAAS,GAAG,IAAI,CAAC,qBAAqB,CAAC,MAAM,CAAC;YAC9C,IAAI,SAAS,GAAG,SAAS,EAAE;gBACzB,OAAO,GAAG,OAAO,CAAC;gBAClB,SAAS,GAAG,SAAS,CAAC;aACvB;SACF;QACD,IAAI,CAAC,mBAAmB,CAAC,OAAO,CAAC,CAAC;QAClC,8BAA8B;QAC9B,uEAAuE;QACvE,wCAAwC;QACxC,4CAA4C;QAC5C,yEAAyE;IAC3E,CAAC;IAED,mBAAmB,CAAC,UAAkB,SAAS;QAC7C,IAAI,OAAO,IAAI,SAAS,EAAE;YACxB,IAAI,CAAC,YAAY,CAAC,IAAI,GAAG,OAAO,CAAC;SAClC;QAED,IAAI,CAAC,qBAAqB,CAAC,IAAI,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC;QACzD,IAAI,CAAC,qBAAqB,CAAC,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,GAAG,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,SAAS,GAAG,IAAI,CAAC,CAAC;QAC7H,IAAI,IAAI,CAAC,qBAAqB,CAAC,GAAG,GAAG,CAAC;YAAE,IAAI,CAAC,qBAAqB,CAAC,GAAG,GAAG,CAAC,CAAC;QAC3E,gFAAgF;QAChF,IAAI,CAAC,qBAAqB,CAAC,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,SAAS,GAAG,IAAI,CAAC,qBAAqB,CAAC,GAAG,GAAG,IAAI,CAAC,WAAW,CAAC;QACxI,kDAAkD;QAClD,IAAI,CAAC,qBAAqB,CAAC,GAAG,GAAG,IAAI,CAAC,2BAA2B,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,SAAS,GAAG,IAAI,CAAC,qBAAqB,CAAC,GAAG,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,IAAI,CAAC,CAAC;QAChL,sDAAsD;QACtD,IAAI,CAAC,qBAAqB,CAAC,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,qBAAqB,CAAC,MAAM,GAAG,GAAG,GAAG,GAAG,CAAC,CAAC;QAC9F,2CAA2C;QAC3C,IAAI,CAAC,qBAAqB,CAAC,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC;QAEjF,IAAI,CAAC,mBAAmB,CAAC,IAAI,GAAG,IAAI,CAAC,qBAAqB,CAAC,IAAI;QAC/D,IAAI,CAAC,mBAAmB,CAAC,GAAG,GAAG,IAAI,CAAC,qBAAqB,CAAC,GAAG,CAAC;QAE9D,IAAI,CAAC,oBAAoB,EAAE,CAAC;IAC9B,CAAC;IAED,qBAAqB;QACnB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YAC7C,IAAI,IAAI,GAAG,IAAI,CAAC,4BAA4B,CAAC,IAAI,CAAC,WAAW,GAAG,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;YAClG,4CAA4C;YAC5C,IAAI,IAAI,GAAG,CAAC;gBAAE,IAAI,GAAG,CAAC,CAAC;YACvB,uBAAuB;YACvB,IAAI,IAAI,GAAG,IAAI,CAAC,4BAA4B,CAAC,IAAI,CAAC,WAAW,GAAG,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,SAAS,GAAG,IAAI,CAAC,CAAC;YACzG,gDAAgD;YAChD,IAAI,IAAI,GAAG,CAAC;gBAAE,IAAI,GAAG,CAAC,CAAC;YACvB,uBAAuB;YACvB,IAAI,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,SAAS,GAAG,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC;YACnE,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,GAAG,GAAG,GAAG,GAAG,CAAC,CAAC;YAC1C,2EAA2E;YAC3E,IAAI,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,SAAS,GAAG,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC;YACnE,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,GAAG,GAAG,GAAG,GAAG,CAAC,CAAC;YAC1C,2EAA2E;YAC3E,IAAI,IAAI,GAAG,IAAI,CAAC,2BAA2B,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,SAAS,GAAG,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,IAAI,CAAC,CAAC;YAC3G,2DAA2D;YAC3D,IAAI,IAAI,GAAG,IAAI,CAAC,2BAA2B,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,SAAS,GAAG,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,IAAI,CAAC,CAAC;YAC3G,2DAA2D;YAE3D,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;gBACnB,IAAI,EAAE,CAAC;gBACP,OAAO,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,OAAO;gBACjC,KAAK,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI;gBAC5B,IAAI,EAAE,IAAI;gBACV,IAAI,EAAE,IAAI;gBACV,OAAO,EAAE,OAAO;gBAChB,OAAO,EAAE,OAAO;gBAChB,KAAK,EAAE,IAAI;gBACX,KAAK,EAAE,IAAI;aACZ,CAAC,CAAC;SACJ;IACH,CAAC;IAEO,4BAA4B,CAAC,MAAc;QACjD,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC;IAC/C,CAAC;IAEO,2BAA2B,CAAC,MAAc;QAChD,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,GAAG,EAAE,CAAC;IACzD,CAAC;IAED,mBAAmB;QACjB,IACE,CAAC,IAAI,CAAC,WAAW;YACjB,CAAC,IAAI,CAAC,WAAW;YACjB,CAAC,IAAI,CAAC,UAAU;YAChB,CAAC,IAAI,CAAC,WAAW,EACjB;YACA,IAAI,OAAO,GAAG,yBAAyB;YACvC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;gBACrB,OAAO,IAAI,iBAAiB,GAAG,IAAI,CAAC,WAAW,CAAC;aACjD;YAED,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;gBACrB,OAAO,IAAI,iBAAiB,GAAG,IAAI,CAAC,WAAW,CAAC;aACjD;YAED,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;gBACpB,OAAO,IAAI,iBAAiB,GAAG,IAAI,CAAC,UAAU,CAAC;aAChD;YAED,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;gBACrB,OAAO,IAAI,mBAAmB,GAAG,IAAI,CAAC,WAAW,CAAC;aACnD;YAED,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;SACtB;IACH,CAAC;IAED,oBAAoB;QAClB,IAAI,CAAC,uBAAuB,CAAC,IAAI,EAAE,CAAC;IACtC,CAAC;CACF;AA3QW;IAAT,4DAAM,EAAE;;qFAA8C;AAE9C;IAAR,2DAAK,EAAE;8BAAsB,6DAAqB;iFAAC;AAC3C;IAAR,2DAAK,EAAE;;yEAAiC;AAChC;IAAR,2DAAK,EAAE;;kFAA2B;AAC1B;IAAR,2DAAK,EAAE;;yEAAwC;AACvC;IAAR,2DAAK,EAAE;;yEAAwC;AACvC;IAAR,2DAAK,EAAE;;wEAAoB;AARjB,oCAAoC;IALhD,+DAAS,CAAC;QACT,QAAQ,EAAE,4CAA4C;QACtD,2RAA6D;KAE9D,CAAC;;GACW,oCAAoC,CA4QhD;AA5QgD;;;;;;;;;;;;;;;;;;;;AChBQ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACAwD;AAEhF;AAKhB;AACmE;AACyD;AACxE;AAOrE,IAAa,yBAAyB,GAAtC,MAAa,yBAAyB;IA6DpC,YACU,kBAA+C;QAA/C,uBAAkB,GAAlB,kBAAkB,CAA6B;QAxD/C,2BAAsB,GAAG,IAAI,0DAAY,EAAE,CAAC;QAC5C,yBAAoB,GAAG,IAAI,0DAAY,EAAE,CAAC;QAQpD,oBAAe,GAAG,qDAAc,CAAC;QACjC,kBAAa,GAAG,yDAAkB,CAAC;QACnC,cAAS,GAAG,4DAAqB,CAAC;QAIlC,mBAAc,GAAG,KAAK,CAAC;QACvB,oBAAe,GAAG,KAAK,CAAC;QACxB,uBAAkB,GAAG,KAAK,CAAC;QAE3B,gBAAW,GAAY,KAAK,CAAC;QAC7B,sBAAiB,GAAY,KAAK,CAAC;QACnC,gBAAW,GAAG,6DAAsB,CAAC;QAErC,iBAAY,GAAG;YACb,EAAE,MAAM,EAAE,QAAQ,EAAE,UAAU,EAAE,qDAAc,CAAC,OAAO,GAAG;YACzD,EAAE,MAAM,EAAE,WAAW,EAAE,UAAU,EAAE,qDAAc,CAAC,YAAY,EAAE,SAAS,EAAE,eAAe,EAAE;YAC5F,EAAE,MAAM,EAAE,uBAAuB,EAAE,UAAU,EAAE,qDAAc,CAAC,cAAc,EAAE,SAAS,EAAE,gBAAgB,EAAE;YAC3G,EAAE,MAAM,EAAE,yBAAyB,EAAE,UAAU,EAAE,qDAAc,CAAC,aAAa,EAAE,SAAS,EAAE,UAAU,EAAE;YACtG,EAAE,MAAM,EAAE,KAAK,EAAE,UAAU,EAAE,qDAAc,CAAC,IAAI,EAAE,SAAS,EAAE,UAAU,EAAE;SAC1E;QAgBO,kBAAa,GAAW,oBAAoB,CAAC;QAC7C,qBAAgB,GAAW,uBAAuB,CAAC;QACnD,uBAAkB,GAAa,CAAC,mBAAmB,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,iBAAiB,CAAC,CAAC;QACtJ,wBAAmB,GAAW,CAAC,CAAC;QAChC,2BAAsB,GAAW,CAAC,CAAC;QACnC,6BAAwB,GAAW,CAAC,CAAC;QACrC,gBAAW,GAAW,IAAI,CAAC;QAC3B,YAAO,GAAa,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAK/B,CAAC;IA1BL,IAAI,aAAa;QACf,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;IACvE,CAAC;IAED,IAAI,aAAa;QACf,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;IACvE,CAAC;IAsBD,QAAQ;QACN,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;QACtD,IAAI,CAAC,gBAAgB,EAAE,CAAC;QACxB,IAAI,CAAC,aAAa,GAAG,EAAE,CAAC;QACxB,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,+DAAoB,CAAC,EAAE;YAC/D,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;SAC/D;QAED,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC,kBAAkB,CAAC,oBAAoB,CAAC,SAAS,CAAC,CAAC,IAAI,EAAE,EAAE;YACzF,IAAI,CAAC,eAAe,GAAG,EAAE,CAAC;YAC1B,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE;gBAChB,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,EAAE,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC;YAChE,CAAC,CAAC,CAAC;YACH,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC;YAC7B,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC;QAC9B,CAAC,CAAC,CAAC;QAEH,IAAI,IAAI,CAAC,WAAW,IAAI,yDAAkB,CAAC,gBAAgB,EAAE;YAC3D,IAAI,CAAC,QAAQ,GAAI,IAAI,CAAC,oBAAiD,CAAC,QAAQ,CAAC;YACjF,IAAI,CAAC,QAAQ,GAAI,IAAI,CAAC,oBAAiD,CAAC,QAAQ,CAAC;YACjF,IAAI,CAAC,YAAY,GAAG,EAAE,CAAC;SACxB;aAAM,IAAI,IAAI,CAAC,WAAW,IAAI,yDAAkB,CAAC,eAAe,EAAE;YACjE,IAAI,CAAC,QAAQ,GAAI,IAAI,CAAC,oBAA0C,CAAC,cAAc,CAAC;YAChF,IAAI,CAAC,QAAQ,GAAI,IAAI,CAAC,oBAA0C,CAAC,cAAc,CAAC;YAChF,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;SAC1B;QACD,IAAI,IAAI,CAAC,oBAAoB,CAAC,WAAW,CAAC,MAAM,IAAI,CAAC,EAAE;YACrD,IAAI,CAAC,OAAO,GAAG,CAAC,CAAC;YACjB,IAAI,CAAC,oBAAoB,CAAC,KAAK,GAAG,0DAAmB,CAAC,MAAM,CAAC,IAAG;YAChE,IAAI,CAAC,oBAAoB,CAAC,aAAa,GAAG,GAAG,CAAC;YAC9C,IAAI,CAAC,oBAAoB,CAAC,UAAU,GAAG,CAAC,CAAC;YACzC,IAAI,CAAC,+CAA+C,EAAE,CAAC;SACxD;aACI;YACH,IAAI,CAAC,+BAA+B,EAAE,CAAC;YACvC,IAAI,CAAC,aAAa,EAAE,CAAC;YACrB,IAAI,CAAC,4BAA4B,EAAE,CAAC;SACrC;IACH,CAAC;IAED,WAAW;QACT,IAAI,CAAC,mBAAmB,CAAC,WAAW,EAAE,CAAC;IACzC,CAAC;IAED,gBAAgB,CAAC,OAAY,EAAE,OAAuH;QACpJ,OAAO,CAAC,aAAa,GAAG,OAAO,CAAC,aAAa,GAAG,CAAC,CAAC;QAClD,IAAI,OAAO,CAAC,aAAa,IAAI,CAAC,IAAI,OAAO,CAAC,aAAa,IAAI,EAAE,EAAE;YAC7D,OAAO,CAAC,QAAQ,GAAG,OAAO,CAAC,aAAa,CAAC;YACzC,IAAI,KAAK,GAAG,IAAI,CAAC,oBAAoB,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,IAAI,OAAO,CAAC,WAAW,CAAC,CAAC;YACvG,IAAI,KAAK,IAAI,CAAC,CAAC,EAAE;gBACf,IAAI,CAAC,oBAAoB,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,WAAW,EAAE,OAAO,CAAC,WAAW,EAAE,QAAQ,EAAE,OAAO,CAAC,QAAQ,EAAE,WAAW,EAAE,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;aAC9J;iBACI;gBACH,IAAI,CAAC,oBAAoB,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,QAAQ,GAAG,OAAO,CAAC,aAAa,CAAC;aAC/E;YACD,OAAO,CAAC,cAAc,GAAG,IAAI,CAAC,uBAAuB,CAAC,OAAO,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC;YAC9F,IAAI,CAAC,OAAO,GAAG,CAAC,CAAC;YACjB,IAAI,CAAC,oBAAoB,CAAC,KAAK,GAAG,0DAAmB,CAAC,MAAM,CAAC,IAAG;YAChE,IAAI,CAAC,oBAAoB,EAAE,CAAC;YAC5B,IAAI,CAAC,UAAU,EAAE,CAAC;YAClB,IAAI,CAAC,kBAAkB,EAAE;YACzB,IAAI,CAAC,6BAA6B,EAAE,CAAC;YACrC,IAAI,CAAC,sBAAsB,CAAC,IAAI,EAAE,CAAC;SACpC;aACI;YACH,OAAO,CAAC,KAAK,GAAG,OAAO,CAAC,QAAQ,CAAC;SAClC;IACH,CAAC;IAED,qBAAqB,CAAC,mBAAmB;QACvC,IAAI,mBAAmB,CAAC,aAAa,IAAI,GAAG,IAAI,mBAAmB,CAAC,aAAa,IAAI,GAAG,EAAE;YACxF,IAAI,CAAC,oBAAoB,CAAC,aAAa,GAAG,mBAAmB,CAAC,aAAa,CAAC;YAC5E,IAAI,CAAC,oBAAoB,EAAE,CAAC;YAC5B,IAAI,CAAC,UAAU,EAAE,CAAC;YAClB,IAAI,CAAC,kBAAkB,EAAE,CAAC;YAC1B,IAAI,CAAC,6BAA6B,EAAE;YACpC,IAAI,CAAC,sBAAsB,CAAC,IAAI,EAAE,CAAC;SACpC;aACI;YACH,mBAAmB,CAAC,KAAK,GAAG,IAAI,CAAC,oBAAoB,CAAC,aAAa,CAAC;SACrE;IACH,CAAC;IAED,kBAAkB,CAAC,cAAc;QAC/B,cAAc,CAAC,aAAa,GAAG,cAAc,CAAC,aAAa,GAAG,CAAC,CAAC;QAChE,IAAI,cAAc,CAAC,aAAa,IAAI,CAAC,IAAI,cAAc,CAAC,aAAa,IAAI,EAAE,EAAE;YAC3E,IAAI,CAAC,oBAAoB,CAAC,UAAU,GAAG,cAAc,CAAC,aAAa,CAAC;YACpE,IAAI,CAAC,oBAAoB,EAAE,CAAC;YAC5B,IAAI,CAAC,UAAU,EAAE,CAAC;YAClB,IAAI,CAAC,kBAAkB,EAAE,CAAC;YAC1B,IAAI,CAAC,6BAA6B,EAAE;YACpC,IAAI,CAAC,sBAAsB,CAAC,IAAI,EAAE,CAAC;SACpC;aACI;YACH,cAAc,CAAC,KAAK,GAAG,IAAI,CAAC,oBAAoB,CAAC,UAAU,CAAC;SAC7D;IACH,CAAC;IAED,aAAa;QACX,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,oBAAoB,CAAC,KAAK,IAAI,0DAAmB,CAAC,MAAM,IAAI,IAAI,CAAC,oBAAoB,CAAC,KAAK,IAAI,0DAAmB,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACxJ,IAAI,CAAC,kBAAkB,EAAE,CAAC;QAC1B,IAAI,CAAC,yBAAyB,EAAE,CAAC;QACjC,IAAI,CAAC,oBAAoB,EAAE,CAAC;QAC5B,IAAI,CAAC,UAAU,EAAE,CAAC;QAClB,IAAI,CAAC,sBAAsB,CAAC,IAAI,EAAE,CAAC;IACrC,CAAC;IAED,kBAAkB,CAAC,iBAAiB;QAClC,iBAAiB,CAAC,aAAa,GAAG,iBAAiB,CAAC,aAAa,GAAG,CAAC,CAAC;QACtE,IAAI,iBAAiB,CAAC,aAAa,GAAG,CAAC,IAAI,iBAAiB,CAAC,aAAa,GAAG,IAAI,CAAC,YAAY,EAAE;YAC9F,IAAI,CAAC,oBAAoB,CAAC,UAAU,GAAG,iBAAiB,CAAC,aAAa,CAAC;YACvE,IAAI,CAAC,oBAAoB,EAAE,CAAC;YAC5B,IAAI,CAAC,UAAU,EAAE,CAAC;YAClB,IAAI,CAAC,sBAAsB,CAAC,IAAI,EAAE,CAAC;SACpC;aACI;YACH,iBAAiB,CAAC,KAAK,GAAG,IAAI,CAAC,oBAAoB,CAAC,UAAU,CAAC;SAChE;IACH,CAAC;IAED,aAAa;QACX,IAAI,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,IAAI,IAAI,CAAC,oBAAoB,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC;QAC/H,IAAI,KAAK,IAAI,CAAC,CAAC,EAAE;YACf,IAAI,UAAU,GAAG,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,IAAI,IAAI,CAAC,oBAAoB,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC;YAC5G,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,KAAK,EAAE,EAAE;gBAC9C,IAAI,KAAK,GAAG,UAAU,EAAE;oBACtB,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC,aAAa,CAAC;oBACzC,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC,mBAAmB,CAAC;iBAChD;YACH,CAAC,CAAC,CAAC;YACH,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,WAAW,GAAG,IAAI,CAAC,gBAAgB,CAAC;YACpE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,WAAW,GAAG,IAAI,CAAC,sBAAsB,CAAC;YAC1E,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;SACrB;QACD,IAAI,CAAC,gBAAgB,EAAE,CAAC;QACxB,IAAI,CAAC,sBAAsB,CAAC,IAAI,EAAE,CAAC;IACrC,CAAC;IAED,eAAe;QACb,IAAI,CAAC,oBAAoB,EAAE,CAAC;QAC5B,IAAI,CAAC,UAAU,EAAE,CAAC;QAClB,IAAI,CAAC,sBAAsB,CAAC,IAAI,EAAE,CAAC;IACrC,CAAC;IAED,aAAa;QACX,IAAI,CAAC,UAAU,EAAE,CAAC;QAClB,IAAI,cAAc,GAAG,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,IAAI,IAAI,CAAC,oBAAoB,CAAC,OAAO,CAAC,CAAC;QACpG,IAAI,aAAa,GAAG,IAAI,CAAC,gCAAgC,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;QAC/E,IAAI,kBAAkB,GAAG;YACvB,iBAAiB,EAAE,CAAC,QAAQ,EAAE,EAAE;gBAC9B,IAAI,SAAS,GAAa,CAAC,CAAC,CAAC,CAAC;gBAC9B,IAAI,CAAS,CAAC;gBACd,IAAI,CAAS,CAAC;gBACd,IAAI,QAAQ,GAAG,EAAE,CAAC;gBAClB,IAAI,GAAG,GAAG,QAAQ,CAAC,KAAK,CAAC,GAA+B,CAAC;gBACzD,GAAG,CAAC,IAAI,GAAG,GAAG,QAAQ,UAAU,CAAC;gBACjC,GAAG,CAAC,SAAS,GAAG,OAAO,CAAC;gBACxB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,cAAc,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;oBACnD,IAAI,IAAI,GAAG,QAAQ,CAAC,cAAc,CAAC,CAAC,CAAC;oBACrC,IAAI,UAAU,GAAY,KAAK,CAAC;oBAChC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;wBACzC,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;wBAC1B,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;wBAC1B,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;4BACvB,IAAI,IAAI,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE;gCAC3B,UAAU,GAAG,IAAI,CAAC;6BACnB;wBACH,CAAC,CAAC,CAAC;wBACH,IAAI,UAAU,EAAE;4BACd,UAAU,GAAG,KAAK,CAAC;yBACpB;6BAAM;4BACL,MAAM;yBACP;qBACF;oBAED,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC;oBACrB,IAAI,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,IAAI,CAAC,oBAAoB,CAAC,WAAW,CAAC,KAAK,EAAE;wBAC5E,IAAI,CAAC,GAAG,CAAC,WAAW,GAAG,IAAI,CAAC,gBAAgB,CAAC;wBAC7C,IAAI,CAAC,GAAG,CAAC,SAAS,GAAG,IAAI,CAAC,sBAAsB,CAAC;qBAClD;oBACD,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;oBAC7C,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC;oBAClB,IAAI,CAAC,GAAG,CAAC,WAAW,GAAG,IAAI,CAAC,aAAa,CAAC;oBAC1C,IAAI,CAAC,GAAG,CAAC,SAAS,GAAG,IAAI,CAAC,mBAAmB,CAAC;oBAC9C,GAAG,CAAC,IAAI,EAAE,CAAC;oBACX,GAAG,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;oBACxB,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,GAAG,CAAC,CAAC,CAAC;oBAClC,GAAG,CAAC,QAAQ,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;oBAChD,GAAG,CAAC,OAAO,EAAE,CAAC;oBACd,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;iBACnB;gBAED,IAAI,IAAI,GAAG,IAAI,CAAC,oBAAoB,CAAC,OAAO,IAAI,4DAAqB,CAAC,iBAAiB,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC;gBAC5G,CAAC,GAAG,QAAQ,CAAC,KAAK,GAAG,CAAC,CAAC;gBACvB,CAAC,GAAG,QAAQ,CAAC,MAAM,GAAG,EAAE,CAAC;gBACzB,GAAG,CAAC,SAAS,EAAE,CAAC;gBAChB,CAAC,IAAI,QAAQ,GAAG,CAAC,CAAC;gBAClB,GAAG,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;gBACjB,CAAC,IAAI,EAAE,CAAC;gBACR,GAAG,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;gBACtB,GAAG,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;gBACjB,GAAG,CAAC,QAAQ,CAAC,8DAAmB,CAAC,IAAI,CAAC,oBAAoB,CAAC,OAAO,CAAC,CAAC,QAAQ,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;gBACpF,GAAG,CAAC,MAAM,EAAE,CAAC;gBACb,IAAI,IAAI,CAAC,oBAAoB,CAAC,OAAO,IAAI,4DAAqB,CAAC,iBAAiB,EAAE;oBAChF,GAAG,CAAC,SAAS,EAAE,CAAC;oBAChB,CAAC,GAAG,QAAQ,CAAC,KAAK,GAAG,CAAC,GAAG,EAAE,CAAC;oBAC5B,GAAG,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;oBACjB,CAAC,IAAI,EAAE,CAAC;oBACR,GAAG,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;oBACpB,GAAG,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;oBACjB,GAAG,CAAC,QAAQ,CAAC,8DAAmB,CAAC,IAAI,CAAC,oBAAoB,CAAC,OAAO,CAAC,CAAC,SAAS,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;oBACrF,GAAG,CAAC,MAAM,EAAE,CAAC;iBACd;YACH,CAAC;SACF,CAAC;QAEF,IAAI,CAAC,KAAK,GAAG,IAAI,8CAAK,CAAC,IAAI,CAAC,GAAG,EAAE;YAC/B,IAAI,EAAE,SAAS;YACf,IAAI,EAAE,aAAa,CAAC,IAAI;YACxB,OAAO,EAAE,CAAC,kBAAkB,CAAC;YAC7B,OAAO,EAAE;gBACP,MAAM,EAAE;oBACN,OAAO,EAAE;wBACP,MAAM,EAAE,EAAE;qBACX;iBACF;gBACD,UAAU,EAAE,IAAI;gBAChB,MAAM,EAAE;oBACN,KAAK,EAAE,CAAC;4BACN,KAAK,EAAE;gCACL,GAAG,EAAE,aAAa,CAAC,IAAI;gCACvB,GAAG,EAAE,CAAC;gCACN,QAAQ,EAAE,CAAC;6BACZ;4BACD,UAAU,EAAE;gCACV,OAAO,EAAE,IAAI;gCACb,WAAW,EAAE,+BAA+B;6BAC7C;yBACF,CAAC;oBACF,KAAK,EAAE,CAAC;4BACN,KAAK,EAAE;gCACL,GAAG,EAAE,aAAa,CAAC,IAAI;gCACvB,GAAG,EAAE,CAAC;gCACN,QAAQ,EAAE,CAAC;6BACZ;4BACD,UAAU,EAAE;gCACV,OAAO,EAAE,IAAI;gCACb,WAAW,EAAE,iBAAiB;6BAC/B;yBACF,CAAC;iBACH;gBACD,QAAQ,EAAE;oBACR,KAAK,EAAE;wBACL,MAAM,EAAE,CAAC;qBACV;iBACF;gBACD,MAAM,EAAE;oBACN,MAAM,EAAE;wBACN,MAAM,EAAE,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE;4BACtB,OAAO,IAAI,CAAC,IAAI,IAAI,SAAS,CAAC;wBAChC,CAAC;qBACF;iBACF;gBACD,QAAQ,EAAE;oBACR,OAAO,EAAE,KAAK;iBACf;gBACD,KAAK,EAAE;oBACL,IAAI,EAAE,IAAI;iBACX;aACF;SACF,CAAC,CAAC;QACH,IAAI,CAAC,gCAAgC,EAAE,CAAC;IAC1C,CAAC;IAED,4BAA4B;QAC1B,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,IAAI,IAAI,CAAC,EAAE;YAC7E,IAAI,IAAI,CAAC,iBAAiB,CAAC,aAAa,IAAI,6DAAsB,CAAC,UAAU,EAAE;gBAC7E,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;gBACzB,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC;aAC/B;iBAAM,IAAI,IAAI,CAAC,iBAAiB,CAAC,aAAa,IAAI,6DAAsB,CAAC,IAAI,EAAE;gBAC9E,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;gBACxB,IAAI,CAAC,iBAAiB,GAAG,KAAK,CAAC;aAChC;YACD,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC;SAChC;IACH,CAAC;IAED,cAAc;QACZ,IAAI,IAAI,CAAC,oBAAoB,CAAC,OAAO,IAAI,4DAAqB,CAAC,eAAe,EAAE;YAC9E,OAAO,KAAK,CAAC;SACd;QAED,IAAI,IAAI,CAAC,oBAAoB,CAAC,KAAK,IAAI,0DAAmB,CAAC,QAAQ,IAAI,IAAI,CAAC,oBAAoB,CAAC,KAAK,IAAI,0DAAmB,CAAC,QAAQ,EAAE;YACtI,OAAO,KAAK,CAAC;SACd;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,oBAAoB;QAClB,IAAI,UAAU,GAAG,IAAI,CAAC,oBAAoB,CAAC,UAAU,CAAC;QACtD,OAAO,CAAC,UAAU,IAAI,CAAC,IAAI,UAAU,IAAI,CAAC,IAAI,UAAU,IAAI,CAAC,IAAI,UAAU,IAAI,CAAC,CAAC,IAAK,IAAI,CAAC,oBAAiD,CAAC,WAAW,IAAI,CAAC,CAAC;IAChK,CAAC;IAED,kBAAkB;QAChB,IAAI,CAAC,oBAAoB,CAAC,IAAI,EAAE,CAAC;IACnC,CAAC;IAED,uBAAuB,CAAC,MAA8B;QACpD,QAAQ,MAAM,EAAE;YACd,KAAK,6DAAsB,CAAC,UAAU;gBACpC,IAAI,IAAI,CAAC,iBAAiB,CAAC,aAAa,IAAI,6DAAsB,CAAC,UAAU,EAAE;oBAC7E,IAAI,CAAC,iBAAiB,CAAC,aAAa,GAAG,6DAAsB,CAAC,IAAI,CAAC;iBACpE;qBACI,IAAI,IAAI,CAAC,iBAAiB,CAAC,aAAa,IAAI,6DAAsB,CAAC,IAAI,EAAE;oBAC5E,IAAI,CAAC,iBAAiB,CAAC,aAAa,GAAG,6DAAsB,CAAC,UAAU,CAAC;iBAC1E;qBACI;oBACH,IAAI,CAAC,iBAAiB,CAAC,aAAa,GAAG,6DAAsB,CAAC,UAAU,CAAC;oBACzE,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;iBAC1B;gBACD,MAAM;YACR;gBACE,IAAI,IAAI,CAAC,WAAW,IAAI,yDAAkB,CAAC,eAAe,IAAI,CAAC,IAAI,CAAC,oBAAoB,EAAE,EAAE;oBAC1F,IAAI,IAAI,CAAC,iBAAiB,CAAC,aAAa,IAAI,6DAAsB,CAAC,IAAI,EAAE;wBACvE,IAAI,CAAC,iBAAiB,CAAC,aAAa,GAAG,6DAAsB,CAAC,IAAI,CAAC;qBACpE;yBACI;wBACH,IAAI,CAAC,iBAAiB,CAAC,aAAa,GAAG,6DAAsB,CAAC,IAAI,CAAC;qBACpE;iBACF;qBACI;oBACH,IAAI,IAAI,CAAC,iBAAiB,CAAC,aAAa,IAAI,6DAAsB,CAAC,IAAI,EAAE;wBACvE,IAAI,CAAC,iBAAiB,CAAC,aAAa,GAAG,6DAAsB,CAAC,IAAI,CAAC;qBACpE;yBACI,IAAI,IAAI,CAAC,iBAAiB,CAAC,aAAa,IAAI,6DAAsB,CAAC,IAAI,EAAE;wBAC5E,IAAI,CAAC,iBAAiB,CAAC,aAAa,GAAG,6DAAsB,CAAC,IAAI,CAAC;qBACpE;yBACI;wBACH,IAAI,CAAC,iBAAiB,CAAC,aAAa,GAAG,6DAAsB,CAAC,IAAI,CAAC;wBACnE,IAAI,CAAC,iBAAiB,GAAG,KAAK,CAAC;qBAChC;iBACF;gBACD,MAAM;SACT;QACD,IAAI,CAAC,kBAAkB,EAAE,CAAC;IAC5B,CAAC;IAEO,+BAA+B;QACrC,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,oBAAoB,CAAC,KAAK,IAAI,0DAAmB,CAAC,MAAM,IAAI,IAAI,CAAC,oBAAoB,CAAC,KAAK,IAAI,0DAAmB,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACxJ,IAAI,CAAC,iBAAiB,GAAG,EAAE,CAAC;QAC5B,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;YAC9B,IAAI,QAAgB,CAAC;YACrB,IAAI,QAAgB,CAAC;YACrB,IAAI,KAAK,GAAG,IAAI,CAAC,oBAAoB,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,IAAI,IAAI,CAAC,EAAE,CAAC,CAAC;YAC3F,IAAI,KAAK,IAAI,CAAC,CAAC,EAAE;gBACf,QAAQ,GAAG,EAAE,CAAC;gBACd,QAAQ,GAAG,IAAI,CAAC;gBAChB,IAAI,CAAC,oBAAoB,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,WAAW,EAAE,IAAI,CAAC,EAAE,EAAE,QAAQ,EAAE,QAAQ,EAAE,WAAW,EAAE,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;aAC1I;iBAAM;gBACL,QAAQ,GAAG,IAAI,CAAC,oBAAoB,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC;gBACjE,IAAI,IAAI,CAAC,oBAAoB,CAAC,WAAW,CAAC,KAAK,IAAI,IAAI,IAAI,IAAI,CAAC,oBAAoB,CAAC,WAAW,CAAC,KAAK,IAAI,SAAS,EAAE;oBACnH,QAAQ,GAAG,IAAI,CAAC;iBACjB;qBAAM;oBACL,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,oBAAoB,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,WAAW,GAAG,EAAE,CAAC,GAAG,EAAE,CAAC;iBAC3F;aACF;YACD,IAAI,cAAc,GAAG,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,QAAQ,CAAC,CAAC;YAC9E,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,EAAE,WAAW,EAAE,IAAI,CAAC,EAAE,EAAE,aAAa,EAAE,IAAI,CAAC,IAAI,EAAE,cAAc,EAAE,cAAc,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,EAAE,IAAI,CAAC,EAAE,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC,CAAC;QAClL,CAAC,CAAC,CAAC;IACL,CAAC;IAEO,+CAA+C;QACrD,IAAI,CAAC,iBAAiB,GAAG,EAAE,CAAC;QAC5B,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;YAC9B,IAAI,QAAQ,GAAG,EAAE,CAAC;YAClB,IAAI,cAAc,GAAG,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,QAAQ,CAAC,CAAC;YAC9E,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,EAAE,WAAW,EAAE,IAAI,CAAC,EAAE,EAAE,aAAa,EAAE,IAAI,CAAC,IAAI,EAAE,cAAc,EAAE,cAAc,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,EAAE,IAAI,CAAC,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;YAC5K,IAAI,CAAC,oBAAoB,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,WAAW,EAAE,IAAI,CAAC,EAAE,EAAE,QAAQ,EAAE,QAAQ,EAAE,WAAW,EAAE,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;QAC3I,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,6BAA6B,EAAE,CAAC;QACrC,IAAI,CAAC,yBAAyB,EAAE,CAAC;IACnC,CAAC;IAEO,uBAAuB,CAAC,CAAS,EAAE,CAAS,EAAE,QAAgB;QACpE,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,GAAG,QAAQ,GAAG,KAAK,EAAE,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,GAAG,QAAQ,GAAG,KAAK,CAAC,CAAC,GAAG,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,oBAAoB,CAAC,aAAa,GAAG,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,oBAAoB,CAAC,UAAU,GAAG,IAAI,GAAG,GAAG,CAAC,GAAG,IAAI,CAAC;QAC3Q,iKAAiK;IACnK,CAAC;IAEO,6BAA6B;QACnC,IAAI,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,cAAc,GAAG,EAAE,CAAC,EAAE;YAC3D,IAAI,CAAC,OAAO,GAAG,CAAC,CAAC;YACjB,IAAI,CAAC,oBAAoB,CAAC,KAAK,GAAG,0DAAmB,CAAC,MAAM,CAAC,IAAG;YAChE,IAAI,CAAC,kBAAkB,EAAE,CAAC;YAC1B,IAAI,CAAC,yBAAyB,EAAE,CAAC;SAClC;IAEH,CAAC;IAEO,kBAAkB;QACxB,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;YACpC,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;QACpF,CAAC,CAAC,CAAC;IACL,CAAC;IAEO,yBAAyB;QAC/B,IAAI,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC;QAChF,IAAI,CAAC,oBAAoB,CAAC,OAAO,GAAG,UAAU,IAAI,CAAC,CAAC,CAAC,CAAC,4DAAqB,CAAC,KAAK,CAAC,CAAC,CAAC,4DAAqB,CAAC,eAAe,CAAC;QAC1H,IAAI,IAAI,CAAC,WAAW,IAAI,yDAAkB,CAAC,gBAAgB,EAAE;YAC3D,IAAI,OAAO,GAAG,IAAI,CAAC,oBAAgD,CAAC;YACpE,IAAI,CAAC,oBAAoB,CAAC,UAAU,GAAG,OAAO,CAAC,WAAW,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,UAAU,GAAG,GAAG,CAAC,CAAC;SAC3I;aACI;YACH,IAAI,OAAO,GAAG,IAAI,CAAC,oBAAyC,CAAC;YAC7D,IAAI,CAAC,oBAAoB,CAAC,UAAU,GAAG,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,OAAO,CAAC,MAAM,GAAG,OAAO,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;YAClG,yCAAyC;YACzC,4CAA4C;YAC5C,IAAI,IAAI,CAAC,oBAAoB,CAAC,UAAU,IAAI,CAAC;gBAAE,IAAI,CAAC,oBAAoB,CAAC,UAAU,GAAG,CAAC,CAAC;YACxF,yCAAyC;YACzC,IAAI,OAAO,CAAC,KAAK,GAAG,GAAG;gBAAE,IAAI,CAAC,oBAAoB,CAAC,UAAU,IAAI,CAAC,CAAC;YACnE,sDAAsD;SACvD;IACH,CAAC;IAEO,gCAAgC;QACtC,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;QAC3B,IAAI,CAAC,WAAW,GAAG,EAAE,CAAC;QACtB,IAAI,IAAI,GAAG,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,IAAI,IAAI,CAAC,oBAAoB,CAAC,OAAO,CAAC,CAAC;QAC1F,IAAI,IAAI,KAAK,SAAS,EAAE;YACtB,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,OAAO,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC,SAAS,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,EAAE,SAAS,EAAE,CAAC,CAAC,SAAS,EAAE,EAAE,EAAC,CAAC,CAAC,CAAC;SAC1J;IACH,CAAC;IAEO,gCAAgC,CAAC,IAA8B;QACrE,IAAI,IAAI,GAAG,CAAC,CAAC;QACb,IAAI,IAAI,GAAG,CAAC,CAAC;QACb,IAAI,QAAQ,GAAU,EAAE,CAAC;QACzB,IAAI,cAAc,GAAG,IAAI,CAAC,oBAAoB,CAAC,OAAO,IAAI,4DAAqB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC9F,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;YAClB,IAAI,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YACnD,IAAI,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,cAAc,CAAC,CAAC,CAAC;YACpE,IAAI,IAAI,GAAG,EAAE;gBAAE,IAAI,GAAG,EAAE,CAAC;YACzB,IAAI,IAAI,GAAG,EAAE;gBAAE,IAAI,GAAG,EAAE,CAAC;YACzB,IAAI,UAAU,GAAG,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAClD,IAAI,WAAW,GAAG,IAAI,CAAC,oBAAoB,CAAC,WAAW,IAAI,IAAI,IAAI,IAAI,CAAC,oBAAoB,CAAC,WAAW,CAAC,KAAK,IAAI,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC;YACvK,IAAI,MAAM,GAAG,IAAI,CAAC,oBAAoB,CAAC,WAAW,IAAI,IAAI,IAAI,IAAI,CAAC,oBAAoB,CAAC,WAAW,CAAC,KAAK,IAAI,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC,CAAC,IAAI,CAAC,mBAAmB,CAAC;YAC9K,QAAQ,CAAC,IAAI,CAAC;gBACZ,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,GAAG,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,cAAc,EAAE,EAAC,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,WAAW,EAAE,WAAW,EAAE,QAAQ,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,EAAE,UAAU,EAAE,UAAU;aACpL,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,IAAI,GAAG,IAAI,GAAG,CAAC,CAAC;QAChB,IAAI,GAAG,IAAI,GAAG,CAAC,CAAC;QAChB,IAAI,IAAI,CAAC,CAAC;QACV,IAAI,IAAI,CAAC,CAAC;QACV,IAAI,IAAI,GAAG,EAAE;YAAE,IAAI,GAAG,EAAE,CAAC;QACzB,IAAI,IAAI,GAAG,EAAE;YAAE,IAAI,GAAG,EAAE,CAAC;QACzB,QAAQ,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,sBAAsB,EAAE,CAAC,CAAC;QAChD,IAAI,aAAa,GAAG;YAClB,IAAI,EAAE;gBACJ,QAAQ,EAAE,QAAQ;aACnB;YACD,IAAI,EAAE,IAAI;YACV,IAAI,EAAE,IAAI;SACX;QACD,OAAO,aAAa,CAAC;IACvB,CAAC;IAEO,gBAAgB,CAAC,OAAe;QACtC,IAAI,aAAa,GAAG,UAAU,CAAC,OAAO,CAAC,CAAC;QACxC,QAAQ,IAAI,CAAC,oBAAoB,CAAC,OAAO,EAAE;YACzC,KAAK,4DAAqB,CAAC,KAAK;gBAC9B,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,IAAI,CAAC,aAAa,IAAI,OAAO,IAAI,aAAa,IAAI,MAAM,CAAC,EAAE;oBAClF,OAAO,IAAI,CAAC,OAAO,CAAC;iBACrB;gBACD,MAAM;YACR,KAAK,4DAAqB,CAAC,eAAe;gBACxC,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,IAAI,aAAa,GAAG,IAAI,EAAE;oBACjD,OAAO,IAAI,CAAC,OAAO,CAAC;iBACrB;YACH,KAAK,4DAAqB,CAAC,iBAAiB,CAAC;YAC7C,KAAK,4DAAqB,CAAC,eAAe;gBACxC,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,IAAI,CAAC,aAAa,IAAI,IAAI,IAAI,aAAa,IAAI,IAAI,CAAC,EAAE;oBAC7E,OAAO,IAAI,CAAC,OAAO,CAAC;iBACrB;gBACD,MAAM;SACT;QACD,OAAO,EAAE,CAAC;IACZ,CAAC;IAEO,sBAAsB;QAC5B,IAAI,QAAQ,GAAU,EAAE,CAAC;QACzB,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE;YACvC,IAAI,KAAK,GAA+B,EAAE,CAAC;YAC3C,IAAI,EAAU,CAAC;YACf,IAAI,EAAU,CAAC;YACf,IAAI,EAAU,CAAC;YACf,IAAI,EAAU,CAAC;YACf,IAAI,kBAAkB,GAAG,CAAC,CAAC;YAC3B,EAAE,GAAG,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;YACxD,EAAE,GAAG,IAAI,CAAC,uBAAuB,CAAC,EAAE,CAAC,CAAC;YACtC,EAAE,GAAG,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;YACxD,EAAE,GAAG,IAAI,CAAC,uBAAuB,CAAC,EAAE,CAAC,CAAC;YACtC,IAAI,EAAE,IAAI,QAAQ,IAAI,EAAE,IAAI,QAAQ,IAAI,EAAE,IAAI,QAAQ,IAAI,EAAE,IAAI,QAAQ,EAAE;gBACxE,EAAE,GAAG,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;gBACvD,EAAE,GAAG,IAAI,CAAC,uBAAuB,CAAC,CAAC,CAAC,CAAC;gBACrC,EAAE,GAAG,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC;gBACzD,EAAE,GAAG,IAAI,CAAC,uBAAuB,CAAC,GAAG,CAAC,CAAC;gBACvC,IAAI,EAAE,IAAI,QAAQ,IAAI,EAAE,IAAI,QAAQ,IAAI,EAAE,IAAI,QAAQ,IAAI,EAAE,IAAI,QAAQ,EAAE;oBACxE,EAAE,GAAG,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC;oBACzD,EAAE,GAAG,IAAI,CAAC,uBAAuB,CAAC,GAAG,CAAC,CAAC;oBACvC,EAAE,GAAG,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC;oBACzD,EAAE,GAAG,IAAI,CAAC,uBAAuB,CAAC,GAAG,CAAC,CAAC;oBACvC,IAAI,EAAE,IAAI,QAAQ,IAAI,EAAE,IAAI,QAAQ,IAAI,EAAE,IAAI,QAAQ,IAAI,EAAE,IAAI,QAAQ,EAAE;wBACxE,EAAE,GAAG,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;wBACxD,EAAE,GAAG,IAAI,CAAC,uBAAuB,CAAC,EAAE,CAAC,CAAC;wBACtC,EAAE,GAAG,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;wBACxD,EAAE,GAAG,IAAI,CAAC,uBAAuB,CAAC,EAAE,CAAC,CAAC;wBACtC,kBAAkB,GAAG,CAAC,CAAC;qBACxB;;wBACI,kBAAkB,GAAG,CAAC,CAAC;iBAC7B;;oBACI,kBAAkB,GAAG,CAAC,CAAC;aAC7B;YAED,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;YAC7B,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;YAC7B,QAAQ,kBAAkB,EAAE;gBAC1B,KAAK,CAAC;oBACJ,IAAI,CAAC,mBAAmB,CAAC,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC;gBACnE,KAAK,CAAC;oBACJ,IAAI,CAAC,mBAAmB,CAAC,KAAK,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC;gBACjE,KAAK,CAAC;oBACJ,IAAI,CAAC,mBAAmB,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC;gBAC9D,KAAK,CAAC;oBACJ,IAAI,CAAC,mBAAmB,CAAC,KAAK,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC;gBAC/D;oBACE,oEAAoE;oBACpE,IAAI,GAAG,GAAG,EAAE,CAAC;oBACb,IAAI,IAAI,GAAG,GAAG,CAAC;oBACf,GAAG;wBACD,EAAE,GAAG,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC;wBACzD,EAAE,GAAG,IAAI,CAAC,uBAAuB,CAAC,GAAG,CAAC,CAAC;wBACvC,IAAI,EAAE,KAAK,QAAQ,IAAI,EAAE,KAAK,QAAQ,EAAE;4BACtC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;yBAC9B;wBACD,GAAG,IAAI,IAAI,CAAC;wBACZ,IAAI,KAAK,CAAC,MAAM,GAAG,KAAK;4BAAE,MAAM;qBACjC,QAAQ,EAAE,GAAG,GAAG,IAAI,EAAE,GAAG,GAAG,EAAE;oBAC/B,MAAM;aACT;YACD,QAAQ,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,WAAW,EAAE,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,CAAC,wBAAwB,EAAE,CAAC;QACxK,CAAC,CAAC,CAAC;QACH,OAAO,QAAQ,CAAC;IAClB,CAAC;IAEO,uBAAuB,CAAC,CAAS,EAAE,CAAS,EAAE,WAAmB;QACvE,OAAO,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,QAAQ,GAAG,WAAW,CAAC,GAAG,KAAK,EAAE,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,QAAQ,GAAG,WAAW,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,oBAAoB,CAAC,aAAa,GAAG,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,oBAAoB,CAAC,UAAU,CAAC;QAC9O,yKAAyK;IAC3K,CAAC;IAEO,uBAAuB,CAAC,WAAmB;QACjD,OAAO,IAAI,CAAC,QAAQ,GAAG,WAAW,GAAG,IAAI,CAAC,oBAAoB,CAAC,UAAU,GAAG,IAAI,CAAC;QACjF,gEAAgE;IAClE,CAAC;IAEO,mBAAmB,CAAC,KAAK,EAAE,KAAa,EAAE,GAAW,EAAE,IAAY,EAAE,CAAS,EAAE,CAAS;QAC/F,IAAI,CAAS,CAAC;QACd,IAAI,CAAS,CAAC;QACd,KAAK,IAAI,CAAC,GAAG,KAAK,EAAE,CAAC,IAAI,GAAG,EAAE,CAAC,IAAI,IAAI,EAAE;YACvC,CAAC,GAAG,IAAI,CAAC,uBAAuB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;YAC1C,CAAC,GAAG,IAAI,CAAC,uBAAuB,CAAC,CAAC,CAAC,CAAC;YACpC,IAAI,CAAC,KAAK,QAAQ,IAAI,CAAC,KAAK,QAAQ,EAAE;gBACpC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;aAC5B;SACF;IACH,CAAC;IAEO,UAAU;QAChB,IAAI,IAAI,CAAC,KAAK,KAAK,SAAS;YAAE,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC;QACnD,IAAI,CAAC,gBAAgB,EAAE,CAAC;QACxB,IAAI,CAAC,cAAc,GAAG,KAAK,CAAC;IAC9B,CAAC;IAEO,oBAAoB;QAC1B,IAAI,CAAC,WAAW,GAAG,EAAE,CAAC;QACtB,IAAI,CAAC,oBAAoB,CAAC,WAAW,CAAC,KAAK,GAAG,IAAI,CAAC;QACnD,IAAI,CAAC,oBAAoB,CAAC,WAAW,CAAC,OAAO,GAAG,IAAI,CAAC;QACrD,IAAI,CAAC,oBAAoB,CAAC,WAAW,CAAC,SAAS,GAAG,IAAI,CAAC;QACvD,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,CAAC;QAC7D,IAAI,CAAC,oBAAoB,CAAC,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;YACnD,IAAI,CAAC,WAAW,GAAG,CAAC,CAAC,CAAC;YACtB,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC;YACnB,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC;QACjB,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,eAAe,EAAE,CAAC;IACzB,CAAC;IAEO,gBAAgB;QACtB,IAAI,CAAC,KAAK,GAAG,IAAI,8CAAK,CAAC,IAAI,CAAC,GAAG,EAAE;YAC/B,IAAI,EAAE,SAAS;YACf,IAAI,EAAE,IAAI;YACV,OAAO,EAAE;gBACP,MAAM,EAAE;oBACN,KAAK,EAAE,CAAC;4BACN,KAAK,EAAE;gCACL,GAAG,EAAE,EAAE;gCACP,GAAG,EAAE,CAAC;gCACN,QAAQ,EAAE,CAAC;6BACZ;4BACD,UAAU,EAAE;gCACV,OAAO,EAAE,IAAI;gCACb,WAAW,EAAE,+BAA+B;6BAC7C;yBACF,CAAC;oBACF,KAAK,EAAE,CAAC;4BACN,KAAK,EAAE;gCACL,GAAG,EAAE,EAAE;gCACP,GAAG,EAAE,CAAC;gCACN,QAAQ,EAAE,CAAC;6BACZ;4BACD,UAAU,EAAE;gCACV,OAAO,EAAE,IAAI;gCACb,WAAW,EAAE,iBAAiB;6BAC/B;yBACF,CAAC;iBACH;aACF;SACF,CAAC,CAAC;IACL,CAAC;IAEO,gBAAgB;QACtB,IAAI,GAAG,GAAG,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,IAAI,IAAI,CAAC,oBAAoB,CAAC,OAAO,CAAC;aACrF,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,IAAI,CAAC,oBAAoB,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;QACvE,IAAI,QAAQ,GAAG,IAAI,CAAC,oBAAoB,CAAC,OAAO,IAAI,4DAAqB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACxF,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;YACpC,IAAI,KAAK,GAAG,IAAI,CAAC,oBAAoB,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,IAAI,IAAI,CAAC,WAAW,CAAC,CAAC;YACpG,IAAI,mBAAmB,GAAG,KAAK,CAAC;YAChC,IAAI,IAAI,GAAG,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YAC9B,IAAI,IAAI,GAAG,CAAC,CAAC;YACb,IAAI,IAAI,GAAG,CAAC,CAAC;YACb,IAAI,IAAI,GAAG,CAAC,CAAC;YACb,IAAI,cAAc,GAAG,IAAI,CAAC,0BAA0B,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;YAC3E,IAAI,gBAAgB,GAAG,CAAC,CAAC;YACzB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;gBAC7C,IAAI,UAAU,GAAG,KAAK,CAAC;gBACvB,IAAI,GAAG,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;gBAC1B,IAAI,GAAG,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;gBAC1B,IAAI,CAAC,IAAI,GAAG,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE;oBACjC,IAAI,GAAG,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;oBAC1B,IAAI,GAAG,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;oBAC1B,UAAU,GAAG,IAAI,CAAC;iBACnB;gBAED,gBAAgB,GAAG,IAAI,CAAC,0BAA0B,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;gBAEzE,IAAI,KAAK,CAAC,gBAAgB,CAAC,EAAE;oBAC3B,MAAM;iBACP;gBAED,IAAI,IAAI,GAAG,QAAQ,GAAG,gBAAgB,EAAE;oBACtC,IAAI,UAAU,EAAE;wBACd,MAAM;qBACP;oBACD,cAAc,GAAG,gBAAgB,CAAC;oBAClC,IAAI,GAAG,IAAI,CAAC;oBACZ,IAAI,GAAG,IAAI,CAAC;iBACb;qBAAM;oBACL,mBAAmB,GAAG,IAAI,CAAC;oBAC3B,MAAM;iBACP;aACF;YAED,IAAI,mBAAmB,EAAE;gBACvB,IAAI,KAAK,GAAG,CAAC,CAAC,IAAI,GAAG,IAAI,CAAC,GAAG,QAAQ,CAAC,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC;gBACvD,oDAAoD;gBACpD,IAAI,UAAU,GAAG,IAAI,GAAG,QAAQ,GAAG,KAAK,GAAG,IAAI,CAAC;gBAChD,+CAA+C;gBAC/C,IAAI,IAAI,GAAG,IAAI,CAAC;gBAChB,cAAc;gBACd,IAAI,IAAI,GAAG,IAAI,CAAC;gBAChB,cAAc;gBACd,IAAI,cAAc,GAAG,gBAAgB,CAAC;gBACtC,0BAA0B;gBAC1B,OAAO,IAAI,CAAC,GAAG,CAAC,cAAc,GAAG,IAAI,GAAG,QAAQ,CAAC,GAAG,IAAI,CAAC,WAAW,EAAE;oBACpE,yDAAyD;oBACzD,IAAI,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;oBACzB,IAAI,GAAG,CAAC,IAAI,GAAG,QAAQ,GAAG,UAAU,CAAC,GAAG,KAAK,CAAC;oBAC9C,cAAc,GAAG,IAAI,CAAC,0BAA0B,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;oBACvE,IAAI,cAAc,GAAG,IAAI,GAAG,QAAQ,EAAE;wBACpC,IAAI,GAAG,IAAI,CAAC;wBACZ,IAAI,GAAG,IAAI,CAAC;wBACZ,0BAA0B;qBAC3B;yBAAM;wBACL,IAAI,GAAG,IAAI,CAAC;wBACZ,IAAI,GAAG,IAAI,CAAC;wBACZ,0BAA0B;qBAC3B;iBACF;gBACD,IAAI,CAAC,oBAAoB,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,WAAW,GAAG,IAAI,CAAC,QAAQ,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC,oBAAoB,CAAC,UAAU,GAAG,IAAI,CAAC,CAAC;gBAChI,uCAAuC;gBACvC,IAAI,CAAC,oBAAoB,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,IAAI,GAAG,IAAI,CAAC;gBACzD,gBAAgB;gBAChB,IAAI,CAAC,oBAAoB,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,QAAQ,GAAG,cAAc,CAAC;gBACvE,0BAA0B;gBAC1B,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,oBAAoB,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,WAAW,GAAG,EAAE,CAAC,GAAG,EAAE,CAAC;gBAC/F,0CAA0C;aAC3C;iBAAM;gBACL,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC;gBACnB,IAAI,CAAC,oBAAoB,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,WAAW,GAAG,CAAC,CAAC,CAAC;gBAC9D,IAAI,CAAC,oBAAoB,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC;gBACvD,IAAI,CAAC,oBAAoB,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC;aAC5D;QACH,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,eAAe,EAAE,CAAC;IACzB,CAAC;IAEO,0BAA0B,CAAC,CAAS,EAAE,CAAS,EAAE,WAAmB;QAC1E,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,GAAG,CAAC,IAAI,CAAC,QAAQ,GAAG,CAAC,WAAW,GAAG,IAAI,CAAC,oBAAoB,CAAC,UAAU,GAAG,IAAI,CAAC,CAAC,GAAG,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC;YAChI,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,QAAQ,GAAG,CAAC,IAAI,CAAC,QAAQ,GAAG,CAAC,WAAW,GAAG,IAAI,CAAC,oBAAoB,CAAC,UAAU,GAAG,IAAI,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,QAAQ;YAC5I,IAAI,CAAC,oBAAoB,CAAC,aAAa,GAAG,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,oBAAoB,CAAC,UAAU,CAAC;QAChG,mPAAmP;IAErP,CAAC;IAEO,eAAe;QACrB,IAAI,CAAC,iBAAiB,CAAC,gBAAgB,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC;QAChE,IAAI,IAAI,CAAC,WAAW,IAAI,yDAAkB,CAAC,gBAAgB,EAAE;YAC3D,IAAI,CAAC,iBAAiB,CAAC,aAAa,GAAG,6DAAsB,CAAC,UAAU,CAAC;YACzE,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC;YAC9B,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;SAC1B;QAED,IAAI,IAAI,CAAC,WAAW,IAAI,yDAAkB,CAAC,eAAe,IAAI,CAAC,IAAI,CAAC,oBAAoB,EAAE,EAAE;YAC1F,IAAI,CAAC,iBAAiB,CAAC,aAAa,GAAG,6DAAsB,CAAC,IAAI,CAAC;YACnE,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;YACxB,IAAI,CAAC,iBAAiB,GAAG,KAAK,CAAC;SAChC;QAED,IAAI,IAAI,CAAC,WAAW,IAAI,yDAAkB,CAAC,eAAe,EAAE;YAC1D,IAAI,CAAC,iBAAiB,CAAC,gBAAgB,GAAG,KAAK,CAAC;SACjD;QAED,IAAI,CAAC,kBAAkB,GAAG,CAAC,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,IAAI,IAAI,CAAC,CAAC;IACtG,CAAC;CACF;;YA3uB+B,qEAA2B;;AA7DhD;IAAR,2DAAK,EAAE;;8DAAwC;AACvC;IAAR,2DAAK,EAAE;;8DAAiC;AAChC;IAAR,2DAAK,EAAE;;uEAA2B;AAC1B;IAAR,2DAAK,EAAE;8BAAuB,2DAAmB;uEAAC;AAC1C;IAAR,2DAAK,EAAE;8BAAoB,yDAAiB;oEAAC;AACpC;IAAT,4DAAM,EAAE;;yEAA6C;AAC5C;IAAT,4DAAM,EAAE;;uEAA2C;AAGpD;IADC,+DAAS,CAAC,OAAO,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;8BACrB,wDAAU;yDAAoB;AAVnC,yBAAyB;IALrC,+DAAS,CAAC;QACT,QAAQ,EAAE,iCAAiC;QAC3C,0PAAkD;KAEnD,CAAC;qCA+D8B,qEAA2B;GA9D9C,yBAAyB,CAyyBrC;AAzyBqC;;;;;;;;;;;;;;;;;;;;ACjBS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACAb;AACA;AACG;AACW;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACHX;AACC;AACL;AACA;;;;;;;;;;;;;;;;;;;;ACHQ;;;;;;;;;;;;;;;;;;;;ACAU;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACAM;AAGE;AAM3D,IAAa,6BAA6B,GAA1C,MAAa,6BAA6B;IAGxC,gBAAgB,CAAC;IAEjB,QAAQ,KAAK,CAAC;IAEd,QAAQ,CAAC,KAAa;QACpB,QAAQ,KAAK,EAAE;YACb,KAAK,wEAAiB,CAAC,SAAS,CAAC;YACjC,KAAK,wEAAiB,CAAC,OAAO,CAAC;YAC/B,KAAK,wEAAiB,CAAC,UAAU,CAAC;YAClC,KAAK,wEAAiB,CAAC,MAAM,CAAC;YAC9B,KAAK,wEAAiB,CAAC,OAAO;gBAC5B,OAAO,GAAG,CAAC;YACb,OAAO,CAAC,CAAC,OAAO,GAAG,CAAC;SACrB;IACH,CAAC;CACF;AAhBC;IADC,2DAAK,EAAE;;wEACuC;AAFpC,6BAA6B;IAJzC,+DAAS,CAAC;QACT,QAAQ,EAAE,qCAAqC;QAC/C,sQAAsD;KACvD,CAAC;;GACW,6BAA6B,CAkBzC;AAlByC;;;;;;;;;;;;;;;;;;ACLnC,MAAM,iBAAiB;IACrB,MAAM,CAAC,MAAM,CAAC,MAAM;QACzB,IAAI,MAAM,GAAG,EAAE,CAAC;QAChB,MAAM,UAAU,GAAG,gEAAgE,CAAC;QACpF,MAAM,gBAAgB,GAAG,UAAU,CAAC,MAAM,CAAC;QAC3C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,EAAE;YAC/B,MAAM,IAAI,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,gBAAgB,CAAC,CAAC,CAAC;SAC3E;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;IAEM,MAAM,CAAC,+BAA+B,CAAC,SAAoB,EAAE,kBAAoC;QACtG,kBAAkB,CAAC,OAAO,CAAC,gBAAgB,CAAC,EAAE;YAC5C,SAAS,CAAC,QAAQ,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC;gBAClD,aAAa,EAAE,gBAAgB,CAAC,OAAO,IAAI,IAAI,CAAC,CAAC,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC,CAAC,gCAAgC;aAC9G,CAAC,CAAC;YAEH,IAAI,gBAAgB,CAAC,UAAU,EAAE;gBAC/B,MAAM,IAAI,GAAG,SAAS,CAAC,QAAQ,CAAC,gBAAgB,CAAC,UAAU,CAAC,CAAC,YAAY,CAAC,SAAS,CAAC,GAAG,EAAE;oBACvF,IAAI,CAAC,WAAW,EAAE,CAAC;oBACnB,SAAS,CAAC,QAAQ,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,QAAQ,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC;gBACnG,CAAC,CAAC,CAAC;aACJ;QACH,CAAC,CAAC,CAAC;IACL,CAAC;IAEM,MAAM,CAAC,WAAW,CAAC,OAAoB;QAC5C,4CAA4C;QAC5C,OAAO,kNAAkN;aACtN,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,aAAa,EAAE,uBAAuB,EAAE,CAAC;IAC7E,CAAC;IAEM,MAAM,CAAC,cAAc,CAAC,OAAoB;QAC/C,OAAO,0BAA0B,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,gBAAgB,EAAE,yBAAyB,EAAE,CAAC;IACjH,CAAC;IAEM,MAAM,CAAC,uBAAuB,CAAC,OAAoB;QACxD,OAAO,0BAA0B,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,yBAAyB,EAAE,yBAAyB,EAAE,CAAC;IAC1H,CAAC;IAEM,MAAM,CAAC,mBAAmB,CAAC,OAAoB;QACpD,OAAO,8DAA8D,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,qBAAqB,EAAE,wBAAwB,EAAE,CAAC;IACzJ,CAAC;CACF;;;;;;;;;;;;;;;;;;;;ACzCqF;AACzC;AAiBtC,MAAM,mBAAmB;IACrB,MAAM,CAAC,yBAAyB,CAAC,aAA8E,EAAE,OAAsE,EAAE,QAAwC;QACpO,IAAI,gBAAgB,GAAqB,EAAE,CAAC;QAC5C,MAAM,iBAAiB,GAAqB,EAAE,CAAC;QAC/C,MAAM,cAAc,GAAyB,EAAE,CAAC;QAEhD,MAAM,sBAAsB,GAAqB,EAAE,CAAC;QACpD,MAAM,mBAAmB,GAAyB,EAAE,CAAC;QACrD,QAAQ,OAAO,CAAC,SAAS,EAAE;YACvB,KAAK,sDAAW,CAAC,oBAAoB;gBACjC,mBAAmB,CAAC,gCAAgC,CAAC,cAAc,EAAwB,OAAO,CAAC,CAAC;gBACpG,MAAM;YACV,KAAK,sDAAW,CAAC,iBAAiB;gBAC9B,mBAAmB,CAAC,gCAAgC,CAAC,cAAc,EAAwB,OAAO,CAAC,CAAC;gBACpG,MAAM;YACV,KAAK,sDAAW,CAAC,kBAAkB;gBAC/B,mBAAmB,CAAC,iCAAiC,CAAC,cAAc,EAAsB,OAAO,CAAC,CAAC;gBACnG,mBAAmB,CAAC,oCAAoC,CAAC,iBAAiB,EAAsB,OAAO,CAAC,CAAC;gBACzG,MAAM;YACV,KAAK,sDAAW,CAAC,eAAe;gBAC5B,mBAAmB,CAAC,8BAA8B,CAAC,cAAc,EAAmB,OAAO,EAAE,QAAQ,CAAC,CAAC;gBACvG,mBAAmB,CAAC,iCAAiC,CAAC,iBAAiB,EAAmB,OAAO,EAAE,QAAQ,CAAC,CAAC;gBAC7G,MAAM;SACb;QAED,aAAa,CAAC,OAAO,CAAC,CAAC,YAAY,EAAE,EAAE;YACnC,QAAQ,YAAY,CAAC,SAAS,EAAE;gBAC5B,KAAK,sDAAW,CAAC,oBAAoB;oBACjC,mBAAmB,CAAC,gCAAgC,CAAC,mBAAmB,EAAwB,YAAY,CAAC,CAAC;oBAC9G,MAAM;gBACV,KAAK,sDAAW,CAAC,kBAAkB;oBAC/B,MAAM,SAAS,GAAuB,YAAY,CAAC;oBACnD,mBAAmB,CAAC,iCAAiC,CAAC,mBAAmB,EAAsB,YAAY,CAAC,CAAC;oBAC7G,mBAAmB,CAAC,oCAAoC,CAAC,sBAAsB,EAAsB,YAAY,CAAC,CAAC;oBACnH,MAAM;gBACV,KAAK,sDAAW,CAAC,eAAe;oBAC5B,mBAAmB,CAAC,8BAA8B,CAAC,mBAAmB,EAAmB,YAAY,EAAE,QAAQ,CAAC,CAAC;oBACjH,mBAAmB,CAAC,iCAAiC,CAAC,sBAAsB,EAAmB,YAAY,EAAE,QAAQ,CAAC,CAAC;oBACvH,MAAM;aACb;QACL,CAAC,CAAC,CAAC;QAEH,cAAc,CAAC,OAAO,CAAC,CAAC,YAAgC,EAAE,CAAS,EAAE,EAAE;YACnE,mBAAmB,CAAC,OAAO,CAAC,CAAC,iBAAiB,EAAE,EAAE;gBAC9C,IAAI,YAAY,CAAC,YAAY,IAAI,iBAAiB,CAAC,YAAY,IAAI,YAAY,CAAC,QAAQ,IAAI,iBAAiB,CAAC,QAAQ,EAAE;oBACpH,gBAAgB,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,YAAY,CAAC,WAAW,EAAE,KAAK,EAAE,YAAY,CAAC,YAAY,EAAE,UAAU,EAAE,YAAY,CAAC,OAAO,EAAE,OAAO,EAAE,iBAAiB,CAAC,OAAO,EAAE,CAAC,CAAC;oBAClK,gBAAgB,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,YAAY,CAAC,OAAO,EAAE,KAAK,EAAE,YAAY,CAAC,QAAQ,EAAE,UAAU,EAAE,YAAY,CAAC,WAAW,EAAE,OAAO,EAAE,iBAAiB,CAAC,OAAO,EAAE,CAAC,CAAC;iBACjK;YACL,CAAC,CAAC,CAAC;YACH,sBAAsB,CAAC,OAAO,CAAC,CAAC,aAAa,EAAE,EAAE;gBAC7C,IAAI,YAAY,CAAC,YAAY,IAAI,aAAa,CAAC,KAAK,EAAE;oBAClD,gBAAgB,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,YAAY,CAAC,WAAW,EAAE,KAAK,EAAE,YAAY,CAAC,YAAY,EAAE,OAAO,EAAE,aAAa,CAAC,OAAO,EAAE,CAAC,CAAC;iBAC/H;YACL,CAAC,CAAC,CAAC;YAEH,IAAI,cAAc,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,KAAK,IAAI,CAAC,IAAI,KAAK,CAAC,YAAY,IAAI,YAAY,CAAC,YAAY,IAAI,KAAK,CAAC,QAAQ,IAAI,YAAY,CAAC,QAAQ,CAAC,EAAE;gBACjJ,gBAAgB,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,YAAY,CAAC,WAAW,EAAE,KAAK,EAAE,YAAY,CAAC,YAAY,EAAE,UAAU,EAAE,YAAY,CAAC,OAAO,EAAE,OAAO,EAAE,YAAY,CAAC,OAAO,EAAE,CAAC,CAAC;gBAC7J,gBAAgB,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,YAAY,CAAC,OAAO,EAAE,KAAK,EAAE,YAAY,CAAC,QAAQ,EAAE,UAAU,EAAE,YAAY,CAAC,WAAW,EAAE,OAAO,EAAE,YAAY,CAAC,OAAO,EAAE,CAAC,CAAC;aAC5J;QACL,CAAC,CAAC,CAAC;QAEH,iBAAiB,CAAC,OAAO,CAAC,CAAC,QAAwB,EAAE,CAAS,EAAE,EAAE;YAC9D,mBAAmB,CAAC,OAAO,CAAC,CAAC,iBAAiB,EAAE,EAAE;gBAC9C,IAAI,QAAQ,CAAC,KAAK,IAAI,iBAAiB,CAAC,YAAY,EAAE;oBAClD,gBAAgB,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,QAAQ,CAAC,IAAI,EAAE,KAAK,EAAE,QAAQ,CAAC,KAAK,EAAE,OAAO,EAAE,iBAAiB,CAAC,OAAO,EAAE,CAAC,CAAC;iBAC7G;YACL,CAAC,CAAC,CAAC;YACH,sBAAsB,CAAC,OAAO,CAAC,CAAC,aAAa,EAAE,EAAE;gBAC7C,IAAI,QAAQ,CAAC,KAAK,IAAI,aAAa,CAAC,KAAK,EAAE;oBACvC,gBAAgB,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,QAAQ,CAAC,IAAI,EAAE,KAAK,EAAE,QAAQ,CAAC,KAAK,EAAE,OAAO,EAAE,aAAa,CAAC,OAAO,EAAE,CAAC,CAAC;iBACzG;YACL,CAAC,CAAC,CAAC;YAEH,IAAI,iBAAiB,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,KAAK,IAAI,CAAC,IAAI,KAAK,CAAC,KAAK,IAAI,QAAQ,CAAC,KAAK,CAAC,EAAE;gBACvF,gBAAgB,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,QAAQ,CAAC,IAAI,EAAE,KAAK,EAAE,QAAQ,CAAC,KAAK,EAAE,OAAO,EAAE,QAAQ,CAAC,OAAO,EAAE,CAAC,CAAC;aACpG;QACL,CAAC,CAAC,CAAC;QAEH,OAAO,gBAAgB,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;IAC7G,CAAC;IAEO,MAAM,CAAC,gCAAgC,CAAC,mBAAyC,EAAE,gBAAsC;QAC7H,cAAc;QACd,IAAI,eAAe,GAAG,qBAAqB,CAAC;QAC5C,IAAI,WAAW,GAAG,qBAAqB,CAAC;QACxC,mBAAmB,CAAC,IAAI,CAAC,EAAE,WAAW,EAAE,eAAe,EAAE,YAAY,EAAE,gBAAgB,CAAC,mBAAmB,EAAE,QAAQ,EAAE,gBAAgB,CAAC,sBAAsB,EAAE,OAAO,EAAE,WAAW,EAAE,CAAC,CAAC;QACxL,oBAAoB;QACpB,eAAe,GAAG,2BAA2B,CAAC;QAC9C,WAAW,GAAG,8BAA8B,CAAC;QAC7C,mBAAmB,CAAC,IAAI,CAAC,EAAE,WAAW,EAAE,eAAe,EAAE,YAAY,EAAE,gBAAgB,CAAC,yBAAyB,EAAE,QAAQ,EAAE,gBAAgB,CAAC,4BAA4B,EAAE,OAAO,EAAE,WAAW,EAAE,CAAC,CAAC;QACpM,iBAAiB;QACjB,eAAe,GAAG,wBAAwB,CAAC;QAC3C,WAAW,GAAG,2BAA2B,CAAC;QAC1C,mBAAmB,CAAC,IAAI,CAAC,EAAE,WAAW,EAAE,eAAe,EAAE,YAAY,EAAE,gBAAgB,CAAC,sBAAsB,EAAE,QAAQ,EAAE,gBAAgB,CAAC,yBAAyB,EAAE,OAAO,EAAE,WAAW,EAAE,CAAC,CAAC;IAClM,CAAC;IAEO,MAAM,CAAC,iCAAiC,CAAC,mBAAyC,EAAE,cAAkC;QAC1H,4BAA4B;QAC5B,IAAI,eAAe,GAAG,mCAAmC,CAAC;QAC1D,IAAI,WAAW,GAAG,sCAAsC,CAAC;QACzD,mBAAmB,CAAC,IAAI,CAAC,EAAE,WAAW,EAAE,eAAe,EAAE,YAAY,EAAE,cAAc,CAAC,iCAAiC,EAAE,QAAQ,EAAE,cAAc,CAAC,oCAAoC,EAAE,OAAO,EAAE,WAAW,EAAE,CAAC,CAAC;QAChN,sBAAsB;QACtB,eAAe,GAAG,sBAAsB,CAAC;QACzC,WAAW,GAAG,yBAAyB,CAAC;QACxC,mBAAmB,CAAC,IAAI,CAAC,EAAE,WAAW,EAAE,eAAe,EAAE,YAAY,EAAE,cAAc,CAAC,oBAAoB,EAAE,QAAQ,EAAE,cAAc,CAAC,uBAAuB,EAAE,OAAO,EAAE,WAAW,EAAE,CAAC,CAAC;IAC1L,CAAC;IAEO,MAAM,CAAC,oCAAoC,CAAC,cAAgC,EAAE,cAAkC;QACpH,IAAI,eAAuB,CAAC;QAC5B,4BAA4B;QAC5B,IAAI,cAAc,CAAC,0BAA0B,EAAE,EAAC,wCAAwC;YACpF,IAAI,eAAe,GAAG,4BAA4B,CAAC;YACnD,cAAc,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,eAAe,EAAE,KAAK,EAAE,cAAc,CAAC,0BAA0B,EAAE,CAAC,CAAC;SACpG;QACD,mCAAmC;QACnC,eAAe,GAAG,mCAAmC,CAAC;QACtD,cAAc,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,eAAe,EAAE,KAAK,EAAE,cAAc,CAAC,iCAAiC,EAAE,CAAC,CAAC;QACxG,oCAAoC;QACpC,eAAe,GAAG,oCAAoC,CAAC;QACvD,cAAc,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,eAAe,EAAE,KAAK,EAAE,cAAc,CAAC,kCAAkC,EAAE,CAAC,CAAC;IAC7G,CAAC;IAEO,MAAM,CAAC,8BAA8B,CAAC,mBAAyC,EAAE,WAA4B,EAAE,QAAuC;QAC1J,IAAI,eAAuB,CAAC;QAC5B,IAAI,WAAmB,CAAC;QACxB,IAAI,OAAe,CAAC;QACpB,2CAA2C;QAC3C,IAAI,WAAW,CAAC,IAAI,IAAI,qDAAc,CAAC,SAAS,IAAI,WAAW,CAAC,IAAI,IAAI,qDAAc,CAAC,cAAc,IAAI,WAAW,CAAC,IAAI,IAAI,qDAAc,CAAC,iBAAiB,EAAE;YAC3J,0BAA0B;YAC1B,eAAe,GAAG,0BAA0B,CAAC;YAC7C,WAAW,GAAG,6BAA6B,CAAC;YAC5C,OAAO,GAAG,EAAE,CAAC;YACb,IAAI,WAAW,CAAC,EAAE,EAAE;gBAChB,IAAI,cAAc,GAAG,8BAA8B,CAAC;gBACpD,OAAO,GAAG,IAAI,CAAC,oBAAoB,CAAC,WAAW,EAAE,QAAQ,EAAE,cAAc,CAAC,CAAC;aAC9E;YACD,mBAAmB,CAAC,IAAI,CAAC,EAAE,WAAW,EAAE,eAAe,EAAE,YAAY,EAAE,WAAW,CAAC,wBAAwB,EAAE,QAAQ,EAAE,WAAW,CAAC,2BAA2B,EAAE,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;YAE1M,4BAA4B;YAC5B,eAAe,GAAG,4BAA4B,CAAC;YAC/C,WAAW,GAAG,+BAA+B,CAAC;YAC9C,OAAO,GAAG,EAAE,CAAC;YACb,IAAI,WAAW,CAAC,EAAE,EAAE;gBAChB,IAAI,cAAc,GAAG,gCAAgC,CAAC;gBACtD,OAAO,GAAG,IAAI,CAAC,oBAAoB,CAAC,WAAW,EAAE,QAAQ,EAAE,cAAc,CAAC,CAAC;aAC9E;YACD,mBAAmB,CAAC,IAAI,CAAC,EAAE,WAAW,EAAE,eAAe,EAAE,YAAY,EAAE,WAAW,CAAC,0BAA0B,EAAE,QAAQ,EAAE,WAAW,CAAC,6BAA6B,EAAE,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;SACjN;QACD,gBAAgB;QAChB,eAAe,GAAG,gBAAgB,CAAC;QACnC,WAAW,GAAG,mBAAmB,CAAC;QAClC,OAAO,GAAG,EAAE,CAAC;QACb,IAAI,WAAW,CAAC,EAAE,EAAE;YAChB,IAAI,cAAc,GAAG,iBAAiB,CAAC;YACvC,OAAO,GAAG,IAAI,CAAC,oBAAoB,CAAC,WAAW,EAAE,QAAQ,EAAE,cAAc,CAAC,CAAC;SAC9E;QACD,mBAAmB,CAAC,IAAI,CAAC,EAAE,WAAW,EAAE,eAAe,EAAE,YAAY,EAAE,WAAW,CAAC,cAAc,EAAE,QAAQ,EAAE,WAAW,CAAC,iBAAiB,EAAE,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;QACtL,cAAc;QACd,eAAe,GAAG,cAAc,CAAC;QACjC,WAAW,GAAG,iBAAiB,CAAC;QAChC,OAAO,GAAG,EAAE,CAAC;QACb,IAAI,WAAW,CAAC,EAAE,EAAE;YAChB,IAAI,cAAc,GAAG,eAAe,CAAC;YACrC,OAAO,GAAG,IAAI,CAAC,oBAAoB,CAAC,WAAW,EAAE,QAAQ,EAAE,cAAc,CAAC,CAAC;SAC9E;QACD,mBAAmB,CAAC,IAAI,CAAC,EAAE,WAAW,EAAE,eAAe,EAAE,YAAY,EAAE,WAAW,CAAC,YAAY,EAAE,QAAQ,EAAE,WAAW,CAAC,eAAe,EAAE,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;IACtL,CAAC;IAEO,MAAM,CAAC,iCAAiC,CAAC,cAAgC,EAAE,WAA4B,EAAE,QAAuC;QACpJ,eAAe;QACf,IAAI,eAAe,GAAG,eAAe,CAAC;QACtC,IAAI,OAAO,GAAG,EAAE,CAAC;QACjB,IAAI,WAAW,CAAC,EAAE,EAAE;YAChB,IAAI,cAAc,GAAG,gBAAgB,CAAC;YACtC,OAAO,GAAG,IAAI,CAAC,oBAAoB,CAAC,WAAW,EAAE,QAAQ,EAAE,cAAc,CAAC,CAAC;SAC9E;QACD,cAAc,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,eAAe,EAAE,KAAK,EAAE,WAAW,CAAC,aAAa,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;IACvG,CAAC;IAEO,MAAM,CAAC,oBAAoB,CAAC,WAA4B,EAAE,QAAuC,EAAE,cAAsB;QAC7H,IAAI,OAAO,GAAG,EAAE,CAAC;QAEjB,IAAI,QAAQ,IAAI,QAAQ,CAAC,UAAU,EAAE;YACjC,IAAI,SAAS,GAAG,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,WAAW,CAAC,EAAE,CAAC,CAAC,CAAC;YAC5F,IAAI,aAAa,GAAG,SAAS,CAAC,IAAI,CAAC;YAEnC,IAAI,MAAM,GAAG,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,WAAW,CAAC,EAAE,CAAC,CAAC;YAClE,IAAI,cAAc,GAAG,+DAAoB,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;YAC3D,IAAI,UAAU,GAAG,2DAAgB,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;YAE/C,OAAO,GAAG,aAAa,GAAG,IAAI,GAAG,UAAU,GAAG,IAAI,GAAG,cAAc,GAAG,mCAAmC,GAAG,cAAc,CAAC;SAC9H;QAED,OAAO,OAAO,CAAC;IACnB,CAAC;CACJ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC3N4D;AAEL;AAER;AAE6C;AAC9B;AAM/D,IAAa,sBAAsB,8BAAnC,MAAa,sBAAsB;IA6BjC,YACU,iBAA6C,EACrD,WAAwB;QADhB,sBAAiB,GAAjB,iBAAiB,CAA4B;QAnBvD,oBAAe,GAAG,qDAAc,CAAC;QACjC,eAAU,GAAG,wBAAsB,CAAC,kBAAkB,CAAC;QACvD,eAAU,GAAG,wBAAsB,CAAC,kBAAkB,CAAC;QAEvD,oBAAe,GAAG,wBAAsB,CAAC,gBAAgB,CAAC;QAK1D,iBAAY,GAAG;YACb,EAAE,MAAM,EAAE,SAAS,EAAE,UAAU,EAAE,qDAAc,CAAC,OAAO,EAAE,SAAS,EAAE,wBAAsB,CAAC,gBAAgB,EAAE;YAC7G,EAAE,MAAM,EAAE,WAAW,EAAE,UAAU,EAAE,qDAAc,CAAC,YAAY,EAAE,SAAS,EAAE,wBAAsB,CAAC,kBAAkB,EAAE;YACtH,EAAE,MAAM,EAAE,EAAE,EAAE,UAAU,EAAE,qDAAc,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE;YAC5D,EAAE,MAAM,EAAE,EAAE,EAAE,UAAU,EAAE,qDAAc,CAAC,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,SAAS,EAAE,wBAAsB,CAAC,kBAAkB,EAAE;SACrH;QACD,aAAQ,GAAY,KAAK,CAAC;QAOxB,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC,KAAK,CAAC;YACnC,YAAY,EAAE,CAAC,EAAE,CAAC;SACnB,CAAC,CAAC;IACL,CAAC;IAED,QAAQ;QACN,IAAI,CAAC,sBAAsB,GAAG,IAAI,CAAC,iBAAiB,CAAC,UAAU,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE;YAChF,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;YACpC,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;QACxB,CAAC,CAAC;QACF,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;QACrB,IAAI,CAAC,iBAAiB,CAAC,GAAG,EAAE,CAAC;IAC/B,CAAC;IAED,WAAW;QACT,IAAI,CAAC,sBAAsB;eACtB,CAAC,IAAI,CAAC,sBAAsB,CAAC,MAAM;eACnC,IAAI,CAAC,sBAAsB,CAAC,WAAW,EAAE,CAAC;QAE/C,IAAI,CAAC,sBAAsB,GAAG,IAAI,CAAC;IACrC,CAAC;IAED,kBAAkB;QAChB,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,YAAY,CAAC,KAAK,CAAC;IACxE,CAAC;IAED,WAAW,CAAC,OAAyB;QACnC,IAAI,CAAC,iBAAiB,CAAC,8BAA8B,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QAClE,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;IACvC,CAAC;IAED,aAAa,CAAC,WAA6B;QACzC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IACtC,CAAC;IAED,mBAAmB,CAAC,OAAyB;QAC3C,OAAO,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IAChF,CAAC;CACF;AAhEQ,yCAAkB,GAAG,WAAW,CAAC;AACjC,uCAAgB,GAAG,MAAM,CAAC;AAC1B,yCAAkB,GAAG,CAAC,CAAC,CAAC;;YAqBF,oEAA0B;YACxC,0DAAW;;AA7B1B;IADC,+DAAS,CAAC,sEAA8B,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;8BAC3D,sEAA8B;6DAAC;AAG9C;IADC,+DAAS,CAAC,qEAA6B,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;8BAC3D,qEAA6B;4DAAC;AALjC,sBAAsB;IAJlC,+DAAS,CAAC;QACT,QAAQ,EAAE,6BAA6B;QACvC,sOAA8C;KAC/C,CAAC;qCA+B6B,oEAA0B;QACxC,0DAAW;GA/Bf,sBAAsB,CAuElC;AAvEkC;;;;;;;;;;;;;;;;;;;;ACbQ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACAU;AACM;AACC;AAO5D,IAAa,qBAAqB,GAAlC,MAAa,qBAAqB;IAKhC,YAAqB,iBAA6C;QAA7C,sBAAiB,GAAjB,iBAAiB,CAA4B;IAAG,CAAC;IACtE,QAAQ;QACN,IAAI,CAAC,iBAAiB,CAAC,GAAG,EAAE,CAAC;IAC/B,CAAC;IAED,UAAU;QACR,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC;IAC3B,CAAC;CACF;;YARyC,oEAA0B;;AAHlE;IADC,+DAAS,CAAC,sEAA8B,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;8BAC/D,sEAA8B;wDAAC;AAF/B,qBAAqB;IALjC,+DAAS,CAAC;QACT,QAAQ,EAAE,4BAA4B;QACtC,qNAA6C;KAC9C,CAAC;qCAOwC,oEAA0B;GALvD,qBAAqB,CAajC;AAbiC;;;;;;;;;;;;;;;;;;;;;;;ACTQ;AACT;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACDuC;AAExB;AAEmB;AACI;AAEyB;AACxC;AAOxD,IAAa,0BAA0B,kCAAvC,MAAa,0BAA0B;IA6CrC,YACU,qBAAqD,EACrD,oBAAyC,EACjD,WAAwB;QAFhB,0BAAqB,GAArB,qBAAqB,CAAgC;QACrD,yBAAoB,GAApB,oBAAoB,CAAqB;QApCnD,oBAAe,GAAG,qDAAc,CAAC;QACjC,eAAU,GAAG,4BAA0B,CAAC,iBAAiB,CAAC;QAC1D,eAAU,GAAG,4BAA0B,CAAC,kBAAkB,CAAC;QAE3D,oBAAe,GAAG,4BAA0B,CAAC,gBAAgB,CAAC;QAE9D,kBAAa,GAAW,EAAE,CAAC;QAG3B,aAAQ,GAAY,KAAK,CAAC;QA8BxB,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC,KAAK,CAAC;YACnC,YAAY,EAAE,CAAC,EAAE,CAAC;SACnB,CAAC,CAAC;IACL,CAAC;IA5BD,IAAI,cAAc;QAChB,OAAO,IAAI,CAAC,KAAK,KAAK,oDAAY,CAAC,WAAW,CAAC;IACjD,CAAC;IAED,IAAI,eAAe;QACjB,OAAO,IAAI,CAAC,KAAK,KAAK,oDAAY,CAAC,YAAY,CAAC;IAClD,CAAC;IAED,IAAI,QAAQ;QACV,OAAO;YACL,EAAE,MAAM,EAAE,YAAY,EAAE,UAAU,EAAE,qDAAc,CAAC,aAAa,EAAE,SAAS,EAAE,WAAW,EAAE;YAC1F,EAAE,MAAM,EAAE,WAAW,EAAE,UAAU,EAAE,qDAAc,CAAC,YAAY,EAAE,SAAS,EAAE,UAAU,EAAE;YACvF,GAAG,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,aAAa,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YACjF,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE;YACvC,EAAE,MAAM,EAAE,iBAAiB,EAAE,UAAU,EAAE,qDAAc,CAAC,IAAI,EAAE,SAAS,EAAE,eAAe,EAAE;YAC1F,EAAE,MAAM,EAAE,EAAE,EAAE,UAAU,EAAE,qDAAc,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE;YAC5D,EAAE,MAAM,EAAE,EAAE,EAAE,UAAU,EAAE,qDAAc,CAAC,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE;SAChF,CAAC;IACJ,CAAC;IAYD,QAAQ;QACN,MAAM,IAAI,GAAG,IAAI,CAAC,oBAAoB,CAAC,YAAY,EAAE,CAAC;QACtD,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;QACrC,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,EAAE,CAAC;QAC9B,IAAI,IAAI,CAAC,cAAc,EAAE;YACvB,IAAI,CAAC,qBAAqB,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;SACtC;aAAM;YACL,IAAI,CAAC,qBAAqB,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;SAChD;QACD,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;QACrB,IAAI,CAAC,0BAA0B,GAAG,IAAI,CAAC,qBAAqB,CAAC,cAAc;aACxE,SAAS,CAAC,IAAI,CAAC,EAAE;YAChB,IAAI,CAAC,SAAS,GAAG,IAAI;YACrB,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;QACxB,CAAC,CAAC,CAAC;IACP,CAAC;IAED,WAAW;QACT,IAAI,CAAC,0BAA0B,IAAI,IAAI,CAAC,0BAA0B,CAAC,WAAW,EAAE,CAAC;QACjF,IAAI,CAAC,0BAA0B,GAAG,IAAI,CAAC;IACzC,CAAC;IAED,WAAW,CAAC,YAAmC;QAC7C,IAAI,CAAC,qBAAqB,CAAC,mCAAmC,CAAC,YAAY,CAAC,EAAE,EAAE,YAAY,CAAC,SAAS,CAAC,CAAC;QACxG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;IACrC,CAAC;IAED,aAAa,CAAC,YAAmC;QAC/C,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;IACvC,CAAC;IAED,kBAAkB;QAChB,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,YAAY,CAAC,KAAK,CAAC;IACxE,CAAC;CACF;AAxFQ,2CAAgB,GAAG,aAAa,CAAC;AACjC,4CAAiB,GAAG,IAAI,CAAC;AACzB,6CAAkB,GAAG,CAAC,CAAC,CAAC;;YA2CE,wEAA8B;YAC/B,2DAAmB;YACpC,0DAAW;;AA1C1B;IADC,+DAAS,CAAC,sEAA8B,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;8BAC9D,sEAA8B;8DAAC;AAG3C;IADC,+DAAS,CAAC,wEAAgC,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;8BAC9D,wEAAgC;gEAAC;AATpC,0BAA0B;IALtC,+DAAS,CAAC;QACT,QAAQ,EAAE,kCAAkC;QAC5C,0PAAmD;KACpD,CAAC;qCAgDiC,wEAA8B;QAC/B,2DAAmB;QACpC,0DAAW;GAhDf,0BAA0B,CAyFtC;AAzFsC;;;;;;;;;;;;;;;;;;;;ACfS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACAK;AAEN;AACuB;AACG;AACS;AAMlF,IAAa,yBAAyB,GAAtC,MAAa,yBAAyB;IAiBpC,YACU,iBAA6C,EAC7C,YAAyB;QADzB,sBAAiB,GAAjB,iBAAiB,CAA4B;QAC7C,iBAAY,GAAZ,YAAY,CAAa;IAC/B,CAAC;IAXL,IAAI,cAAc;QAChB,OAAO,IAAI,CAAC,KAAK,KAAK,oDAAY,CAAC,WAAW,CAAC;IACjD,CAAC;IAED,IAAI,cAAc;QAChB,OAAO,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,oDAAY,CAAC,YAAY,CAAC,CAAC;IAClE,CAAC;IAOD,QAAQ;QACN,IAAI,IAAI,CAAC,cAAc,EAAE;YACvB,IAAI,CAAC,iBAAiB,CAAC,GAAG,EAAE,CAAC;SAC9B;IACH,CAAC;IAED,UAAU;QACR,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC;IACxB,CAAC;IAED,YAAY;QACV,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,uDAAgB,CAAC,cAAc,EAAE,4DAAqB,CAAC,eAAe,CAAC,CAAC;IACvG,CAAC;CACF;;YAjB8B,oEAA0B;YAC/B,qDAAW;;AAjBnC;IADC,+DAAS,CAAC,qEAA6B,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;8BAC9D,qEAA6B;4DAAC;AAGzC;IADC,+DAAS,CAAC,8DAAsB,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;8BAC3C,8DAAsB;gEAAC;AALnC,yBAAyB;IAJrC,+DAAS,CAAC;QACT,QAAQ,EAAE,iCAAiC;QAC3C,oOAAkD;KACnD,CAAC;qCAmB6B,oEAA0B;QAC/B,qDAAW;GAnBxB,yBAAyB,CAmCrC;AAnCqC;;;;;;;;;;;;;;;;;;;;;;;ACXA;AACS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACDyB;AAER;AAEE;AACK;AAEuB;AACtC;AAOxD,IAAa,yBAAyB,iCAAtC,MAAa,yBAAyB;IA2CpC,YACU,oBAAmD,EACnD,oBAAyC,EACjD,WAAwB;QAFhB,yBAAoB,GAApB,oBAAoB,CAA+B;QACnD,yBAAoB,GAApB,oBAAoB,CAAqB;QAnCnD,oBAAe,GAAG,qDAAc,CAAC;QACjC,gBAAW,GAAG,qDAAc,CAAC;QAC7B,eAAU,GAAG,2BAAyB,CAAC,iBAAiB,CAAC;QACzD,eAAU,GAAG,2BAAyB,CAAC,kBAAkB,CAAC;QAE1D,qBAAgB,GAAG,2BAAyB,CAAC,iBAAiB,CAAC;QAE/D,kBAAa,GAAW,EAAE,CAAC;QAK3B,aAAQ,GAAY,KAAK,CAAC;QA0BxB,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC,KAAK,CAAC;YACnC,YAAY,EAAE,CAAC,EAAE,CAAC;SACnB,CAAC,CAAC;IACL,CAAC;IA3BD,IAAI,eAAe;QACjB,OAAO,IAAI,CAAC,KAAK,KAAK,oDAAY,CAAC,YAAY,CAAC;IAClD,CAAC;IAED,IAAI,QAAQ;QACV,OAAO;YACL,EAAE,MAAM,EAAE,YAAY,EAAE,UAAU,EAAE,qDAAc,CAAC,aAAa,EAAE,SAAS,EAAE,WAAW,EAAE;YAC1F,EAAE,MAAM,EAAE,WAAW,EAAE,UAAU,EAAE,qDAAc,CAAC,YAAY,EAAE,SAAS,EAAE,UAAU,EAAE;YACvF,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE;YACvC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,OAAO,EAAE,CAAC,gBAAgB,CAAC,MAAM,GAAG,CAAC,EAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,eAAe,EAAE,UAAU,EAAE,qDAAc,CAAC,iBAAiB,EAAE,SAAS,EAAE,sBAAsB,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YACvM,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,OAAO,EAAE,CAAC,kBAAkB,CAAC,MAAM,GAAG,CAAC,EAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,eAAe,EAAE,UAAU,EAAE,qDAAc,CAAC,iBAAiB,EAAE,SAAS,EAAE,wBAAwB,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YAC3M,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,OAAO,EAAE,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,EAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,eAAe,EAAE,UAAU,EAAE,qDAAc,CAAC,iBAAiB,EAAE,SAAS,EAAE,mBAAmB,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YAChM,EAAE,MAAM,EAAE,iBAAiB,EAAE,UAAU,EAAE,qDAAc,CAAC,IAAI,EAAE,SAAS,EAAE,eAAe,EAAE,KAAK,EAAE,KAAK,EAAE;YACxG,EAAE,MAAM,EAAE,QAAQ,EAAE,UAAU,EAAE,qDAAc,CAAC,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,KAAK,EAAE,IAAI,EAAE;YACzF,EAAE,MAAM,EAAE,EAAE,EAAE,UAAU,EAAE,qDAAc,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE;YAC5D,EAAE,MAAM,EAAE,EAAE,EAAE,UAAU,EAAE,qDAAc,CAAC,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE;SAC/D,CAAC;IACJ,CAAC;IAYD,QAAQ;QACN,MAAM,IAAI,GAAG,IAAI,CAAC,oBAAoB,CAAC,YAAY,EAAE,CAAC;QACtD,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;QACrC,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;QACrB,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACzD,IAAI,CAAC,yBAAyB,GAAG,IAAI,CAAC,oBAAoB,CAAC,aAAa;aACrE,SAAS,CAAC,IAAI,CAAC,EAAE;YAChB,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;YACtB,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;QACxB,CAAC,CAAC,CAAC;IACP,CAAC;IAED,WAAW;QACT,IAAI,CAAC,yBAAyB,IAAI,IAAI,CAAC,yBAAyB,CAAC,WAAW,EAAE,CAAC;QAC/E,IAAI,CAAC,yBAAyB,GAAG,IAAI,CAAC;IACxC,CAAC;IAEK,WAAW,CAAC,WAAiC;;YACjD,MAAM,IAAI,CAAC,oBAAoB,CAAC,kCAAkC,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;YACnF,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QACpC,CAAC;KAAA;IAED,aAAa,CAAC,WAAiC;QAC7C,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IACtC,CAAC;IAED,aAAa,CAAC,aAAqB;QACjC,IAAI,CAAC,yBAAyB,GAAG,IAAI,CAAC,oBAAoB,CAAC,aAAa;aACrE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,CAAC;QAE5C,IAAI,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE;YAC5B,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CACpC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,aAAa,CAAC,WAAW,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC;mBACzG,CAAC,CAAC,kBAAkB,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,aAAa,CAAC,WAAW,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC;mBAC3G,CAAC,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,aAAa,CAAC,WAAW,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;SAC/G;IACH,CAAC;CACF;AAzFQ,2CAAiB,GAAG,WAAW,CAAC;AAChC,4CAAkB,GAAG,CAAC,CAAC,CAAC;;YA0CC,uEAA6B;YAC7B,2DAAmB;YACpC,0DAAW;;AAzC1B;IADC,+DAAS,CAAC,qEAA6B,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;8BAC7D,qEAA6B;6DAAC;AAG1C;IADC,+DAAS,CAAC,uEAA+B,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;8BAC7D,uEAA+B;+DAAC;AARnC,yBAAyB;IALrC,+DAAS,CAAC;QACT,QAAQ,EAAE,iCAAiC;QAC3C,sPAAkD;KACnD,CAAC;qCA8CgC,uEAA6B;QAC7B,2DAAmB;QACpC,0DAAW;GA9Cf,yBAAyB,CA0FrC;AA1FqC;;;;;;;;;;;;;;;;;;;;ACfS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACAM;AAGe;AACR;AACqB;AACX;AAMtE,IAAa,wBAAwB,GAArC,MAAa,wBAAwB;IAanC,YACU,iBAA6C,EAC7C,oBAAyC;QADzC,sBAAiB,GAAjB,iBAAiB,CAA4B;QAC7C,yBAAoB,GAApB,oBAAoB,CAAqB;QAJ3C,mBAAc,GAAmB,EAAE,CAAC;IAKxC,CAAC;IAEL,QAAQ;QACN,MAAM,IAAI,GAAG,IAAI,CAAC,oBAAoB,CAAC,YAAY,EAAE,CAAC;QACtD,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;QAErC,IAAI,uBAAuB,GAAG,IAAI,CAAC,iBAAiB,CAAC,uBAAuB,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE;YAC5F,IAAI,IAAI,EAAE;gBACR,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,YAAY,EAAE,KAAK,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;aAC9E;QACH,CAAC,CAAC,CAAC;QAEH,IAAI,uBAAuB,GAAG,IAAI,CAAC,iBAAiB,CAAC,uBAAuB,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE;YAC5F,IAAI,IAAI,EAAE;gBACR,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,YAAY,EAAE,KAAK,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;aAC9E;QACH,CAAC,CAAC,CAAC;QAEH,IAAI,uBAAuB,GAAG,IAAI,CAAC,iBAAiB,CAAC,uBAAuB,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE;YAC5F,IAAI,IAAI,EAAE;gBACR,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,YAAY,EAAE,KAAK,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;aAC9E;QACH,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC;QAClD,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC;QAClD,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC;QAClD,IAAI,CAAC,iBAAiB,CAAC,8BAA8B,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACnF,CAAC;IAED,WAAW;QACT,IAAI,CAAC,cAAc,IAAI,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC,CAAC;QAC7E,IAAI,CAAC,cAAc,GAAG,EAAE,CAAC;IAC3B,CAAC;IAED,UAAU;QACR,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC;IACxB,CAAC;IAED,YAAY;QACV,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,uDAAgB,CAAC,cAAc,EAAE,4DAAqB,CAAC,cAAc,CAAC,CAAC;IACtG,CAAC;CACF;;YA5C8B,oEAA0B;YACvB,2DAAmB;;AAbnD;IADC,+DAAS,CAAC,oEAA4B,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;8BAC7D,oEAA4B;2DAAC;AAGxC;IADC,+DAAS,CAAC,8DAAsB,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;8BAC3C,8DAAsB;+DAAC;AALnC,wBAAwB;IAJpC,+DAAS,CAAC;QACT,QAAQ,EAAE,gCAAgC;QAC1C,iOAAiD;KAClD,CAAC;qCAe6B,oEAA0B;QACvB,2DAAmB;GAfxC,wBAAwB,CA0DpC;AA1DoC;;;;;;;;;;;;;;;;;;;;;;;ACZA;AACS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACDyC;AAC/B;AAC8K;AAC8B;AAEtN;AAEoC;AACU;AAM5F,IAAa,kCAAkC,0CAA/C,MAAa,kCAAkC;IA6F7C,YACU,wBAAwD,EACxD,iBAA6C,EACrD,WAAwB;QAFhB,6BAAwB,GAAxB,wBAAwB,CAAgC;QACxD,sBAAiB,GAAjB,iBAAiB,CAA4B;QApEvD,eAAU,GAAG,CAAC,CAAC;QACf,eAAU,GAAG,oCAAkC,CAAC,gBAAgB,CAAC;QACjE,aAAQ,GAAY,KAAK,CAAC;QAC1B,cAAS,GAA+B,EAAE,CAAC;QAC3C,iBAAY,GAAG,6DAAsB,CAAC;QACtC,qBAAgB,GAAG,oCAAkC,CAAC,iBAAiB,CAAC;QACxE,oBAAe,GAAG,oCAAkC,CAAC,gBAAgB,CAAC;QACtE,oBAAe,GAAG,qDAAc,CAAC;QAEjC,0BAAqB,GAAG,EAAE,CAAC;QAC3B,yBAAoB,GAAG,EAAE,CAAC;QAC1B,sBAAiB,GAAY,KAAK,CAAC;QACnC,qBAAgB,GAA4C;YAC1D,EAAE,KAAK,EAAE,kDAAW,CAAC,kDAAW,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,kDAAW,CAAC,GAAG,EAAE;YAC/D,EAAE,KAAK,EAAE,kDAAW,CAAC,kDAAW,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,kDAAW,CAAC,GAAG,EAAE;YAC/D,EAAE,KAAK,EAAE,kDAAW,CAAC,kDAAW,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,kDAAW,CAAC,GAAG,EAAE;SAChE,CAAC;QACF,sBAAiB,GAAkB,EAAE,CAAC;QAE9B,sBAAiB,GAAiC,EAAE,CAAC;QACrD,kBAAa,GAAmB,EAAE,CAAC;QACnC,yBAAoB,GAAiB,IAAI,CAAC;QAIlD,sBAAiB,GAAuC,EAAE,CAAC;QAC3D,uBAAkB,GAAa,EAAE,CAAC;QA4ChC,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC,KAAK,CAAC;YACnC,YAAY,EAAE,CAAC,EAAE,CAAC;SACnB,CAAC,CAAC;IACL,CAAC;IA7CD,IAAI,gBAAgB;QAClB,OAAO;YACL,EAAE,MAAM,EAAE,SAAS,EAAE,UAAU,EAAE,qDAAc,CAAC,WAAW,EAAE,SAAS,EAAE,oCAAkC,CAAC,gBAAgB,EAAE;YAC7H,EAAE,MAAM,EAAE,eAAe,EAAE,UAAU,EAAE,qDAAc,CAAC,YAAY,EAAE,SAAS,EAAE,oCAAkC,CAAC,iBAAiB,EAAE;YACrI,EAAE,MAAM,EAAE,UAAU,EAAE,UAAU,EAAE,qDAAc,CAAC,OAAO,EAAE,SAAS,EAAE,mBAAmB,EAAE;YAC1F,EAAE,MAAM,EAAE,wBAAwB,EAAE,UAAU,EAAE,qDAAc,CAAC,QAAQ,EAAE,SAAS,EAAE,yBAAyB,EAAE;YAC/G,EAAE,MAAM,EAAE,EAAE,EAAE,UAAU,EAAE,qDAAc,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE,EAAE;YACzD,EAAE,MAAM,EAAE,EAAE,EAAE,UAAU,EAAE,qDAAc,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE,EAAE;SAC7D,CAAC;IACJ,CAAC;IAED,IAAI,eAAe;QACjB,OAAO;YACL,EAAE,MAAM,EAAE,cAAc,EAAE,UAAU,EAAE,qDAAc,CAAC,WAAW,EAAE;YAClE,EAAE,MAAM,EAAE,iBAAiB,EAAE,UAAU,EAAE,qDAAc,CAAC,cAAc,EAAE;YACxE,EAAE,MAAM,EAAE,cAAc,EAAE,UAAU,EAAE,qDAAc,CAAC,IAAI,EAAE;YAC3D,EAAE,MAAM,EAAE,EAAE,EAAE,UAAU,EAAE,qDAAc,CAAC,MAAM,EAAE,IAAI,EAAE,EAAE,EAAE;YAC3D,EAAE,MAAM,EAAE,EAAE,EAAE,UAAU,EAAE,qDAAc,CAAC,gBAAgB,EAAE,KAAK,EAAE,EAAE,EAAE;YACtE,EAAE,MAAM,EAAE,EAAE,EAAE,UAAU,EAAE,qDAAc,CAAC,sBAAsB,EAAE,KAAK,EAAE,EAAE,EAAE;YAC5E,EAAE,MAAM,EAAE,EAAE,EAAE,UAAU,EAAE,qDAAc,CAAC,gBAAgB,EAAE,KAAK,EAAE,EAAE,EAAE;YACtE,EAAE,MAAM,EAAE,EAAE,EAAE,UAAU,EAAE,qDAAc,CAAC,OAAO,EAAE,KAAK,EAAE,EAAE,EAAE;YAC7D,EAAE,MAAM,EAAE,EAAE,EAAE,UAAU,EAAE,qDAAc,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,EAAE;YAC1D,EAAE,MAAM,EAAE,EAAE,EAAE,UAAU,EAAE,qDAAc,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE,EAAE;YAC5D,EAAE,MAAM,EAAE,EAAE,EAAE,UAAU,EAAE,qDAAc,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE,EAAE;SAC7D,CAAC;IACJ,CAAC;IAED,IAAI,uBAAuB;QACzB,OAAO;YACL,EAAE,MAAM,EAAE,cAAc,EAAE,UAAU,EAAE,qDAAc,CAAC,WAAW,EAAE;YAClE,EAAE,MAAM,EAAE,iBAAiB,EAAE,UAAU,EAAE,qDAAc,CAAC,cAAc,EAAE;YACxE,EAAE,MAAM,EAAE,cAAc,EAAE,UAAU,EAAE,qDAAc,CAAC,IAAI,EAAE;YAC3D,EAAE,MAAM,EAAE,EAAE,EAAE,UAAU,EAAE,qDAAc,CAAC,MAAM,EAAE,IAAI,EAAE,EAAE,EAAE;YAC3D,EAAE,MAAM,EAAE,EAAE,EAAE,UAAU,EAAE,qDAAc,CAAC,gBAAgB,EAAE,KAAK,EAAE,EAAE,EAAE;YACtE,EAAE,MAAM,EAAE,EAAE,EAAE,UAAU,EAAE,qDAAc,CAAC,OAAO,EAAE,KAAK,EAAE,EAAE,EAAE;SAC9D,CAAC;IACJ,CAAC;IAUK,eAAe;;YACnB,IAAI,MAAM,GAAG,MAAM,IAAI,CAAC,iBAAiB,CAAC,4BAA4B,EAAwB,CAAC;YAC/F,IAAI,CAAC,iBAAiB,GAAG,EAAE,CAAC;YAC5B,IAAI,MAAM,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE;gBAC/B,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;oBACjB,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;gBAC9D,CAAC,CAAC;aACH;QACH,CAAC;KAAA;IAED,QAAQ;QACN,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;QACrB,IAAI,GAAG,GAAG,IAAI,CAAC,wBAAwB,CAAC,kBAAkB,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE;YAC3E,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;YACvB,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC;YAC9B,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;QACxB,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,oBAAoB,EAAE,CAAC;QAC5B,IAAI,CAAC,iBAAiB,CAAC,GAAG,EAAE,CAAC;QAC7B,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAC/B,CAAC;IAED,WAAW;QACT,IAAI,CAAC,aAAa,IAAI,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC;QACrE,IAAI,CAAC,oBAAoB,IAAI,IAAI,CAAC,oBAAoB,CAAC,WAAW,EAAE,CAAC;IACvE,CAAC;IAED,iBAAiB,CAAC,eAA2C;QAC3D,IAAI,QAAQ,GAAG,eAAe,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,kDAAW,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;QAChE,OAAO,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC5C,CAAC;IAED,qBAAqB,CAAC,QAAiC;QACrD,IAAI,gBAAgB,GAAa,EAAE,CAAC;QACpC,IAAI,QAAQ,IAAI,IAAI,IAAI,QAAQ,CAAC,MAAM,IAAI,CAAC,EAAE;YAC5C,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CACnB,gBAAgB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,kDAAW,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAC5E,CAAC;YACF,OAAO,gBAAgB,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;SACnD;QAED,OAAO,GAAG,CAAC;IACb,CAAC;IAEK,yBAAyB;;YAC7B,MAAM,IAAI,CAAC,iBAAiB,CAAC,MAAM,EAAE,CAAC;QACxC,CAAC;KAAA;IAED,UAAU,CAAC,QAAkC;QAC3C,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IAC1C,CAAC;IAEK,uBAAuB,CAAC,OAA8B;;YAC1D,OAAO,CAAC,wBAAwB,GAAG,IAAI,CAAC;YACxC,OAAO,CAAC,aAAa,IAAG,MAAM,IAAI,CAAC,wBAAwB,CAAC,6BAA6B,CAAC,OAAO,CAAC,EAAE,CAAY,EAAC;YACjH,OAAO,CAAC,wBAAwB,GAAG,KAAK,CAAC;QAC3C,CAAC;KAAA;IAEK,yBAAyB,CAAC,OAA8B,EAAE,QAAkC;;YAChG,IAAI,CAAC,eAAe,CAAC,mBAAmB,CAAC,EAAE,QAAQ,EAAE,OAAO,CAAC,EAAE,EAAE,UAAU,EAAE,QAAQ,CAAC,EAAE,EAAE,YAAY,EAAE,QAAQ,CAAC,IAAI,EAAE,OAAO,EAAE,kDAAW,CAAC,OAAO,EAAE,EACnJ,OAAO,CAAC,iBAAiB,CAAC,CAAC;QAC/B,CAAC;KAAA;IAED,iBAAiB,CAAC,OAA8B,EAAE,QAAkC;QAClF,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;IACpD,CAAC;IAEK,mBAAmB,CAAC,SAAiB,EAAE,UAAkB;;YAC7D,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC;QACnD,CAAC;KAAA;IAED,SAAS,CAAC,SAAiB;QACzB,IAAI,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,SAAS,CAAC,CAAC;QAC3D,IAAI,QAAQ,EAAE;YACZ,IAAI,QAAQ,CAAC,cAAc,CAAC,MAAM,IAAI,CAAC,EAAE;gBACvC,IAAI,CAAC,qBAAqB,CAAC,SAAS,CAAC,GAAG,KAAK,CAAC;aAC/C;SACF;IACH,CAAC;IAED,MAAM,CAAC,WAAkC;QACvC,IAAI,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,WAAW,CAAC,UAAU,CAAC,CAAC;QACxE,IAAI,QAAQ,EAAE;YACZ,IAAI,OAAO,GAAG,QAAQ,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,WAAW,CAAC,EAAE,CAAC,CAAC;YACxE,IAAI,OAAO,CAAC,cAAc,CAAC,MAAM,GAAG,CAAC,EAAE;gBACrC,IAAI,CAAC,oBAAoB,CAAC,OAAO,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC;aAC/C;SACF;IACH,CAAC;IAEK,oBAAoB,CAAC,MAA6B,EAAE,QAAkC;;YAC1F,MAAM,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,QAAQ,CAAC,EAAE,EAAE,QAAQ,CAAC,IAAI,EAAE,kDAAW,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;QACnJ,CAAC;KAAA;IAEK,sCAAsC,CAAC,MAAqC,EAAE,QAAkC;;YACpH,MAAM,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,EAAE,QAAQ,CAAC,EAAE,EAAE,QAAQ,CAAC,IAAI,EAAE,kDAAW,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC;QAC/G,CAAC;KAAA;IAED,kBAAkB;QAChB,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,YAAY,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC;QAEpF,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,wBAAwB,CAAC,kBAAkB,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE;YACzF,MAAM,eAAe,GAAG,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;YAClI,MAAM,cAAc,GAAG,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;YAC/H,OAAO,eAAe,IAAI,cAAc,CAAC;QAC3C,CAAC,CAAC,CAAC;IACL,CAAC;IAED,qBAAqB;QACnB,IAAI,CAAC,mBAAmB,CAAC,IAAI,EAAE,CAAC;IAClC,CAAC;IAED,cAAc,CAAC,OAA8B;QAC3C,IAAI,OAAO,CAAC,cAAc,IAAI,IAAI,IAAI,OAAO,CAAC,iBAAiB,IAAI,CAAC,EAAE;YACpE,IAAI,OAAO,CAAC,cAAc,CAAC,MAAM,IAAI,CAAC,EAAE;gBACtC,OAAO,kDAAW,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;aACvD;iBAAM;gBACL,IAAI,QAAQ,GAAG,OAAO,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,kDAAW,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;gBACtE,OAAO,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;aAC3C;SACF;QACD,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,iBAAiB,CAAC,aAA4C;QAC5D,IAAI,aAAa,IAAI,IAAI,IAAI,aAAa,CAAC,cAAc,IAAI,IAAI,IAAI,aAAa,CAAC,cAAc,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC,EAAE;YACrH,OAAO,aAAa,CAAC,cAAc,CAAC;SACrC;QACD,OAAO,GAAG,CAAC;IACb,CAAC;IAED,gBAAgB,CAAC,OAAoB;QACnC,OAAO,kDAAW,CAAC,OAAO,CAAC,CAAC;IAC9B,CAAC;IAEK,oBAAoB;;YACxB,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;YACrB,IAAI,OAAO,GAAG;gBACZ,SAAS,EAAE,IAAI,CAAC,kBAAkB;gBAClC,QAAQ,EAAE,IAAI,CAAC,iBAAiB;aACC,CAAC;YACpC,IAAI,CAAC,wBAAwB,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;QACrD,CAAC;KAAA;IAED,iBAAiB,CAAC,QAAkC;QAClD,IAAI,eAAe,GAAG,QAAQ,CAAC,eAAe,CAAC,MAAM,CAAC;QACtD,IAAI,eAAe,GAAoC,EAAE;QACzD,QAAQ,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;YAClC,eAAe,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,cAAc,CAAC,CAAC;QAC5C,CAAC,CAAC,CAAC;QAEH,OAAO,eAAe,IAAI,eAAe,CAAC,MAAM,CAAC;IACnD,CAAC;IAED,iBAAiB,CAAC,SAAqC;QACrD,IAAI,CAAC,iBAAiB,GAAG,EAAE,CAAC;QAC5B,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;YACpB,IAAI,CAAC,CAAC,cAAc,IAAI,IAAI,IAAI,CAAC,CAAC,cAAc,CAAC,MAAM,GAAG,CAAC,EAAE;gBAC3D,CAAC,CAAC,cAAc,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE;oBAC5B,EAAE,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;wBAC5B,IAAI,CAAC,CAAC,KAAK,IAAI,IAAI,CAAC,YAAY,CAAC,QAAQ,IAAI,CAAC,CAAC,KAAK,IAAI,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE;4BAClF,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,EAAE,UAAU,EAAE,CAAC,CAAC,EAAE,EAAE,eAAe,EAAE,CAAC,CAAC,QAAQ,EAAE,eAAe,EAAE,EAAE,CAAC,EAAE,EAAgC,CAAC,CAAC;yBACtI;oBACH,CAAC,CAAC,CAAC;gBACL,CAAC,CAAC;aACH;QACH,CAAC,CAAC,CAAC;QACH,IAAI,IAAI,CAAC,iBAAiB,CAAC,MAAM,GAAG,CAAC,EAAE;YACrC,IAAI,IAAI,CAAC,oBAAoB,IAAI,IAAI;gBACnC,IAAI,CAAC,oBAAoB,GAAG,qDAAQ,CAAC,oCAAkC,CAAC,kBAAkB,CAAC,CAAC,SAAS,CAAC,GAAG,EAAE;oBACzG,IAAI,IAAI,CAAC,iBAAiB,CAAC,MAAM,GAAG,CAAC,EAAE;wBACrC,IAAI,CAAC,wBAAwB,CAAC,gBAAgB,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;qBACxE;gBACH,CAAC,CAAC,CAAC;SACN;aAAM;YACL,IAAI,IAAI,CAAC,oBAAoB,IAAI,IAAI,EAAE;gBACrC,IAAI,CAAC,oBAAoB,CAAC,WAAW,EAAE,CAAC;gBACxC,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC;aAClC;SACF;IACH,CAAC;IAED,cAAc;QACZ,OAAO,IAAI,CAAC,iBAAiB,CAAC,MAAM,GAAG,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC;IACxE,CAAC;IAED,cAAc;QACZ,IAAI,CAAC,iBAAiB,GAAG,CAAC,IAAI,CAAC,iBAAiB,CAAC;IACnD,CAAC;IAED,eAAe,CAAC,KAA6B;QAC3C,OAAO,KAAK,IAAI,IAAI,CAAC,YAAY,CAAC,QAAQ,IAAI,KAAK,IAAI,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC;IACpF,CAAC;IAED,gBAAgB,CAAC,aAA4C;QAC3D,IAAI,aAAa,IAAI,IAAI,IAAI,aAAa,CAAC,UAAU,IAAI,IAAI,EAAE;YAC7D,OAAO,aAAa,CAAC,UAAU,GAAG,IAAI,CAAC;SACxC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,cAAc,CAAC,QAAkC,EAAE,OAA8B;QAC/E,IAAI,QAAQ,CAAC,cAAc,CAAC,MAAM,KAAK,QAAQ,CAAC,eAAe,CAAC,MAAM,EAAE;YACtE,OAAO,IAAI,CAAC;SACb;aAAM,IAAI,OAAO,CAAC,cAAc,CAAC,MAAM,KAAK,CAAC,IAAI,QAAQ,CAAC,cAAc,CAAC,MAAM,KAAK,CAAC,EAAE;YACtF,MAAM,aAAa,GAAG,QAAQ,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,OAAO,CAAC,EAAE,CAAC,CAAC;YAC7E,IAAI,aAAa,KAAK,IAAI,IAAI,aAAa,CAAC,cAAc,CAAC,MAAM,KAAK,CAAC,EAAE;gBACvE,OAAO,IAAI,CAAC;aACb;SACF;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IAED,eAAe,CAAC,UAAkB,EAAE,SAAiB,EAAE,eAAuB,EAAE,OAAoB;QAClG,IAAI,cAAc,GAAG,IAAI,2DAAmB,EAAE,CAAC;QAC/C,cAAc,CAAC,UAAU,GAAG,UAAU,CAAC;QACvC,cAAc,CAAC,eAAe,GAAG,eAAe,CAAC;QACjD,cAAc,CAAC,eAAe,GAAG,SAAS,CAAC;QAC3C,cAAc,CAAC,OAAO,GAAG,OAAO,CAAC;QACjC,cAAc,CAAC,YAAY,GAAG,IAAI,CAAC,wBAAwB,CAAC,kBAAkB,CAAC,QAAQ,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,UAAU,CAAC,CAAC,IAAI,CAAC;QAE7H,IAAI,CAAC,mBAAmB,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC;IAClD,CAAC;CACF;AApUyB,qDAAkB,GAAW,KAAK,CAAC;AAsBpD,oDAAiB,GAAG,MAAM,CAAC;AAC3B,mDAAgB,GAAG,aAAa,CAAC;;YAsEJ,wEAA8B;YACrC,oEAA0B;YACxC,0DAAW;;AA7F1B;IADC,+DAAS,CAAC,8EAAsC,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;8BACxD,8EAAsC;4EAAC;AAGjE;IADC,+DAAS,CAAC,mEAA2B,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;8BAC9C,mEAA2B;2EAAC;AAGrD;IADC,+DAAS,CAAC,oEAA4B,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;8BAC7C,oEAA4B;4EAAC;AAGvD;IADC,+DAAS,CAAC,wEAAgC,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;8BAChD,wEAAgC;6EAAC;AAG5D;IADC,+DAAS,CAAC,oEAA4B,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;8BAC1C,oEAA4B;+EAAC;AAG1D;IADC,+DAAS,CAAC,yEAAiC,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;8BACnD,yEAAiC;2EAAC;AAG3D;IADC,+DAAS,CAAC,2EAAmC,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;8BACjD,2EAAmC;+EAAC;AArBtD,kCAAkC;IAJ9C,+DAAS,CAAC;QACT,QAAQ,EAAE,2CAA2C;QACrD,kQAA4D;KAC7D,CAAC;qCA+FoC,wEAA8B;QACrC,oEAA0B;QACxC,0DAAW;GAhGf,kCAAkC,CAqU9C;AArU8C;;;;;;;;;;;;;;;;;;;;ACdU;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACAwB;AAEhC;AAEyC;AAC9B;AACG;AAEA;AACH;AAC6D;AAMzH,IAAa,2BAA2B,GAAxC,MAAa,2BAA2B;IA0CtC,YACU,oBAAyC,EACzC,iBAA6C,EAC7C,wBAAuD,EACvD,GAAe,EACf,KAAa;QAJb,yBAAoB,GAApB,oBAAoB,CAAqB;QACzC,sBAAiB,GAAjB,iBAAiB,CAA4B;QAC7C,6BAAwB,GAAxB,wBAAwB,CAA+B;QACvD,QAAG,GAAH,GAAG,CAAY;QACf,UAAK,GAAL,KAAK,CAAQ;QAnCvB,eAAU,GAAG,QAAQ,CAAC;QACtB,eAAU,GAAG,CAAC,CAAC,CAAC;QAChB,aAAQ,GAAY,KAAK,CAAC;QAElB,kBAAa,GAAmB,EAAE,CAAC;QAM3C,cAAS,GAA4B,EAAE,CAAC;QACxC,oBAAe,GAAG,qDAAc,CAAC;QAEjC,kBAAa,GAAuC,EAAE,CAAC;QACvD,kBAAa,GAAuC,EAAE,CAAC;QACvD,kBAAa,GAAuC,EAAE,CAAC;IAqBnD,CAAC;IA9BL,IAAI,aAAa;QACf,OAAO,IAAI,CAAC,aAAa,CAAC,MAAM,KAAK,CAAC,IAAI,IAAI,CAAC,aAAa,CAAC,MAAM,KAAK,CAAC,IAAI,IAAI,CAAC,aAAa,CAAC,MAAM,KAAK,CAAC,CAAC;IAC/G,CAAC;IASD,IAAI,QAAQ;QACV,OAAO;YACL,GAAG,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,UAAU,EAAE,qDAAc,CAAC,YAAY,EAAE,SAAS,EAAE,QAAQ,EAAE,CAAC;YACvF,GAAG,CAAC,EAAE,MAAM,EAAE,eAAe,EAAE,UAAU,EAAE,qDAAc,CAAC,iBAAiB,EAAE,SAAS,EAAE,kBAAkB,EAAE,CAAC;YAC7G,GAAG,CAAC,EAAE,MAAM,EAAE,eAAe,EAAE,UAAU,EAAE,qDAAc,CAAC,iBAAiB,EAAE,SAAS,EAAE,kBAAkB,EAAE,CAAC;YAC7G,GAAG,CAAC,EAAE,MAAM,EAAE,eAAe,EAAE,UAAU,EAAE,qDAAc,CAAC,iBAAiB,EAAE,SAAS,EAAE,kBAAkB,EAAE,CAAC;YAC7G,EAAE,MAAM,EAAE,UAAU,EAAE,UAAU,EAAE,qDAAc,CAAC,QAAQ,EAAE,SAAS,EAAE,cAAc,EAAE;YACtF,EAAE,MAAM,EAAE,EAAE,EAAE,UAAU,EAAE,qDAAc,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE;YAC5D,EAAE,MAAM,EAAE,EAAE,EAAE,UAAU,EAAE,qDAAc,CAAC,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE;YAC9D,EAAE,MAAM,EAAE,EAAE,EAAE,UAAU,EAAE,qDAAc,CAAC,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE;SAC/D,CAAC;IACJ,CAAC;IAUD,QAAQ;QACN,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;QACrB,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;QACxB,MAAM,IAAI,GAAG,IAAI,CAAC,oBAAoB,CAAC,YAAY,EAAE,CAAC;QACtD,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;QAErC,IAAI,uBAAuB,GAAG,IAAI,CAAC,iBAAiB,CAAC,uBAAuB,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE;YAC5F,IAAI,IAAI,EAAE;gBACR,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,YAAY,EAAE,KAAK,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;aAC9E;QACH,CAAC,CAAC,CAAC;QAEH,IAAI,uBAAuB,GAAG,IAAI,CAAC,iBAAiB,CAAC,uBAAuB,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE;YAC5F,IAAI,IAAI,EAAE;gBACR,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,YAAY,EAAE,KAAK,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;aAC9E;QACH,CAAC,CAAC,CAAC;QAEH,IAAI,uBAAuB,GAAG,IAAI,CAAC,iBAAiB,CAAC,uBAAuB,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE;YAC5F,IAAI,IAAI,EAAE;gBACR,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,YAAY,EAAE,KAAK,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;aAC9E;QACH,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC;QACjD,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC;QACjD,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC;QAEjD,IAAI,wBAAwB,GAAG,IAAI,CAAC,wBAAwB,CAAC,cAAc,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE;YAC3F,IAAI,IAAI,EAAE;gBACR,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;gBACtB,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;aACvB;QACH,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC;QAClD,IAAI,CAAC,iBAAiB,CAAC,8BAA8B,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACjF,IAAI,CAAC,wBAAwB,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;IACjE,CAAC;IAED,WAAW;QACT,IAAI,CAAC,aAAa,IAAI,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC,CAAC;QAC3E,IAAI,CAAC,aAAa,GAAG,EAAE,CAAC;IAC1B,CAAC;IAED,UAAU;QACR,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IAClC,CAAC;IAED,WAAW,CAAC,YAAmC;QAC7C,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,YAAY,EAAE,KAAK,CAAC,CAAC;IACjD,CAAC;IAED,aAAa,CAAC,YAAmC;QAC/C,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC;IAC5C,CAAC;IAED,WAAW,CAAC,YAAmC;QAC7C,IAAI,YAAY,EAAE;YAChB,OAAO,oEAAyB,CAAC,YAAY,CAAC,YAAY,CAAC,GAAG,MAAM,GAAG,4DAAoB,CAAC,mBAAmB,CAAC,YAAY,CAAC,YAAY,CAAC,CAAC;SAC5I;QACD,OAAO,EAAE,CAAC;IACZ,CAAC;IAEM,eAAe,CAAC,OAAgB,EAAE,SAAS,GAAG,KAAK;QACxD,IAAI,SAAS,EAAE;YACb,OAAO;SACR;QAED,IAAI,IAAI,CAAC,GAAG,EAAE;YACZ,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;SACpB;QAED,MAAM,mBAAmB,GAAG,GAAG,EAAE;YAC/B,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC,GAAG,EAAE;gBAChC,IAAI;oBACF,MAAM,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,aAAa,CAAC,aAAa,CAAC,4EAA4E,CAAC,CAAC;oBAC9H,IAAI,CAAC,EAAE,EAAE;wBACP,OAAO;qBACR;oBAED,IAAI,CAAC,GAAG,GAAG,IAAI,yDAAgB,CAAC,EAAE,EAAE;wBAClC,UAAU,EAAE,CAAC;wBACb,gBAAgB,EAAE,IAAI;wBACtB,kBAAkB,EAAE,EAAE;qBACvB,CAAC,CAAC;iBACJ;gBAAC,OAAO,KAAK,EAAE;iBACf;YACH,CAAC,CAAC;QACJ,CAAC,CAAC;QAEF,IAAI,OAAO,EAAE;YACX,UAAU,CAAC,GAAG,EAAE;gBACd,mBAAmB,EAAE,CAAC;YACxB,CAAC,EAAE,OAAO,CAAC,CAAC;SACb;aAAM;YACL,mBAAmB,EAAE,CAAC;SACvB;IACH,CAAC;IAED,YAAY;QACV,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,uDAAgB,CAAC,eAAe,CAAC,CAAC;IACjE,CAAC;CACF;;YA9GiC,2DAAmB;YACtB,oEAA0B;YACnB,uEAA6B;YAClD,wDAAU;YACR,oDAAM;;AA5CvB;IADC,+DAAS,CAAC,0EAAiC,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;8BAC9D,0EAAiC;kEAAC;AAGjD;IADC,+DAAS,CAAC,yEAAgC,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;8BAC9D,yEAAgC;iEAAC;AAG/C;IADC,+DAAS,CAAC,+DAAsB,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;8BAC3C,+DAAsB;kEAAC;AATnC,2BAA2B;IAJvC,+DAAS,CAAC;QACT,QAAQ,EAAE,mCAAmC;QAC7C,0OAAoD;KACrD,CAAC;qCA4CgC,2DAAmB;QACtB,oEAA0B;QACnB,uEAA6B;QAClD,wDAAU;QACR,oDAAM;GA/CZ,2BAA2B,CAyJvC;AAzJuC;;;;;;;;;;;;;;;;;;;;AChBS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACAI;AAEiC;AAC9B;AAC6E;AAC5F;AACG;AAM5C,IAAa,eAAe,GAA5B,MAAa,eAAe;IAQ1B,YACU,oBAAyC,EACzC,iBAAmC,EACnC,uBAAsD,EACtD,uBAAsD,EACtD,uBAAsD,EACtD,OAAe,EACf,YAAyB;QANzB,yBAAoB,GAApB,oBAAoB,CAAqB;QACzC,sBAAiB,GAAjB,iBAAiB,CAAkB;QACnC,4BAAuB,GAAvB,uBAAuB,CAA+B;QACtD,4BAAuB,GAAvB,uBAAuB,CAA+B;QACtD,4BAAuB,GAAvB,uBAAuB,CAA+B;QACtD,YAAO,GAAP,OAAO,CAAQ;QACf,iBAAY,GAAZ,YAAY,CAAa;IAEnC,CAAC;IAED,QAAQ;QACN,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC;QAC7B,MAAM,UAAU,GAAG,GAAG,CAAC,OAAO,CAAC,oDAAS,CAAC,KAAK,CAAC,CAAC,CAAC;QAEjD,IAAI,CAAC,KAAK,GAAI,UAAU;YACtB,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,uBAAuB,CAAC,GAAG,CAAC,CAAC,IAAI;YACrD,CAAC,CAAC,IAAI,CAAC,oBAAoB,CAAC,YAAY,EAAE,CAAC,IAAI,CAAC;QAElD,QAAQ,IAAI,CAAC,KAAK,EAAE;YAClB,KAAK,oDAAY,CAAC,YAAY;gBAC5B,IAAI,CAAC,WAAW,GAAG,eAAe,CAAC;gBACnC,IAAI,CAAC,WAAW,GAAG,GAAG,CAAC;gBACvB,MAAM;YACR,KAAK,oDAAY,CAAC,WAAW;gBAC3B,IAAI,CAAC,WAAW,GAAG,aAAa,CAAC;gBACjC,IAAI,CAAC,WAAW,GAAG,GAAG,CAAC;gBACvB,MAAM;YACR,KAAK,oDAAY,CAAC,WAAW;gBAC3B,IAAI,CAAC,WAAW,GAAG,cAAc,CAAC;gBAClC,IAAI,CAAC,WAAW,GAAG,GAAG,CAAC;gBACvB,MAAM;YACR,KAAK,oDAAY,CAAC,MAAM;gBACtB,IAAI,CAAC,WAAW,GAAG,QAAQ,CAAC;gBAC5B,IAAI,CAAC,WAAW,GAAG,GAAG,CAAC;gBACvB,MAAM;YACR,KAAK,oDAAY,CAAC,SAAS;gBACzB,IAAI,CAAC,WAAW,GAAG,YAAY,CAAC;gBAChC,IAAI,CAAC,WAAW,GAAG,GAAG,CAAC;gBACvB,MAAM;YACR;gBACE,IAAI,CAAC,WAAW,GAAG,SAAS,CAAC;gBAC7B,IAAI,CAAC,WAAW,GAAG,GAAG,CAAC;SAC1B;IACH,CAAC;IAED,cAAc;QACZ,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC;IAC3B,CAAC;IAEI,aAAa;;YAChB,IAAI,CAAC,iBAAiB,CAAC,MAAM,EAAE,CAAC;YAChC,IAAI,CAAC,uBAAuB,CAAC,gBAAgB,EAAE,CAAC;YAChD,IAAI,CAAC,uBAAuB,CAAC,gBAAgB,EAAE,CAAC;QAClD,CAAC;KAAA;CACF;;YAtDiC,2DAAmB;YACtB,wDAAgB;YACV,uEAA6B;YAC7B,uEAA6B;YAC7B,uEAA6B;YAC7C,sDAAM;YACD,qDAAW;;AATnC;IADC,+DAAS,CAAC,iEAAyB,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;8BAC/C,iEAAyB;qDAAC;AANrC,eAAe;IAJ3B,+DAAS,CAAC;QACT,QAAQ,EAAE,qBAAqB;QAC/B,gMAAsC;KACvC,CAAC;qCAUgC,2DAAmB;QACtB,wDAAgB;QACV,uEAA6B;QAC7B,uEAA6B;QAC7B,uEAA6B;QAC7C,sDAAM;QACD,qDAAW;GAfxB,eAAe,CA+D3B;AA/D2B;;;;;;;;;;;;;;;;;;;;ACZO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACAH;AACP;AACQ;AACD;AACK;AACD;AACA;AACX;AACC;AACU;AACM;AACF;AACd;AACa;AACG;AACF;AACd;AACQ;AACF;AACF;AACM;AACJ;AACQ;AACD;AACK;AACV;AACD;AACM;AACd;AACsB;;;;;;;;;;;;;;;;;;;;AC7BL;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACAkD;AAC3C;AAEL;AAE0F;AACvC;AAC+C;AACR;AACjE;AACgD;AACpE;AAQjD,IAAa,oBAAoB,4BAAjC,MAAa,oBAAoB;IAiE/B,YACU,GAAe,EACf,KAAa,EACb,uBAA+C,EAC/C,6BAA4D,EAC5D,YAAyB,EACzB,YAAyB;QALzB,QAAG,GAAH,GAAG,CAAY;QACf,UAAK,GAAL,KAAK,CAAQ;QACb,4BAAuB,GAAvB,uBAAuB,CAAwB;QAC/C,kCAA6B,GAA7B,6BAA6B,CAA+B;QAC5D,iBAAY,GAAZ,YAAY,CAAa;QACzB,iBAAY,GAAZ,YAAY,CAAa;QAtDnC,oBAAe,GAAG,qDAAc,CAAC;QACjC,eAAU,GAAG,sBAAoB,CAAC,UAAU;QAC5C,eAAU,GAAG,sBAAoB,CAAC,kBAAkB,CAAC;QAGrD,gBAAW,GAAiD,EAAE,CAAC;QAC/D,sBAAiB,GAAY,KAAK,CAAC;QAEnC,iBAAY,GAA8B,IAAI,iEAAyB,CAAC,sBAAoB,CAAC,eAAe,CAAC,CAAC;QAG9G,sBAAiB,GAAqD,EAAE,CAAC;QAEzE,eAAU,GAAW,EAAE,CAAC;QACxB,gBAAW,GAAsB,IAAI,4DAAiB,EAAE,CAAC;QACzD,8BAAyB,GAAyB,IAAI,CAAC;QACvD,aAAQ,GAAY,KAAK,CAAC;QAC1B,cAAS,GAAY,KAAK,CAAC;QACnB,kCAA6B,GAAyB,IAAI,CAAC;QAC3D,cAAS,GAA2B,EAAE,CAAC;QAE/C,iBAAY,GAAG;YACb,EAAE,MAAM,EAAE,aAAa,EAAE,UAAU,EAAE,qDAAc,CAAC,IAAI,EAAE,SAAS,EAAE,4BAA4B,EAAE;YACnG,EAAE,MAAM,EAAE,YAAY,EAAE,UAAU,EAAE,qDAAc,CAAC,IAAI,EAAE,SAAS,EAAE,2BAA2B,EAAE;YACjG,EAAE,MAAM,EAAE,aAAa,EAAE,UAAU,EAAE,qDAAc,CAAC,SAAS,EAAE,SAAS,EAAE,cAAc,EAAE;YAC1F,EAAE,MAAM,EAAE,UAAU,EAAE,UAAU,EAAE,qDAAc,CAAC,UAAU,EAAE,SAAS,EAAE,OAAO,EAAE;SAClF;IA6BG,CAAC;IA3BL,IAAI,UAAU;QACZ,OAAO,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;IAC5B,CAAC;IACD,IAAI,QAAQ;QACV,OAAO,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;IAC9E,CAAC;IAED,IAAI,eAAe;QACjB,OAAO,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,oDAAY,CAAC,YAAY,CAAC,IAAI,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,oDAAY,CAAC,WAAW,CAAC,CAAC;IAC7H,CAAC;IAED,IAAI,uBAAuB;QACzB,MAAM,OAAO,GAAG,IAAI,IAAI,EAAE,CAAC;QAC3B,OAAO,GAAG,OAAO,CAAC,WAAW,EAAE,GAAG,CAAC,IAAI,OAAO,CAAC,WAAW,EAAE,EAAE,CAAC;IACjE,CAAC;IAED,IAAI,cAAc;QAChB,OAAO,IAAI,CAAC,YAAY,CAAC,YAAY,IAAI,IAAI,IAAI,IAAI,CAAC,YAAY,CAAC,UAAU,IAAI,IAAI;IACvF,CAAC;IAWK,QAAQ;;YACZ,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;YACxB,IAAI,CAAC,aAAa,EAAE,CAAC;YAErB,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,6DAAkB,CAAC,EAAE;gBAC7D,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;aAC7D;YAED,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,gEAAqB,CAAC,EAAE;gBAChE,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;aACnE;YAED,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC;gBAC3C,cAAc,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC;gBACjC,SAAS,EAAE,EAAE;gBACb,WAAW,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC;gBAC9B,WAAW,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC;aAC7B,CAAC,CAAC;YAEH,IAAI,CAAC,SAAS,IAAG,MAAM,IAAI,CAAC,6BAA6B,CAAC,wCAAwC,EAA4B,EAAC;YAC/H,IAAI,IAAI,CAAC,SAAS,EAAE;gBAClB,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,gBAAgB,EAAE,CAAC;aAC9C;YAED,IAAI,CAAC,sBAAsB,EAAE,CAAC;QAChC,CAAC;KAAA;IAED,WAAW;QACT,IAAI,CAAC,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;QAC/B,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC;IAClB,CAAC;IAED,eAAe;QACb,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;IAC1B,CAAC;IAED,mBAAmB,CAAC,KAAuB;QACzC,OAAO,iEAAsB,CAAC,KAAK,CAAC,CAAC;IACvC,CAAC;IAED,mBAAmB,CAAC,KAAuB;QACzC,OAAO,6DAAkB,CAAC,KAAK,CAAC,CAAC;IACnC,CAAC;IAED,cAAc;QACZ,IAAI,CAAC,iBAAiB,GAAG,CAAC,IAAI,CAAC,iBAAiB,CAAC;IACnD,CAAC;IAEK,sBAAsB;;YAC1B,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;YACrB,IAAI,CAAC,YAAY,CAAC,WAAW,GAAG,CAAC,CAAC;YAClC,IAAI,MAAM,GAAG,MAAM,IAAI,CAAC,uBAAuB,CAAC,oBAAoB,CAAC,IAAI,CAAC,YAAY,CAA0B,CAAC;YACjH,IAAI,MAAM,EAAE;gBACV,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,wDAAgB,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC;gBACzE,IAAI,CAAC,iBAAiB,GAAG,MAAM,CAAC,UAAU,CAAC;aAC5C;YACD,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;QACxB,CAAC;KAAA;IAEK,aAAa;;YACjB,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;YACtB,IAAI,CAAC,YAAY,CAAC,WAAW,EAAE,CAAC;YAChC,IAAI,MAAM,GAAG,MAAM,IAAI,CAAC,uBAAuB,CAAC,oBAAoB,CAAC,IAAI,CAAC,YAAY,CAA0B,CAAC;YACjH,IAAI,MAAM,EAAE;gBACV,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,wDAAgB,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;aACjF;YACD,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;QACzB,CAAC;KAAA;IAED,qBAAqB;QACnB,IAAI,CAAC,YAAY,CAAC,SAAS,GAAG,EAAE,CAAC;QACjC,IAAI,CAAC,YAAY,CAAC,WAAW,GAAG,EAAE,CAAC;QACnC,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;YAC7B,QAAQ,CAAC,CAAC,IAAI,CAAC,QAAQ,EAAE;gBACvB,KAAK,uDAAgB,CAAC,QAAQ;oBAC5B,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;oBAC9C,MAAM;gBACR,KAAK,uDAAgB,CAAC,GAAG;oBACvB,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;oBAC5C,MAAM;aACT;QACH,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,sBAAsB,EAAE,CAAC;IAChC,CAAC;IAEK,aAAa,CAAC,OAAoB;;YACtC,OAAO,CAAC,eAAe,EAAE,CAAC;QAC5B,CAAC;KAAA;IAEK,cAAc,CAAC,OAAoB;;YACvC,OAAO,CAAC,aAAa,EAAE,CAAC;QAC1B,CAAC;KAAA;IAED,YAAY;QACV,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,uDAAgB,CAAC,SAAS,CAAC,CAAC;IAC3D,CAAC;IAED,oBAAoB,CAAC,KAAa;QAChC,IAAI,CAAC,iBAAiB,CAAC,qBAAqB,CAAC,KAAK,CAAC,CAAC;IACtD,CAAC;IAED,WAAW,CAAC,SAA+B;QACzC,IAAI,OAAO,GAAG,IAAI,IAAI,EAAE,CAAC;QACzB,IAAI,SAAS,GAAG,IAAI,IAAI,EAAE,CAAC;QAC3B,OAAO,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;QAC7B,SAAS,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;QAC/B,IAAI,CAAC,UAAU,GAAG,EAAE,CAAC;QACrB,QAAQ,SAAS,EAAE;YACjB,KAAK,2DAAoB,CAAC,IAAI;gBAC5B,SAAS,CAAC,OAAO,CAAC,SAAS,CAAC,OAAO,EAAE,GAAG,gEAAqB,CAAC,kBAAkB,CAAC,CAAC;gBAClF,MAAM;YACR,KAAK,2DAAoB,CAAC,KAAK;gBAC7B,SAAS,CAAC,OAAO,CAAC,SAAS,CAAC,OAAO,EAAE,GAAG,gEAAqB,CAAC,mBAAmB,CAAC,CAAC;gBACnF,MAAM;SACT;QACD,IAAI,CAAC,yBAAyB,GAAG,SAAS,CAAC;QAC3C,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAChC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAChC,CAAC;IAED,gBAAgB;QACd,IAAI,CAAC,aAAa,EAAE,CAAC;QACrB,IAAI,CAAC,yBAAyB,GAAG,IAAI,CAAC;QACtC,IAAI,CAAC,YAAY,CAAC,YAAY,GAAG,IAAI,CAAC;QACtC,IAAI,CAAC,YAAY,CAAC,UAAU,GAAG,IAAI,CAAC;QACpC,IAAI,CAAC,sBAAsB,EAAE,CAAC;IAChC,CAAC;IAED,sBAAsB;QACpB,IAAI,IAAI,CAAC,UAAU,IAAI,SAAS,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,IAAI,CAAC,EAAE;YAC/D,IAAI,CAAC,aAAa,EAAE,CAAC;SACtB;QACD,IAAI,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,SAAS,IAAI,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,IAAI,EAAE;YACjE,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;SACzC;QACD,IAAI,CAAC,YAAY,CAAC,YAAY,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,GAAG,gEAAqB,CAAC,4BAA4B,CAAC,GAAG,CAAC,CAAC;QACzH,IAAI,CAAC,YAAY,CAAC,UAAU,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,GAAG,gEAAqB,CAAC,4BAA4B,CAAC,GAAG,CAAC,CAAC;QACvH,IAAI,CAAC,sBAAsB,EAAE,CAAC;QAC9B,IAAI,CAAC,6BAA6B,GAAG,IAAI,CAAC,yBAAyB,CAAC;QACpE,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC;IACzB,CAAC;IAED,iBAAiB;QACf,IAAI,CAAC,yBAAyB,GAAG,IAAI,CAAC;IACxC,CAAC;IAED,eAAe;QACb,IAAI,IAAI,CAAC,YAAY,CAAC,YAAY,IAAI,IAAI,IAAI,IAAI,CAAC,YAAY,CAAC,UAAU,IAAI,IAAI,EAAE;YAClF,IAAI,CAAC,aAAa,EAAE,CAAC;YACrB,OAAO;SACR;QACD,IAAI,IAAI,CAAC,6BAA6B,IAAI,IAAI,EAAE;YAC9C,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,6BAA6B,CAAC,CAAC;YACrD,OAAO;SACR;QACD,IAAI,CAAC,UAAU,GAAG,EAAE,CAAC;QACrB,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,YAAY,GAAG,gEAAqB,CAAC,4BAA4B,CAAC,CAAC,CAAC;QACpH,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,UAAU,GAAG,gEAAqB,CAAC,4BAA4B,CAAC,CAAC,CAAC;IACpH,CAAC;IAED,UAAU;QACR,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,gBAAgB,EAAE,EAAE,kDAAW,CAAC,GAAG,CAAC,CAAC;IACpE,CAAC;IAEM,eAAe,CAAC,OAAgB,EAAE,SAAS,GAAG,KAAK;QACxD,IAAI,SAAS,EAAE;YACb,OAAO;SACR;QAED,IAAI,IAAI,CAAC,GAAG,EAAE;YACZ,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;SACpB;QAED,MAAM,mBAAmB,GAAG,GAAG,EAAE;YAC/B,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC,GAAG,EAAE;gBAChC,IAAI;oBACF,MAAM,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,aAAa,CAAC,aAAa,CAAC,4EAA4E,CAAC,CAAC;oBAC9H,IAAI,CAAC,EAAE,EAAE;wBACP,OAAO;qBACR;oBAED,IAAI,CAAC,GAAG,GAAG,IAAI,yDAAgB,CAAC,EAAE,EAAE;wBAClC,UAAU,EAAE,CAAC;wBACb,gBAAgB,EAAE,IAAI;wBACtB,kBAAkB,EAAE,EAAE;qBACvB,CAAC,CAAC;iBACJ;gBAAC,OAAO,KAAK,EAAE;iBACf;YACH,CAAC,CAAC;QACJ,CAAC,CAAC;QAEF,IAAI,OAAO,EAAE;YACX,UAAU,CAAC,GAAG,EAAE;gBACd,mBAAmB,EAAE,CAAC;YACxB,CAAC,EAAE,OAAO,CAAC,CAAC;SACb;aAAM;YACL,mBAAmB,EAAE,CAAC;SACvB;IACH,CAAC;IAEO,aAAa;QACnB,IAAI,CAAC,6BAA6B,GAAG,IAAI,CAAC;QAC1C,IAAI,CAAC,yBAAyB,GAAG,IAAI,CAAC;QACtC,IAAI,CAAC,UAAU,GAAG,EAAE,CAAC;QACrB,IAAI,KAAK,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,KAAK,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;QAC3B,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC5B,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC9B,CAAC;IAEO,gBAAgB;QACtB,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;YAC9B,KAAK,EAAE,CAAC,CAAC,IAAI,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,QAAQ,EAAE,uDAAgB,CAAC,QAAQ,EAAE,EAAE,QAAQ,EAAE,KAAK;YACtH,QAAQ,EAAE,CAAC,CAAC,CAAC,IAAI,IAAI,SAAS,IAAI,CAAC,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CACrE;gBACE,KAAK,EAAE,CAAC,CAAC,IAAI;gBACb,IAAI,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,QAAQ,EAAE,uDAAgB,CAAC,GAAG,EAAE,UAAU,EAAE,CAAC,CAAC,EAAE,EAAE;gBACpE,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC,IAAI;aAC9B,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE;SACX,CAAC,CAAC,CAAC;IACN,CAAC;CACF;AAtSQ,+BAAU,GAAG,WAAW,CAAC;AACzB,uCAAkB,GAAG,CAAC,CAAC;AACvB,oCAAe,GAAG,GAAG,CAAC;;YA+Dd,wDAAU;YACR,oDAAM;YACY,gEAAsB;YAChB,uEAA6B;YAC9C,0DAAW;YACX,qDAAW;;AAjEnC;IADC,+DAAS,CAAC,UAAU,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;8BACvB,yDAAQ;sDAAC;AAG3B;IADC,+DAAS,CAAC,8DAAsB,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;8BAC3C,8DAAsB;2DAAC;AAG9C;IADC,+DAAS,CAAC,wEAAgC,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;8BACvD,wEAAgC;yDAAC;AAGtD;IADC,+DAAS,CAAC,sEAA8B,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;8BAC/C,sEAA8B;+DAAC;AAf/C,oBAAoB;IALhC,+DAAS,CAAC;QACT,QAAQ,EAAE,4BAA4B;QACtC,qNAA6C;KAE9C,CAAC;qCAmEe,wDAAU;QACR,oDAAM;QACY,gEAAsB;QAChB,uEAA6B;QAC9C,0DAAW;QACX,qDAAW;GAvExB,oBAAoB,CAuShC;AAvSgC;;;;;;;;;;;;;;;;;;;;ACnBY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACE0C;AAClB;AACF;AAG+G;AAChB;AAC5F;AACoB;AACuD;AAIzH;AASxB,IAAa,uBAAuB,+BAApC,MAAa,uBAAuB;IAwDlC,YACU,kBAA2C,EACnD,WAAwB,EAChB,UAAwB,EACxB,oBAAyC,EACzC,YAAyB;QAJzB,uBAAkB,GAAlB,kBAAkB,CAAyB;QAE3C,eAAU,GAAV,UAAU,CAAc;QACxB,yBAAoB,GAApB,oBAAoB,CAAqB;QACzC,iBAAY,GAAZ,YAAY,CAAa;QA7C3B,kBAAa,GAAmB,EAAE,CAAC;QAC3C,iBAAY,GAAiD,EAAE,CAAC;QAChE,oBAAe,GAAuD,EAAE,CAAC;QACzE,aAAQ,GAAgD,EAAE,CAAC;QAE3D,qBAAgB,GAA2B,IAAI,8DAAsB,EAAE,CAAC;QACxE,eAAU,GAAW,CAAC,CAAC;QACvB,wCAAmC,GAAa,EAAE,CAAC;QACnD,kBAAa,GAAsB,EAAE,CAAC;QAItC,gBAAW,GAAqD,EAAE,CAAC;QACnE,kBAAa,GAAgD,EAAE,CAAC;QAGhE,kBAAa,GAAY,IAAI,CAAC;QAC9B,sBAAiB,GAAY,KAAK,CAAC;QAEnC,qBAAgB,GAAW,EAAE,CAAC;QAC9B,uBAAkB,GAAmD,EAAE,IAAI,EAAE,EAAE,EAAE,KAAK,EAAE,4DAAqB,CAAC,cAAc,EAAE,CAAC;QAG/H,kBAAa,GAAe,EAAE,CAAC;QAE/B,uBAAkB,GAAQ,+DAAoB,CAAC;QAC/C,yBAAoB,GAAQ,iEAAsB,CAAC;QACnD,cAAS,GAA8B,EAAE,CAAC;QAC1C,mBAAc,GAAY,KAAK,CAAC;QAmB9B,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC,KAAK,CAAC;YACnC,YAAY,EAAE,CAAC,EAAE,CAAC;SACnB,CAAC,CAAC;IACL,CAAC;IAlBD,IAAI,UAAU;QACZ,OAAO,IAAI,CAAC,KAAK,KAAK,oDAAY,CAAC,WAAW,IAAI,IAAI,CAAC,KAAK,KAAK,oDAAY,CAAC,YAAY,CAAC;IAC7F,CAAC;IAED,IAAI,cAAc;QAChB,OAAO,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,oDAAY,CAAC,YAAY,CAAC,IAAI,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,oDAAY,CAAC,WAAW,CAAC,IAAG,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,oDAAY,CAAC,MAAM,CAAC,CAAC;IAClL,CAAC;IAaD,WAAW;QACT,IAAI,CAAC,kBAAkB,EAAE,CAAC;QAC1B,IAAI,CAAC,kBAAkB,CAAC,eAAe,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACnD,CAAC;IAEO,kBAAkB;QACxB,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC;QACjD,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;IAC5B,CAAC;IAEO,aAAa;QACnB,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,8DAAmB,CAAC,EAAE;YAC9D,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;SAC5D;QAED,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,4DAAiB,CAAC,EAAE;YAC5D,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;SAC9D;QACD,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,kEAAuB,CAAC,EAAE;YAClE,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;SACjE;QACD,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,2DAAgB,CAAC,EAAE;YAC3D,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;SAC1D;QACD,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,+DAAoB,CAAC,EAAE;YAC/D,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,UAAU,CAAC,sBAAsB,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC;SACrG;IACH,CAAC;IAEO,wBAAwB,CAAC,gBAAwB,EAAE,sBAA8B;QACvF,IAAI,aAAa,GAAG,IAAI,IAAI,EAAE,CAAC,UAAU,EAAE,CAAC;QAC5C,IAAI,SAAS,GAAG,aAAa,GAAG,gBAAgB,CAAC,CAAC,CAAC,CAAC,aAAa,GAAG,gBAAgB,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,aAAa,GAAG,gBAAgB,GAAG,CAAC,CAAC,CAAC;QACxI,IAAI,uBAAuB,GAAG,sBAAsB,GAAG,SAAS,CAAC;QACjE,OAAO,uBAAuB,CAAC;IACjC,CAAC;IAEO,gBAAgB;QACtB,IAAI,gBAAgB,GAAG,IAAI,CAAC,kBAAkB,CAAC,eAAe,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE;YAC/E,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC;gBAClB,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE;oBACjB,IAAI,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC;oBAClD,IAAI,GAAG,IAAI,SAAS,EAAE;wBACpB,GAAG,CAAC,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,UAAU,IAAI,GAAG,CAAC,UAAU,CAAC,CAAC,sBAAsB,EAAE,EAAE,CAAC,kBAAkB,CAAC,CAAC;wBAC1J,GAAG,CAAC,kBAAkB,GAAG,EAAE,CAAC,kBAAkB,CAAC;wBAC/C,GAAG,CAAC,mBAAmB,GAAG,EAAE,CAAC,mBAAmB,CAAC;wBACjD,GAAG,CAAC,cAAc,GAAG,EAAE,CAAC,cAAc,CAAC;wBACvC,GAAG,CAAC,YAAY,GAAG,EAAE,CAAC,YAAY,CAAC;wBACnC,GAAG,CAAC,aAAa,GAAG,EAAE,CAAC,aAAa,CAAC;wBACrC,GAAG,CAAC,MAAM,GAAG,EAAE,CAAC,MAAM,CAAC;wBACvB,GAAG,CAAC,sBAAsB,GAAG,EAAE,CAAC,sBAAsB,CAAC;wBACvD,GAAG,CAAC,2BAA2B,GAAG,EAAE,CAAC,2BAA2B,CAAC;wBACjE,GAAG,CAAC,oBAAoB,GAAG,EAAE,CAAC,oBAAoB,CAAC;wBACnD,GAAG,CAAC,SAAS,GAAG,EAAE,CAAC,SAAS,CAAC;wBAC7B,IAAI,SAAS,GAAG,IAAI,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC;wBACvC,IAAI,IAAI,CAAC,mCAAmC,CAAC,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,EAAE;4BAC1E,IAAI,eAAe,GAAG,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,UAAU,IAAI,GAAG,CAAC,UAAU,CAAC,CAAC,eAAe,CAAC;4BAC1G,IAAI,SAAS,GAAG,IAAI,CAAC,wBAAwB,CAAC,SAAS,CAAC,UAAU,EAAE,EAAE,eAAe,CAAC,CAAC;4BACvF,IAAI,CAAC,mCAAmC,CAAC,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;4BAC9D,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC;yBAC/C;qBACF;gBACH,CAAC,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;QAE1C,IAAI,qBAAqB,GAAG,IAAI,CAAC,kBAAkB,CAAC,eAAe,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE;YACnF,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC;YAC5B,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE;gBAC/B,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC,eAAe,CAAC,WAAW,CAAC;gBACpD,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC,yCAAyC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;gBACvF,OAAO,CAAC,eAAe,GAAG,IAAI,CAAC,eAAe,CAAC,kBAAkB,CAAC;YACpE,CAAC,CAAC,CAAC;QACL,CAAC,CAAC;QACF,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC;IACjD,CAAC;IAED,eAAe;QACb,IAAI,SAAS,GAAG,IAAI,CAAC,gBAAgB,CAAC,oBAAoB,CAAC,SAAS,CAAC,CAAC,MAAM,EAAE,EAAE;YAC9E,IAAI,IAAI,CAAC,aAAa,IAAI,IAAI,CAAC,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE;gBACvD,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE;oBAC5B,IAAI,CAAC,CAAC,QAAQ,EAAE;wBACd,OAAO,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE;4BAC3B,IAAI,CAAC,CAAC,QAAQ,EAAE;gCACd,OAAO,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE;oCACzB,IAAI,CAAC,CAAC,IAAI,IAAI,MAAM,CAAC,EAAE,EAAE;wCACvB,CAAC,CAAC,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC;wCACtB,OAAO,IAAI,CAAC;qCACb;gCACH,CAAC,CAAC,CAAC;6BACJ;wBACH,CAAC,CAAC,CAAC;qBACJ;gBACH,CAAC,CAAC,CAAC;aACJ;YACD,IAAI,CAAC,eAAe,EAAE,CAAC;QACzB,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IACrC,CAAC;IAEO,gBAAgB,CAAC,MAA0B;QACjD,IAAI,CAAC,qBAAqB,GAAG,MAAM,CAAC,iBAAiB,CAAC;QACtD,IAAI,mCAAmC,GAAG,IAAI,CAAC,sCAAsC,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC;QAClH,KAAK,MAAM,GAAG,IAAI,mCAAmC,EAAE;YACrD,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC;gBACtB,KAAK,EAAE,mCAAmC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW;gBAC9D,GAAG,EAAE,mCAAmC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,QAAQ,EAAE;oBACnE,mCAAmC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW;gBACzD,IAAI,EAAE,mCAAmC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS;gBAC3D,QAAQ,EAAE,IAAI;gBACd,QAAQ,EAAE,mCAAmC,CAAC,GAAG,CAAC,CAAC,GAAG,CACpD,CAAC,CAA4E,EAAE,EAAE,CAAC,CAAC;oBACjF,KAAK,EAAE,CAAC,CAAC,YAAY;oBACrB,GAAG,EAAE,CAAC,CAAC,UAAU,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC,YAAY;oBAC7C,IAAI,EAAE,CAAC,CAAC,UAAU;oBAClB,QAAQ,EAAE,KAAK;oBACf,QAAQ,EAAE,CAAC,CAAC,CAAC,IAAI,IAAI,SAAS,IAAI,CAAC,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;wBAClD,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;wBACjF,CAAC,CAAC,EAAE;iBACP,CAAC,CAAC;aACN,CACA,CAAC;SACH;QAED,IAAI,CAAC,eAAe,GAAG,MAAM,CAAC,sBAAsB,CAAC;QACrD,IAAI,CAAC,oBAAoB,GAAG,MAAM,CAAC,2BAA2B,CAAC;IAGjE,CAAC;IAED,sCAAsC,CAAC,KAAoC;QACzE,IAAI,CAAC,aAAa,GAAG,EAAE,CAAC;QACxB,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;YAChB,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;QACpC,CAAC,CAAC;QACF,OAAO,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;YAC3B,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC;YACtC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YACvB,OAAO,CAAC,CAAC;QACX,CAAC,EAAE,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;IAC1B,CAAC;IAEK,oBAAoB;;YACxB,IAAI,CAAC,cAAc,GAAG,CAAC,CAAC;YACxB,IAAI,CAAC,iBAAiB,GAAG,KAAK,CAAC;YAC/B,IAAI,CAAC,gBAAgB,CAAC,kBAAkB,GAAG,EAAE,CAAC;YAC9C,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;gBAC7B,IAAI,CAAC,CAAC,CAAC,QAAQ,EAAE;oBACf,IAAI,CAAC,gBAAgB,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;iBACvD;YACH,CAAC,CAAC,CAAC;YACH,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,gBAAgB,CAAC,kBAAkB,CAAC,MAAM,CAAC;YACtE,MAAM,IAAI,CAAC,eAAe,EAAE,CAAC;QAC/B,CAAC;KAAA;IAEO,aAAa,CAAC,UAAkB,EAAE,OAAe;QACvD,IAAI,mBAAmB,GAAG,OAAO,GAAG,yBAAuB,CAAC,uBAAuB,CAAC;QACpF,UAAU,CAAC,GAAG,EAAE;YACd,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC;YAChC,IAAI,CAAC,0BAA0B,CAAC,UAAU,CAAC,CAAC;QAC9C,CAAC,EAAE,mBAAmB,CAAC,CAAC;IAC1B,CAAC;IAEO,0BAA0B,CAAC,UAAkB;QACnD,IAAI,QAAQ,GAAG,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,UAAU,IAAI,UAAU,CAAC,CAAC,eAAe,GAAG,yBAAuB,CAAC,uBAAuB,CAAC;QACjJ,WAAW,CAAC,GAAG,EAAE,CACf,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,EAAE,QAAQ,CAAC,CAAC;IAC/C,CAAC;IAEK,QAAQ;;YACZ,MAAM,IAAI,GAAG,IAAI,CAAC,oBAAoB,CAAC,YAAY,EAAE,CAAC;YACtD,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;YACrC,IAAI,CAAC,aAAa,EAAE,CAAC;YACrB,IAAI,CAAC,gBAAgB,EAAE,CAAC;YAExB,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,kBAAkB,CAAC,yBAAyB,EAAE,CAAC;YAC/E,IAAI,YAAY,EAAE;gBAChB,IAAI,CAAC,gBAAgB,CAAC,YAAkC,CAAC,CAAC;aAC3D;YACD,MAAM,IAAI,CAAC,+BAA+B,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YAC5D,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;YACtD,MAAM,IAAI,CAAC,kBAAkB,CAAC,kBAAkB,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;QAC1E,CAAC;KAAA;IAEO,yCAAyC,CAAC,OAAuB;QACvE,QAAQ,OAAO,EAAE;YACf,KAAK,qDAAc,CAAC,oBAAoB,CAAC;YACzC,KAAK,qDAAc,CAAC,iBAAiB,CAAC;YACtC,KAAK,qDAAc,CAAC,mBAAmB;gBACrC,OAAO,IAAI,CAAC,eAAe,CAAC,kBAAkB,CAAC;YACjD;gBACE,OAAO,IAAI,CAAC,eAAe,CAAC,gBAAgB,CAAC;SAChD;IACH,CAAC;IAED,qBAAqB,CAAC,QAAyB;QAC7C,OAAO,2DAAgB,CAAC,QAAQ,CAAC,CAAC;IACpC,CAAC;IAED,yBAAyB,CAAC,YAA8B;QACtD,OAAO,4DAAiB,CAAC,YAAY,CAAC,CAAC;IACzC,CAAC;IAED,4BAA4B,CAAC,eAAuC;QAClE,OAAO,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,IAAI,eAAe,CAAC,CAAC,KAAK,CAAC;IAC1E,CAAC;IAED,mBAAmB,CAAC,KAAa,EAAE,cAAsC;QACvE,IAAI,MAAc,CAAC;QACnB,IAAI,cAAc,IAAI,6DAAsB,CAAC,OAAO,EAAE;YACpD,MAAM,GAAG,4DAAoB,CAAC,mBAAmB,CAAC,KAAK,CAAC,CAAC;SAC1D;aACI;YACH,MAAM,GAAG,KAAK,CAAC;SAChB;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,YAAY,CAAC,KAAa,EAAE,QAAyB;QACnD,IAAI,MAAM,GAAG,4DAAoB,CAAC,iBAAiB,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;QACrE,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,gBAAgB,CAAC,GAAW,EAAE,MAAc;QAC1C,OAAO,4DAAoB,CAAC,gBAAgB,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;IAC5D,CAAC;IAED,gBAAgB,CAAC,KAAa,EAAE,YAA8B,EAAE,OAAuB;QACrF,IAAI,MAAc,CAAC;QACnB,QAAQ,OAAO,EAAE;YACf,KAAK,qDAAc,CAAC,oBAAoB,CAAC;YACzC,KAAK,qDAAc,CAAC,iBAAiB,CAAC;YACtC,KAAK,qDAAc,CAAC,mBAAmB;gBACrC,MAAM,GAAG,4DAAoB,CAAC,cAAc,CAAC,KAAK,EAAE,YAAY,CAAC,CAAC;gBAClE,MAAM;YACR;gBACE,MAAM,GAAG,4DAAoB,CAAC,cAAc,CAAC,KAAK,EAAE,YAAY,CAAC,CAAC;SACrE;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;IAEO,WAAW,CAAC,cAAwC,EAAE,eAAuB;QACnF,IAAI,QAAgB,CAAC;QACrB,cAAc,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;YACzB,IAAI,eAAe,IAAI,CAAC,CAAC,IAAI,IAAI,eAAe,IAAI,CAAC,CAAC,EAAE,EAAE;gBACxD,QAAQ,GAAG,CAAC,CAAC,QAAQ,CAAC;aACvB;QACH,CAAC,CAAC;QACF,OAAO,QAAQ,CAAC;IAClB,CAAC;IAEK,aAAa,CAAC,OAAoB;;YACtC,OAAO,CAAC,eAAe,EAAE,CAAC;QAC5B,CAAC;KAAA;IAED,cAAc;QACZ,IAAI,CAAC,iBAAiB,GAAG,CAAC,IAAI,CAAC,iBAAiB,CAAC;IACnD,CAAC;IAEK,mBAAmB,CAAC,MAAM;;YAC9B,IAAI,CAAC,iBAAiB,GAAG,KAAK,CAAC;YAC/B,IAAI,CAAC,kBAAkB,GAAG,MAAM,CAAC,KAAK,CAAC;YACvC,MAAM,IAAI,CAAC,eAAe,EAAE,CAAC;QAC/B,CAAC;KAAA;IAGD,eAAe,CAAC,OAAe;QAC7B,OAAO,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC;IAC1C,CAAC;IAED,eAAe,CAAC,WAAmB,EAAE,UAAkB;QACrD,MAAM,YAAY,GAAG,GAAG,GAAG,WAAW,GAAG,EAAE,CAAC;QAC5C,MAAM,kBAAkB,GAAG,sCAAsC,YAAY,MAAM,UAAU,GAAG,CAAC;QACjG,OAAO,kBAAkB,CAAC;IAC5B,CAAC;IAED,cAAc;QACZ,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;IACxD,CAAC;IAED,YAAY,CAAC,OAAgC;QAC3C,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACxC,CAAC;IAEK,kBAAkB;;YACtB,IAAI,CAAC,gBAAgB,CAAC,eAAe,GAAG,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,YAAY,CAAC,KAAK,CAAC;YACrF,IAAI,CAAC,iBAAiB,GAAG,KAAK,CAAC;YAC/B,MAAM,IAAI,CAAC,eAAe,EAAE,CAAC;QAC/B,CAAC;KAAA;IAED,mBAAmB;QACjB,IAAI,YAAY,GAAsB,EAAE,CAAC;QACzC,IAAI,MAAM,GAAa,EAAE,CAAC;QAC1B,IAAI,IAAI,CAAC,gBAAgB,CAAC,eAAe,IAAI,IAAI,CAAC,gBAAgB,CAAC,eAAe,IAAI,EAAE,EAAE;YACxF,YAAY,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,gBAAgB,CAAC,eAAe,CAAC,WAAW,EAAE,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,gBAAgB,CAAC,eAAe,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,CAAC;YACnO,IAAI,IAAI,CAAC,gBAAgB,CAAC,kBAAkB,CAAC,MAAM,GAAG,CAAC,EAAE;gBACvD,MAAM,CAAC,IAAI,CAAC,GAAG,YAAY,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,gBAAgB,CAAC,kBAAkB,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;aACtH;iBAAM;gBACL,MAAM,CAAC,IAAI,CAAC,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;aAC7C;SAEF;aAAM;YACL,IAAI,IAAI,CAAC,gBAAgB,CAAC,kBAAkB,CAAC,MAAM,GAAG,CAAC,EAAE;gBACvD,MAAM,GAAG,IAAI,CAAC,gBAAgB,CAAC,kBAAkB,CAAC;aACnD;iBACI;gBACH,MAAM,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;aAC5C;SACF;QACD,IAAI,CAAC,kBAAkB,CAAC,0BAA0B,CAAC,MAAM,EAAE,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC;IAC5F,CAAC;IAEK,eAAe;;YACnB,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC;YACpB,IAAI,CAAC,SAAS,GAAG,EAAE,CAAC;YAEpB,MAAM,IAAI,CAAC,+BAA+B,CAAC,IAAI,CAAC,UAAU,CAAC;YAE3D,IAAI,mBAAmB,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;YACxD,IAAI,IAAI,CAAC,kBAAkB,CAAC,KAAK,IAAI,4DAAqB,CAAC,QAAQ,IAAI,IAAI,CAAC,kBAAkB,CAAC,KAAK,IAAI,4DAAqB,CAAC,kBAAkB,IAAI,IAAI,CAAC,kBAAkB,CAAC,KAAK,IAAI,4DAAqB,CAAC,cAAc;gBAEvN,MAAM,IAAI,CAAC,kBAAkB,CAAC,kBAAkB,CAAC,mBAAmB,CAAC,CAAC;QAC1E,CAAC;KAAA;IAEK,eAAe;;YACnB,MAAM,IAAI,CAAC,+BAA+B,CAAC,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;YAC9D,IAAI,WAAW,GAAW,CAAC,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC,GAAG,yBAAuB,CAAC,cAAc,CAAC;YACzF,IAAI,SAAS,GAAW,CAAC,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC,GAAG,yBAAuB,CAAC,cAAc,GAAG,yBAAuB,CAAC,cAAc,CAAC;YAEhI,IAAI,mBAAmB,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,WAAW,EAAE,SAAS,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;YAEtF,MAAM,IAAI,CAAC,kBAAkB,CAAC,kBAAkB,CAAC,mBAAmB,CAAC,CAAC;QACxE,CAAC;KAAA;IAEK,uBAAuB,CAAC,OAAgC;;YAC5D,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,OAAO,CAAC,EAAE,EAAE,QAAQ,EAAE,OAAO,CAAC,QAAQ,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC;QACjG,CAAC;KAAA;IAIO,eAAe;QACrB,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,IAAI,IAAI,CAAC,aAAa,EAAE;YAC/C,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC;SAC5B;aAAM;YACL,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;SAC3B;IACH,CAAC;IAEa,+BAA+B,CAAC,UAAkB;;YAC9D,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;YAC7B,IAAI,KAAK,GAAG,MAAM,IAAI,CAAC,kBAAkB,CAAC,oBAAoB,CAAC,IAAI,CAAC,gBAAgB,EAClF,IAAI,CAAC,UAAU,EACf,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC;YACjC,IAAI,KAAK,EAAE;gBACT,IAAI,kBAAkB,GAAI,KAAsC,CAAC,qBAAkD,CAAC;gBACpH,kBAAkB,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE;oBACnC,IAAI,IAAI,CAAC,eAAe,CAAC,EAAE,IAAI,CAAC,EAAE;wBAChC,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC,eAAe,CAAC,WAAW,CAAC;wBACpD,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC,yCAAyC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;wBACvF,OAAO,CAAC,eAAe,GAAG,IAAI,CAAC,eAAe,CAAC,kBAAkB,CAAC;qBACnE;yBAAM;wBACL,OAAO,CAAC,eAAe,GAAG,6DAAsB,CAAC,UAAU,CAAC;qBAC7D;oBACD,IAAI,IAAI,CAAC,kBAAkB,CAAC,KAAK,IAAI,4DAAqB,CAAC,QAAQ,IAAI,IAAI,CAAC,kBAAkB,CAAC,KAAK,IAAI,4DAAqB,CAAC,YAAY,IAAI,IAAI,CAAC,kBAAkB,CAAC,KAAK,IAAI,4DAAqB,CAAC,UAAU,IAAI,IAAI,CAAC,kBAAkB,CAAC,KAAK,IAAI,4DAAqB,CAAC,cAAc,EAAE;wBACxR,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,UAAU,IAAI,OAAO,CAAC,UAAU,CAAC,CAAC,sBAAsB,EAAE,OAAO,CAAC,kBAAkB,CAAC,CAAC;wBACvK,IAAI,IAAI,CAAC,mCAAmC,CAAC,OAAO,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,EAAE;4BAC9E,IAAI,eAAe,GAAG,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,UAAU,IAAI,OAAO,CAAC,UAAU,CAAC,CAAC,eAAe,CAAC;4BAC9G,IAAI,SAAS,GAAG,IAAI,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;4BAC5C,IAAI,SAAS,GAAG,IAAI,CAAC,wBAAwB,CAAC,SAAS,CAAC,UAAU,EAAE,EAAE,eAAe,CAAC,CAAC;4BACvF,IAAI,CAAC,mCAAmC,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;4BAClE,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC;yBACnD;qBACF;gBACH,CAAC,CAAC,CAAC;gBAEH,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,kBAAkB,CAAC,CAAC;gBAC3C,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE;oBAC7B,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC;iBAC/B;gBACD,IAAI,CAAC,aAAa,GAAI,KAA2B,CAAC,kBAAkB,CAAC;aACtE;YACD,IAAI,CAAC,eAAe,EAAE,CAAC;QACzB,CAAC;KAAA;IAEa,cAAc,CAAC,UAAkB;;YAC7C,IAAI,QAAQ,GAAa,EAAE,CAAC;YAC7B,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;gBACxB,IAAI,UAAU,IAAI,CAAC,CAAC,UAAU,EAAE;oBAC9B,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;iBACrB;YACH,CAAC,CAAC;YACF,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE;gBACvB,MAAM,IAAI,CAAC,kBAAkB,CAAC,kBAAkB,CAAC,QAAQ,CAAC,CAAC;aAC5D;QACH,CAAC;KAAA;IAED,YAAY;QACV,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,uDAAgB,CAAC,WAAW,CAAC,CAAC;IAC7D,CAAC;CACF;AApcyB,sCAAc,GAAW,CAAC,CAAC;AAC3B,+CAAuB,GAAW,KAAK,CAAC;;YA2ClC,iEAAuB;YACtC,0DAAW;YACJ,sEAAY;YACF,2DAAmB;YAC3B,qDAAW;;AA3DnC;IADC,+DAAS,CAAC,wEAAgC,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;8BAC7C,wEAAgC;sEAAC;AAEhE;IADC,+DAAS,CAAC,sEAA8B,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;8BAC9C,sEAA8B;mEAAC;AAE3D;IADC,+DAAS,CAAC,qEAA6B,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;8BAC7C,qEAA6B;mEAAC;AAE1D;IADC,+DAAS,CAAC,kEAA0B,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;8BAC5C,kEAA0B;iEAAC;AAGrD;IADC,+DAAS,CAAC,8DAAsB,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;8BAC3C,8DAAsB;8DAAC;AAXnC,uBAAuB;IANnC,+DAAS,CAAC;QACT,QAAQ,EAAE,gCAAgC;QAC1C,iOAAiD;KAElD,CAAC;qCA2D8B,iEAAuB;QACtC,0DAAW;QACJ,sEAAY;QACF,2DAAmB;QAC3B,qDAAW;GA7DxB,uBAAuB,CAidnC;AAjdmC;;;;;;;;;;;;;;;;;;;;ACxBO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACA8B;AACJ;AACpC;AACW;AAE8B;AAYjD;AASJ;AAC0E;AAOvE;AAC4D;AAEpF,8CAAK,CAAC,QAAQ,CAAC,cAAc,GAAG,8CAAK,CAAC,QAAQ,CAAC,IAAI,CAAC;AACpD,8CAAK,CAAC,WAAW,CAAC,cAAc,GAAG,8CAAK,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC;IAC/D,IAAI,EAAE,UAAU,IAAI;QAClB,IAAI,UAAU,GAAG,CAAC,EAChB,IAAI,GAAG,IAAI,CAAC,OAAO,EAAE,EACrB,MAAM,GAAG,IAAI,CAAC,IAAI,IAAI,EAAE,EACxB,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,EAC3B,gBAAgB,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC;QAE5C,SAAS,QAAQ,CAAC,QAAQ,EAAE,UAAU,EAAE,IAAI;YAC1C,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,WAAW,GAAG,QAAQ,CAAC;YAC1C,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,UAAU,GAAG,UAAU,CAAC;QAC7C,CAAC;QAED,IAAI,YAAY,GAAG,iBAAiB;QACpC,IAAI,QAAQ,GAAa,EAAE,CAAC;QAC5B,IAAI,SAAiB,CAAC;QACtB,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;YACjB,IAAI,CAAC,CAAC,KAAK,CAAC,IAAI,EAAE;gBAChB,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;gBACxB,SAAS,GAAG,CAAC,CAAC,KAAK,CAAC,WAAW,CAAC;aACjC;QACH,CAAC,CAAC,CAAC;QAEH,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;YACnB,QAAQ,CAAC,SAAS,EAAE,EAAE,EAAE,IAAI,CAAC,CAAC;YAC9B,IAAI,CAAC,OAAO,CAAC,SAAS,GAAG,gBAAgB,CAAC,KAAK,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC;YAC/D,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;YACpB,UAAU,GAAG,CAAC,GAAG,CAAC,CAAC;YAEnB,QAAQ,CAAC,YAAY,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;YACrC,IAAI,CAAC,OAAO,CAAC,SAAS,GAAG,gBAAgB,CAAC,KAAK,CAAC,UAAU,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;YACnE,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;YACpB,UAAU,GAAG,CAAC,GAAG,CAAC,CAAC;QACrB,CAAC,CAAC,CAAC;QAEH,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE;YACvB,QAAQ,CAAC,SAAS,EAAE,EAAE,EAAE,IAAI,CAAC,CAAC;SAC/B;QACD,IAAI,CAAC,OAAO,CAAC,SAAS,GAAG,gBAAgB,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;QAC5D,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;QACpB,IAAI,CAAC,OAAO,CAAC,SAAS,GAAG,gBAAgB,CAAC;QAE1C,MAAM,CAAC,OAAO,CAAC,UAAU,KAAK;YAC5B,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACnB,CAAC,CAAC,CAAC;IACL,CAAC;CACF,CAAC,CAAC;AAQH,IAAa,sBAAsB,GAAnC,MAAa,sBAAsB;IAmIjC,YACU,kBAA2C,EAC3C,kBAA2C,EAC3C,YAAyB,EACzB,YAAyB;QAHzB,uBAAkB,GAAlB,kBAAkB,CAAyB;QAC3C,uBAAkB,GAAlB,kBAAkB,CAAyB;QAC3C,iBAAY,GAAZ,YAAY,CAAa;QACzB,iBAAY,GAAZ,YAAY,CAAa;QArIlB,qBAAgB,GAAW,EAAE,CAAC;QAC9B,uBAAkB,GAAW,EAAE,CAAC;QAgBzC,kCAA6B,GAAyB,IAAI,CAAC;QAMnE,gBAAW,GAAsB,IAAI,4DAAiB,EAAE,CAAC;QACzD,kBAAa,GAAyB,IAAI,4DAAoB,EAAE,CAAC;QACjE,8BAAyB,GAAyB,IAAI,CAAC;QACvD,iBAAY,GAAG,KAAK,CAAC;QAGrB,eAAU,GAAW,EAAE,CAAC;QACxB,eAAU,GAAqD,EAAE,CAAC;QAClE,uBAAkB,GAAmD,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,2DAAoB,CAAC,GAAG,EAAE,CAAC;QAGvH,oBAAe,GAaT,EAAE,CAAC;QAmCT,iBAAY,GAAoF,EAAE,CAAC;QAGnG,iBAAY,GAAiE,EAAE;QAG/E,sBAAiB,GAAoF,EAAE,CAAC;QAGxG,aAAQ,GAA0E,EAAE,CAAC;QACrF,qBAAgB,GAA2E,EAAE,CAAC;QAC9F,uBAAkB,GAA2E,EAAE,CAAC;QAChG,oBAAe,GAAiF,EAAE,CAAC;QACnG,cAAS,GAAa,EAAE,CAAC;QACzB,iBAAY,GAAiD,EAAE,CAAC;QAEhE,iBAAY,GAAG,KAAK,CAAC;QAErB,0BAAqB,GAAG,gEAAyB,CAAC;QAClD,uBAAkB,GAAY,KAAK,CAAC;QAU5B,gBAAW,GAAa;YAC9B,uBAAuB,EAAE,sBAAsB,EAAE,uBAAuB,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,sBAAsB,EAAE,uBAAuB;SACnK,CAAC;QAaM,gCAA2B,GAAoF,EAAE,CAAC;QAClH,iCAA4B,GAAoF,EAAE,CAAC;QAgkB3H,wBAAmB,GAAG;YACpB,SAAS,EAAE,KAAK,CAAC,EAAE;gBACjB,IAAI,KAAK,CAAC,OAAO,IAAI,KAAK,CAAC,OAAO,CAAC,OAAO,IAAI,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,EAAE;oBAC1E,IAAI,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;oBAChD,IAAI,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC;oBACzB,IAAI,CAAC,GAAG,WAAW,CAAC,eAAe,EAAE,CAAC,CAAC,CAAC;oBACxC,IAAI,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC;oBACpC,IAAI,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC;oBAE1C,gBAAgB;oBAChB,GAAG,CAAC,IAAI,EAAE,CAAC;oBACX,GAAG,CAAC,SAAS,GAAG,CAAC,CAAC;oBAClB,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;oBACxB,GAAG,CAAC,WAAW,GAAG,SAAS,CAAC;oBAE5B,qBAAqB;oBACrB,GAAG,CAAC,SAAS,EAAE,CAAC;oBAChB,GAAG,CAAC,MAAM,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;oBACpB,GAAG,CAAC,MAAM,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;oBACvB,GAAG,CAAC,MAAM,EAAE,CAAC;oBACb,GAAG,CAAC,OAAO,EAAE,CAAC;iBACf;YACH,CAAC;SACF;QA9kBC,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC;YAC/C,UAAU,EAAE,IAAI;YAChB,QAAQ,EAAE,IAAI;YACd,OAAO,EAAE,IAAI;YACb,WAAW,EAAE,IAAI;YACjB,KAAK,EAAE,IAAI;YACX,gBAAgB,EAAE,IAAI;YACtB,WAAW,EAAE,IAAI;SAClB,CAAC;IACJ,CAAC;IA1CD,eAAe;QACb,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC;IACjC,CAAC;IAAA,CAAC;IAEF,aAAa;QACX,IAAI,CAAC,kBAAkB,GAAG,KAAK,CAAC;IAClC,CAAC;IAMD,IAAI,UAAU;QACZ,OAAO,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;IAC5B,CAAC;IACD,IAAI,QAAQ;QACV,OAAO,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;IAC9E,CAAC;IAED,IAAI,cAAc;QAChB,OAAO,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,oDAAY,CAAC,YAAY,CAAC,IAAI,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,oDAAY,CAAC,WAAW,CAAC,IAAI,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,oDAAY,CAAC,MAAM,CAAC,CAAC;IACnL,CAAC;IAuBK,QAAQ;;YACZ,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;YACtD,IAAI,CAAC,mBAAmB,EAAE,CAAC;YAC3B,IAAI,CAAC,aAAa,EAAE,CAAC;YACrB,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC;gBAC3C,cAAc,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC;gBACjC,SAAS,EAAE,EAAE;gBACb,WAAW,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC;gBAC9B,WAAW,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC;aAC7B,CAAC,CAAC;YACH,IAAI,CAAC,sBAAsB,EAAE,CAAC;YAC9B,IAAI,KAAK,GAAG,IAAI,IAAI,EAAE,CAAC;YACvB,KAAK,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;YAC3B,IAAI,CAAC,aAAa,CAAC,QAAQ,GAAG,CAAC,KAAK,CAAC,OAAO,EAAE,GAAG,gEAAqB,CAAC,4BAA4B,CAAC,GAAG,CAAC,CAAC;YACzG,IAAI,CAAC,aAAa,CAAC,MAAM,GAAG,CAAC,KAAK,CAAC,OAAO,EAAE,GAAG,gEAAqB,CAAC,4BAA4B,CAAC,GAAG,CAAC,CAAC;YACvG,IAAI,CAAC,gBAAgB,EAAE,CAAC;QAC1B,CAAC;KAAA;IAEO,mBAAmB;QACzB,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,2DAAgB,CAAC,EAAE;YAC3D,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC;SACnF;QAED,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,oEAAyB,CAAC,EAAE;YACpE,IAAI,CAAC,2BAA2B,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;YACpG,IAAI,MAAM,CAAC,GAAG,CAAC,IAAI,gEAAyB,CAAC,gBAAgB,IAAI,MAAM,CAAC,GAAG,CAAC,IAAI,gEAAyB,CAAC,qBAAqB,EAAE;gBAC/H,IAAI,CAAC,4BAA4B,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;aACtG;SACF;QAED,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,yEAA8B,CAAC,EAAE;YACzE,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;SAC3F;QAED,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,gEAAqB,CAAC,EAAE;YAChE,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC;SAC3D;QAED,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,kEAAuB,CAAC,EAAE;YAClE,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC;SAC7F;QAED,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,gEAAqB,CAAC,EAAE;YAChE,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC;SAC3F;QAED,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,kEAAuB,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,kEAAuB,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,6DAAsB,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;QACzJ,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,kEAAuB,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,kEAAuB,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,6DAAsB,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;QAEtJ,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,4DAAiB,CAAC,EAAE;YAC5D,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;SAC9D;IACH,CAAC;IAEa,sBAAsB;;YAClC,IAAI,SAAS,GAAG,MAAM,IAAI,CAAC,kBAAkB,CAAC,wBAAwB,EAA+B,CAAC;YACtG,IAAI,SAAS,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE;gBACrC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;oBACpB,IAAI,CAAC,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE;wBACxB,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC;4BACxB,KAAK,EAAE,CAAC,CAAC,YAAY,EAAE,KAAK,EAAE;gCAC5B,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;oCACxB,KAAK,EAAE,CAAC,CAAC,IAAI;oCACb,KAAK,EAAE;wCACL,KAAK,EAAE,CAAC,CAAC,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,OAAO,EAAE,UAAU,EAAE,CAAC,CAAC,UAAU;wCAClE,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;4CACzB,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,YAAY,EAAE,CAAC,CAAC,cAAc;yCAC7D,CAAC,CAAC;qCACJ;iCACF,CAAC,CAAC;6BACJ;yBACF,CAAC,CAAC;qBACJ;gBACH,CAAC,CAAC,CAAC;gBACH,IAAI,CAAC,uBAAuB,GAAG,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;gBAC7D,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC;gBACxD,IAAI,CAAC,sBAAsB,GAAG,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;gBAE3D,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,CAAC;gBAEvD,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;gBACvD,IAAI,IAAI,CAAC,sBAAsB,CAAC,IAAI,IAAI,qDAAc,CAAC,oBAAoB;oBACzE,IAAI,CAAC,sBAAsB,CAAC,IAAI,IAAI,qDAAc,CAAC,iBAAiB;oBACpE,IAAI,CAAC,sBAAsB,CAAC,IAAI,IAAI,qDAAc,CAAC,mBAAmB,EAAE;oBACxE,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,kBAAkB,CAAC;iBACnD;qBAAM;oBACL,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,gBAAgB,CAAC,CAAC;iBAClD;gBACD,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,KAAK;gBAClD,IAAI,CAAC,mBAAmB,EAAE,CAAC;aAC5B;QACH,CAAC;KAAA;IAEK,cAAc,CAAC,OAAoB;;YACvC,OAAO,CAAC,aAAa,EAAE,CAAC;QAC1B,CAAC;KAAA;IAEK,aAAa,CAAC,OAAoB;;YACtC,OAAO,CAAC,eAAe,EAAE,CAAC;QAC5B,CAAC;KAAA;IAED,wBAAwB;QACtB,IAAI,CAAC,iBAAiB,GAAG,KAAK,CAAC;QAC/B,IAAI,CAAC,sBAAsB,GAAG,SAAS,CAAC;QACxC,IAAI,CAAC,YAAY,GAAG,EAAE,CAAC;QACvB,IAAI,CAAC,oBAAoB,GAAG,SAAS,CAAC;QACtC,IAAI,CAAC,yBAAyB,GAAG,SAAS,CAAC;QAC3C,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC;QACxD,IAAI,CAAC,gBAAgB,GAAG,SAAS,CAAC;QAClC,IAAI,CAAC,cAAc,GAAG,KAAK,CAAC;IAC9B,CAAC;IAED,uBAAuB;QACrB,IAAI,CAAC,iBAAiB,GAAG,KAAK,CAAC;QAC/B,IAAI,CAAC,oBAAoB,GAAG,SAAS,CAAC;QACtC,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,CAAC;QACvD,IAAI,CAAC,YAAY,GAAG,EAAE,CAAC;QACvB,IAAI,CAAC,gBAAgB,GAAG,SAAS,CAAC;QAClC,IAAI,CAAC,cAAc,GAAG,KAAK,CAAC;QAC5B,IAAI,CAAC,yBAAyB,GAAG,SAAS,CAAC;IAC7C,CAAC;IAED,2BAA2B;QACzB,IAAI,CAAC,iBAAiB,GAAG,KAAK,CAAC;QAC/B,IAAI,CAAC,YAAY,GAAG,EAAE,CAAC;QACvB,IAAI,CAAC,gBAAgB,GAAG,SAAS,CAAC;QAClC,IAAI,CAAC,yBAAyB,GAAG,SAAS,CAAC;QAC3C,QAAQ,IAAI,CAAC,oBAAoB,CAAC,KAAK,EAAE;YACvC,KAAK,gEAAyB,CAAC,WAAW;gBACxC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,eAAe,CAAC,CAAC;gBAChD,MAAM;YACR,KAAK,gEAAyB,CAAC,SAAS,CAAC;YACzC,KAAK,gEAAyB,CAAC,UAAU;gBACvC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC;gBACzC,MAAM;YACR,KAAK,gEAAyB,CAAC,qBAAqB,CAAC;YACrD,KAAK,gEAAyB,CAAC,gBAAgB,CAAC;YAChD,KAAK,gEAAyB,CAAC,iBAAiB,CAAC;YACjD,KAAK,gEAAyB,CAAC,YAAY;gBACzC,IAAI,IAAI,CAAC,sBAAsB,CAAC,IAAI,IAAI,qDAAc,CAAC,oBAAoB;oBACzE,IAAI,CAAC,sBAAsB,CAAC,IAAI,IAAI,qDAAc,CAAC,iBAAiB;oBACpE,IAAI,CAAC,sBAAsB,CAAC,IAAI,IAAI,qDAAc,CAAC,mBAAmB,EAAE;oBACxE,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,kBAAkB,CAAC,CAAC;iBACpD;qBAAM;oBACL,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,gBAAgB,CAAC,CAAC;iBAClD;gBACD,MAAM;YACR,KAAK,gEAAyB,CAAC,WAAW;gBACxC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;gBACxE,IAAI,CAAC,gBAAgB,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC;gBACjD,MAAM;SACT;IACH,CAAC;IAED,gCAAgC;QAC9B,IAAI,CAAC,iBAAiB,GAAG,KAAK,CAAC;QAC/B,IAAI,CAAC,gBAAgB,GAAG,SAAS,CAAC;QAClC,IAAI,CAAC,oBAAoB,GAAG,SAAS,CAAC;QACtC,IAAI,CAAC,YAAY,GAAG,EAAE,CAAC;QACvB,QAAQ,IAAI,CAAC,yBAAyB,CAAC,KAAK,EAAE;YAC5C,KAAK,gEAAyB,CAAC,SAAS;gBACtC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC;gBACzC,MAAM;YACR,KAAK,gEAAyB,CAAC,WAAW;gBACxC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,eAAe,CAAC,CAAC;gBAChD,MAAM;YACR,KAAK,gEAAyB,CAAC,WAAW;gBACxC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;gBACxE,IAAI,CAAC,gBAAgB,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC;gBACjD,MAAM;YACR,KAAK,gEAAyB,CAAC,YAAY;gBACzC,IAAI,IAAI,CAAC,sBAAsB,CAAC,IAAI,IAAI,qDAAc,CAAC,oBAAoB;oBACzE,IAAI,CAAC,sBAAsB,CAAC,IAAI,IAAI,qDAAc,CAAC,iBAAiB;oBACpE,IAAI,CAAC,sBAAsB,CAAC,IAAI,IAAI,qDAAc,CAAC,mBAAmB,EAAE;oBACxE,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,kBAAkB,CAAC,CAAC;iBACpD;qBAAM;oBACL,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,gBAAgB,CAAC,CAAC;iBAClD;gBACD,MAAM;SACT;IACH,CAAC;IAED,uBAAuB;QACrB,IAAI,CAAC,iBAAiB,GAAG,KAAK,CAAC;QAC/B,yBAAyB;IAC3B,CAAC;IAED,yBAAyB,CAAC,MAAM;QAC9B,IAAI,CAAC,iBAAiB,GAAG,KAAK,CAAC;QAC/B,IAAI,CAAC,UAAU,GAAG,MAAM,CAAC,KAAK,CAAC;IACjC,CAAC;IAED,iBAAiB;QACf,IAAI,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE;YAC5C,IAAI,SAAS,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;YAC7C,IAAI,OAAO,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;YAE3C,MAAM,QAAQ,GAAG,IAAI,IAAI,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,GAAG,IAAI,IAAI,CAAC,SAAS,CAAC,CAAC,OAAO,EAAE,CAAC;YAC7E,MAAM,eAAe,GAAG,IAAI,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC;YAC5C,MAAM,UAAU,GAAG,QAAQ,GAAG,eAAe,CAAC;YAE9C,IAAI,UAAU,GAAG,EAAE,EAAE;gBACnB,MAAM,cAAc,GAAG,IAAI,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC;gBAChD,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,GAAG,CAAC,cAAc,CAAC,CAAC,CAAC;aAChF;SACF;QACD,IAAI,CAAC,yBAAyB,GAAG,IAAI,CAAC;IACxC,CAAC;IAEK,gBAAgB;;YACpB,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;YACzB,IAAI,CAAC,mBAAmB,EAAE,CAAC;YAC3B,IAAI,MAAM,GAAG,MAAM,IAAI,CAAC,kBAAkB,CAAC,kCAAkC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;YAClG,IAAI,CAAC,UAAU,EAAE,CAAC;YAClB,IAAI,MAAM,EAAE;gBACV,IAAI,MAAM,YAAY,kDAAU,IAAI,CAAC,MAAM,CAAC,IAAI,IAAI,qDAAa,CAAC,kBAAkB,IAAI,MAAM,CAAC,IAAI,IAAI,qDAAa,CAAC,gBAAgB,CAAC,EAAE;oBACtI,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;oBAC3B,IAAI,CAAC,iBAAiB,GAAG,KAAK,CAAC;iBAChC;qBACI;oBACH,IAAI,CAAC,cAAc,GAAG,KAAK,CAAC;oBAC5B,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC;oBAC9B,IAAI,IAAI,GAAG,MAAsC,CAAC;oBAClD,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,eAAe,CAAC;oBACzC,IAAI,aAAa,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;oBACzD,IAAI,aAAa,EAAE;wBACjB,IAAI,CAAC,KAAK,GAAG,IAAI,8CAAK,CAAC,IAAI,CAAC,GAAG,EAAE;4BAC/B,IAAI,EAAE,gBAAgB;4BACtB,OAAO,EAAE,CAAC,IAAI,CAAC,mBAAmB,CAAC;4BACnC,IAAI,EAAE;gCACJ,QAAQ,EAAE,aAAa;6BACxB;4BACD,OAAO,EAAE;gCACP,MAAM,EAAE;oCACN,KAAK,EAAE,CAAC;4CACN,IAAI,EAAE,MAAM;4CACZ,IAAI,EAAE,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC;4CACvC,MAAM,EAAE,OAAO;4CACf,KAAK,EAAE;gDACL,KAAK,EAAE;oDACL,OAAO,EAAE,IAAI;oDACb,SAAS,EAAE,MAAM;iDAClB;6CACF;yCACF,CAAC;iCACH;gCACD,QAAQ,EAAE;oCACR,IAAI,EAAE,OAAO;oCACb,SAAS,EAAE,KAAK;oCAChB,SAAS,EAAE;wCACT,KAAK,EAAE,UAAU,WAAW,EAAE,IAAI;4CAChC,IAAI,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,YAAY,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;4CAChE,IAAI,KAAK,EAAE;gDACT,KAAK,IAAI,IAAI,CAAC;6CACf;4CACD,KAAK,IAAI,IAAI,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;4CACnE,OAAO,KAAK,CAAC;wCACf,CAAC;qCACF;iCACF;gCACD,QAAQ,EAAE;oCACR,IAAI,EAAE;wCACJ,OAAO,EAAE,CAAC;qCACX;iCACF;gCACD,KAAK,EAAE;oCACL,SAAS,EAAE,KAAK;iCACjB;6BACF;yBACF,CAAC,CAAC;qBACJ;yBACI;wBACH,IAAI,CAAC,gBAAgB,EAAE,CAAC;wBACxB,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;wBAC3B,IAAI,CAAC,iBAAiB,GAAG,KAAK,CAAC;qBAChC;iBACF;aACF;iBACI;gBACH,IAAI,CAAC,gBAAgB,EAAE,CAAC;gBACxB,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;gBAC3B,IAAI,CAAC,iBAAiB,GAAG,KAAK,CAAC;aAChC;YACD,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;QAC5B,CAAC;KAAA;IAED,sBAAsB;QACpB,IAAI,CAAC,iBAAiB,GAAG,KAAK,CAAC;QAC/B,IAAI,IAAI,CAAC,UAAU,IAAI,SAAS,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,IAAI,CAAC,EAAE;YAC/D,IAAI,CAAC,aAAa,EAAE,CAAC;SACtB;QACD,IAAI,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,SAAS,IAAI,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,IAAI,EAAE;YACjE,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;SACzC;QACD,IAAI,CAAC,aAAa,CAAC,QAAQ,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,GAAG,gEAAqB,CAAC,4BAA4B,CAAC,GAAG,CAAC,CAAC;QACtH,IAAI,CAAC,aAAa,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,GAAG,gEAAqB,CAAC,4BAA4B,CAAC,GAAG,CAAC,CAAC;QACpH,IAAI,CAAC,6BAA6B,GAAG,IAAI,CAAC,yBAAyB,CAAC;QACpE,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC;IACzB,CAAC;IAED,eAAe;QACb,IAAI,IAAI,CAAC,aAAa,CAAC,QAAQ,IAAI,IAAI,IAAI,IAAI,CAAC,aAAa,CAAC,MAAM,IAAI,IAAI,EAAE;YAC5E,IAAI,CAAC,aAAa,EAAE,CAAC;YACrB,OAAO;SACR;QACD,IAAI,IAAI,CAAC,6BAA6B,IAAI,IAAI,EAAE;YAC9C,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,6BAA6B,CAAC,CAAC;YACxD,OAAO;SACR;QACD,IAAI,CAAC,UAAU,GAAG,EAAE,CAAC;QACrB,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,QAAQ,GAAG,gEAAqB,CAAC,4BAA4B,CAAC,CAAC,CAAC;QACjH,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,MAAM,GAAG,gEAAqB,CAAC,4BAA4B,CAAC,CAAC,CAAC;IACjH,CAAC;IAED,cAAc,CAAC,gBAAsC;QACnD,IAAI,OAAO,GAAG,IAAI,IAAI,EAAE,CAAC;QACzB,IAAI,SAAS,GAAG,IAAI,IAAI,EAAE,CAAC;QAC3B,OAAO,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;QAC7B,SAAS,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;QAC/B,IAAI,CAAC,UAAU,GAAG,EAAE,CAAC;QACrB,QAAQ,gBAAgB,EAAE;YACxB,KAAK,2DAAoB,CAAC,IAAI;gBAC5B,SAAS,CAAC,OAAO,CAAC,SAAS,CAAC,OAAO,EAAE,GAAG,gEAAqB,CAAC,kBAAkB,CAAC,CAAC;gBAClF,MAAM;YACR,KAAK,2DAAoB,CAAC,KAAK;gBAC7B,SAAS,CAAC,OAAO,CAAC,SAAS,CAAC,OAAO,EAAE,GAAG,gEAAqB,CAAC,mBAAmB,CAAC,CAAC;gBACnF,MAAM;SACT;QACD,IAAI,CAAC,yBAAyB,GAAG,gBAAgB,CAAC;QAClD,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAChC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAC9B,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,IAAI,gBAAgB,CAAC,CAAC;IACnF,CAAC;IAED,mBAAmB;QACjB,IAAI,YAAY,GAAG,IAAI,4DAAoB,EAAE,CAAC;QAC9C,YAAY,CAAC,QAAQ,GAAG,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC;QACpD,YAAY,CAAC,MAAM,GAAG,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC;QAChD,YAAY,CAAC,QAAQ,GAAG,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC;QACpD,YAAY,CAAC,UAAU,GAAG,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC;QACxD,YAAY,CAAC,kBAAkB,GAAG,IAAI,CAAC,aAAa,CAAC,kBAAkB,CAAC;QACxE,YAAY,CAAC,uBAAuB,GAAG,IAAI,CAAC,aAAa,CAAC,uBAAuB,CAAC;QAClF,YAAY,CAAC,IAAI,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC;QAC5C,YAAY,CAAC,QAAQ,GAAG,IAAI,CAAC;QAC7B,IAAI,IAAI,CAAC,aAAa,CAAC,uBAAuB,IAAI,IAAI,EAAE;YACtD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;gBACxD,IAAI,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC,CAAC,EAAE;oBAClC,IAAI,YAAY,CAAC,QAAQ,IAAI,IAAI,EAAE;wBACjC,YAAY,CAAC,QAAQ,GAAG,EAAE,CAAC;qBAC5B;oBAED,IAAI,CAAC,GAAG,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,MAAM,EAAE;wBAC1C,YAAY,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;qBAC5D;iBACF;aACF;YAED,IAAI,YAAY,CAAC,QAAQ,IAAI,IAAI;gBAAE,YAAY,CAAC,QAAQ,GAAG,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC;SACxF;QAED,IAAI,CAAC,kBAAkB,CAAC,4BAA4B,CAAC,YAAY,EAAE,IAAI,CAAC,sBAAsB,CAAC,KAAK,CAAC,CAAC;IACxG,CAAC;IAEO,aAAa;QACnB,IAAI,CAAC,6BAA6B,GAAG,IAAI,CAAC;QAC1C,IAAI,CAAC,yBAAyB,GAAG,IAAI,CAAC;QACtC,IAAI,CAAC,UAAU,GAAG,EAAE,CAAC;QACrB,IAAI,KAAK,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,KAAK,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;QAC3B,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC5B,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC9B,CAAC;IAEO,mBAAmB;QACzB,IAAI,CAAC,aAAa,CAAC,UAAU,GAAG,IAAI,CAAC,sBAAsB,CAAC,UAAU,CAAC;QACvE,IAAI,CAAC,aAAa,CAAC,QAAQ,GAAG,IAAI,CAAC,sBAAsB,CAAC,EAAE,CAAC;QAC7D,IAAI,CAAC,aAAa,CAAC,kBAAkB,GAAG,IAAI,CAAC,oBAAoB,IAAI,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,oBAAoB,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC;QACxH,IAAI,CAAC,aAAa,CAAC,uBAAuB,GAAG,IAAI,CAAC,yBAAyB,IAAI,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,yBAAyB,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC;QACvI,IAAI,CAAC,aAAa,CAAC,QAAQ,GAAG,IAAI,CAAC,yBAAyB,IAAI,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,sBAAsB,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;QAC1I,IAAI,CAAC,aAAa,CAAC,IAAI,GAAG,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC;IACxD,CAAC;IAEO,eAAe,CAAC,OAAuB;QAC7C,IAAI,WAAW,GAAG,OAAO,IAAI,qDAAc,CAAC,UAAU,IAAI,OAAO,IAAI,qDAAc,CAAC,OAAO,IAAI,OAAO,IAAI,qDAAc,CAAC,SAAS;eAC7H,OAAO,IAAI,qDAAc,CAAC,WAAW,IAAI,OAAO,IAAI,qDAAc,CAAC,QAAQ,IAAI,OAAO,IAAI,qDAAc,CAAC,UAAU,CAAC;QAEzH,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,2BAA2B,CAAC,CAAC,CAAC,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,4BAA4B,CAAC;IAC7H,CAAC;IAEO,UAAU;QAChB,IAAI,IAAI,CAAC,KAAK,KAAK,SAAS;YAAE,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC;IACrD,CAAC;IAEO,gBAAgB;QACtB,IAAI,CAAC,UAAU,EAAE,CAAC;QAClB,IAAI,KAAK,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,KAAK,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;QAC3B,IAAI,CAAC,KAAK,GAAG,IAAI,8CAAK,CAAC,IAAI,CAAC,GAAG,EAAE;YAC/B,IAAI,EAAE,MAAM;YACZ,IAAI,EAAE;gBACJ,QAAQ,EAAE,EAAE;aACb;YACD,OAAO,EAAE;gBACP,MAAM,EAAE;oBACN,KAAK,EAAE,CAAC;4BACN,IAAI,EAAE,MAAM;4BACZ,IAAI,EAAE;gCACJ,IAAI,EAAE,MAAM;gCACZ,cAAc,EAAE;oCACd,IAAI,EAAE,OAAO;iCACd;6BACF;4BACD,KAAK,EAAE;gCACL,GAAG,EAAE,IAAI,IAAI,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;gCACpC,GAAG,EAAE,IAAI,IAAI,EAAE,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;6BACtC;yBACF,CAAC;oBACF,KAAK,EAAE,CAAC;4BACN,KAAK,EAAE;gCACL,GAAG,EAAE,GAAG;gCACR,GAAG,EAAE,CAAC;6BACP;yBACF,CAAC;iBACH;gBACD,QAAQ,EAAE;oBACR,IAAI,EAAE;wBACJ,OAAO,EAAE,CAAC;qBACX;iBACF;aACF;SACF,CAAC,CAAC;IACL,CAAC;IAED,SAAS;QACP,IAAI,SAAiB,CAAC;QACtB,IAAI,IAAI,CAAC,oBAAoB,IAAI,SAAS,EAAE;YAC1C,SAAS,GAAG,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC,CAAC,IAAI,CAAC,oBAAoB,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,gBAAgB,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;SACrJ;aACI,IAAI,IAAI,CAAC,yBAAyB,IAAI,SAAS,EAAE;YACpD,SAAS,GAAG,QAAQ;kBAChB,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,yBAAyB,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;kBACnF,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,gBAAgB,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;SACxE;aACI;YACH,SAAS,GAAG,EAAE,CAAC;SAChB;QACD,OAAO,SAAS,CAAC;IACnB,CAAC;IAEO,WAAW,CAAC,SAAqC;QACvD,IAAI,KAAK,GAAa,EAAE,CAAC;QACzB,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;YACpB,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,mBAAmB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;YACrE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,mBAAmB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;QACvE,CAAC,CAAC;QACF,IAAI,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC;QACjC,IAAI,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC;QACjC,IAAI,QAAQ,GAAG,CAAC,CAAC,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,IAAI,GAAG,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC;QACvD,IAAI,QAAQ,IAAI,EAAE,EAAE;YAClB,OAAO;gBACL,IAAI,EAAE,MAAM;gBACZ,cAAc,EAAE;oBACd,IAAI,EAAE,OAAO;oBACb,GAAG,EAAE,YAAY;oBACjB,KAAK,EAAE,QAAQ;oBACf,IAAI,EAAE,MAAM;iBACb;gBACD,aAAa,EAAE,qBAAqB;aACrC;SACF;QAED,IAAI,QAAQ,IAAI,GAAG,EAAE;YACnB,OAAO;gBACL,IAAI,EAAE,KAAK;gBACX,cAAc,EAAE;oBACd,IAAI,EAAE,OAAO;oBACb,GAAG,EAAE,IAAI;oBACT,KAAK,EAAE,UAAU;oBACjB,IAAI,EAAE,MAAM;iBACb;gBACD,aAAa,EAAE,qBAAqB;aACrC;SACF;QAED,OAAO;YACL,IAAI,EAAE,OAAO;YACb,cAAc,EAAE;gBACd,IAAI,EAAE,OAAO;gBACb,GAAG,EAAE,IAAI;gBACT,KAAK,EAAE,KAAK;gBACZ,IAAI,EAAE,MAAM;aACb;YACD,aAAa,EAAE,qBAAqB;SACrC;IACH,CAAC;IAEO,cAAc,CAAC,SAAqC;QAC1D,IAAI,CAAC,SAAS,IAAI,SAAS,CAAC,MAAM,IAAI,CAAC,EAAE;YACvC,OAAO,IAAI,CAAC;SACb;QAED,IAAI,OAAO,GAAU,EAAE,CAAC;QACxB,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE;YAC7B,IAAI,KAAK,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,mBAAmB,IAAI,CAAC,CAAC,mBAAmB,CAAC,MAAM,IAAI,CAAC,CAAC,EAAE;gBAC/E,OAAO,IAAI,CAAC;aACb;YACD,IAAI,KAAa,CAAC;YAElB,IAAI,IAAI,CAAC,oBAAoB,IAAI,SAAS,EAAE;gBAC1C,KAAK,GAAG,aAAa;aACtB;iBAAM;gBACL,IAAI,IAAI,CAAC,sBAAsB,CAAC,MAAM,IAAI,IAAI,CAAC,sBAAsB,CAAC,MAAM,CAAC,MAAM,GAAG,KAAK,EAAE;oBAC3F,KAAK,GAAG,YAAY,CAAC,CAAC,OAAO,GAAG,CAAC;iBAClC;qBACI;oBACH,KAAK,GAAG,QAAQ,CAAC;iBAClB;aACF;YAED,OAAO,CAAC,IAAI,CAAC;gBACX,KAAK,EAAE,KAAK;gBACZ,IAAI,EAAE,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC,mBAAmB,CAAC;gBAClD,IAAI,EAAE,KAAK;gBACX,WAAW,EAAE,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE;gBAC3F,WAAW,EAAE,CAAC;gBACd,WAAW,EAAE,CAAC;gBACd,gBAAgB,EAAE,CAAC;gBACnB,QAAQ,EAAE,IAAI;aAEf,CAAC,CAAC;QAEL,CAAC,CAAC,CAAC;QAEH,OAAO,OAAO,CAAC;IACjB,CAAC;IAEO,gBAAgB,CAAC,SAAyB;QAChD,IAAI,KAAK,GAAG,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,gBAAgB,CAAC;QAC5D,IAAI,MAAM,GAA6B,EAAE,CAAC;QAC1C,IAAI,SAAS,GAAW,IAAI,CAAC,GAAG,CAAC,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC;QACrE,SAAS,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE;YACrB,IAAI,IAAI,GAAW,EAAE,CAAC,SAAS,GAAG,SAAS,CAAC;YAC5C,IAAI,IAAI,GAAG,KAAK,EAAE;gBAChB,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,IAAI,IAAI,CAAC,CAAC,EAAE,CAAC,SAAS,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,gEAAqB,CAAC,4BAA4B,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC;aACvH;YACD,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,IAAI,IAAI,CAAC,EAAE,CAAC,SAAS,GAAG,gEAAqB,CAAC,4BAA4B,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;YAC7G,SAAS,GAAG,EAAE,CAAC,SAAS,CAAC;QAC3B,CAAC,CAAC,CAAC;QACH,OAAO,MAAM,CAAC;IAChB,CAAC;IAEO,WAAW;QACjB,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,GAAG,GAAG,CAAC;QAC7C,OAAO,OAAO,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,MAAM,CAAC;IAC7E,CAAC;IA2BD,YAAY;QACV,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,uDAAgB,CAAC,UAAU,CAAC,CAAC;IAC5D,CAAC;CACF;;YAzlB+B,iEAAuB;YACvB,iEAAuB;YAC7B,0DAAW;YACX,qDAAW;;AAjInC;IADC,+DAAS,CAAC,qEAA6B,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;8BAC7C,qEAA6B;kEAAC;AAG1D;IADC,+DAAS,CAAC,UAAU,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;8BACvB,yDAAQ;wDAAC;AAG3B;IADC,+DAAS,CAAC,aAAa,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;8BAC3B,wDAAU;sDAAoB;AAG9C;IADC,+DAAS,CAAC,8DAAsB,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;8BAC3C,8DAAsB;6DAAC;AAfnC,sBAAsB;IANlC,+DAAS,CAAC;QACT,QAAQ,EAAE,8BAA8B;QACxC,2NAA+C;KAEhD,CAAC;qCAsI8B,iEAAuB;QACvB,iEAAuB;QAC7B,0DAAW;QACX,qDAAW;GAvIxB,sBAAsB,CA6tBlC;AA7tBkC;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC5FR;AACS;AACL;;;;;;;;;;;;;;;;;;;;;;;ACFU;AACV;;;;;;;;;;;;;;;;;;;;ACDA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACAkB;AACO;AACwE;AAGzE;AACU;AACqC;AACV;AACR;AACvB;AAO7D,IAAa,mBAAmB,2BAAhC,MAAa,mBAAmB;IAgD9B,YACU,GAAe,EACf,KAAa,EACrB,WAAwB,EAChB,mBAA4C;QAH5C,QAAG,GAAH,GAAG,CAAY;QACf,UAAK,GAAL,KAAK,CAAQ;QAEb,wBAAmB,GAAnB,mBAAmB,CAAyB;QA1CtD,oBAAe,GAAG,qDAAc,CAAC;QACjC,eAAU,GAAG,qBAAmB,CAAC,gBAAgB,CAAC;QAClD,eAAU,GAAG,qBAAmB,CAAC,kBAAkB,CAAC;QAEpD,oBAAe,GAAG,qBAAmB,CAAC,gBAAgB,CAAC;QACvD,kBAAa,GAAW,EAAE,CAAC;QAEpB,kBAAa,GAAG,IAAI,0DAAY,EAAmB,CAAC;QAE3D,iBAAY,GAAG;YACb,EAAE,MAAM,EAAE,cAAc,EAAE,UAAU,EAAE,qDAAc,CAAC,WAAW,EAAE,SAAS,EAAE,SAAS,EAAE;YACxF,EAAE,MAAM,EAAE,cAAc,EAAE,UAAU,EAAE,qDAAc,CAAC,WAAW,EAAE,SAAS,EAAE,MAAM,EAAE;YACrF,EAAE,MAAM,EAAE,cAAc,EAAE,UAAU,EAAE,qDAAc,CAAC,WAAW,EAAE,SAAS,EAAE,SAAS,EAAE;YACxF,EAAE,MAAM,EAAE,gBAAgB,EAAE,UAAU,EAAE,qDAAc,CAAC,QAAQ,EAAE,SAAS,EAAE,eAAe,EAAE;YAC7F,EAAE,MAAM,EAAE,eAAe,EAAE,UAAU,EAAE,qDAAc,CAAC,YAAY,EAAE,SAAS,EAAE,cAAc,EAAE;YAC/F,EAAE,MAAM,EAAE,iBAAiB,EAAE,UAAU,EAAE,qDAAc,CAAC,cAAc,EAAE,SAAS,EAAE,UAAU,EAAE;YAC/F,EAAE,MAAM,EAAE,kBAAkB,EAAE,UAAU,EAAE,qDAAc,CAAC,IAAI,EAAE,SAAS,EAAE,eAAe,EAAE;SAC5F;QAED,mBAAc,GAAG;YACf,EAAE,MAAM,EAAE,EAAE,EAAE,UAAU,EAAE,qDAAc,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,EAAE;YAC3D,EAAE,MAAM,EAAE,EAAE,EAAE,UAAU,EAAE,qDAAc,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,EAAE;YAC1D,EAAE,MAAM,EAAE,EAAE,EAAE,UAAU,EAAE,qDAAc,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE,EAAE;SAC7D;QAED,uBAAkB,GAAW,CAAC,CAAC;QAI/B,kBAAa,GAAmB,EAAE,CAAC;QAcjC,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC,KAAK,CAAC;YACnC,YAAY,EAAE,CAAC,EAAE,CAAC;SACnB,CAAC,CAAC;IACL,CAAC;IAfD,IAAI,YAAY;QACd,OAAO,GAAG,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,IAAI,CAAC;IACrE,CAAC;IAeD,QAAQ;QACN,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;QACxB,IAAI,MAAM,GAAG,IAAI,CAAC,mBAAmB,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE;YAC7D,IAAI,IAAI,EAAE;gBACR,IAAI,CAAC,SAAS,GAAG,EAAE,CAAC;gBACpB,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;oBACjB,IAAI,MAAM,GAAG,uDAAe,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC;oBACjD,MAAM,CAAC,aAAa,GAAG,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,aAAa,EAAE,MAAM,CAAC,YAAY,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC;oBACxG,MAAM,CAAC,MAAM,GAAG,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,WAAW,CAAC,CAAC;oBAC3E,MAAM,CAAC,KAAK,GAAG,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,WAAW,CAAC,CAAC;oBACzE,MAAM,CAAC,KAAK,GAAG,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,WAAW,CAAC,CAAC;oBACzE,IAAI,MAAM,CAAC,OAAO,IAAI,IAAI,EAAE;wBAC1B,MAAM,CAAC,OAAO,GAAG,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,WAAW,CAAC,CAAC;qBAC9E;oBACD,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;gBAC9B,CAAC,CAAC,CAAC;aACJ;QACH,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,mBAAmB,CAAC,sBAAsB,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;QACnE,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAChC,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,CAAC;IACzD,CAAC;IAED,WAAW;QACT,IAAI,CAAC,aAAa,IAAI,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC,CAAC;QAC7E,IAAI,CAAC,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;QAC/B,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC;QAChB,IAAI,CAAC,SAAS,GAAG,EAAE,CAAC;IACtB,CAAC;IAED,eAAe;QACb,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;IAC1B,CAAC;IAED,YAAY,CAAC,eAAgC;QAC3C,IAAI,CAAC,mBAAmB,CAAC,kCAAkC,CAAC,eAAe,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;QACtF,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;IACjD,CAAC;IAED,WAAW,CAAC,MAAuB;QACjC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAClC,CAAC;IAED,aAAa,CAAC,MAAuB;QACnC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAChC,CAAC;IAED,kBAAkB;QAChB,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,YAAY,CAAC,KAAK,CAAC;IACxE,CAAC;IAEM,eAAe,CAAC,OAAgB,EAAE,SAAS,GAAG,KAAK;QACxD,IAAI,SAAS,EAAE;YACb,OAAO;SACR;QAED,IAAI,IAAI,CAAC,GAAG,EAAE;YACZ,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;SACpB;QAED,MAAM,mBAAmB,GAAG,GAAG,EAAE;YAC/B,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC,GAAG,EAAE;gBAChC,IAAI;oBACF,MAAM,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,aAAa,CAAC,aAAa,CAAC,4EAA4E,CAAC,CAAC;oBAC9H,IAAI,CAAC,EAAE,EAAE;wBACP,OAAO;qBACR;oBAED,IAAI,CAAC,GAAG,GAAG,IAAI,yDAAgB,CAAC,EAAE,EAAE;wBAClC,UAAU,EAAE,CAAC;wBACb,gBAAgB,EAAE,IAAI;wBACtB,kBAAkB,EAAE,EAAE;qBACvB,CAAC,CAAC;iBACJ;gBAAC,OAAO,KAAK,EAAE;iBACf;YACH,CAAC,CAAC;QACJ,CAAC,CAAC;QAEF,IAAI,OAAO,EAAE;YACX,UAAU,CAAC,GAAG,EAAE;gBACd,mBAAmB,EAAE,CAAC;YACxB,CAAC,EAAE,OAAO,CAAC,CAAC;SACb;aAAM;YACL,mBAAmB,EAAE,CAAC;SACvB;IACH,CAAC;IAED,WAAW,CAAC,OAAuB;QACjC,OAAO,0DAAe,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;IAC/C,CAAC;IAED,eAAe,CAAC,OAAuB;QACrC,OAAO,0DAAe,CAAC,OAAO,CAAC,CAAC;IAClC,CAAC;IAED,oBAAoB,CAAC,YAA8B;QACjD,OAAO,4DAAiB,CAAC,YAAY,CAAC,CAAC;IACzC,CAAC;IAEO,kBAAkB,CAAC,KAAa,EAAE,QAAyB;QACjE,IAAI,MAAM,GAAG,4DAAoB,CAAC,iBAAiB,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;QACrE,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC;IACxC,CAAC;IAED,gBAAgB,CAAC,KAAa,EAAE,YAA8B,EAAE,OAAuB;QACrF,IAAI,MAAc,CAAC;QACnB,QAAQ,OAAO,EAAE;YACf,KAAK,qDAAc,CAAC,oBAAoB,CAAC;YACzC,KAAK,qDAAc,CAAC,iBAAiB,CAAC;YACtC,KAAK,qDAAc,CAAC,mBAAmB;gBACrC,MAAM,GAAG,4DAAoB,CAAC,cAAc,CAAC,KAAK,EAAE,YAAY,CAAC,CAAC;gBAClE,MAAM;YACR;gBACE,MAAM,GAAG,4DAAoB,CAAC,cAAc,CAAC,KAAK,EAAE,YAAY,CAAC,CAAC;SACrE;QACD,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC;IACxC,CAAC;CACF;AA9KQ,oCAAgB,GAAG,MAAM,CAAC;AAC1B,oCAAgB,GAAG,SAAS,CAAC;AAC7B,sCAAkB,GAAG,CAAC,CAAC;;YA8Cf,wDAAU;YACR,oDAAM;YACR,0DAAW;YACK,iEAAuB;;AA9CtD;IADC,+DAAS,CAAC,kEAA0B,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;8BACjD,kEAA0B;wDAAC;AAEvC;IAAR,2DAAK,EAAE;;sDAAyC;AAsCjD;IADC,+DAAS,CAAC,qEAA6B,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;8BACpD,qEAA6B;gEAAC;AA9CxC,mBAAmB;IAL/B,+DAAS,CAAC;QACT,QAAQ,EAAE,2BAA2B;QACrC,mNAAkC;KACnC,CAAC;qCAmDe,wDAAU;QACR,oDAAM;QACR,0DAAW;QACK,iEAAuB;GApD3C,mBAAmB,CA+K/B;AA/K+B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACjBW;AACC;AAC2C;AAC9B;AAGL;AACc;AACL;AACR;AAOrD,IAAa,mBAAmB,GAAhC,MAAa,mBAAmB;IAY9B,YACU,MAAsB,EACtB,8BAA6D,EAC7D,OAAe;QAFf,WAAM,GAAN,MAAM,CAAgB;QACtB,mCAA8B,GAA9B,8BAA8B,CAA+B;QAC7D,YAAO,GAAP,OAAO,CAAQ;QANzB,kBAAa,GAAW,EAAE,CAAC;QAC3B,gBAAW,GAAG,IAAI,yDAAU,CAAC,SAAS,IAAI,yDAAc,CAAC,cAAc,EAAE,CAAC;IAK7C,CAAC;IAE9B,QAAQ;QACN,MAAM,YAAY,GAAG,IAAI,CAAC,8BAA8B,CAAC,aAAa,CAAC;QACvE,IAAI,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,EAAE;YAC/C,IAAI,CAAC,WAAW,GAAG,CAAC,CAAC;YACrB,IAAI,CAAC,aAAa,GAAG,cAAc,CAAC;YACpC,OAAO;SACR;QAED,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CACvB,gEAAS,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CACzC,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE;YACjB,IAAI,CAAC,WAAW,GAAG,CAAC,IAAI,CAAC;YACzB,MAAM,QAAQ,GAAG,YAAY,CAAC,QAAQ,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,IAAI,CAAC,WAAW,CAAC,CAAC;YAC7E,IAAI,QAAQ,EAAE;gBACZ,IAAI,CAAC,aAAa,GAAG,QAAQ,CAAC,YAAY,CAAC;aAC5C;iBACI;gBACH,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,IAAI,yDAAU,CAAC,SAAS,IAAI,yDAAc,CAAC,cAAc,EAAE,CAAC,CAAC;aACzF;QACH,CAAC,CAAC,CAAC;IACL,CAAC;IAED,eAAe;QACb,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,oBAAoB,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC,MAAuB,EAAE,EAAE;YACjG,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;QACtC,CAAC,CAAC,CAAC;IACL,CAAC;IAED,WAAW;QACT,IAAI,CAAC,8BAA8B,CAAC,wCAAwC,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC;QACtG,IAAI,CAAC,aAAa,CAAC,WAAW,EAAE,CAAC;IACnC,CAAC;IAED,UAAU;QACR,IAAI,QAAQ,GAAG,EAAE,EAAE,EAAE,IAAI,CAAC,WAAW,EAAE,IAAI,EAAE,IAAI,CAAC,aAAa,EAAE,CAAC;QAClE,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IACvC,CAAC;CACF;;YAzCmB,8DAAc;YACU,uEAA6B;YACpD,sDAAM;;AAbzB;IADC,+DAAS,CAAC,mEAA2B,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;8BAChD,mEAA2B;0DAAC;AAGnD;IADC,+DAAS,CAAC,iEAAmB,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;8BACjC,iEAAmB;iEAAC;AALvC,mBAAmB;IAL/B,+DAAS,CAAC;QACT,QAAQ,EAAE,2BAA2B;QACrC,0NAA4C;KAE7C,CAAC;qCAckB,8DAAc;QACU,uEAA6B;QACpD,sDAAM;GAfd,mBAAmB,CAsD/B;AAtD+B;;;;;;;;;;;;;;;;;;;;AChBK;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACAuG;AAC3F;AACO;AAEC;AAGI;AACyH;AAC5H;AACN;AAQpD,IAAa,gBAAgB,wBAA7B,MAAa,gBAAgB;IA8D3B,YACU,8BAA6D,EAC7D,GAAe,EACf,KAAa,EACrB,WAAwB,EAChB,OAAe,EACf,MAAsB;QALtB,mCAA8B,GAA9B,8BAA8B,CAA+B;QAC7D,QAAG,GAAH,GAAG,CAAY;QACf,UAAK,GAAL,KAAK,CAAQ;QAEb,YAAO,GAAP,OAAO,CAAQ;QACf,WAAM,GAAN,MAAM,CAAgB;QA5DzB,kBAAa,GAAG,IAAI,0DAAY,EAAwB,CAAC;QACzD,4BAAuB,GAAG,IAAI,0DAAY,EAAwB,CAAC;QACnE,oBAAe,GAAG,IAAI,0DAAY,EAAwB,CAAC;QAElE,oBAAe,GAAG,qDAAc,CAAC;QACjC,eAAU,GAAG,kBAAgB,CAAC,iBAAiB,CAAC;QAChD,eAAU,GAAG,kBAAgB,CAAC,kBAAkB,CAAC;QAEjD,oBAAe,GAAG,kBAAgB,CAAC,gBAAgB,CAAC;QACpD,qBAAgB,GAAG,kBAAgB,CAAC,iBAAiB,CAAC;QACtD,kBAAa,GAAW,EAAE,CAAC;QAE3B,yBAAoB,GAAG,eAAe,CAAC;QACvC,yBAAoB,GAAG,wBAAwB,CAAC;QAchD,iBAAY,GAAG;YACb,EAAE,MAAM,EAAE,eAAe,EAAE,UAAU,EAAE,qDAAc,CAAC,YAAY,EAAE,SAAS,EAAE,kBAAgB,CAAC,iBAAiB,EAAE;YACnH,EAAE,MAAM,EAAE,SAAS,EAAE,UAAU,EAAE,qDAAc,CAAC,OAAO,EAAE,SAAS,EAAE,kBAAgB,CAAC,gBAAgB,EAAE;YACvG,EAAE,MAAM,EAAE,gBAAgB,EAAE,UAAU,EAAE,qDAAc,CAAC,SAAS,EAAE,SAAS,EAAE,WAAW,EAAE;YAC1F,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,qDAAc,CAAC,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE;YACnF,EAAE,MAAM,EAAE,UAAU,EAAE,UAAU,EAAE,qDAAc,CAAC,eAAe,EAAE,SAAS,EAAE,iBAAiB,EAAE,KAAK,EAAE,KAAK,EAAE;YAC9G,EAAE,MAAM,EAAE,UAAU,EAAE,UAAU,EAAE,qDAAc,CAAC,IAAI,EAAE,SAAS,EAAE,aAAa,EAAE,KAAK,EAAE,IAAI,EAAE;SAC/F;QAED,mBAAc,GAAG;YACf,EAAE,MAAM,EAAE,EAAE,EAAE,UAAU,EAAE,qDAAc,CAAC,gBAAgB,EAAE,KAAK,EAAE,EAAE,EAAE;YACtE,EAAE,MAAM,EAAE,EAAE,EAAE,UAAU,EAAE,qDAAc,CAAC,sBAAsB,EAAE,KAAK,EAAE,EAAE,EAAE;YAC5E,EAAE,MAAM,EAAE,EAAE,EAAE,UAAU,EAAE,qDAAc,CAAC,SAAS,EAAE,KAAK,EAAE,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE;YAChF,EAAE,MAAM,EAAE,EAAE,EAAE,UAAU,EAAE,qDAAc,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,EAAE;YAC1D,EAAE,MAAM,EAAE,EAAE,EAAE,UAAU,EAAE,qDAAc,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE,EAAE;SAC7D;QAKD,iBAAY,GAA+B,EAAE,CAAC;QAC9C,kBAAa,GAAmB,EAAE,CAAC;QACnC,aAAQ,GAAY,KAAK,CAAC;QAYxB,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC,KAAK,CAAC;YACnC,YAAY,EAAE,CAAC,EAAE,CAAC;SACnB,CAAC,CAAC;IACL,CAAC;IAdD,IAAI,YAAY;QACd,OAAO,GAAG,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,IAAI,CAAC;IACrE,CAAC;IAcK,QAAQ;;YACZ,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;YACxB,IAAI,WAAW,GAAG,IAAI,CAAC,8BAA8B,CAAC,aAAa,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE;gBACpF,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;gBACvB,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;YACxB,CAAC,CAAC,CAAC;YACH,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;YACrB,IAAI,CAAC,8BAA8B,CAAC,GAAG,EAAE,CAAC;YAC1C,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QACvC,CAAC;KAAA;IAED,WAAW;QACT,IAAI,CAAC,aAAa;YAChB,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC,CAAC;QAEzD,IAAI,CAAC,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;QAC/B,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC;IAClB,CAAC;IAED,eAAe;QAEb,IAAI,uBAAuB,GAAG,IAAI,CAAC,oBAAoB,CAAC,oBAAoB,CAAC,SAAS,CAAC,CAAC,KAA6B,EAAE,EAAE;YACvH,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACrC,CAAC,CAAC;QAGF,IAAI,oBAAoB,GAAG,IAAI,CAAC,uBAAuB,CAAC,SAAS,CAAC,CAAC,QAAQ,EAAE,EAAE;YAC7E,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC3C,CAAC,CAAC,CAAC;QAEH,IAAI,wBAAwB,GAAG,IAAI,CAAC,iBAAiB,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,KAA6B,EAAE,EAAE;YAC1G,IAAI,CAAC,oBAAoB,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;QAC/C,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,aAAa,CAAC,IAAI,CACrB,oBAAoB,EACpB,uBAAuB,EACvB,wBAAwB,CACzB;QACD,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;IAC1B,CAAC;IAEY,MAAM,CAAC,QAAQ;;YAC1B,MAAM,IAAI,CAAC,8BAA8B,CAAC,kCAAkC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;YAC1F,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACpC,CAAC;KAAA;IAEK,mBAAmB,CAAC,QAA8B;;YACtD,IAAI,CAAC,QAAQ,EAAE;gBACb,OAAO;aACR;YAED,IAAI,CAAC,wBAAwB,CAAC,MAAM,CAAC,EAAE,YAAY,EAAE,QAAQ,CAAC,YAAY,EAAE,UAAU,EAAE,QAAQ,CAAC,EAAE,EAAE,QAAQ,EAAE,QAAQ,CAAC,QAAQ,EAAE,OAAO,EAAE,kDAAW,CAAC,GAAG,EAAE,CAAC,CAAC;QAChK,CAAC;KAAA;IAED,sBAAsB,CAAC,QAA8B;QACnD,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IACvC,CAAC;IAED,kBAAkB;QAChB,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,YAAY,CAAC,KAAK,CAAC;IACxE,CAAC;IAEK,aAAa,CAAC,QAA8B;;YAChD,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACtC,CAAC;KAAA;IAEK,kBAAkB,CAAC,QAA8B;;YACrD,IAAI,CAAC,QAAQ,EAAE;gBACb,OAAO;aACR;YAED,QAAQ,CAAC,wBAAwB,GAAG,IAAI,CAAC;YACzC,QAAQ,CAAC,aAAa,IAAG,MAAM,IAAI,CAAC,8BAA8B,CAAC,6BAA6B,CAAC,QAAQ,CAAC,EAAE,CAAY,EAAC;YACzH,QAAQ,CAAC,wBAAwB,GAAG,KAAK,CAAC;QAC5C,CAAC;KAAA;IAEM,eAAe,CAAC,OAAgB,EAAE,SAAS,GAAG,KAAK;QACxD,IAAI,SAAS,EAAE;YACb,OAAO;SACR;QAED,IAAI,IAAI,CAAC,GAAG,EAAE;YACZ,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;SACpB;QAED,MAAM,mBAAmB,GAAG,GAAG,EAAE;YAC/B,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC,GAAG,EAAE;gBAChC,IAAI;oBACF,MAAM,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,aAAa,CAAC,aAAa,CAAC,4EAA4E,CAAC,CAAC;oBAC9H,IAAI,CAAC,EAAE,EAAE;wBACP,OAAO;qBACR;oBAED,IAAI,CAAC,GAAG,GAAG,IAAI,yDAAgB,CAAC,EAAE,EAAE;wBAClC,UAAU,EAAE,CAAC;wBACb,gBAAgB,EAAE,IAAI;wBACtB,kBAAkB,EAAE,EAAE;qBACvB,CAAC,CAAC;iBACJ;gBAAC,OAAO,KAAK,EAAE;iBACf;YACH,CAAC,CAAC;QACJ,CAAC,CAAC;QAEF,IAAI,OAAO,EAAE;YACX,UAAU,CAAC,GAAG,EAAE;gBACd,mBAAmB,EAAE,CAAC;YACxB,CAAC,EAAE,OAAO,CAAC,CAAC;SACb;aAAM;YACL,mBAAmB,EAAE,CAAC;SACvB;IACH,CAAC;IAED,cAAc,CAAC,UAAkB;QAC/B,IAAI,CAAC,8BAA8B,CAAC,wCAAwC,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;QAC/F,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,MAAM,yDAAc,CAAC,uBAAuB,EAAE,EAAE,UAAU,CAAC,EAAE,EAAE,UAAU,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;IACnH,CAAC;CACF;AA3LQ,kCAAiB,GAAG,cAAc,CAAC;AACnC,iCAAgB,GAAG,aAAa,CAAC;AACjC,mCAAkB,GAAG,CAAC,CAAC;;YAyDY,uEAA6B;YACxD,wDAAU;YACR,oDAAM;YACR,0DAAW;YACP,sDAAM;YACP,8DAAc;;AAlEhC;IADC,+DAAS,CAAC,yEAAiC,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;8BAC3C,yEAAiC;kEAAC;AAsBpE;IADC,+DAAS,CAAC,gEAAwB,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;8BACxD,gEAAwB;oDAAC;AAGrC;IADC,+DAAS,CAAC,oEAA4B,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;8BAC9C,oEAA4B;0DAAC;AAGvD;IADC,+DAAS,CAAC,oEAA4B,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;8BACrD,oEAA4B;2DAAC;AAGhD;IADC,+DAAS,CAAC,oEAA4B,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;8BAClD,oEAA4B;8DAAC;AAjCxC,gBAAgB;IAL5B,+DAAS,CAAC;QACT,QAAQ,EAAE,uBAAuB;QACjC,8MAAwC;KACzC,CAAC;qCAiE0C,uEAA6B;QACxD,wDAAU;QACR,oDAAM;QACR,0DAAW;QACP,sDAAM;QACP,8DAAc;GApErB,gBAAgB,CA+L5B;AA/L4B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AClBkD;AAIU;AAC3C;AAO9C,IAAa,eAAe,GAA5B,MAAa,eAAe;IAY1B;QAFQ,mBAAc,GAAmB,EAAE,CAAC;IAE5B,CAAC;IAEjB,WAAW;QACT,IAAI,CAAC,cAAc;YACjB,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC,CAAC;IAC5D,CAAC;IAED,eAAe;QAEb,IAAI,gBAAgB,GAAG,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC,QAA8B,EAAE,EAAE;YACpG,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;QACxC,CAAC,CAAC,CAAC;QAEH,IAAI,qBAAqB,GAAG,IAAI,CAAC,cAAc,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC,QAA8B,EAAE,EAAE;YAC3G,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACvC,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,cAAc,CAAC,IAAI,CACtB,gBAAgB,EAChB,qBAAqB,CACtB,CAAC;IACJ,CAAC;IAEM,KAAK;QACV,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE,CAAC;IAC/B,CAAC;CACF;AApCC;IADC,+DAAS,CAAC,gEAAwB,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;8BACrD,gEAAwB;sDAAC;AAGvC;IADA,+DAAS,CAAC,0DAAgB,EAAE,EAAC,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAC,CAAC;8BACzC,0DAAgB;uDAAC;AAGjC;IADA,+DAAS,CAAC,0EAAkC,EAAE,EAAC,IAAI,EAAC,KAAK,EAAE,MAAM,EAAC,KAAK,EAAC,CAAC;8BACvD,0EAAkC;yDAAC;AAR3C,eAAe;IAL3B,+DAAS,CAAC;QACT,QAAQ,EAAE,sBAAsB;QAChC,mMAAuC;KACxC,CAAC;;GAEW,eAAe,CAsC3B;AAtC2B;;;;;;;;;;;;;;;;;;;;;;;;;;ACZqB;AACX;AACK;;;;;;;;;;;;;;;;;;;;ACFK;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACUzB;AACkC;AACJ;AAMpC;AACqD;AACA;AAYrD;AACsD;AAM/C;AAMxB,IAAa,yBAAyB,iCAAtC,MAAa,yBAAyB;IAwKpC,YACU,mBAAkD,EAClD,OAAe,EACf,MAAsB,EACtB,GAAe,EACf,WAAuB,EACvB,IAAuB,EACvB,KAAa;QANb,wBAAmB,GAAnB,mBAAmB,CAA+B;QAClD,YAAO,GAAP,OAAO,CAAQ;QACf,WAAM,GAAN,MAAM,CAAgB;QACtB,QAAG,GAAH,GAAG,CAAY;QACf,gBAAW,GAAX,WAAW,CAAY;QACvB,SAAI,GAAJ,IAAI,CAAmB;QACvB,UAAK,GAAL,KAAK,CAAQ;QAtJvB,oBAAe,GAAG,IAAI,CAAC;QACvB,qBAAgB,GAAG,IAAI,CAAC;QACxB,kBAAa,GAAY,KAAK,CAAC;QAE/B,cAAS,GAA2B,EAAE,CAAC;QACvC,wBAAmB,GAA2B,EAAE,CAAC;QACjD,qBAAgB,GAAG,IAAI,CAAC;QAExB,gBAAW,GAAG,qDAAc,CAAC;QAC7B,iBAAY,GAAG,kDAAW,CAAC;QAC3B,4BAAuB,GAAG,IAAI,0DAAY,EAAsB,CAAC;QACjE,iBAAY,GAAG,EAAE,CAAC;QAClB,eAAU,GAAG,MAAM,CAAC;QAIpB,uBAAkB,GAAe,EAAE,CAAC;QAEpC,oBAAe,GAAG,KAAK,CAAC;QAGxB,mBAAc,GAAG;YACf;gBACE,MAAM,EAAE,OAAO;gBACf,UAAU,EAAE,qDAAc,CAAC,SAAS;gBACpC,SAAS,EAAE,2BAAyB,CAAC,UAAU;gBAC/C,KAAK,EAAE,EAAE;aACV;YACD;gBACE,MAAM,EAAE,QAAQ;gBAChB,UAAU,EAAE,qDAAc,CAAC,WAAW;gBACtC,SAAS,EAAE,2BAAyB,CAAC,mBAAmB;gBACxD,KAAK,EAAE,EAAE;aACV;SACF,CAAC;QAGM,kBAAa,GAAmB,EAAE,CAAC;QACnC,gBAAW,GAAG,IAAI,oDAAe,CAItC,IAAI,CAAC,CAAC;QACD,eAAU,GAAG,IAAI,oDAAe,CAA6B,IAAI,CAAC,CAAC;QACnE,mBAAc,GAAG,IAAI,oDAAe,CAAU,KAAK,CAAC,CAAC;QAErD,6BAAwB,GAAY,IAAI,CAAC;IAyG7C,CAAC;IAtGL,IAAI,wBAAwB;QAC1B,OAAO,IAAI,CAAC,uBAAuB,CAAC;IACtC,CAAC;IAED,IAAI,wBAAwB,CAAC,KAAc;QACzC,IAAI,CAAC,uBAAuB,GAAG,KAAK,CAAC;IACvC,CAAC;IAED,IAAI,yBAAyB;QAC3B,OAAO,IAAI,CAAC,wBAAwB,CAAC;IACvC,CAAC;IAED,IAAI,yBAAyB,CAAC,KAAc;QAC1C,IAAI,CAAC,wBAAwB,GAAG,KAAK,CAAC;QAEtC,IAAI,IAAI,CAAC,WAAW,CAAC,cAAc,EAAE;YACnC,IAAI,KAAK,EAAE;gBACT,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;aACjD;iBAAM;gBACL,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;aAChD;SACF;IACH,CAAC;IACD,IAAI,YAAY;QACd,OAAO,GAAG,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,IAAI,CAAC;IACrE,CAAC;IAED,IAAI,aAAa;QACf,OAAO,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,CAAC;IACvE,CAAC;IAED,IAAI,gBAAgB;QAClB,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE;YAC1B,OAAO,EAAE,CAAC;SACX;QAED,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC,gBAAgB,CAAC;QAEhD,OAAO,MAAM,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,KAAK,KAAK,KAAK,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC;IACtD,CAAC;IAED,IAAI,kBAAkB;QACpB,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE;YAC3B,OAAO,EAAE,CAAC;SACX;QAED,MAAM,YAAY,GAAgC,IAAI;aACnD,wBAAwB;YACzB,CAAC,CAAC,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAA4B,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;gBAC/D,KAAK,EAAE,IAAI,CAAC,qBAAqB,CAAC,EAAE,CAAC,EAAE,CAAC;gBACxC,QAAQ,EAAE,EAAE,CAAC,QAAQ;aACtB,CAAC,CAAC;YACH,CAAC,CAAC,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAA4B,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;gBAC/D,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,QAAQ,EAAE;gBACnC,QAAQ,EAAE,EAAE,CAAC,QAAQ;aACtB,CAAC,CAAC,CAAC;QAEN,MAAM,EACJ,cAAc,EACd,kBAAkB,EAClB,eAAe,EACf,sBAAsB,EACtB,uBAAuB,GACxB,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC;QAE3B,MAAM,OAAO,GAAG,IAAI,CAAC,yBAAyB;YAC5C,CAAC,CAAC,uBAAuB;YACzB,CAAC,CAAC,sBAAsB,CAAC;QAE3B,OAAO;YACL,GAAG,YAAY;YACf;gBACE,KAAK,EAAE,4DAAiB,CAAC,MAAM;gBAC/B,QAAQ,EAAE,cAAc;aACzB;YACD;gBACE,KAAK,EAAE,4DAAiB,CAAC,UAAU;gBACnC,QAAQ,EAAE,kBAAkB;aAC7B;YACD;gBACE,KAAK,EAAE,4DAAiB,CAAC,OAAO;gBAChC,QAAQ,EAAE,eAAe;aAC1B;YACD;gBACE,KAAK,EAAE,4DAAiB,CAAC,SAAS;gBAClC,QAAQ,EAAE,OAAO;aAClB;SACF,CAAC;IACJ,CAAC;IAED,IAAI,WAAW;QACb,OAAO,IAAI,CAAC,gBAAgB,IAAI,CAAC,CAAC,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC;IACjE,CAAC;IAYD,QAAQ;QACN,IAAI,CAAC,WAAW,GAAG,IAAI,0DAAkB,EAAE,CAAC;QAC5C,IAAI,CAAC,oBAAoB,GAAG,IAAI,kEAA0B,EAAE,CAAC;QAC7D,IAAI,CAAC,mBAAmB,GAAG,IAAI,kEAA0B,EAAE,CAAC;QAE5D,MAAM,CAAC,2BAAyB,CAAC,+BAA+B,CAAC,GAAG,GAAG,EAAE;YACvE,OAAO,IAAI,CAAC,WAAW,CAAC;QAC1B,CAAC,CAAC;QACF,MAAM,CAAC,2BAAyB,CAAC,kCAAkC,CAAC;YAClE,GAAG,EAAE;gBACH,OAAO,IAAI,CAAC,UAAU,CAAC;YACzB,CAAC,CAAC;QACJ,MAAM,CAAC,2BAAyB,CAAC,wBAAwB,CAAC,GAAG,IAAI,CAAC;QAClE,MAAM,CAAC,2BAAyB,CAAC,mCAAmC,CAAC;YACnE,GAAG,EAAE;gBACH,OAAO,IAAI,CAAC,cAAc,CAAC;YAC7B,CAAC,CAAC;QAEJ,IAAI,CAAC,gBAAgB,EAAE,CAAC;IAC1B,CAAC;IAED,eAAe;QACb,MAAM,mBAAmB,GAAG,IAAI,CAAC,iBAAiB,CAAC,cAAc,CAAC,SAAS,CACzE,CAAC,GAAuB,EAAE,EAAE;YAC1B,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE;gBAClB,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE;oBACtC,UAAU,EAAE,IAAI,CAAC,MAAM;iBACxB,CAAC,CAAC;YACL,CAAC,CAAC,CAAC;QACL,CAAC,CACF,CAAC;QAEF,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;QAC7C,IAAI,CAAC,GAAG,CAAC,aAAa,CAAC,aAAa,CAAC,4EAA4E,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,iBAAiB,EAAE,iBAAiB,CAAC,CAAC;IACzK,CAAC;IAED,WAAW;QACT,IAAI,CAAC,kBAAkB,EAAE,CAAC;QAC1B,IAAI,CAAC,mBAAmB,CAAC,uBAAuB,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAC5D,CAAC;IAED,iBAAiB;QACf,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,SAAS,yDAAc,CAAC,iBAAiB,EAAE,CAAC,EAAE;YACnE,UAAU,EAAE,IAAI,CAAC,MAAM;SACxB,CAAC,CAAC;IACL,CAAC;IAED,gBAAgB;QACd,MAAM,0BAA0B,GAC9B,IAAI,CAAC,mBAAmB,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC,cAAc,EAAE,EAAE;YACpE,IAAI,CAAC,eAAe,GAAG,cAAc,CAAC;QACxC,CAAC,CAAC,CAAC;QAEL,MAAM,qBAAqB,GAAG,IAAI,CAAC,mBAAmB,CAAC,UAAU,CAAC,SAAS,CACzE,CAAC,SAAS,EAAE,EAAE;YACZ,IAAI,SAAS,EAAE;gBACb,IAAI,IAAI,CAAC,WAAW,CAAC,cAAc,EAAE;oBACnC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;iBACjC;gBAED,IAAI,IAAI,CAAC,wBAAwB,EAAE;oBACjC,IAAI,CAAC,oBAAoB,GAAG,SAAS,CAAC;oBACtC,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;iBACxD;qBAAM;oBACL,IAAI,CAAC,mBAAmB,GAAG,SAAS,CAAC;oBACrC,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,mBAAmB,EAAE,SAAS,CAAC,CAAC;iBAClE;aACF;QACH,CAAC,CACF,CAAC;QAEF,MAAM,eAAe,GAAG,IAAI,CAAC,WAAW,CAAC,uBAAuB,CAAC,SAAS,CACxE,CAAC,OAAqD,EAAE,EAAE;YACxD,IAAI,OAAO,CAAC,aAAa,CAAC,UAAU,KAAK,IAAI,CAAC,WAAW,CAAC,UAAU,EAAE;gBACpE,IAAI,CAAC,WAAW,CAAC,iBAAiB,GAAG,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC;gBAClE,IAAI,CAAC,WAAW,CAAC,KAAK,GAAG,OAAO,CAAC,aAAa,CAAC,KAAK,CAAC;gBAErD,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC;oBACpB,SAAS,EAAE,IAAI,CAAC,WAAW;oBAC3B,KAAK,EAAE,IAAI,CAAC,WAAW,CAAC,KAAK;oBAC7B,iBAAiB,EAAE,IAAI,CAAC,WAAW,CAAC,iBAAiB;iBACtD,CAAC,CAAC;aACJ;QACH,CAAC,CACF,CAAC;QAEF,MAAM,yBAAyB,GAC7B,IAAI,CAAC,mBAAmB,CAAC,cAAc,CAAC,SAAS,CAC/C,CAAC,SAAqC,EAAE,EAAE;YACxC,IAAI,SAAS,EAAE;gBACb,MAAM,cAAc,GAClB,IAAI,CAAC,WAAW,CAAC,KAAK;oBACtB,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,oBAAoB,CAAC;gBAE9C,IAAI,cAAc,IAAI,SAAS,CAAC,QAAQ,EAAE;oBACxC,SAAS,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE;wBAC/B,IAAI,CAAC,CAAC,OAAO,EAAE;4BACb,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE;gCACtB,CAAC,CAAC,MAAM;oCACN,CAAC,CAAC,KAAK,IAAI,cAAc;wCACvB,CAAC,CAAC,uDAAgB,CAAC,SAAS;wCAC5B,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;4BACjB,CAAC,CAAC,CAAC;yBACJ;oBACH,CAAC,CAAC,CAAC;iBACJ;gBACD,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;gBAEvD,IAAI,IAAI,CAAC,WAAW,CAAC,cAAc,EAAE;oBACnC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;iBACjC;aACF;QACH,CAAC,CACF,CAAC;QAEJ,MAAM,iBAAiB,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,MAAM,EAAE,EAAE;YAClE,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE;gBACzB,IAAI,CAAC,iBAAiB,EAAE,CAAC;aAC1B;YAED,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC;YAEvC,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;YACpB,IAAI,CAAC,qBAAqB,EAAE,CAAC;YAC7B,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;YAC3B,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;QAC1B,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,aAAa,CAAC,IAAI,CACrB,0BAA0B,EAC1B,qBAAqB,EACrB,eAAe,EACf,yBAAyB,EACzB,iBAAiB,CAClB,CAAC;IACJ,CAAC;IAED,kBAAkB;QAChB,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC;QACnD,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;IAC5B,CAAC;IAED,YAAY;QACV,IAAI,CAAC,gBAAgB,GAAG,KAAK,CAAC;IAChC,CAAC;IAED,kBAAkB,CAAC,KAAa;QAC9B,OAAO,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAC1B,CAAC;IAED,iBAAiB;QACf,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC;QAC5B,MAAM,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,aAAa,CAAC,aAAa,CAAC,eAAe,CAAC,CAAC;QAE1E,IAAI,IAAI,CAAC,gBAAgB,EAAE;YACzB,WAAW,CAAC,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC;YACrD,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,YAAY,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;YAC1D,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,YAAY,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;SAC1D;aAAM;YACL,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,YAAY,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;YAC1D,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,YAAY,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;YACzD,WAAW,CAAC,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC;SACtD;IACH,CAAC;IAEM,cAAc;QACnB,IAAI,CAAC,eAAe,GAAG,KAAK,CAAC;QAC7B,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC;QAC7B,IAAI,IAAI,CAAC,gBAAgB,EAAE;YACzB,IAAI,CAAC,mBAAmB,CAAC,aAAa,CAAC,WAAW,CAChD,IAAI,CAAC,QAAQ,CAAC,aAAa,CAC5B,CAAC;YACF,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,YAAY,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;YAC1D,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,YAAY,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;SAC1D;aAAM;YACL,IAAI,CAAC,mBAAmB,CAAC,aAAa,CAAC,WAAW,CAChD,IAAI,CAAC,QAAQ,CAAC,aAAa,CAC5B,CAAC;YACF,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,YAAY,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;YAC1D,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,YAAY,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;SAC1D;IACH,CAAC;IAEY,IAAI,CAAC,GAAuB;;YACvC,IAAI,CAAC,WAAW,GAAG,GAAG,CAAC;YACvB,IAAI,CAAC,aAAa,GAAG,GAAG,CAAC,cAAc,CAAC;YACxC,IAAI,CAAC,uBAAuB,GAAG,IAAI,CAAC;YAEpC,IAAI,GAAG,CAAC,MAAM,EAAE;gBACd,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC;gBAClE,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC;gBAExD,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,CACzB,GAAG,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAC9C,CAAC;gBAEF,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,UAAU,EAAE,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC;oBACpE,MAAM,EAAE,KAAK,GAAG,CAAC,KAAK,GAAG,CAAC,CAAC;oBAC3B,UAAU,EAAE,qDAAc,CAAC,EAAE;oBAC7B,SAAS,EAAE,2BAAyB,CAAC,aAAa;iBACnD,CAAC,CAAC,CAAC;aACL;YAED,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;YACvB,MAAM,cAAc,GAAG,GAAG,CAAC,MAAM;gBAC/B,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;oBACrB,OAAO,CAAC,CAAC,EAAE,CAAC;gBACd,CAAC,CAAC;gBACF,CAAC,CAAC,EAAE,CAAC;YAEP,MAAM,IAAI,CAAC,mBAAmB,CAAC,YAAY,CAAC,GAAG,CAAC,EAAE,EAAE,cAAc,CAAC,CAAC;YAEpE,MAAM,SAAS,GAAG;gBAChB,SAAS,EAAE,IAAI,CAAC,WAAW;gBAC3B,KAAK,EAAE,IAAI,CAAC,WAAW,CAAC,KAAK;gBAC7B,iBAAiB,EAAE,GAAG,CAAC,iBAAiB;aACzC,CAAC;YACF,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YAEjC,IAAI,GAAG,CAAC,cAAc,EAAE;gBACtB,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;aAC9C;YAGD,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC;QAC5B,CAAC;KAAA;IAED,WAAW,CAAC,KAAa;QACvB,MAAM,SAAS,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;QAE1C,IAAI,CAAC,SAAS,EAAE;YACd,OAAO;SACR;QAED,MAAM,EAAE,UAAU,EAAE,GAAG,IAAI,CAAC,eAAe,CAAC;QAE5C,MAAM,QAAQ,GAAG,IAAI,CAAC,mBAAmB,CAAC,aAAa;aACpD,QAAQ,EAAE;aACV,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,UAAU,CAAC,CAAC;QAEpC,IAAI,QAAQ,CAAC,iBAAiB,IAAI,QAAQ,CAAC,KAAK,EAAE;YAChD,SAAS,CAAC,iBAAiB,GAAG,QAAQ,CAAC,iBAAiB,CAAC;YACzD,SAAS,CAAC,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC;YACjC,IAAI,CAAC,iBAAiB,GAAG,QAAQ,CAAC,iBAAiB,CAAC;SACrD;aAAM;YACL,IAAI,CAAC,mBAAmB,CAAC,oBAAoB,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE;gBAClE,SAAS,CAAC,iBAAiB,GAAG,QAAQ,CAAC,iBAAiB,CAAC;gBACzD,SAAS,CAAC,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC;gBACjC,IAAI,CAAC,iBAAiB,GAAG,QAAQ,CAAC,iBAAiB,CAAC;YACtD,CAAC,CAAC,CAAC;SACJ;QAED,SAAS,CAAC,UAAU,GAAG,UAAU,CAAC;QAClC,SAAS,CAAC,cAAc,GAAG,IAAI,CAAC,eAAe,CAAC,aAAa,CAAC;QAC9D,SAAS,CAAC,oBAAoB,GAAG,IAAI,CAAC,eAAe,CAAC,oBAAoB,CAAC;QAE3E,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IACvB,CAAC;IAED,WAAW,CAAC,KAAa;QACvB,IAAI,CAAC,IAAI,CAAC,eAAe,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,UAAU,EAAE;YAC7D,OAAO,IAAI,CAAC;SACb;QAED,MAAM,IAAI,GAAyB,IAAI,CAAC,eAAe,CAAC,UAAU,CAAC,MAAM,CACvE,CAAC,MAAM,EAAE,GAAG,EAAE,EAAE,CACd,CAAC,GAAG,CAAC,IAAI,IAAI,GAAG,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC;YAChC,CAAC,CAAC,CAAC,GAAG,MAAM,EAAE,GAAG,CAAC;YAClB,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,EAC7B,EAAE,CACH,CAAC;QAEF,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,KAAK,CAAC,CAAC;QAE7C,OAAO,GAAG,CAAC;IACb,CAAC;IAED,eAAe,CAAC,KAAa;QAC3B,MAAM,IAAI,GAAG,IAAI,CAAC,eAAe,CAAC,UAAU;aACzC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;aAC1C,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC;QAExD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,eAAe;QACb,MAAM,IAAI,GAAuB,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;QAE3E,IAAI,CAAC,IAAI,EAAE;YACT,OAAO;SACR;QAED,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACpC,CAAC;IAEK,mBAAmB;;YACvB,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC;YAC/B,IAAI,CAAC,mBAAmB,GAAG,EAAE,CAAC;YAC9B,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;YACvB,IAAI,CAAC,mBAAmB;iBACrB,YAAY,CACX,IAAI,CAAC,WAAW,CAAC,EAAE,EACnB,IAAI,CAAC,wBAAwB;gBAC3B,CAAC,CAAC,kDAAW,CAAC,WAAW;gBACzB,CAAC,CAAC,kDAAW,CAAC,UAAU,CAC3B;iBACA,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE;gBACf,IAAI,MAAM,YAAY,kDAAU,EAAE;oBAChC,IAAI,CAAC,mBAAmB,GAAG,MAAM,CAAC,OAAO,CAAC;iBAC3C;gBACD,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;YAC1B,CAAC,CAAC,CAAC;QACP,CAAC;KAAA;IAED,eAAe,CAAC,KAA2B,EAAE,WAAmB;QAC9D,MAAM,MAAM,GACV,KAAK,IAAI,KAAK,CAAC,OAAO;YACpB,CAAC,CAAE,KAAK,CAAC,OAAO,CAAC,WAAW,CAA8B;YAC1D,CAAC,CAAC,IAAI,CAAC;QAEX,IAAI,CAAC,MAAM,EAAE;YACX,OAAO,GAAG,CAAC;SACZ;QAED,IAAI,MAAM,CAAC,MAAM,KAAK,uDAAgB,CAAC,MAAM,EAAE;YAC7C,OAAO,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,cAAc,CAAC;SAC9C;QAED,IAAI,MAAM,CAAC,MAAM,KAAK,uDAAgB,CAAC,UAAU,EAAE;YACjD,OAAO,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,kBAAkB,CAAC;SAClD;QAED,IAAI,IAAI,CAAC,wBAAwB,EAAE;YACjC,IAAI,MAAM,CAAC,MAAM,KAAK,uDAAgB,CAAC,SAAS,EAAE;gBAChD,OAAO,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,uBAAuB,CAAC;aACvD;YAED,IAAI,MAAM,CAAC,MAAM,KAAK,uDAAgB,CAAC,OAAO,EAAE;gBAC9C,OAAO,IAAI,CAAC,WAAW,CAAC,KAAK;oBAC3B,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,eAAe;oBACxC,CAAC,CAAC,EAAE,CAAC;aACR;YAED,IAAI,IAAI,CAAC,WAAW,CAAC,iBAAiB,EAAE;gBACtC,MAAM,gBAAgB,GAAG,IAAI,CAAC,WAAW,CAAC,iBAAiB,CAAC,IAAI,CAC9D,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,KAAK,IAAI,CAAC,CAAC,IAAI,IAAI,MAAM,CAAC,KAAK,IAAI,CAAC,CAAC,EAAE,CACtD,CAAC;gBAEF,OAAO,CAAC,gBAAgB,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,gBAAgB,CAAC,QAAQ,CAAC;aAC3D;YAED,OAAO,GAAG,CAAC;SACZ;aAAM;YACL,IAAI,MAAM,CAAC,MAAM,KAAK,uDAAgB,CAAC,SAAS,EAAE;gBAChD,OAAO,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,sBAAsB,CAAC;aACtD;YAED,OAAO,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,wBAAwB,CAAC;SACxD;IACH,CAAC;IAED,eAAe,CACb,KAA2B,EAC3B,WAAmB;QAEnB,MAAM,MAAM,GACV,KAAK,IAAI,KAAK,CAAC,OAAO;YACpB,CAAC,CAAE,KAAK,CAAC,OAAO,CAAC,WAAW,CAA8B;YAC1D,CAAC,CAAC,IAAI,CAAC;QAEX,IAAI,CAAC,MAAM,EAAE;YACX,OAAO,EAAE,CAAC;SACX;QAED,IAAI,MAAM,CAAC,MAAM,KAAK,uDAAgB,CAAC,MAAM,EAAE;YAC7C,OAAO,4DAAiB,CAAC,MAAM,CAAC;SACjC;QAED,IAAI,MAAM,CAAC,MAAM,KAAK,uDAAgB,CAAC,UAAU,EAAE;YACjD,OAAO,GAAG,CAAC;SACZ;QAED,IAAI,IAAI,CAAC,uBAAuB,IAAI,IAAI,CAAC,wBAAwB,EAAE;YACjE,MAAM,eAAe,GAAG,IAAI,CAAC,qBAAqB,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YACjE,OAAO,eAAe,CAAC;SACxB;QAED,OAAO,MAAM,CAAC,KAAK,CAAC;IACtB,CAAC;IAED,qBAAqB,CAAC,KAAa;QACjC,IAAI,KAAK,IAAI,KAAK,KAAK,CAAC,EAAE;YACxB,MAAM,cAAc,GAAG,4DAAoB,CAAC,mBAAmB,CAAC,KAAK,CAAC,CAAC;YACvE,OAAO,cAAc,CAAC,QAAQ,EAAE,CAAC;SAClC;aAAM;YACL,OAAO,GAAG,CAAC;SACZ;IACH,CAAC;IAED,sBAAsB,CACpB,KAA2B,EAC3B,WAAmB;QAEnB,MAAM,MAAM,GAAG,KAAK;YAClB,CAAC,CAAE,KAAK,CAAC,WAAW,CAA8B;YAClD,CAAC,CAAC,IAAI,CAAC;QAET,IAAI,MAAM,EAAE;YACV,IAAI,MAAM,CAAC,MAAM,KAAK,uDAAgB,CAAC,MAAM,EAAE;gBAC7C,OAAO,SAAS,CAAC;aAClB;SACF;QAED,OAAO,EAAE,CAAC;IACZ,CAAC;IAEO,sBAAsB,CAC5B,QAAgC,EAChC,SAAqC;QAErC,IAAI,QAAQ,EAAE;YACZ,QAAQ,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE;gBACrB,IAAI,SAAS,CAAC,QAAQ,EAAE;oBACtB,IAAI,SAAS,CAAC,kBAAkB,EAAE;wBAChC,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,SAAS,CAAC,kBAAkB,GAAG,IAAI,CAAC,CAAC;wBAC3D,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;qBACxD;oBAED,SAAS,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;wBAC9B,IAAI,KAAK,CAAC,EAAE,KAAK,IAAI,CAAC,OAAO,EAAE;4BAC7B,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;yBAC9B;oBACH,CAAC,CAAC,CAAC;iBACJ;YACH,CAAC,CAAC,CAAC;SACJ;QACD,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;QACxB,IAAI,CAAC,qBAAqB,EAAE,CAAC;IAC/B,CAAC;IAED,oBAAoB,CAAC,OAAgB,EAAE,SAAS,GAAG,KAAK;QACtD,MAAM,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,aAAa,CAAC,aAAa,CAAC,4EAA4E,CAAC,CAAC;QAC9H,IAAI,EAAE,EAAE;SACP;IACH,CAAC;IAED,qBAAqB;QACnB,IAAI,CAAC,kBAAkB,GAAG,kEAA0B,CAAC,cAAc,CACjE,IAAI,CAAC,eAAe,CACrB,CAAC;IACJ,CAAC;IAED,eAAe,CAAC,KAAU;QACxB,MAAM,EAAE,IAAI,EAAE,GAAG,KAAK,CAAC;QAEvB,IAAI,IAAI,EAAE;YACR,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC5B,IAAI,CAAC,eAAe,GAAG,KAAK,CAAC;SAC9B;IACH,CAAC;IAED,cAAc,CAAC,KAAa;QAC1B,IAAI,CAAC,IAAI,CAAC,kBAAkB,EAAE;YAC5B,OAAO;SACR;QAED,MAAM,IAAI,GAAe,IAAI,CAAC,kBAAkB,CAAC,MAAM,CACrD,CAAC,MAAM,EAAE,GAAG,EAAE,EAAE,CACd,CAAC,GAAG,CAAC,QAAQ,IAAI,GAAG,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC;YACxC,CAAC,CAAC,CAAC,GAAG,MAAM,EAAE,GAAG,CAAC;YAClB,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,EACjC,EAAE,CACH,CAAC;QAEF,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,KAAK,CAAC,CAAC;QAEpD,IAAI,CAAC,OAAO,EAAE;YACZ,OAAO;SACR;QAED,IAAI,CAAC,gBAAgB,GAAG,OAAO,CAAC;IAClC,CAAC;IAED,cAAc;QACZ,IAAI,CAAC,eAAe,GAAG,CAAC,IAAI,CAAC,eAAe,CAAC;IAC/C,CAAC;IAED,mBAAmB;QACjB,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,IAAI,CAAC,wBAAwB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC3F,CAAC;IAEO,qBAAqB;QAC3B,IAAI,UAAU,GAAG,iBAAiB,CAAC;QACnC,IAAI,IAAI,CAAC,UAAU,EAAE;YACnB,IAAI,CAAC,mBAAmB,GAAG,UAAU,GAAG,gBAAgB,CAAC;SAC1D;aAAM,IAAI,IAAI,CAAC,kBAAkB,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;YACtD,IAAI,CAAC,mBAAmB,GAAG,UAAU,GAAG,IAAI,CAAC,kBAAkB,CAAC;SACjE;aAAM;YACL,IAAI,CAAC,mBAAmB,GAAG,EAAE,CAAC;SAC/B;IACH,CAAC;CACF;AAtqBQ,yDAA+B,GAAG,WAAW,CAAC;AAC9C,4DAAkC,GAAG,cAAc,CAAC;AACpD,kDAAwB,GAAG,OAAO,CAAC;AACnC,6DAAmC,GAAG,eAAe,CAAC;AACtD,oCAAU,GAAG,MAAM,CAAC;AACpB,6CAAmB,GAAG,eAAe,CAAC;AACtC,uCAAa,GAAG,SAAS,CAAC;;YAkKF,uEAA6B;YACzC,sDAAM;YACP,8DAAc;YACjB,wDAAU;YACF,oDAAU;YACjB,+DAAiB;YAChB,oDAAM;;AAtKkB;IAAxC,+DAAS,CAAC,SAAS,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;8BAAW,wDAAU;2DAAC;AACrB;IAAxC,+DAAS,CAAC,SAAS,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;8BAAW,wDAAU;2DAAC;AAG9D;IADC,+DAAS,CAAC,qBAAqB,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;8BAC/B,wDAAU;sEAAC;AAGhC;IADC,+DAAS,CAAC,uEAA+B,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;8BAC3C,uEAA+B;oEAAC;AAMnD;IAJC,+DAAS,CAAC,gFAAwC,EAAE;QACnD,IAAI,EAAE,KAAK;QACX,MAAM,EAAE,KAAK;KACd,CAAC;8BACiB,gFAAwC;oEAAC;AAtBjD,yBAAyB;IAJrC,+DAAS,CAAC;QACT,QAAQ,EAAE,kCAAkC;QAC5C,4PAAmD;KACpD,CAAC;qCA0K+B,uEAA6B;QACzC,sDAAM;QACP,8DAAc;QACjB,wDAAU;QACF,oDAAU;QACjB,+DAAiB;QAChB,oDAAM;GA/KZ,yBAAyB,CAuqBrC;AAvqBqC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACpCf;AACkC;AACK;AACnB;AAMxB;AAOF;AACqE;AAUrE;AAC6D;AAIrD;AAMzB,IAAa,0BAA0B,kCAAvC,MAAa,0BAA0B;IAoDrC,YACU,GAAe,EACf,mBAAkD,EAClD,OAAe,EACf,MAAsB,EACtB,KAAa,EACb,YAAyB;QALzB,QAAG,GAAH,GAAG,CAAY;QACf,wBAAmB,GAAnB,mBAAmB,CAA+B;QAClD,YAAO,GAAP,OAAO,CAAQ;QACf,WAAM,GAAN,MAAM,CAAgB;QACtB,UAAK,GAAL,KAAK,CAAQ;QACb,iBAAY,GAAZ,YAAY,CAAa;QAjD5B,mCAA8B,GAAe,EAAE,CAAC;QAEhD,sBAAiB,GAAe,EAAE,CAAC;QAEnC,uBAAkB,GAAG,KAAK,CAAC;QAE3B,oBAAe,GAAG,IAAI,CAAC;QACvB,mBAAc,GAAG,IAAI,CAAC;QAKrB,4BAAuB,GAAG,SAAS,CAAC;QACpC,kBAAa,GAAmB,EAAE,CAAC;QACnC,aAAQ,GAAG,IAAI,4CAAO,EAAQ,CAAC;QAC/B,gBAAW,GAAG,IAAI,oDAAe,CAAU,KAAK,CAAC,CAAC;QAClD,uBAAkB,GAAG,IAAI,oDAAe,CAAS,CAAC,CAAC,CAAC;QACpD,mBAAc,GAAG,IAAI,0DAAY,EAAsB,CAAC;QAqBhE,aAAQ,GAAY,KAAK,CAAC;IAYtB,CAAC;IAVL,IAAI,cAAc;QAChB,OAAO,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,oDAAY,CAAC,YAAY,CAAC,IAAI,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,oDAAY,CAAC,WAAW,CAAC,CAAC;IAC7H,CAAC;IAUD,IAAI,mBAAmB;QACrB,OAAO,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,CAAC;IACrE,CAAC;IAED,IAAI,8BAA8B;QAChC,IAAI,CAAC,IAAI,CAAC,oBAAoB,EAAE;YAC9B,OAAO,EAAE,CAAC;SACX;QAED,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC,oBAAoB,CAAC;QAEpD,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE;YACvB,OAAO,KAAK,CAAC;SACd;QAED,OAAO,MAAM,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,KAAK,KAAK,KAAK,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC;IACtD,CAAC;IAED,IAAI,cAAc;QAChB,OAAO,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,oDAAY,CAAC,YAAY,CAAC,CAAC;IAClE,CAAC;IAED,IAAI,aAAa;QACf,OAAO,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,oDAAY,CAAC,WAAW,CAAC,CAAC;IACjE,CAAC;IAED,IAAI,2BAA2B;QAC7B,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE;YACxB,OAAO,KAAK,CAAC;SACd;QACD,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,aAAa,EAAE,GAAG,IAAI,CAAC,cAAc,CAAC;QAE5D,IAAI,CAAC,KAAK,IAAI,CAAC,KAAK,EAAE;YACpB,OAAO,KAAK,CAAC;SACd;QAED,OAAO,aAAa,CAAC;IACvB,CAAC;IAED,QAAQ;QACN,IAAI,CAAC,gBAAgB,EAAE,CAAC;QAExB,MAAM,CAAC,4BAA0B,CAAC,iCAAiC,CAAC;YAClE,GAAG,EAAE;gBACH,OAAO,IAAI,CAAC,mBAAmB,CAAC,eAAe,CAAC;YAClD,CAAC,CAAC;QACJ,MAAM,CAAC,4BAA0B,CAAC,gCAAgC,CAAC;YACjE,GAAG,EAAE;gBACH,OAAO,IAAI,CAAC,WAAW,CAAC;YAC1B,CAAC,CAAC;QAEJ,MAAM,CAAC,4BAA0B,CAAC,sCAAsC,CAAC;YACvE,GAAG,EAAE;gBACH,OAAO,IAAI,CAAC,kBAAkB,CAAC;YACjC,CAAC,CAAC;QAEJ,MAAM,CAAC,4BAA0B,CAAC,wBAAwB,CAAC,GAAG,IAAI,CAAC;QAEnE,MAAM,CAAC,4BAA0B,CAAC,gCAAgC,CAAC;YACjE,IAAI,CAAC,uBAAuB,CAAC;QAE/B,IAAI,CAAC,kBAAkB;aACpB,IAAI,CAAC,gEAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;aAC9B,SAAS,CAAC,CAAC,EAAU,EAAE,EAAE;YACxB,IAAI,EAAE,EAAE;gBACN,IAAI,IAAI,GAAyB,EAAE,CAAC;gBAEpC,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,OAAO,CACpC,CAAC,SAA6B,EAAE,EAAE;oBAChC,IAAI,SAAS,CAAC,OAAO,KAAK,kDAAW,CAAC,IAAI,EAAE;wBAC1C,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;qBACjD;yBAAM;wBACL,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;qBACtB;gBACH,CAAC,CACF,CAAC;gBAEF,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;gBAC1C,IAAI,CAAC,GAAG,CAAC,UAAU,EAAE;oBACnB,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC;iBAC1B;aACF;QACH,CAAC,CAAC,CAAC;IACP,CAAC;IAED,eAAe;QACb,IAAI,CAAC,qBAAqB,EAAE,CAAC;QAE7B,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,aAAa,CAAC,aAAa,CAAC,WAAW,CAAC;QAC1D,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,aAAa,CAAC,aAAa,CAAC,YAAY,CAAC;QAE5D,IAAI,CAAC,aAAa,CAAC,aAAa,CAAC,YAAY,CAAC,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;QACnE,IAAI,CAAC,aAAa,CAAC,aAAa,CAAC,YAAY,CAAC,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;IACvE,CAAC;IAED,YAAY;QACV,IAAI,CAAC,eAAe,GAAG,KAAK,CAAC;IAC/B,CAAC;IAED,cAAc;QACZ,MAAM,qBAAqB,GAAG,KAAK,CAAC;QACpC,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,MAAM,GAAG,qBAAqB,CAAC,GAAG,GAAG,CAAC,CAAC;QACvE,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,KAAK,GAAG,qBAAqB,CAAC,GAAG,GAAG,CAAC,CAAC;QAErE,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC;QAC5B,IAAI,CAAC,cAAc,GAAG,KAAK,CAAC;QAC5B,IAAI,CAAC,mBAAmB,CAAC,aAAa,CAAC,WAAW,CAChD,IAAI,CAAC,aAAa,CAAC,aAAa,CACjC,CAAC;QACF,IAAI,CAAC,aAAa,CAAC,aAAa,CAAC,YAAY,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;QAChE,IAAI,CAAC,aAAa,CAAC,aAAa,CAAC,YAAY,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;IAChE,CAAC;IAED,iBAAiB;QACf,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;QAC3B,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC;QAC5B,MAAM,WAAW,GACf,IAAI,CAAC,GAAG,CAAC,aAAa,CAAC,aAAa,CAAC,kBAAkB,CAAC,CAAC;QAC3D,WAAW,CAAC,WAAW,CAAC,IAAI,CAAC,aAAa,CAAC,aAAa,CAAC,CAAC;QAC1D,IAAI,CAAC,aAAa,CAAC,aAAa,CAAC,YAAY,CAAC,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;QACrE,IAAI,CAAC,aAAa,CAAC,aAAa,CAAC,YAAY,CAAC,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;IACrE,CAAC;IAED,cAAc,CAAC,SAA6B;QAC1C,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE;YAClB,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC;YAC9B,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QACtC,CAAC,CAAC,CAAC;IACL,CAAC;IAED,WAAW;QACT,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;QACrB,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC;QACzB,IAAI,CAAC,kBAAkB,EAAE,CAAC;IAC5B,CAAC;IAED,oBAAoB;QAClB,IAAI,CAAC,IAAI,CAAC,8BAA8B,EAAE;YACxC,OAAO;SACR;QAED,MAAM,wBAAwB,GAAG,IAAI,CAAC,8BAA8B,CAAC,IAAI,CACvE,CAAC,WAAW,EAAE,EAAE,CAAC,WAAW,CAAC,QAAQ,IAAI,WAAW,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CACzE,CAAC;QAEF,IAAI,CAAC,wBAAwB,EAAE;YAC7B,OAAO;SACR;QAED,IAAI,CAAC,oBAAoB,GAAG,wBAAwB,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;QACjE,IAAI,CAAC,oBAAoB,CAAC,MAAM,CAAC,QAAQ,GAAG,IAAI,CAAC;IACnD,CAAC;IAED,mBAAmB,CAAC,UAAkB;QACpC,IAAI,CAAC,IAAI,CAAC,8BAA8B,EAAE;YACxC,OAAO;SACR;QAED,MAAM,eAAe,GACnB,IAAI,CAAC,8BAA8B,CAAC,MAAM,CACxC,CAAC,MAAM,EAAE,WAAW,EAAE,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,QAAQ,CAAC,EAC5D,EAAE,CACH,CAAC;QAEJ,MAAM,YAAY,GAAG,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,UAAU,CAAC,CAAC;QAEzE,IAAI,CAAC,YAAY,EAAE;YACjB,OAAO;SACR;QAED,IAAI,CAAC,oBAAoB,GAAG,YAAY,CAAC;QACzC,YAAY,CAAC,MAAM,CAAC,QAAQ,GAAG,IAAI,CAAC;IACtC,CAAC;IAED,kBAAkB,CAAC,UAAkB;QACnC,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;QACrB,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;QAC3B,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC7B,IAAI,CAAC,iBAAiB,GAAG,EAAE,CAAC;QAC5B,IAAI,CAAC,mBAAmB;aACrB,SAAS,CAAC,UAAU,EAAE,IAAI,CAAC;aAC3B,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE;YACV,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;YACtB,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC9B,CAAC,CAAC,CAAC;IACP,CAAC;IAED,qBAAqB,CAAC,cAA0C;QAC9D,IAAI,CAAC,iBAAiB;YACpB,kEAA0B,CAAC,cAAc,CAAC,cAAc,CAAC,CAAC;IAC9D,CAAC;IAED,6BAA6B,CAAC,SAA6B;QACzD,MAAM,wBAAwB,GAC5B,SAAS;YACT,SAAS;iBACN,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE;gBACf,MAAM,uBAAuB,GAAa;oBACxC,KAAK,EAAE,OAAO,CAAC,IAAI;oBACnB,UAAU,EAAE,KAAK;oBACjB,QAAQ,EAAE,KAAK;iBAChB,CAAC;gBAEF,uBAAuB,CAAC,QAAQ,GAAG,OAAO,CAAC,SAAS;qBACjD,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;qBACxC,GAAG,CAAW,CAAC,QAAQ,EAAE,EAAE;oBAC1B,MAAM,YAAY,GAAa;wBAC7B,KAAK,EAAE,QAAQ,CAAC,IAAI;wBACpB,IAAI,EAAE,QAAQ,CAAC,EAAE;wBACjB,UAAU,EAAE,IAAI;wBAChB,MAAM,EAAE,uBAAuB;qBAChC,CAAC;oBAEF,OAAO,YAAY,CAAC;gBACtB,CAAC,CAAC;qBACD,IAAI,CAAC,uDAAe,CAAC,qBAAqB,CAAC,CAAC;gBAE/C,OAAO,uBAAuB,CAAC;YACjC,CAAC,CAAC;iBACD,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,IAAI,CAAC,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC;iBAChD,IAAI,CAAC,uDAAe,CAAC,qBAAqB,CAAC,CAAC;QAEjD,IAAI,CAAC,8BAA8B,GAAG,wBAAwB,CAAC;IACjE,CAAC;IAED,sBAAsB;QACpB,IAAI,CAAC,OAAO,CAAC,QAAQ,CACnB,CAAC,MAAM,yDAAc,CAAC,oBAAoB,EAAE,CAAC,EAC7C;YACE,UAAU,EAAE,IAAI,CAAC,MAAM;SACxB,CACF,CAAC;IACJ,CAAC;IAED,aAAa,CAAC,SAA6B;QACzC,IAAI,CAAC,OAAO,CAAC,QAAQ,CACnB,CAAC,MAAM,yDAAc,CAAC,eAAe,EAAE,EAAE,SAAS,CAAC,EAAE,CAAC,EACtD;YACE,UAAU,EAAE,IAAI,CAAC,MAAM;SACxB,CACF,CAAC;IACJ,CAAC;IAED,oBAAoB,CAAC,KAAU;QAC7B,MAAM,EAAE,IAAI,EAAE,GAAG,KAAK,CAAC;QAEvB,IAAI,IAAI,EAAE;YACR,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACnC,IAAI,CAAC,kBAAkB,GAAG,KAAK,CAAC;SACjC;IACH,CAAC;IAED,mBAAmB,CAAC,KAAU;QAC5B,MAAM,EAAE,IAAI,EAAE,GAAG,KAAK,CAAC;QACvB,IAAI,SAA6B,CAAC;QAElC,SAAS,GAAG,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,IAAI,CAC7C,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CACpC,CAAC;QAEF,IAAI,CAAC,SAAS,EAAE;YACd,MAAM,gBAAgB,GACpB,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,MAAM,CACnC,CAAC,MAAM,EAAE,EAAE,EAAE,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EACrD,EAAE,CACH,CAAC;YAEJ,SAAS,GAAG,gBAAgB,CAAC,IAAI,CAC/B,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CACpC,CAAC;SACH;QAED,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC;IAChC,CAAC;IAED,gBAAgB;QACd,IAAI,CAAC,kBAAkB,GAAG,CAAC,IAAI,CAAC,kBAAkB,CAAC;IACrD,CAAC;IAED,kBAAkB;QAChB,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC;QACnD,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;IAC5B,CAAC;IAED,gBAAgB;QACd,MAAM,0BAA0B,GAC9B,IAAI,CAAC,mBAAmB,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC,cAAc,EAAE,EAAE;YACpE,IAAI,CAAC,qBAAqB,CAAC,cAAc,CAAC,CAAC;YAC3C,IAAI,CAAC,cAAc,GAAG,CAAC,cAAc,IAAI,IAAI,IAAI,cAAc,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,4BAA4B,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC;YACpJ,IAAI,IAAI,CAAC,cAAc,EAAE;gBACvB,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,yBAAyB,CAAC,cAAc,CAAC,iBAAiB,EAAE,cAAc,CAAC,KAAK,CAAC,CAAC;aAClH;iBACI;gBACH,IAAI,CAAC,kBAAkB,GAAG,EAAE,CAAC;aAC9B;QACH,CAAC,CAAC,CAAC;QAEL,MAAM,qBAAqB,GACzB,IAAI,CAAC,mBAAmB,CAAC,uBAAuB,CAAC,SAAS,CACxD,CAAC,SAAS,EAAE,EAAE;YACZ,IAAI,CAAC,6BAA6B,CAAC,SAAS,CAAC,CAAC;YAC9C,IAAI,IAAI,CAAC,cAAc,EAAE;gBACvB,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC;aAC1D;YAED,IAAI,CAAC,IAAI,CAAC,oBAAoB,EAAE;gBAC9B,IAAI,CAAC,oBAAoB,EAAE,CAAC;aAC7B;YAED,IAAI,IAAI,CAAC,oBAAoB,EAAE;gBAC7B,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAC;gBACxD,IAAI,CAAC,kBAAkB,GAAG,KAAK,CAAC;aACjC;QACH,CAAC,CACF,CAAC;QAEJ,MAAM,qBAAqB,GACzB,IAAI,CAAC,mBAAmB,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC,SAAS,EAAE,EAAE;YAC7D,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAC7B,CAAC,CAAC,CAAC;QAEL,MAAM,QAAQ,GAAG,IAAI,CAAC;QACtB,IAAI,CAAC,IAAI,CAAC,8BAA8B,IAAI,IAAI,CAAC,8BAA8B,CAAC,MAAM,IAAI,CAAC,EAAE;YAC3F,IAAI,CAAC,mBAAmB,CAAC,yBAAyB,CAAC,QAAQ,CAAC,CAAC;SAC9D;QACD,IAAI,CAAC,mBAAmB,CAAC,GAAG,EAAE,CAAC;QAE/B,IAAI,CAAC,aAAa,CAAC,IAAI,CACrB,qBAAqB,EACrB,0BAA0B,EAC1B,qBAAqB,CACtB,CAAC;IACJ,CAAC;IAED,qBAAqB;QACnB,MAAM,uBAAuB,GAC3B,IAAI,CAAC,uBAAuB,CAAC,kBAAkB,CAAC,SAAS,CACvD,CAAC,KAAgC,EAAE,EAAE;YACnC,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACrC,CAAC,CACF,CAAC;QAEJ,MAAM,wBAAwB,GAAG,IAAI,CAAC,iBAAiB,CAAC,SAAS,CAAC,SAAS,CACzE,CAAC,KAAgC,EAAE,EAAE;YACnC,IAAI,CAAC,uBAAuB,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;QAClD,CAAC,CACF,CAAC;QAEF,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,uBAAuB,EAAE,wBAAwB,CAAC,CAAC;IAC7E,CAAC;IAED,QAAQ;QACN,MAAM,eAAe,GAAG,IAAI,CAAC,kBAAkB,EAAE,CAAC;QAElD,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAC;IAC/C,CAAC;IAED,qBAAqB;QACnB,MAAM,eAAe,GAAG,IAAI,CAAC,kBAAkB,EAAE,CAAC;QAClD,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC7B,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;IACrD,CAAC;IAED,kBAAkB;QAChB,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE;YACxB,OAAO,IAAI,CAAC;SACb;QAED,MAAM,EAAE,UAAU,EAAE,GAAG,IAAI,CAAC,cAAc,CAAC;QAC3C,MAAM,eAAe,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,UAAU,CAAC,CAAC;QAExE,OAAO,eAAe,CAAC;IACzB,CAAC;IAED,mBAAmB;QACjB,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC;IACtD,CAAC;IAED,YAAY;QACV,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,uDAAgB,CAAC,cAAc,CAAC,CAAC;IAChE,CAAC;IAED,YAAY;QACV,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC9B,CAAC;IAEO,4BAA4B,CAAC,MAAkC;QACrE,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;YAC5B,IAAI,CAAC,YAAY,CAAC,CAAC,EAAE,MAAM,CAAC,iBAAiB,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC;QAC/D,CAAC,CAAC,CAAC;QACH,OAAO,MAAM,CAAC;IAChB,CAAC;IAEO,YAAY,CAAC,GAAuB,EAAE,iBAA8C,EAAE,KAAqB;QACjH,IAAI,GAAG,CAAC,OAAO,IAAI,kDAAW,CAAC,IAAI,EAAE;YACnC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,EAAE,iBAAiB,EAAE,KAAK,CAAC,CAAC,CAAC;SACvE;aACI;YACH,IAAI,GAAG,CAAC,kBAAkB,IAAI,IAAI,IAAI,GAAG,CAAC,kBAAkB,IAAI,uDAAgB,CAAC,SAAS,EAAE;gBAC1F,GAAG,CAAC,QAAQ,GAAG,KAAK,CAAC,uBAAuB,CAAC;aAC9C;iBACI,IAAI,GAAG,CAAC,qBAAqB,IAAI,IAAI,EAAE;gBAC1C,MAAM,KAAK,GAAG,iBAAiB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,qBAAqB,IAAI,CAAC,CAAC,IAAI,IAAI,GAAG,CAAC,qBAAqB,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC;gBACpH,GAAG,CAAC,QAAQ,GAAG,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,4BAA0B,CAAC,iBAAiB,CAAC;aACtF;SACF;IACH,CAAC;IAEO,qBAAqB,CAAC,KAAa;QACzC,IAAI,KAAK,IAAI,KAAK,KAAK,CAAC,EAAE;YACxB,MAAM,cAAc,GAAG,4DAAoB,CAAC,mBAAmB,CAAC,KAAK,CAAC,CAAC;YACvE,OAAO,cAAc,CAAC,QAAQ,EAAE,CAAC;SAClC;aAAM;YACL,OAAO,GAAG,CAAC;SACZ;IACH,CAAC;IAEO,yBAAyB,CAAC,iBAA8C,EAAE,KAAqB;QACrG,IAAI,CAAC,iBAAiB,EAAE;YACtB,OAAO,EAAE,CAAC;SACX;QAED,MAAM,YAAY,GAAgC,iBAAiB,CAAC,GAAG,CAA4B,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;YAC1G,KAAK,EAAE,IAAI,CAAC,qBAAqB,CAAC,EAAE,CAAC,EAAE,CAAC;YACxC,QAAQ,EAAE,EAAE,CAAC,QAAQ;SACtB,CAAC,CAAC;QAEH,OAAO;YACL;gBACE,QAAQ,EAAE,4BAA0B,CAAC,iBAAiB;gBACtD,KAAK,EAAE,4DAAiB,CAAC,OAAO;aACjC;YACD,GAAG,YAAY;YACf;gBACE,KAAK,EAAE,4DAAiB,CAAC,SAAS;gBAClC,QAAQ,EAAE,KAAK,CAAC,uBAAuB;aACxC;SACF,CAAC;IACJ,CAAC;CACF;AAlfQ,4DAAiC,GAAG,aAAa,CAAC;AAClD,2DAAgC,GAAG,YAAY,CAAC;AAChD,iEAAsC,GAAG,iBAAiB,CAAC;AAC3D,2DAAgC,GAAG,yBAAyB,CAAC;AAC7D,mDAAwB,GAAG,OAAO,CAAC;AACnC,4CAAiB,GAAG,SAAS,CAAC;;YA8CtB,wDAAU;YACM,uEAA6B;YACzC,sDAAM;YACP,8DAAc;YACf,oDAAM;YACC,qDAAW;;AA7BnC;IADC,+DAAS,CAAC,eAAe,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;8BAC/B,wDAAU;iEAAC;AAE1B;IADC,+DAAS,CAAC,qBAAqB,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;8BAC/B,wDAAU;uEAAC;AAEhC;IADC,+DAAS,CAAC,eAAe,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;8BAC/B,wDAAU;iEAAC;AAE1B;IADC,+DAAS,CAAC,0EAAkC,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;8BAC7C,0EAAkC;2EAAC;AAEpE;IADC,+DAAS,CAAC,oEAA4B,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;8BAC7C,oEAA4B;qEAAC;AAExD;IADC,+DAAS,CAAC,wEAAgC,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;8BACrD,wEAAgC;iEAAC;AAKxD;IAJC,+DAAS,CAAC,gFAAwC,EAAE;QACnD,IAAI,EAAE,KAAK;QACX,MAAM,EAAE,KAAK;KACd,CAAC;8BACiB,gFAAwC;qEAAC;AAE5D;IADC,+DAAS,CAAC,8DAAsB,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;8BAC3C,8DAAsB;iEAAC;AA9CnC,0BAA0B;IAJtC,+DAAS,CAAC;QACT,QAAQ,EAAE,mCAAmC;QAC7C,0OAAoD;KACrD,CAAC;qCAsDe,wDAAU;QACM,uEAA6B;QACzC,sDAAM;QACP,8DAAc;QACf,oDAAM;QACC,qDAAW;GA1DxB,0BAA0B,CAoftC;AApfsC;;;;;;;;;;;;;;;;;;;;AC/Cc;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACAmB;AACf;AAEU;AACT;AAI2C;AACxB;AACJ;AACrB;AAMpD,IAAa,8BAA8B,sCAA3C,MAAa,8BAA8B;IA0GzC,YACU,mBAAkD,EAClD,OAAe,EACf,MAAsB;QAFtB,wBAAmB,GAAnB,mBAAmB,CAA+B;QAClD,YAAO,GAAP,OAAO,CAAQ;QACf,WAAM,GAAN,MAAM,CAAgB;QAnGhC,wBAAmB,GAAG,KAAK,CAAC;QAC5B,oCAA+B,GAAe,EAAE,CAAC;QAEjD,aAAQ,GAAY,KAAK,CAAC;QAC1B,kCAA6B,GAAY,KAAK,CAAC;QAE/C,gBAAW,GAAG,iEAAc,CAAC;QAC7B,iBAAY,GAAG,EAAE,CAAC;QAClB,cAAS,GAAmC,EAAE,CAAC;QAKvC,kBAAa,GAAmB,EAAE,CAAC;QACnC,4BAAuB,GAAY,IAAI,CAAC;QAGhD,mBAAc,GAAG;YACf;gBACE,MAAM,EAAE,KAAK;gBACb,UAAU,EAAE,iEAAc,CAAC,OAAO;gBAClC,SAAS,EAAE,gCAA8B,CAAC,UAAU;gBACpD,KAAK,EAAE,GAAG;aACX;YACD;gBACE,MAAM,EAAE,OAAO;gBACf,UAAU,EAAE,iEAAc,CAAC,SAAS;gBACpC,SAAS,EAAE,gCAA8B,CAAC,gBAAgB;gBAC1D,KAAK,EAAE,EAAE;aACV;SACF,CAAC;IAuEF,CAAC;IArED,IAAI,mBAAmB;QACrB,OAAO,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC,GAAG,CAAC;IACjE,CAAC;IAED,IAAI,YAAY;QACd,OAAO,GAAG,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,IAAI,CAAC;IACrE,CAAC;IAED,IAAI,aAAa;QACf,OAAO,IAAI,CAAC,qBAAqB,CAAC,CAAC,CAAC,IAAI,CAAC,qBAAqB,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC;IAC7E,CAAC;IAED,IAAI,wBAAwB;QAC1B,OAAO,IAAI,CAAC,uBAAuB,CAAC;IACtC,CAAC;IAED,IAAI,wBAAwB,CAAC,KAAc;QACzC,IAAI,CAAC,uBAAuB,GAAG,KAAK,CAAC;IACvC,CAAC;IAED,IAAI,kBAAkB;QACpB,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE;YAC3B,OAAO,EAAE,CAAC;SACX;QAED,MAAM,YAAY,GAAgC,IAAI;aACnD,wBAAwB;YACzB,CAAC,CAAC,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAA4B,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;gBAC/D,KAAK,EAAE,IAAI,CAAC,qBAAqB,CAAC,EAAE,CAAC,EAAE,CAAC;gBACxC,QAAQ,EAAE,EAAE,CAAC,QAAQ;aACtB,CAAC,CAAC;YACH,CAAC,CAAC,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAA4B,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;gBAC/D,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,QAAQ,EAAE;gBACnC,QAAQ,EAAE,EAAE,CAAC,QAAQ;aACtB,CAAC,CAAC,CAAC;QAEN,MAAM,EACJ,cAAc,EACd,kBAAkB,EAClB,eAAe,EACf,uBAAuB,GACxB,GAAG,IAAI,CAAC,KAAK,CAAC;QAEf,OAAO;YACL,GAAG,YAAY;YACf;gBACE,KAAK,EAAE,4DAAiB,CAAC,MAAM;gBAC/B,QAAQ,EAAE,cAAc;aACzB;YACD;gBACE,KAAK,EAAE,4DAAiB,CAAC,UAAU;gBACnC,QAAQ,EAAE,kBAAkB;aAC7B;YACD;gBACE,KAAK,EAAE,4DAAiB,CAAC,OAAO;gBAChC,QAAQ,EAAE,eAAe;aAC1B;YACD;gBACE,KAAK,EAAE,4DAAiB,CAAC,SAAS;gBAClC,QAAQ,EAAE,uBAAuB;aAClC;SACF,CAAC;IACJ,CAAC;IASD,QAAQ;QACN,MAAM,SAAS,GAAG,IAAI,CAAC,mBAAmB,CAAC,uBAAuB,CAAC,QAAQ,EAAE,CAAC;QAC9E,IAAI,CAAC,6BAA6B,CAAC,SAAS,CAAC,CAAC;QAE9C,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;QACrB,MAAM,0BAA0B,GAC9B,IAAI,CAAC,mBAAmB,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC,cAAc,EAAE,EAAE;YACpE,IAAI,CAAC,cAAc,GAAG,cAAc,CAAC;YACrC,IAAI,CAAC,IAAI,CAAC,+BAA+B,IAAI,IAAI,CAAC,+BAA+B,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;gBAC1G,IAAI,CAAC,iBAAiB,EAAE,CAAC;aAC1B;iBAAM;gBACL,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC;gBACzD,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;aACjD;QACH,CAAC,CAAC,CAAC;QACL,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC;IACtD,CAAC;IAED,WAAW;QACT,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;QACtB,IAAI,CAAC,cAAc,EAAE,CAAC;QACtB,IAAI,CAAC,kBAAkB,EAAE,CAAC;IAC5B,CAAC;IAED,kBAAkB,CAAC,KAAa;QAC9B,OAAO,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAC1B,CAAC;IAED,sBAAsB,CACpB,KAA2B,EAC3B,WAAmB;QAEnB,MAAM,MAAM,GAAG,KAAK;YAClB,CAAC,CAAE,KAAK,CAAC,WAAW,CAA8B;YAClD,CAAC,CAAC,IAAI,CAAC;QAET,IAAI,MAAM,EAAE;YACV,IAAI,MAAM,CAAC,MAAM,KAAK,+FAAgB,CAAC,MAAM,EAAE;gBAC7C,OAAO,SAAS,CAAC;aAClB;SACF;QAED,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,cAAc,CAAC,KAA2B,EAAE,WAAmB;QAC7D,MAAM,MAAM,GACV,KAAK,IAAI,KAAK,CAAC,OAAO;YACpB,CAAC,CAAE,KAAK,CAAC,OAAO,CAAC,WAAW,CAA8B;YAC1D,CAAC,CAAC,IAAI,CAAC;QAEX,IAAI,CAAC,MAAM,EAAE;YACX,OAAO,GAAG,CAAC;SACZ;QAED,IAAI,MAAM,CAAC,MAAM,KAAK,+FAAgB,CAAC,MAAM,EAAE;YAC7C,OAAO,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC;SAClC;QAED,IAAI,MAAM,CAAC,MAAM,KAAK,+FAAgB,CAAC,UAAU,EAAE;YACjD,OAAO,IAAI,CAAC,KAAK,CAAC,kBAAkB,CAAC;SACtC;QAED,IAAI,MAAM,CAAC,MAAM,KAAK,+FAAgB,CAAC,SAAS,EAAE;YAChD,OAAO,IAAI,CAAC,KAAK,CAAC,uBAAuB,CAAC;SAC3C;QAED,IAAI,MAAM,CAAC,MAAM,KAAK,+FAAgB,CAAC,OAAO,EAAE;YAC9C,OAAO,IAAI,CAAC,KAAK;gBACf,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,eAAe;gBAC5B,CAAC,CAAC,EAAE,CAAC;SACR;QAED,IAAI,IAAI,CAAC,iBAAiB,EAAE;YAC1B,MAAM,gBAAgB,GAAG,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAClD,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,KAAK,IAAI,CAAC,CAAC,IAAI,IAAI,MAAM,CAAC,KAAK,IAAI,CAAC,CAAC,EAAE,CACtD,CAAC;YACF,OAAO,CAAC,gBAAgB,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,gBAAgB,CAAC,QAAQ,CAAC;SAC3D;QAED,OAAO,GAAG,CAAC;IAEb,CAAC;IAED,cAAc,CACZ,KAA2B,EAC3B,WAAmB;QAEnB,MAAM,MAAM,GACV,KAAK,IAAI,KAAK,CAAC,OAAO;YACpB,CAAC,CAAE,KAAK,CAAC,OAAO,CAAC,WAAW,CAA8B;YAC1D,CAAC,CAAC,IAAI,CAAC;QAEX,IAAI,CAAC,MAAM,EAAE;YACX,OAAO,EAAE,CAAC;SACX;QAED,IAAI,MAAM,CAAC,MAAM,KAAK,+FAAgB,CAAC,MAAM,EAAE;YAC7C,OAAO,4DAAiB,CAAC,MAAM,CAAC;SACjC;QAED,IAAI,MAAM,CAAC,MAAM,KAAK,+FAAgB,CAAC,UAAU,EAAE;YACjD,OAAO,GAAG,CAAC;SACZ;QAED,IAAI,IAAI,CAAC,uBAAuB,EAAE;YAChC,MAAM,eAAe,GAAG,IAAI,CAAC,qBAAqB,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YACjE,OAAO,eAAe,CAAC;SACxB;QAED,OAAO,MAAM,CAAC,KAAK,CAAC;IACtB,CAAC;IAED,oBAAoB,CAAC,KAAU;QAC7B,MAAM,EAAE,IAAI,EAAE,GAAG,KAAK,CAAC;QACvB,IAAI,IAAI,EAAE;YACR,IAAI,CAAC,cAAc,EAAE,CAAC;YACtB,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;YACrB,IAAI,CAAC,mBAAmB,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;YACpD,IAAI,CAAC,mBAAmB,GAAG,KAAK,CAAC;SAClC;IACH,CAAC;IAED,kBAAkB;QAChB,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC;QACnD,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;IAC5B,CAAC;IAED,iBAAiB;QACf,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,MAAM,yDAAc,CAAC,iBAAiB,EAAE,CAAC,EAAE;YAChE,UAAU,EAAE,IAAI,CAAC,MAAM;SACxB,CAAC,CAAC;IACL,CAAC;IAED,mBAAmB;QACjB,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,IAAI,CAAC,wBAAwB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC1F,CAAC;IAED,gBAAgB;QACd,IAAI,CAAC,mBAAmB,GAAG,CAAC,IAAI,CAAC,mBAAmB,CAAC;IACvD,CAAC;IAEa,qBAAqB,CAAC,QAAoC;;YACtE,IAAI,CAAC,mBAAmB,CAAC,QAAQ,CAAC,CAAC;YACnC,IAAI,CAAC,6BAA6B,GAAG,QAAQ,CAAC,oBAAoB,CAAC;YACnE,MAAM,QAAQ,GAA4B,EAAE,CAAC;YAC7C,QAAQ,CAAC,UAAU,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;gBAChC,IAAI,CAAC,oBAAoB,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;YAC3C,CAAC,CAAC,CAAC;YACH,IAAI,aAAa,GAAiC,EAAE,CAAC;YACrD,IAAI,QAAQ,CAAC,oBAAoB,EAAE;gBACjC,aAAa,IAAG,MAAM,IAAI,CAAC,mBAAmB,CAAC,gBAAgB,CAAC,QAAQ,CAAiC,EAAC;gBAC1G,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;aAC9B;YACD,MAAM,WAAW,GAAa,EAAE,CAAC;YACjC,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,uDAAe,CAAC,cAAc,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,aAAa,EAAE,WAAW,CAAC,CAAC;YACvI,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE;gBAC1B,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC;aAChD;YACD,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;QACxB,CAAC;KAAA;IAEO,iBAAiB,CAAC,IAA0B,EAAE,aAA2C,EAAE,WAAqB,EAAE,WAAmB,IAAI;QAC/I,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;YACjB,IAAI,GAAG,CAAC,IAAI,IAAI,GAAG,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE;gBACnC,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,uDAAe,CAAC,cAAc,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,aAAa,EAAE,WAAW,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;aACvI;iBAAM;gBACL,MAAM,YAAY,GAAG,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,IAAI,GAAG,CAAC,EAAE,CAAC,CAAC;gBAChE,IAAI,GAAG,CAAC,MAAM,EAAE;oBACd,MAAM,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC;oBAC1D,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;wBACnB,MAAM,cAAc,GAAG,YAAY,CAAC,CAAC,CAAC,YAAY,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,IAAI,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;wBAClG,IAAI,YAAY,EAAE;4BAChB,WAAW,CAAC,IAAI,CAAC,YAAY,CAAC,kBAAkB,CAAC,CAAC;yBACnD;wBACD,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;4BAClB,OAAO,EAAE,QAAQ,CAAC,CAAC,CAAC,GAAG,QAAQ,KAAK,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI;4BACzD,SAAS,EAAE,GAAG,CAAC,IAAI,CAAC,QAAQ,EAAE;4BAC9B,OAAO,EAAE,cAAc,CAAC,CAAC,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;yBACtB,CAAC,CAAC;oBACrC,CAAC,CAAC,CAAC;iBACJ;aACF;QACH,CAAC,CAAC,CAAC;IACL,CAAC;IAEO,eAAe,CAAC,IAAY;QAClC,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC;QACnC,IAAI,CAAC,kBAAkB,GAAG,iBAAiB,GAAG,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE;YACzE,IAAI,EAAE,SAAS;YACf,KAAK,EAAE,SAAS;YAChB,GAAG,EAAE,SAAS;YACd,IAAI,EAAE,SAAS;YACf,MAAM,EAAE,SAAS;SAClB,CAAC,CAAC;IACL,CAAC;IAEO,oBAAoB,CAAC,KAA8B,EAAE,GAAuB;QAClF,IAAI,GAAG,CAAC,MAAM,IAAI,GAAG,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE;YACvC,KAAK,CAAC,IAAI,CACR;gBACE,KAAK,EAAE,GAAG,CAAC,EAAE;gBACb,cAAc,EAAE,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;aACjB,CAC3B,CAAC;SACH;QACD,IAAI,GAAG,CAAC,IAAI,IAAI,GAAG,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE;YACnC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,oBAAoB,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC;SAC5D;IACH,CAAC;IAEO,cAAc;QACpB,IAAI,CAAC,6BAA6B,GAAG,KAAK,CAAC;QAC3C,IAAI,CAAC,kBAAkB,GAAG,GAAG,CAAC;QAC9B,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC;QAC9B,IAAI,CAAC,SAAS,GAAG,EAAE,CAAC;QACpB,IAAI,CAAC,YAAY,GAAG,EAAE,CAAC;IACzB,CAAC;IAEO,mBAAmB,CAAC,QAAoC;QAC9D,IAAI,CAAC,iBAAiB,GAAG,QAAQ,CAAC,iBAAiB,CAAC;QACpD,IAAI,CAAC,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC;IAC9B,CAAC;IAEO,aAAa,CAAC,QAAoC;QACxD,MAAM,WAAW,GAAa,EAAE,CAAC;QACjC,QAAQ,CAAC,UAAU,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;YAChC,IAAI,GAAG,CAAC,MAAM,IAAI,GAAG,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE;gBACvC,WAAW,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC;aAC/D;YACD,IAAI,GAAG,CAAC,IAAI,IAAI,GAAG,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE;gBACnC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;oBACnB,IAAI,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE;wBACnC,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC;qBAC7D;gBACH,CAAC,CAAC,CAAC;aACJ;QACH,CAAC,CAAC;QACF,IAAI,cAAc,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,WAAW,CAAC,CAAC;QAE9C,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,cAAc,EAAE,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC;YACxE,MAAM,EAAE,KAAK,GAAG,CAAC,KAAK,GAAG,CAAC,CAAC;YAC3B,UAAU,EAAE,iEAAc,CAAC,EAAE;YAC7B,SAAS,EAAE,gCAA8B,CAAC,aAAa;SACxD,CAAC,CAAC,CAAC;IACN,CAAC;IAEO,qBAAqB,CAAC,KAAa;QACzC,IAAI,KAAK,IAAI,KAAK,KAAK,CAAC,EAAE;YACxB,MAAM,cAAc,GAAG,4DAAoB,CAAC,mBAAmB,CAAC,KAAK,CAAC,CAAC;YACvE,OAAO,cAAc,CAAC,QAAQ,EAAE,CAAC;SAClC;aAAM;YACL,OAAO,GAAG,CAAC;SACZ;IACH,CAAC;IAEO,6BAA6B,CAAC,SAA6B;QACjE,MAAM,wBAAwB,GAC5B,SAAS;YACT,SAAS;iBACN,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE;gBACf,MAAM,uBAAuB,GAAa;oBACxC,KAAK,EAAE,OAAO,CAAC,IAAI;oBACnB,UAAU,EAAE,KAAK;oBACjB,QAAQ,EAAE,KAAK;iBAChB,CAAC;gBAEF,uBAAuB,CAAC,QAAQ,GAAG,OAAO,CAAC,SAAS;qBACjD,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;qBACxC,GAAG,CAAW,CAAC,QAAQ,EAAE,EAAE;oBAC1B,MAAM,YAAY,GAAa;wBAC7B,KAAK,EAAE,QAAQ,CAAC,IAAI;wBACpB,IAAI,EAAE,QAAQ,CAAC,EAAE;wBACjB,UAAU,EAAE,IAAI;wBAChB,MAAM,EAAE,uBAAuB;qBAChC,CAAC;oBAEF,OAAO,YAAY,CAAC;gBACtB,CAAC,CAAC;qBACD,IAAI,CAAC,uDAAe,CAAC,qBAAqB,CAAC,CAAC;gBAE/C,OAAO,uBAAuB,CAAC;YACjC,CAAC,CAAC;iBACD,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,IAAI,CAAC,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC;iBAChD,IAAI,CAAC,uDAAe,CAAC,qBAAqB,CAAC,CAAC;QAEjD,IAAI,CAAC,+BAA+B,GAAG,wBAAwB,CAAC;IAClE,CAAC;IAEO,mBAAmB,CAAC,UAAkB;QAC5C,MAAM,eAAe,GACnB,IAAI,CAAC,+BAA+B,CAAC,MAAM,CACzC,CAAC,MAAM,EAAE,WAAW,EAAE,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,QAAQ,CAAC,EAC5D,EAAE,CACH,CAAC;QAEJ,MAAM,YAAY,GAAG,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,UAAU,CAAC,CAAC;QAEzE,IAAI,CAAC,YAAY,EAAE;YACjB,OAAO;SACR;QAED,IAAI,CAAC,qBAAqB,GAAG,YAAY,CAAC;QAC1C,YAAY,CAAC,MAAM,CAAC,QAAQ,GAAG,IAAI,CAAC;IACtC,CAAC;CACF;AAjaQ,+CAAgB,GAAG,WAAW,CAAC;AAC/B,yCAAU,GAAG,SAAS,CAAC;AACvB,4CAAa,GAAG,SAAS,CAAC;;YAwGF,uEAA6B;YACzC,sDAAM;YACP,8DAAc;;AArGhC;IAJC,+DAAS,CAAC,gFAAwC,EAAE;QACnD,IAAI,EAAE,KAAK;QACX,MAAM,EAAE,KAAK;KACd,CAAC;8BACiB,gFAAwC;yEAAC;AARjD,8BAA8B;IAJ1C,+DAAS,CAAC;QACT,QAAQ,EAAE,uCAAuC;QACjD,2QAAwD;KACzD,CAAC;qCA4G+B,uEAA6B;QACzC,sDAAM;QACP,8DAAc;GA7GrB,8BAA8B,CAka1C;AAla0C;;;;;;;;;;;;;;;;;;;;ACjBS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACAqB;AAgBnD;AAC8F;AACf;AACH;AAC1C;AAEL;AACC;AAMpD,IAAa,6BAA6B,GAA1C,MAAa,6BAA6B;IAqIxC,YACU,GAAe,EACf,YAAyB,EACzB,iBAA0C,EAC1C,6BAA4D,EAC5D,mBAAkD,EAClD,YAAyB;QALzB,QAAG,GAAH,GAAG,CAAY;QACf,iBAAY,GAAZ,YAAY,CAAa;QACzB,sBAAiB,GAAjB,iBAAiB,CAAyB;QAC1C,kCAA6B,GAA7B,6BAA6B,CAA+B;QAC5D,wBAAmB,GAAnB,mBAAmB,CAA+B;QAClD,iBAAY,GAAZ,YAAY,CAAa;QAvInC,eAAU,GAAuB,EAAE,CAAC;QACpC,sBAAiB,GAAe,EAAE,CAAC;QAEnC,sBAAiB,GAAY,KAAK,CAAC;QACnC,sBAAiB,GAAY,KAAK,CAAC;QAInC,eAAU,GAAa,EAAE,CAAC;QAE1B,eAAU,GAAuC,EAAE,CAAC;QAEpD,cAAS,GAAqD,EAAE,CAAC;QACjE,cAAS,GAAmC,EAAE,CAAC;QAC/C,gBAAW,GAAG,qDAAc,CAAC;QAE7B,iBAAY,GAAG,EAAE,CAAC;QAGlB,mBAAc,GAAG;YACf,EAAE,MAAM,EAAE,KAAK,EAAE,UAAU,EAAE,qDAAc,CAAC,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,KAAK,EAAE,GAAG,GAAG;YACxF,EAAE,MAAM,EAAE,OAAO,EAAE,UAAU,EAAE,qDAAc,CAAC,SAAS,EAAE,SAAS,EAAE,WAAW,EAAE,KAAK,EAAE,EAAE,EAAE;SAAC,CAAC;QAChG,aAAQ,GAAY,KAAK,CAAC;QAC1B,kBAAa,GAAY,KAAK,CAAC;QAC/B,sBAAiB,GAAY,KAAK,CAAC;QAEnC,uBAAkB,GAAG,KAAK,CAAC;QAEnB,mBAAc,GAA6B,IAAI,CAAC;QAEhD,6BAAwB,GAAY,IAAI,CAAC;QACzC,kBAAa,GAAmB,EAAE,CAAC;IA0G3C,CAAC;IAxGD,IAAI,sBAAsB;QACxB,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,kBAAmB,CAAC,QAAS,CAAC,SAAU,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC;IACtF,CAAC;IAED,IAAI,yBAAyB;QAC3B,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,kBAAmB,CAAC,QAAS,CAAC,SAAU,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC;IACpF,CAAC;IAED,IAAI,2BAA2B;QAC7B,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,kBAAmB,CAAC,QAAS,CAAC,SAAU,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC;IACvF,CAAC;IAED,IAAI,YAAY;QACd,OAAO,GAAG,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,IAAI,CAAC;IACrE,CAAC;IAED,IAAI,wBAAwB;QAC1B,OAAO,IAAI,CAAC,uBAAuB,CAAC;IACtC,CAAC;IAED,IAAI,wBAAwB,CAAC,KAAc;QACzC,IAAI,CAAC,uBAAuB,GAAG,KAAK,CAAC;IACvC,CAAC;IAED,IAAI,yBAAyB;QAC3B,OAAO,IAAI,CAAC,wBAAwB,CAAC;IACvC,CAAC;IAED,IAAI,yBAAyB,CAAC,KAAc;QAC1C,IAAI,CAAC,wBAAwB,GAAG,KAAK,CAAC;IACxC,CAAC;IAED,IAAI,cAAc;QAChB,OAAO,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,oDAAY,CAAC,YAAY,CAAC,IAAI,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,oDAAY,CAAC,WAAW,CAAC,CAAC;IAC7H,CAAC;IAED,IAAI,aAAa;QACf,IAAI,IAAI,CAAC,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE;YACjC,IAAI,IAAI,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,IAAI,wEAAiC,CAAC,GAAG,CAAC,CAAC;YAClG,MAAM,IAAI,GAAG,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;YACxC,OAAO,IAAI,CAAC;SACb;QACD,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,IAAI,SAAS;QACX,OAAO,IAAI,CAAC,cAAc,IAAI,IAAI,CAAC;IACrC,CAAC;IAED,IAAI,kBAAkB;QACpB,IAAI,CAAC,IAAI,CAAC,gBAAgB,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,iBAAiB,EAAE;YACtE,OAAO,EAAE,CAAC;SACX;QAED,MAAM,YAAY,GAAgC,IAAI,CAAC,wBAAwB;YAC7E,CAAC,CAAC,IAAI,CAAC,gBAAgB,CAAC,iBAAiB,CAAC,GAAG,CAA4B,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;gBAChF,KAAK,EAAE,IAAI,CAAC,qBAAqB,CAAC,EAAE,CAAC,EAAE,CAAC;gBACxC,QAAQ,EAAE,EAAE,CAAC,QAAQ;aACtB,CAAC,CAAC;YACH,CAAC,CAAC,IAAI,CAAC,gBAAgB,CAAC,iBAAiB,CAAC,GAAG,CAA4B,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;gBAChF,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,QAAQ,EAAE;gBACnC,QAAQ,EAAE,EAAE,CAAC,QAAQ;aACtB,CAAC,CAAC,CAAC;QACN,MAAM,EACJ,cAAc,EACd,kBAAkB,EAClB,eAAe,EACf,sBAAsB,EACtB,uBAAuB,GACxB,GAAG,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC;QAEhC,MAAM,OAAO,GAAG,IAAI,CAAC,yBAAyB;YAC5C,CAAC,CAAC,uBAAuB;YACzB,CAAC,CAAC,sBAAsB,CAAC;QAE3B,OAAO;YACL,GAAG,YAAY;YACf;gBACE,KAAK,EAAE,4DAAiB,CAAC,MAAM;gBAC/B,QAAQ,EAAE,cAAc;aACzB;YACD;gBACE,KAAK,EAAE,4DAAiB,CAAC,UAAU;gBACnC,QAAQ,EAAE,kBAAkB;aAC7B;YACD;gBACE,KAAK,EAAE,4DAAiB,CAAC,OAAO;gBAChC,QAAQ,EAAE,eAAe;aAC1B;YACD;gBACE,KAAK,EAAE,4DAAiB,CAAC,SAAS;gBAClC,QAAQ,EAAE,OAAO;aAClB;SACF,CAAC;IACJ,CAAC;IAYK,QAAQ;;YACZ,IAAI,CAAC,oBAAoB,EAAE,CAAC;YAC5B,IAAI,CAAC,aAAa,EAAE,CAAC;YAErB,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC;gBAChD,SAAS,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;gBACpC,SAAS,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;aACtC,CAAC,CAAC;YACH,IAAI,CAAC,wBAAwB,GAAG,IAAI,CAAC,kBAAkB,CAAC,QAAQ,CAAC,SAAS,CAAC,KAAK,IAAI,CAAC,CAAC;YACtF,IAAI,CAAC,oBAAoB,GAAG,IAAI,kEAA0B,EAAE,CAAC;YAC7D,IAAI,CAAC,gBAAgB,EAAE,CAAC;QAC1B,CAAC;KAAA;IAED,eAAe;QACb,IAAI,CAAC,oBAAoB,CAAC,CAAC,CAAC,CAAC;QAC7B,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;QACxB,IAAI,CAAC,GAAG,CAAC,aAAa,CAAC,aAAa,CAAC,4EAA4E,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,iBAAiB,EAAE,iBAAiB,CAAC,CAAC;IACzK,CAAC;IAED,WAAW;QACT,IAAI,CAAC,aAAa,IAAI,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC,CAAC;IAC7E,CAAC;IAED,cAAc;QACZ,IAAI,CAAC,iBAAiB,GAAG,CAAC,IAAI,CAAC,iBAAiB,CAAC;QACjD,IAAI,IAAI,CAAC,iBAAiB,EAAE;YAC1B,IAAI,CAAC,iBAAiB,GAAG,KAAK,CAAC;YAC/B,IAAI,CAAC,kBAAkB,GAAG,KAAK,CAAC;SACjC;IACH,CAAC;IAED,gBAAgB;QACd,IAAI,CAAC,kBAAkB,GAAG,CAAC,IAAI,CAAC,kBAAkB,CAAC;QACnD,IAAI,IAAI,CAAC,kBAAkB,EAAE;YAC3B,IAAI,CAAC,iBAAiB,GAAG,KAAK,CAAC;YAC/B,IAAI,CAAC,iBAAiB,GAAG,KAAK,CAAC;SAChC;IACH,CAAC;IAED,cAAc;QACZ,IAAI,CAAC,iBAAiB,GAAG,CAAC,IAAI,CAAC,iBAAiB,CAAC;QACjD,IAAI,IAAI,CAAC,iBAAiB,EAAE;YAC1B,IAAI,CAAC,iBAAiB,GAAG,KAAK,CAAC;YAC/B,IAAI,CAAC,kBAAkB,GAAG,KAAK,CAAC;SACjC;IACH,CAAC;IAED,uBAAuB,CAAC,KAAa;QACnC,IAAI,CAAC,kBAAkB,CAAC,QAAQ,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;QACnF,IAAI,CAAC,cAAc,EAAE,CAAC;QACtB,IAAI,CAAC,SAAS,EAAE,CAAC;IACnB,CAAC;IAED,uBAAuB,CAAC,KAAa;QACnC,IAAI,CAAC,kBAAkB,CAAC,QAAQ,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;QACpF,IAAI,CAAC,wBAAwB,GAAG,IAAI,CAAC,kBAAkB,CAAC,QAAQ,CAAC,SAAS,CAAC,KAAK,IAAI,CAAC,CAAC;QACtF,IAAI,CAAC,cAAc,EAAE,CAAC;IACxB,CAAC;IAED,oBAAoB;QAClB,IAAI,CAAC,6BAA6B,CAAC,+BAA+B,CAAC,IAAI,CAAC,yBAAyB,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE;YACnH,IAAI,CAAC,gBAAgB,GAAG,MAAwC,CAAC;YACjE,IAAI,CAAC,sBAAsB,GAAG,iEAAyB,CAAC,4BAA4B,CAAC,IAAI,CAAC,gBAAgB,CAAC,iBAAiB,CAAC,CAAC;QAChI,CAAC,CAAC,CAAC;IACL,CAAC;IAED,oBAAoB;QAClB,IAAI,IAAI,CAAC,kBAAkB,IAAI,IAAI,CAAC,kBAAkB,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC,KAAK,IAAI,IAAI,CAAC,qBAAqB,EAAE,CAAC,MAAM,GAAG,CAAC,EAAE;YAC7H,IAAI,CAAC,SAAS,GAAG,EAAE,CAAC;YACpB,IAAI,CAAC,YAAY,GAAG,EAAE,CAAC;YACvB,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;YAC3B,IAAI,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,kBAAmB,CAAC,QAAS,CAAC,SAAU,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,CAAC;YACpI,IAAI,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,kBAAmB,CAAC,QAAS,CAAC,SAAU,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,CAAC;YAEjI,IAAI,CAAC,6BAA6B,CAAC,qCAAqC,CACtE,IAAI,CAAC,qBAAqB,EAAE,EAC5B,UAAU,EACV,SAAS,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE;gBACpB,IAAI,MAAM,GAAG,CAA4B,CAAC;gBAC1C,IAAI,CAAC,cAAc,GAAG,MAAM,CAAC,YAAY,CAAC;gBAC1C,IAAI,CAAC,UAAU,GAAG,MAAM,CAAC,UAAU,IAAI,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC,IAAI,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;gBACjG,IAAI,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE;oBACjD,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;oBAC7C,IAAI,CAAC,kCAAkC,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;iBAClE;qBACI;oBACH,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;iBACvB;gBACD,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC;YAC7B,CAAC,CAAC,CAAC;SACN;aACI;YACH,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;SACvB;IACH,CAAC;IAED,kCAAkC,CAAC,SAAiB;QAClD,IAAI,CAAC,SAAS,GAAG,EAAE,CAAC;QACpB,IAAI,WAAW,GAAa,CAAC,CAAC,CAAC,CAAC;QAChC,MAAM,YAAY,GAAG,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,IAAI,wEAAiC,CAAC,GAAG,CAAC,CAAC;QAC9G,IAAI,IAAI,GAAmC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE;YAC9D,OAAO;gBACL,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,EAAE;gBACb,IAAI,EAAE,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,IAAI,wEAAiC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,KAAK,KAAK,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK;aAC/H;QACH,CAAC,CAAC,CAAC;QACH,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,uDAAe,CAAC,cAAc,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;QAC3E,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;YACjB,MAAM,YAAY,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,IAAI,GAAG,CAAC,EAAE,CAAC,CAAC;YACtE,IAAI,YAAY,EAAE;gBAChB,IAAI,SAAS,GAAG,YAAY,CAAC,uBAAuB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,IAAI,SAAS,CAAC,CAAC;gBACzF,IAAI,SAAS,EAAE;oBACb,IAAI,SAAS,GAAG,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC;oBACzE,SAAS,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;wBACxB,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;4BAClB,OAAO,EAAE,GAAG,CAAC,IAAI;4BACjB,SAAS,EAAE,KAAK,CAAC,IAAI,CAAC,QAAQ,EAAE;4BAChC,OAAO,EAAE,KAAK,CAAC,OAAO;yBACvB,CAAC;wBACF,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;oBACzC,CAAC,CAAC,CAAC;iBACJ;qBAAM;oBACL,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;wBAClB,OAAO,EAAE,GAAG,CAAC,IAAI;wBACjB,SAAS,EAAE,GAAG;wBACd,OAAO,EAAE,EAAE;qBACZ,CAAC;iBACH;aACF;iBAAM;gBACL,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;oBAClB,OAAO,EAAE,GAAG,CAAC,IAAI;oBACjB,SAAS,EAAE,GAAG;oBACd,OAAO,EAAE,EAAE;iBACZ,CAAC;aACH;QACH,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,YAAY,GAAG,EAAE,CAAC;QACvB,IAAI,cAAc,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,WAAW,CAAC,CAAC;QAC9C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,cAAc,EAAE,CAAC,EAAE,EAAE;YACxC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,KAAK,GAAG,CAAC,EAAE,UAAU,EAAE,qDAAc,CAAC,EAAE,EAAE,SAAS,EAAE,SAAS,EAAE,CAAC;SACnG;QACD,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;IACxB,CAAC;IAED,OAAO,CAAC,IAAY;QAClB,IAAI,IAAI,GAAG,IAAI,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC;QACjC,IAAI,MAAM,GAAG,IAAI,CAAC,cAAc,CAAC,SAAS,EAAE,EAAE,GAAG,EAAE,SAAS,EAAE,CAAC,GAAG,GAAG,GAAG,IAAI,CAAC,cAAc,CAAC,SAAS,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,GAAG,GAAG,GAAG,IAAI,CAAC,cAAc,CAAC,SAAS,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,CAAC;QACvL,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,OAAO,CAAC,IAAY;QAClB,IAAI,IAAI,GAAG,IAAI,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC;QACjC,IAAI,MAAM,GAAG,IAAI,CAAC,kBAAkB,EAAE,CAAC;QACvC,OAAO,MAAM,CAAC;IAChB,CAAC;IAEK,wBAAwB,CAAC,KAAK;;YAClC,IAAI,IAAI,CAAC,aAAa,CAAC,MAAM,IAAI,CAAC,EAAE;gBAClC,IAAI,CAAC,SAAS,EAAE,CAAC;gBACjB,OAAO;aACR;YAED,IAAI,CAAC,kCAAkC,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;QACnE,CAAC;KAAA;IAEO,yBAAyB;QAC/B,MAAM,YAAY,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,IAAI,wEAAiC,CAAC,QAAQ,CAAC,CAAC;QACjH,IAAI,YAAY,EAAE;YAChB,OAAO,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC;SAC7B;aAAM;YACL,OAAO,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC;SAC9C;IACH,CAAC;IAEO,qBAAqB;QAC3B,MAAM,IAAI,GAAG,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,IAAI,wEAAiC,CAAC,GAAG,CAAC,CAAC;QACtG,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAClC,CAAC;IAEO,0BAA0B,CAAC,IAAc,EAAE,WAAoB,IAAI;QACzE,GAAG;YACD,IAAI,CAAC,IAAI,CAAC,MAAM;gBAAE,OAAO;YACzB,IAAI,CAAC,MAAM,CAAC,eAAe,GAAG,QAAQ,CAAC;YACvC,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC;SACpB,QAAQ,IAAI,CAAC,MAAM,EAAE;IACxB,CAAC;IAEO,cAAc,CAAC,IAAc;QACnC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;YACxB,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAC3B,IAAI,CAAC,CAAC,QAAQ,EAAE;gBACd,CAAC,CAAC,QAAQ,GAAG,IAAI,CAAC;gBAClB,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC;aACxC;QACH,CAAC,CAAC,CAAC;IACL,CAAC;IAEO,4BAA4B,CAAC,KAAiB;QACpD,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,GAAG,IAAI,CAAC,CAAC,MAAM;YAAE,CAAC,CAAC,MAAM,CAAC,eAAe,GAAG,KAAK,EAAC,CAAC,CAAC,CAAC;IACzE,CAAC;IAEK,sBAAsB,CAAC,KAAK;;YAChC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,EAAE;gBACxB,KAAK,CAAC,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;aAC5B;YACD,IAAI,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,IAAI,wEAAiC,CAAC,QAAQ,EAAE;gBAC1E,IAAI,CAAC,4BAA4B,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;gBACtD,IAAI,CAAC,aAAa,GAAG,EAAE,CAAC;gBACxB,IAAI,CAAC,aAAa,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;gBAClC,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;gBAChC,IAAI,CAAC,0BAA0B,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;gBAC5C,IAAI,CAAC,SAAS,EAAE,CAAC;aAClB;YAED,IAAI,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,IAAI,wEAAiC,CAAC,IAAI,EAAE;gBACtE,IAAI,IAAI,CAAC,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE;oBACjC,IAAI,WAAW,GAAG,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,IAAI,wEAAiC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,KAAK,CAAC,CAAC;oBACvM,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE;wBAC1B,IAAI,CAAC,4BAA4B,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;wBACtD,IAAI,CAAC,aAAa,GAAG,EAAE,CAAC;wBACxB,IAAI,CAAC,aAAa,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;wBAClC,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;wBAChC,IAAI,CAAC,0BAA0B,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;wBAC5C,IAAI,CAAC,SAAS,EAAE,CAAC;qBAClB;yBAAM;wBACL,IAAI,QAAQ,GAAG,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;wBACvD,IAAI,4BAA4B,GAAY,IAAI,CAAC;wBACjD,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;4BACrB,IAAI,CAAC,IAAI,CAAC,cAAc,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,IAAI,GAAG,CAAC,EAAE;gCAC1E,4BAA4B,GAAG,KAAK,CAAC;6BACtC;wBACH,CAAC,CAAC,CAAC;wBACH,IAAI,4BAA4B,EAAE;4BAChC,IAAI,CAAC,kCAAkC,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;yBAClE;6BAAM;4BACL,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;yBAC3B;qBACF;iBACF;aACF;YAED,IAAI,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,IAAI,wEAAiC,CAAC,GAAG,EAAE;gBACrE,IAAI,IAAI,CAAC,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE;oBACjC,IAAI,WAAW,GAAG,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,IAAI,wEAAiC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,KAAK,CAAC,CAAC;oBACvM,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE;wBAC1B,IAAI,CAAC,4BAA4B,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;wBACtD,IAAI,CAAC,aAAa,GAAG,EAAE,CAAC;wBACxB,IAAI,CAAC,aAAa,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;wBAClC,IAAI,CAAC,0BAA0B,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;wBAC5C,IAAI,CAAC,SAAS,EAAE,CAAC;qBAClB;oBACD,IAAI,IAAI,CAAC,cAAc,IAAI,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,IAAI,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE;wBACvF,IAAI,CAAC,kCAAkC,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;qBAClE;yBAAM;wBACL,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;qBAC3B;iBACF;aACF;QACH,CAAC;KAAA;IAED,gBAAgB,CAAC,SAAiB;QAChC,IAAI,SAAS,EAAE;YACb,IAAI,CAAC,kBAAkB,GAAG,SAAS,CAAC;YACpC,IAAI,CAAC,kCAAkC,CAAC,SAAS,CAAC,CAAC;SACpD;IACH,CAAC;IAEK,mBAAmB;;YACvB,IAAI,IAAI,CAAC,kBAAkB,IAAI,IAAI,CAAC,kBAAkB,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC,KAAK,IAAI,IAAI,CAAC,qBAAqB,EAAE,CAAC,MAAM,GAAG,CAAC,EAAE;gBAC7H,MAAM,MAAM,GAAG;oBACb,UAAU,EAAE,IAAI,CAAC,yBAAyB,EAAE;oBAC5C,MAAM,EAAE,IAAI,CAAC,qBAAqB,EAAE;oBACpC,sBAAsB,EAAE,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,kBAAmB,CAAC,QAAS,CAAC,SAAU,CAAC,KAAK,CAAC,CAAC,KAAK;oBAClG,aAAa,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,kBAAmB,CAAC,QAAS,CAAC,SAAU,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC;oBACjI,WAAW,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,kBAAmB,CAAC,QAAS,CAAC,SAAU,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC;oBAC7H,QAAQ,EAAE,IAAI,CAAC,cAAc,EAAE,CAAC,eAAe,EAAE,CAAC,QAAQ;oBAC1D,gBAAgB,EAAE,EAAE;iBACqB,CAAC;gBAE5C,IAAI,IAAI,CAAC,qBAAqB,EAAE,CAAC,MAAM,IAAI,CAAC,EAAE;oBAC5C,MAAM,CAAC,gBAAgB,GAAG,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,IAAI,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;iBACrG;qBAAM;oBACL,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;wBAC1B,IAAI,UAAU,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,IAAI,GAAG,CAAC,CAAC;wBAC/D,IAAI,UAAU,EAAE;4BACd,IAAI,SAAS,GAAG,UAAU,CAAC,uBAAuB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,IAAI,IAAI,CAAC,kBAAkB,CAAC,CAAC;4BACrG,IAAI,SAAS,EAAE;gCACb,MAAM,CAAC,gBAAgB,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,GAAG,EAAE,uBAAuB,EAAE,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;6BACpF;yBACF;oBACH,CAAC,CAAC,CAAC;iBACJ;gBAED,MAAM,YAAY,GAAG,IAAI,CAAC,aAAa,CAAC;gBACxC,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC;gBAC9B,IAAI,MAAM,GAAG,MAAM,IAAI,CAAC,iBAAiB,CAAC,+BAA+B,CAAC,MAAM,CAAC,CAAC;gBAClF,IAAI,CAAC,CAAC,MAAM,YAAY,kDAAU,CAAC,EAAE;oBACnC,IAAI,QAAQ,GAAG,YAAY,GAAG,EAAE,CAAC;oBACjC,QAAQ,IAAI,IAAI,CAAC,qBAAqB,EAAE,CAAC,MAAM,IAAI,CAAC;wBAClD,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,GAAG,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,kBAAmB,CAAC,QAAS,CAAC,SAAU,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,kBAAkB,EAAE,GAAG,KAAK,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,kBAAmB,CAAC,QAAS,CAAC,SAAU,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,kBAAkB,EAAE;wBACnQ,CAAC,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,CAAC,kBAAkB,EAAE,GAAG,GAAG,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,CAAC,kBAAkB,EAAE,CAAC;oBAExI,MAAM,GAAG,GAAG,GAAG,CAAC,eAAe,CAAC,MAAc,CAAC,CAAC;oBAChD,IAAI,YAAY,GAAG,QAAQ,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;oBAC/C,YAAY,CAAC,IAAI,GAAG,GAAG,CAAC;oBACxB,YAAY,CAAC,QAAQ,GAAG,QAAQ,CAAC;oBACjC,YAAY,CAAC,KAAK,EAAE,CAAC;iBACtB;gBACD,IAAI,CAAC,iBAAiB,GAAG,KAAK,CAAC;aAChC;QACH,CAAC;KAAA;IAED,oBAAoB;QAClB,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;QACrB,sBAAsB;QACtB,IAAI,CAAC,oBAAoB,EAAE,CAAC;QAC5B,IAAI,CAAC,IAAI,CAAC,gBAAgB,IAAI,IAAI,CAAC,gBAAgB,CAAC,UAAU,IAAI,IAAI,CAAC,yBAAyB,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE;YAC7H,IAAI,CAAC,oBAAoB,EAAE,CAAC;SAC7B;IACH,CAAC;IAED,kBAAkB,CAAC,KAAa;QAC9B,OAAO,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAC1B,CAAC;IAEO,SAAS;QACf,IAAI,CAAC,SAAS,GAAG,EAAE,CAAC;QACpB,IAAI,CAAC,YAAY,GAAG,EAAE,CAAC;QACvB,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;QAC3B,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC;QAC7B,IAAI,CAAC,sBAAsB,GAAG,IAAI,CAAC;QACnC,IAAI,CAAC,UAAU,GAAG,EAAE,CAAC;QACrB,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;IAC5B,CAAC;IAEO,eAAe,CAAC,OAAgB;QACtC,MAAM,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,aAAa,CAAC,aAAa,CAAC,kBAAkB,CAAC,CAAC;IACtE,CAAC;IAED,oBAAoB,CAAC,OAAgB,EAAE,SAAS,GAAG,KAAK;QACtD,MAAM,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,aAAa,CAAC,aAAa,CAAC,4EAA4E,CAAC,CAAC;QAC9H,IAAI,EAAE,EAAE;SACP;IACH,CAAC;IAEO,UAAU,CAAC,QAAkB;QACnC,OAAO,QAAQ,CAAC,QAAQ,IAAI,QAAQ,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC;IAC3D,CAAC;IAED,eAAe,CAAC,KAA2B,EAAE,WAAmB;QAC9D,MAAM,MAAM,GAAG,KAAK,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,WAAW,CAA6B,CAAC,CAAC,CAAC,IAAI,CAAC;QACtG,IAAI,MAAM,EAAE;YACV,IAAI,MAAM,CAAC,MAAM,KAAK,uDAAgB,CAAC,MAAM,EAAE;gBAC7C,OAAO,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,cAAc,CAAC;aACnD;iBAEI,IAAI,MAAM,CAAC,MAAM,KAAK,uDAAgB,CAAC,UAAU,EAAE;gBACtD,OAAO,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,kBAAkB,CAAC;aACvD;iBAEI;gBACH,IAAI,MAAM,CAAC,MAAM,KAAK,uDAAgB,CAAC,SAAS,EAAE;oBAChD,OAAO,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,uBAAuB,CAAC;iBAC5D;qBAEI,IAAI,MAAM,CAAC,MAAM,KAAK,uDAAgB,CAAC,OAAO,EAAE;oBACnD,OAAO,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,eAAe,CAAC;iBACpD;qBAEI,IAAI,IAAI,CAAC,gBAAgB,IAAI,IAAI,CAAC,gBAAgB,CAAC,iBAAiB,EAAE;oBACzE,MAAM,gBAAgB,GAAG,IAAI,CAAC,gBAAgB,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,KAAK,IAAI,CAAC,CAAC,IAAI,IAAI,MAAM,CAAC,KAAK,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC;oBAC3H,OAAO,gBAAgB,IAAI,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,gBAAgB,CAAC,QAAQ,CAAC;iBACvE;gBAED,OAAO,GAAG,CAAC;aACZ;SACF;QACD,OAAO,GAAG,CAAC;IACb,CAAC;IAED,eAAe,CAAC,KAA2B,EAAE,WAAmB;QAC9D,MAAM,MAAM,GAAG,KAAK,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,WAAW,CAA6B,CAAC,CAAC,CAAC,IAAI,CAAC;QACtG,IAAI,MAAM,EAAE;YACV,IAAI,MAAM,CAAC,MAAM,KAAK,uDAAgB,CAAC,MAAM,EAAE;gBAC7C,OAAO,IAAI,CAAC;aACb;YAED,IAAI,MAAM,CAAC,MAAM,KAAK,uDAAgB,CAAC,UAAU,EAAE;gBACjD,OAAO,GAAG,CAAC;aACZ;YAED,IAAI,IAAI,CAAC,uBAAuB,EAAE;gBAChC,MAAM,eAAe,GAAG,IAAI,CAAC,qBAAqB,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;gBACjE,OAAO,eAAe,CAAC;aACxB;YAED,OAAO,MAAM,CAAC,KAAK,CAAC;SACrB;QAED,IAAI,KAAK,IAAI,KAAK,CAAC,OAAO,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,IAAI,CAAC,EAAE;YACvD,OAAO,GAAG,CAAC;SACZ;QAED,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,qBAAqB,CAAC,KAAa;QACjC,IAAI,KAAK,IAAI,KAAK,KAAK,CAAC,EAAE;YACxB,MAAM,cAAc,GAAG,4DAAoB,CAAC,mBAAmB,CAAC,KAAK,CAAC,CAAC;YACvE,OAAO,cAAc,CAAC,QAAQ,EAAE,CAAC;SAClC;aAAM;YACL,OAAO,GAAG,CAAC;SACZ;IACH,CAAC;IAED,sBAAsB,CAAC,KAA2B,EAAE,WAAmB;QACrE,MAAM,MAAM,GAAG,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,WAAW,CAA6B,CAAC,CAAC,CAAC,IAAI,CAAC;QAE7E,IAAI,MAAM,EAAE;YACV,IAAI,MAAM,CAAC,MAAM,KAAK,uDAAgB,CAAC,MAAM,EAAE;gBAC7C,OAAO,SAAS,CAAC;aAClB;SACF;QAED,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,cAAc,CAAC,KAAa;QAC1B,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC;IACpC,CAAC;IAED,mBAAmB,CAAC,KAAa;QAC/B,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC;IACrC,CAAC;IAED,iBAAiB,CAAC,KAAa;QAC7B,OAAO,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC;IACtC,CAAC;IAED,gBAAgB;QACd,MAAM,qBAAqB,GACzB,IAAI,CAAC,mBAAmB,CAAC,uBAAuB,CAAC,SAAS,CACxD,CAAC,SAAS,EAAE,EAAE;YACZ,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC;YAC5B,IAAI,CAAC,6BAA6B,CAAC,SAAS,CAAC,CAAC;QAChD,CAAC,CACF,CAAC;QAEJ,MAAM,QAAQ,GAAG,IAAI,CAAC;QACtB,IAAI,CAAC,mBAAmB,CAAC,yBAAyB,CAAC,QAAQ,CAAC,CAAC;QAC7D,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC;IACjD,CAAC;IAEO,6BAA6B,CAAC,SAA6B;QACjE,IAAI,CAAC,aAAa,GAAG,EAAE,CAAC;QACxB,MAAM,wBAAwB,GAC5B,SAAS,IAAI,SAAS;aACnB,GAAG,CAAC,wDAAgB,CAAC,aAAa,CAAC;aACnC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,IAAI,CAAC,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC;aAChD,IAAI,CAAC,uDAAe,CAAC,qBAAqB,CAAC,CAAC;QAEjD,wBAAwB,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,UAAU,GAAG,KAAK,CAAC,CAAC;QAC5D,IAAI,CAAC,iBAAiB,GAAG,wBAAwB,CAAC;IACpD,CAAC;IAEO,oBAAoB;QAC1B,MAAM,KAAK,GAAyB,EAAE,CAAC;QACvC,MAAM,WAAW,GAAG,IAAI,IAAI,EAAE,CAAC;QAC/B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,EAAE,EAAE;YAC5B,MAAM,aAAa,GAAG,IAAI,IAAI,CAAC,WAAW,CAAC,CAAC;YAC5C,aAAa,CAAC,OAAO,CAAC,WAAW,CAAC,OAAO,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;YACrD,aAAa,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;YAEnC,MAAM,WAAW,GAAG,IAAI,IAAI,CAAC,WAAW,CAAC,CAAC;YAC1C,WAAW,CAAC,OAAO,CAAC,WAAW,CAAC,OAAO,EAAE,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;YACvD,WAAW,CAAC,QAAQ,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,CAAC;YAEtC,MAAM,KAAK,GAAG,IAAI,0DAAkB,CAAC,CAAC,EAAE,aAAa,EAAE,WAAW,CAAC,CAAC;YACpE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,CAAC,GAAG,YAAY,EAAE,KAAK,EAAE,aAAa,CAAC,kBAAkB,EAAE,GAAG,KAAK,GAAG,WAAW,CAAC,kBAAkB,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC;YAChJ,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;SACnB;QAED,IAAI,CAAC,cAAc,GAAG,KAAK,CAAC;IAC9B,CAAC;IAEO,aAAa;QACnB,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC;QAC/C,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC;IACjD,CAAC;IAED,YAAY;QACV,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,uDAAgB,CAAC,iBAAiB,CAAC,CAAC;IACnE,CAAC;IAEO,eAAe,CAAC,IAAc;QACpC,IAAI,IAAI,CAAC,MAAM,EAAE;YACf,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,IAAI,wEAAiC,CAAC,IAAI,EAAE;gBACvE,OAAO,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;aAC1C;YACD,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,IAAI,wEAAiC,CAAC,QAAQ,EAAE;gBAC3E,OAAO,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC;aAC1B;SACF;QACD,OAAO,EAAE,CAAC;IACZ,CAAC;CACF;;YAlgBgB,wDAAU;YACD,0DAAW;YACN,iEAAuB;YACX,uEAA6B;YACvC,uEAA6B;YACpC,qDAAW;;AAzInC;IADC,+DAAS,CAAC,8DAAsB,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;8BAC3C,8DAAsB;oEAAA;AAFlC,6BAA6B;IAJzC,+DAAS,CAAC;QACT,QAAQ,EAAE,sCAAsC;QAChD,mPAAuD;KACxD,CAAC;qCAuIe,wDAAU;QACD,0DAAW;QACN,iEAAuB;QACX,uEAA6B;QACvC,uEAA6B;QACpC,qDAAW;GA3IxB,6BAA6B,CAwoBzC;AAxoByC;;;;;;;;;;;;;;;;;;;;AC7BQ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACO3B;AAC0B;AAEL;AAQ3B;AAKE;AAOM;AAQJ;AACgD;AAE6C;AACjE;AAMjD,IAAa,4BAA4B,oCAAzC,MAAa,4BAA4B;IAkFvC,YACU,GAAe,EACf,KAAa,EACb,uBAA+C,EAC/C,mBAAkD,EAClD,YAAyB,EACzB,YAAyB;QALzB,QAAG,GAAH,GAAG,CAAY;QACf,UAAK,GAAL,KAAK,CAAQ;QACb,4BAAuB,GAAvB,uBAAuB,CAAwB;QAC/C,wBAAmB,GAAnB,mBAAmB,CAA+B;QAClD,iBAAY,GAAZ,YAAY,CAAa;QACzB,iBAAY,GAAZ,YAAY,CAAa;QA1EnC,oBAAe,GAAG,qDAAc,CAAC;QACjC,eAAU,GAAG,8BAA4B,CAAC,UAAU,CAAC;QACrD,eAAU,GAAG,8BAA4B,CAAC,kBAAkB,CAAC;QAG7D,gBAAW,GAAiD,EAAE,CAAC;QAC/D,sBAAiB,GAAY,KAAK,CAAC;QAEnC,iBAAY,GAA8B,IAAI,iEAAyB,CACrE,8BAA4B,CAAC,eAAe,CAC7C,CAAC;QAEF,cAAS,GAAG,KAAK,CAAC;QAClB,sBAAiB,GAAe,EAAE,CAAC;QAEnC,sBAAiB,GAAqD,EAAE,CAAC;QAEzE,eAAU,GAAW,EAAE,CAAC;QACxB,gBAAW,GAAsB,IAAI,4DAAiB,EAAE,CAAC;QACzD,8BAAyB,GAAyB,IAAI,CAAC;QACvD,aAAQ,GAAY,KAAK,CAAC;QAElB,kCAA6B,GAAyB,IAAI,CAAC;QAC3D,kBAAa,GAAmB,EAAE,CAAC;QAE3C,iBAAY,GAAG;YACb;gBACE,MAAM,EAAE,aAAa;gBACrB,UAAU,EAAE,qDAAc,CAAC,IAAI;gBAC/B,SAAS,EAAE,4BAA4B;aACxC;YACD;gBACE,MAAM,EAAE,YAAY;gBACpB,UAAU,EAAE,qDAAc,CAAC,IAAI;gBAC/B,SAAS,EAAE,2BAA2B;aACvC;YACD;gBACE,MAAM,EAAE,aAAa;gBACrB,UAAU,EAAE,qDAAc,CAAC,SAAS;gBACpC,SAAS,EAAE,cAAc;aAC1B;YACD;gBACE,MAAM,EAAE,UAAU;gBAClB,UAAU,EAAE,qDAAc,CAAC,UAAU;gBACrC,SAAS,EAAE,OAAO;aACnB;SACF,CAAC;IA6BE,CAAC;IA3BL,IAAI,UAAU;QACZ,OAAO,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;IAC5B,CAAC;IACD,IAAI,QAAQ;QACV,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;IACvE,CAAC;IAED,IAAI,cAAc;QAChB,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,YAAY,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC;IAC1E,CAAC;IAED,IAAI,cAAc;QAChB,OAAO,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,oDAAY,CAAC,YAAY,CAAC,IAAI,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,oDAAY,CAAC,WAAW,CAAC,CAAC;IAC7H,CAAC;IAED,IAAI,uBAAuB;QACzB,MAAM,OAAO,GAAG,IAAI,IAAI,EAAE,CAAC;QAC3B,OAAO,GAAG,OAAO,CAAC,WAAW,EAAE,GAAG,CAAC,IAAI,OAAO,CAAC,WAAW,EAAE,EAAE,CAAC;IACjE,CAAC;IAWD,QAAQ;QACN,IAAI,CAAC,gBAAgB,EAAE,CAAC;QACxB,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;QACxB,IAAI,CAAC,aAAa,EAAE,CAAC;QAErB,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,6DAAkB,CAAC,EAAE;YAC7D,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;SAC7D;QAED,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,gEAAqB,CAAC,EAAE;YAChE,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;SACnE;QAED,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC;YAC3C,cAAc,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC;YACjC,SAAS,EAAE,EAAE;YACb,WAAW,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC;YAC9B,WAAW,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC;SAC7B,CAAC,CAAC;QAEH,IAAI,CAAC,sBAAsB,EAAE,CAAC;IAChC,CAAC;IAED,WAAW;QACT,IAAI,CAAC,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;QAC/B,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC;QAEhB,IAAI,CAAC,kBAAkB,EAAE,CAAC;IAC5B,CAAC;IAED,eAAe;QACb,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;IAC1B,CAAC;IAED,gBAAgB;QACd,MAAM,qBAAqB,GACzB,IAAI,CAAC,mBAAmB,CAAC,uBAAuB,CAAC,SAAS,CACxD,CAAC,SAAS,EAAE,EAAE;YACZ,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,6BAA6B,CAAC,SAAS,CAAC,CAAC;QACzE,CAAC,CACF,CAAC;QAEJ,MAAM,QAAQ,GAAG,IAAI,CAAC;QACtB,IAAI,CAAC,mBAAmB,CAAC,yBAAyB,CAAC,QAAQ,CAAC,CAAC;QAE7D,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC;IACjD,CAAC;IAED,kBAAkB;QAChB,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC;QACnD,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;IAC5B,CAAC;IAED,mBAAmB,CAAC,KAAuB;QACzC,OAAO,iEAAsB,CAAC,KAAK,CAAC,CAAC;IACvC,CAAC;IAED,mBAAmB,CAAC,KAAuB;QACzC,OAAO,6DAAkB,CAAC,KAAK,CAAC,CAAC;IACnC,CAAC;IAED,cAAc;QACZ,IAAI,CAAC,iBAAiB,GAAG,CAAC,IAAI,CAAC,iBAAiB,CAAC;IACnD,CAAC;IAEK,sBAAsB;;YAC1B,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;YACrB,IAAI,CAAC,YAAY,CAAC,WAAW,GAAG,CAAC,CAAC;YAClC,IAAI,MAAM,GAAG,CAAC,MAAM,IAAI,CAAC,uBAAuB,CAAC,oBAAoB,CACnE,IAAI,CAAC,YAAY,CAClB,CAA0B,CAAC;YAC5B,IAAI,MAAM,EAAE;gBACV,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CACvC,wDAAgB,CAAC,WAAW,CAAC,CAAC,CAAC,CAChC,CAAC;gBACF,IAAI,CAAC,iBAAiB,GAAG,MAAM,CAAC,UAAU,CAAC;aAC5C;YACD,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;QACxB,CAAC;KAAA;IAEK,aAAa;;YACjB,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;YACtB,IAAI,CAAC,YAAY,CAAC,WAAW,EAAE,CAAC;YAChC,IAAI,MAAM,GAAG,CAAC,MAAM,IAAI,CAAC,uBAAuB,CAAC,oBAAoB,CACnE,IAAI,CAAC,YAAY,CAClB,CAA0B,CAAC;YAC5B,IAAI,MAAM,EAAE;gBACV,IAAI,CAAC,SAAS,CAAC,IAAI,CACjB,GAAG,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,wDAAgB,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAC7D,CAAC;aACH;YACD,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;QACzB,CAAC;KAAA;IAED,qBAAqB;QACnB,IAAI,CAAC,YAAY,CAAC,MAAM,GAAG,EAAE,CAAC;QAC9B,IAAI,CAAC,YAAY,CAAC,WAAW,GAAG,EAAE,CAAC;QAEnC,IAAI,CAAC,yBAAyB,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE;YAC3C,QAAQ,CAAC,CAAC,IAAI,CAAC,QAAQ,EAAE;gBACvB,KAAK,wEAAiC,CAAC,QAAQ;oBAC7C,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;oBAC9C,MAAM;gBACR,KAAK,wEAAiC,CAAC,GAAG;oBACxC,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;oBACzC,MAAM;aACT;QACH,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,sBAAsB,EAAE,CAAC;IAChC,CAAC;IAEK,aAAa,CAAC,OAAoB;;YACtC,OAAO,CAAC,eAAe,EAAE,CAAC;QAC5B,CAAC;KAAA;IAEK,cAAc,CAAC,OAAoB;;YACvC,OAAO,CAAC,aAAa,EAAE,CAAC;QAC1B,CAAC;KAAA;IAED,WAAW,CAAC,SAA+B;QACzC,IAAI,OAAO,GAAG,IAAI,IAAI,EAAE,CAAC;QACzB,IAAI,SAAS,GAAG,IAAI,IAAI,EAAE,CAAC;QAC3B,OAAO,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;QAC7B,SAAS,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;QAC/B,IAAI,CAAC,UAAU,GAAG,EAAE,CAAC;QACrB,QAAQ,SAAS,EAAE;YACjB,KAAK,2DAAoB,CAAC,IAAI;gBAC5B,SAAS,CAAC,OAAO,CACf,SAAS,CAAC,OAAO,EAAE,GAAG,gEAAqB,CAAC,kBAAkB,CAC/D,CAAC;gBACF,MAAM;YACR,KAAK,2DAAoB,CAAC,KAAK;gBAC7B,SAAS,CAAC,OAAO,CACf,SAAS,CAAC,OAAO,EAAE,GAAG,gEAAqB,CAAC,mBAAmB,CAChE,CAAC;gBACF,MAAM;SACT;QACD,IAAI,CAAC,yBAAyB,GAAG,SAAS,CAAC;QAC3C,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAChC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAChC,CAAC;IAED,gBAAgB;QACd,IAAI,CAAC,aAAa,EAAE,CAAC;QACrB,IAAI,CAAC,yBAAyB,GAAG,IAAI,CAAC;QACtC,IAAI,CAAC,YAAY,CAAC,YAAY,GAAG,IAAI,CAAC;QACtC,IAAI,CAAC,YAAY,CAAC,UAAU,GAAG,IAAI,CAAC;QACpC,IAAI,CAAC,sBAAsB,EAAE,CAAC;IAChC,CAAC;IAED,sBAAsB;QACpB,IAAI,IAAI,CAAC,UAAU,IAAI,SAAS,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,IAAI,CAAC,EAAE;YAC/D,IAAI,CAAC,aAAa,EAAE,CAAC;SACtB;QACD,IAAI,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,SAAS,IAAI,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,IAAI,EAAE;YACjE,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;SACzC;QACD,IAAI,CAAC,YAAY,CAAC,YAAY;YAC5B,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE;gBAC3B,gEAAqB,CAAC,4BAA4B,CAAC;gBACrD,CAAC,CAAC;QACJ,IAAI,CAAC,YAAY,CAAC,UAAU;YAC1B,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE;gBAC3B,gEAAqB,CAAC,4BAA4B,CAAC;gBACrD,CAAC,CAAC;QACJ,IAAI,CAAC,sBAAsB,EAAE,CAAC;QAC9B,IAAI,CAAC,6BAA6B,GAAG,IAAI,CAAC,yBAAyB,CAAC;QACpE,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC;IACzB,CAAC;IAED,iBAAiB;QACf,IAAI,CAAC,yBAAyB,GAAG,IAAI,CAAC;IACxC,CAAC;IAED,eAAe;QACb,IACE,IAAI,CAAC,YAAY,CAAC,YAAY,IAAI,IAAI;YACtC,IAAI,CAAC,YAAY,CAAC,UAAU,IAAI,IAAI,EACpC;YACA,IAAI,CAAC,aAAa,EAAE,CAAC;YACrB,OAAO;SACR;QACD,IAAI,IAAI,CAAC,6BAA6B,IAAI,IAAI,EAAE;YAC9C,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,6BAA6B,CAAC,CAAC;YACrD,OAAO;SACR;QACD,IAAI,CAAC,UAAU,GAAG,EAAE,CAAC;QACrB,IAAI,CAAC,UAAU,CAAC,IAAI,CAClB,IAAI,IAAI,CACN,IAAI,CAAC,YAAY,CAAC,YAAY;YAC9B,gEAAqB,CAAC,4BAA4B,CACnD,CACF,CAAC;QACF,IAAI,CAAC,UAAU,CAAC,IAAI,CAClB,IAAI,IAAI,CACN,IAAI,CAAC,YAAY,CAAC,UAAU;YAC5B,gEAAqB,CAAC,4BAA4B,CACnD,CACF,CAAC;IACJ,CAAC;IAED,eAAe,CAAC,OAAgB,EAAE,SAAS,GAAG,KAAK;QACjD,IAAI,SAAS,EAAE;YACb,OAAO;SACR;QAED,IAAI,IAAI,CAAC,GAAG,EAAE;YACZ,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;SACpB;QAED,MAAM,mBAAmB,GAAG,GAAG,EAAE;YAC/B,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC,GAAG,EAAE;gBAChC,IAAI;oBACF,MAAM,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,aAAa,CAAC,aAAa,CAC7C,4EAA4E,CAC7E,CAAC;oBACF,IAAI,CAAC,EAAE,EAAE;wBACP,OAAO;qBACR;oBAED,IAAI,CAAC,GAAG,GAAG,IAAI,yDAAgB,CAAC,EAAE,EAAE;wBAClC,UAAU,EAAE,CAAC;wBACb,gBAAgB,EAAE,IAAI;wBACtB,kBAAkB,EAAE,EAAE;qBACvB,CAAC,CAAC;iBACJ;gBAAC,OAAO,KAAK,EAAE,GAAG;YACrB,CAAC,CAAC,CAAC;QACL,CAAC,CAAC;QAEF,IAAI,OAAO,EAAE;YACX,UAAU,CAAC,GAAG,EAAE;gBACd,mBAAmB,EAAE,CAAC;YACxB,CAAC,EAAE,OAAO,CAAC,CAAC;SACb;aAAM;YACL,mBAAmB,EAAE,CAAC;SACvB;IACH,CAAC;IAED,YAAY;QACV,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,uDAAgB,CAAC,gBAAgB,CAAC,CAAC;IAClE,CAAC;IAED,UAAU;QACR,MAAM,aAAa,GAAe,EAAE,CAAC;QACrC,MAAM,SAAS,GAAG,IAAI,CAAC,6BAA6B,CAAC,IAAI,CAAC,mBAAmB,CAAC,uBAAuB,CAAC,QAAQ,EAAE,CAAC;QACjH,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;YACpB,IAAI,CAAC,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE;gBACzB,aAAa,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC;aACnC;QACH,CAAC,CACA,CAAC;QAEF,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,aAAa,EAAE,kDAAW,CAAC,GAAG,CAAC,CAAC;IAC1D,CAAC;IAED,iBAAiB,CAAC,UAAkB,EAAE,KAAa;QACjD,IAAI,CAAC,eAAe,CAAC,eAAe,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC;IAC1D,CAAC;IAEO,aAAa;QACnB,IAAI,CAAC,6BAA6B,GAAG,IAAI,CAAC;QAC1C,IAAI,CAAC,yBAAyB,GAAG,IAAI,CAAC;QACtC,IAAI,CAAC,UAAU,GAAG,EAAE,CAAC;QACrB,IAAI,KAAK,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,KAAK,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;QAC3B,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC5B,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC9B,CAAC;IAEO,6BAA6B,CAAC,SAA6B;QACjE,MAAM,wBAAwB,GAC5B,SAAS;YACT,SAAS;iBACN,GAAG,CAAC,wDAAgB,CAAC,aAAa,CAAC;iBACnC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;QAEpD,OAAO,wBAAwB,CAAC;IAClC,CAAC;CACF;AAhXQ,uCAAU,GAAG,WAAW,CAAC;AACzB,+CAAkB,GAAG,CAAC,CAAC;AACvB,4CAAe,GAAG,EAAE,CAAC;;YAgFb,wDAAU;YACR,oDAAM;YACY,gEAAsB;YAC1B,uEAA6B;YACpC,0DAAW;YACX,qDAAW;;AAlFnC;IADC,+DAAS,CAAC,UAAU,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;8BACvB,yDAAQ;8DAAC;AAE3B;IADC,+DAAS,CAAC,8DAAsB,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;8BAC3C,8DAAsB;mEAAC;AAE9C;IADC,+DAAS,CAAC,wEAAgC,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;8BACvD,wEAAgC;iEAAC;AAEtD;IADC,+DAAS,CAAC,mEAA2B,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;8BAC9C,mEAA2B;qEAAC;AAZ1C,4BAA4B;IAJxC,+DAAS,CAAC;QACT,QAAQ,EAAE,oCAAoC;QAC9C,6OAAqD;KACtD,CAAC;qCAoFe,wDAAU;QACR,oDAAM;QACY,gEAAsB;QAC1B,uEAA6B;QACpC,0DAAW;QACX,qDAAW;GAxFxB,4BAA4B,CAiXxC;AAjXwC;;;;;;;;;;;;;;;;;;;;;;;AChDd;AACS;;;;;;;;;;;;;;;;;;;;ACDC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACAoF;AACxE;AACO;AAIK;AACK;AACD;AAOjE,IAAa,gBAAgB,wBAA7B,MAAa,gBAAgB;IAsD3B,YACU,8BAA6D,EAC7D,GAAe,EACf,KAAa,EACrB,WAAwB;QAHhB,mCAA8B,GAA9B,8BAA8B,CAA+B;QAC7D,QAAG,GAAH,GAAG,CAAY;QACf,UAAK,GAAL,KAAK,CAAQ;QAhDhB,kBAAa,GAAG,IAAI,0DAAY,EAAwB,CAAC;QACzD,iBAAY,GAAG,IAAI,0DAAY,EAAwB,CAAC;QACxD,oBAAe,GAAG,IAAI,0DAAY,EAAwB,CAAC;QAC3D,+BAA0B,GAAG,IAAI,0DAAY,EAAwB,CAAC;QACtE,oBAAe,GAAG,IAAI,0DAAY,EAAwB,CAAC;QAC3D,4BAAuB,GAAG,IAAI,0DAAY,EAAwB,CAAC;QAE1E,oBAAe,GAAG,qDAAc,CAAC;QACjC,eAAU,GAAG,kBAAgB,CAAC,iBAAiB,CAAC;QAChD,eAAU,GAAG,kBAAgB,CAAC,kBAAkB,CAAC;QAEjD,oBAAe,GAAG,kBAAgB,CAAC,gBAAgB,CAAC;QACpD,qBAAgB,GAAG,kBAAgB,CAAC,iBAAiB,CAAC;QACtD,kBAAa,GAAW,EAAE,CAAC;QAE3B,yBAAoB,GAAG,eAAe,CAAC;QACvC,yBAAoB,GAAG,wBAAwB,CAAC;QAEhD,iBAAY,GAAG;YACb,EAAE,MAAM,EAAE,eAAe,EAAE,UAAU,EAAE,qDAAc,CAAC,YAAY,EAAE,SAAS,EAAE,kBAAgB,CAAC,iBAAiB,EAAE;YACnH,EAAE,MAAM,EAAE,SAAS,EAAE,UAAU,EAAE,qDAAc,CAAC,OAAO,EAAE,SAAS,EAAE,kBAAgB,CAAC,gBAAgB,EAAE;YACvG,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,qDAAc,CAAC,IAAI,EAAE,SAAS,EAAE,aAAa,EAAE;SAC9E;QAED,mBAAc,GAAG;YACf,EAAE,MAAM,EAAE,EAAE,EAAE,UAAU,EAAE,qDAAc,CAAC,gBAAgB,EAAE,KAAK,EAAE,EAAE,EAAE;YACtE,EAAE,MAAM,EAAE,EAAE,EAAE,UAAU,EAAE,qDAAc,CAAC,sBAAsB,EAAE,KAAK,EAAE,EAAE,EAAE;YAC5E,EAAE,MAAM,EAAE,EAAE,EAAE,UAAU,EAAE,qDAAc,CAAC,gBAAgB,EAAE,KAAK,EAAE,EAAE,EAAE;YACtE,EAAE,MAAM,EAAE,EAAE,EAAE,UAAU,EAAE,qDAAc,CAAC,iBAAiB,EAAE,KAAK,EAAE,EAAE,EAAE;YACvE,EAAE,MAAM,EAAE,EAAE,EAAE,UAAU,EAAE,qDAAc,CAAC,SAAS,EAAE,KAAK,EAAE,EAAE,EAAE;YAC/D,EAAE,MAAM,EAAE,EAAE,EAAE,UAAU,EAAE,qDAAc,CAAC,OAAO,EAAE,KAAK,EAAE,EAAE,EAAE;YAC7D,EAAE,MAAM,EAAE,EAAE,EAAE,UAAU,EAAE,qDAAc,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE,EAAE;SAC7D;QAKD,iBAAY,GAA+B,EAAE,CAAC;QAC9C,kBAAa,GAAmB,EAAE,CAAC;QACnC,aAAQ,GAAG,KAAK,CAAC;QAWf,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC,KAAK,CAAC;YACnC,YAAY,EAAE,CAAC,EAAE,CAAC;SACnB,CAAC,CAAC;IACL,CAAC;IAZD,IAAI,YAAY;QACd,OAAO,GAAG,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,IAAI,CAAC;IACrE,CAAC;IAYD,QAAQ;QACN,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;QACxB,IAAI,WAAW,GAAG,IAAI,CAAC,8BAA8B,CAAC,aAAa,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE;YACpF,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;YACvB,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;QACxB,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;QACrB,IAAI,CAAC,8BAA8B,CAAC,GAAG,EAAE,CAAC;QAC1C,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IACvC,CAAC;IAED,WAAW;QACT,IAAI,CAAC,aAAa;YAChB,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC,CAAC;QAEzD,IAAI,CAAC,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;QAC/B,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC;IAClB,CAAC;IAED,eAAe;QACb,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;IAC1B,CAAC;IAEK,MAAM,CAAC,QAA8B;;YACzC,MAAM,IAAI,CAAC,8BAA8B,CAAC,kCAAkC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;YAC1F,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACpC,CAAC;KAAA;IAEK,kBAAkB,CAAC,QAA8B;;YACrD,IAAI,CAAC,QAAQ,EAAE;gBACb,OAAO;aACR;YAED,QAAQ,CAAC,wBAAwB,GAAG,IAAI,CAAC;YACzC,QAAQ,CAAC,aAAa,IAAG,MAAM,IAAI,CAAC,8BAA8B,CAAC,6BAA6B,CAAC,QAAQ,CAAC,EAAE,CAAY,EAAC;YACzH,QAAQ,CAAC,wBAAwB,GAAG,KAAK,CAAC;QAC5C,CAAC;KAAA;IAEK,mBAAmB,CAAC,QAA8B;;YACtD,IAAI,CAAC,QAAQ,EAAE;gBACb,OAAO;aACR;YACD,IAAI,CAAC,wBAAwB,CAAC,MAAM,CAAC,EAAE,YAAY,EAAE,QAAQ,CAAC,YAAY,EAAE,UAAU,EAAE,QAAQ,CAAC,EAAE,EAAE,QAAQ,EAAE,QAAQ,CAAC,QAAQ,EAAE,OAAO,EAAE,kDAAW,CAAC,GAAG,EAAE,CAAC,CAAC;QAChK,CAAC;KAAA;IAED,WAAW,CAAC,QAA+B;QACzC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IACnC,CAAC;IAED,wBAAwB,CAAC,QAA8B;QACrD,IAAI,CAAC,0BAA0B,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IACjD,CAAC;IAED,kBAAkB;QAChB,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,YAAY,CAAC,KAAK,CAAC;IACxE,CAAC;IAEK,aAAa,CAAC,QAA8B;;YAChD,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACtC,CAAC;KAAA;IAEK,uBAAuB,CAAC,QAA8B;;YAC1D,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACtC,CAAC;KAAA;IAEK,sBAAsB,CAAC,QAA8B;;YACzD,IAAI,QAAQ,CAAC,WAAW,GAAG,CAAC,EAAE;gBAC5B,MAAM,IAAI,CAAC,8BAA8B,CAAC,kCAAkC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;gBAC1F,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;aAC7C;QACH,CAAC;KAAA;IAEO,eAAe,CAAC,OAAgB,EAAE,SAAS,GAAG,KAAK;QACzD,IAAI,SAAS,EAAE;YACb,OAAO;SACR;QAED,IAAI,IAAI,CAAC,GAAG,EAAE;YACZ,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;SACpB;QAED,MAAM,mBAAmB,GAAG,GAAG,EAAE;YAC/B,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC,GAAG,EAAE;gBAChC,IAAI;oBACF,MAAM,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,aAAa,CAAC,aAAa,CAAC,4EAA4E,CAAC,CAAC;oBAC9H,IAAI,CAAC,EAAE,EAAE;wBACP,OAAO;qBACR;oBAED,IAAI,CAAC,GAAG,GAAG,IAAI,yDAAgB,CAAC,EAAE,EAAE;wBAClC,UAAU,EAAE,CAAC;wBACb,gBAAgB,EAAE,IAAI;wBACtB,kBAAkB,EAAE,EAAE;qBACvB,CAAC,CAAC;iBACJ;gBAAC,OAAO,KAAK,EAAE;iBACf;YACH,CAAC,CAAC;QACJ,CAAC,CAAC;QAEF,IAAI,OAAO,EAAE;YACX,UAAU,CAAC,GAAG,EAAE;gBACd,mBAAmB,EAAE,CAAC;YACxB,CAAC,EAAE,OAAO,CAAC,CAAC;SACb;aAAM;YACL,mBAAmB,EAAE,CAAC;SACvB;IACH,CAAC;CACF;AAtKQ,kCAAiB,GAAG,cAAc,CAAC;AACnC,iCAAgB,GAAG,aAAa,CAAC;AACjC,mCAAkB,GAAG,CAAC,CAAC;;YAgDY,uEAA6B;YACxD,wDAAU;YACR,oDAAM;YACR,0DAAW;;AAvD1B;IADC,+DAAS,CAAC,yEAAiC,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;8BAC3C,yEAAiC;kEAAC;AAHzD,gBAAgB;IAL5B,+DAAS,CAAC;QACT,QAAQ,EAAE,uBAAuB;QACjC,8MAAwC;KACzC,CAAC;qCAyD0C,uEAA6B;QACxD,wDAAU;QACR,oDAAM;QACR,0DAAW;GA1Df,gBAAgB,CA2K5B;AA3K4B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACfkD;AAgB5D;AAC2B;AAM9C,IAAa,eAAe,GAA5B,MAAa,eAAe;IAuC1B;QAFQ,mBAAc,GAAmB,EAAE,CAAC;IAGxC,CAAC;IAEL,eAAe;QACb,IAAI,mBAAmB,GAAG,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC,GAAuB,EAAE,EAAE;YAC7F,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAClC,CAAC,CAAC,CAAC;QAEH,IAAI,gBAAgB,GAAG,IAAI,CAAC,cAAc,CAAC,YAAY,CAAC,SAAS,CAAC,CAAO,QAA8B,EAAE,EAAE;YACzG,MAAM,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;QAC1C,CAAC,EAAC,CAAC;QAEH,IAAI,gBAAgB,GAAG,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC,QAA8B,EAAE,EAAE;YACpG,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;QACxC,CAAC,CAAC,CAAC;QAEH,IAAI,iBAAiB,GAAG,IAAI,CAAC,gBAAgB,CAAC,uBAAuB,CAAC,SAAS,CAAC,CAAC,GAAuB,EAAE,EAAE;YAC1G,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAClC,CAAC,CAAC,CAAC;QAEH,IAAI,uBAAuB,GAAG,IAAI,CAAC,cAAc,CAAC,0BAA0B,CAAC,SAAS,CAAC,CAAC,QAAQ,EAAE,EAAE;YAClG,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC9C,CAAC,CAAC,CAAC;QAEH,IAAI,kBAAkB,GAAG,IAAI,CAAC,cAAc,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC,QAA8B,EAAE,EAAE;YACxG,IAAI,CAAC,sCAAsC,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,QAAQ,CAAC,YAAY,CAAC,CAAC;QACvF,CAAC,CAAC,CAAC;QAEH,IAAI,yBAAyB,GAAG,IAAI,CAAC,sCAAsC,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC,QAA0B,EAAE,EAAE;YACnI,IAAI,CAAC,+BAA+B,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;QACtE,CAAC,CAAC,CAAC;QAEH,IAAI,iCAAiC,GAAG,IAAI,CAAC,+BAA+B,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAO,QAAgB,EAAE,EAAE;YACjI,MAAM,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACvC,CAAC,EAAC,CAAC;QAEH,IAAI,qBAAqB,GAAG,IAAI,CAAC,cAAc,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC,QAA8B,EAAE,EAAE;YAC3G,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACzC,CAAC,CAAC,CAAC;QAEH,IAAI,uBAAuB,GAAG,IAAI,CAAC,UAAU,CAAC,kBAAkB,CAAC,SAAS,CAAC,CAAC,IAAwB,EAAE,EAAE;YACtG,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACpC,CAAC,CAAC,CAAC;QAEH,IAAI,qBAAqB,GAAG,IAAI,CAAC,iBAAiB,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC,MAA0B,EAAE,EAAE;YACzG,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACrC,CAAC,CAAC,CAAC;QAEH,IAAI,uBAAuB,GAAG,IAAI,CAAC,uBAAuB,CAAC,kBAAkB,CAAC,SAAS,CAAC,CAAC,KAAgC,EAAE,EAAE;YAC3H,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACrC,CAAC,CAAC;QAEF,IAAI,wBAAwB,GAAG,IAAI,CAAC,iBAAiB,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,KAAgC,EAAE,EAAE;YAC7G,IAAI,CAAC,uBAAuB,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;QAClD,CAAC,CAAC,CAAC;QAEH,IAAI,0BAA0B,GAAG,IAAI,CAAC,cAAc,CAAC,uBAAuB,CAAC,SAAS,CAAC,CAAC,QAA8B,EAAE,EAAE;YACxH,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,EAAE,YAAY,EAAE,QAAQ,CAAC,YAAY,EAAE,UAAU,EAAE,QAAQ,CAAC,EAAE,EAAE,CAAC,CAAC;QAC/F,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,cAAc,CAAC,IAAI,CACtB,mBAAmB,EACnB,gBAAgB,EAChB,gBAAgB,EAChB,iBAAiB,EACjB,kBAAkB,EAClB,yBAAyB,EACzB,iCAAiC,EACjC,uBAAuB,EACvB,qBAAqB,EACrB,uBAAuB,EACvB,qBAAqB,EACrB,uBAAuB,EACvB,wBAAwB,EACxB,0BAA0B,CAC3B,CAAC;IACJ,CAAC;IAED,WAAW;QACT,IAAI,CAAC,cAAc;YACjB,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC,CAAC;IAC5D,CAAC;IAED,KAAK;QACH,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE,CAAC;IAC/B,CAAC;CACF;AA3HC;IADC,+DAAS,CAAC,wEAAgC,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;8BACrD,wEAAgC;sDAAC;AAGxD;IADC,+DAAS,CAAC,qEAA6B,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;8BACrD,qEAA6B;mDAAC;AAGlD;IADC,+DAAS,CAAC,mEAA2B,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;8BAC7C,mEAA2B;yDAAC;AAGtD;IADC,+DAAS,CAAC,mEAA2B,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;8BAC7C,mEAA2B;yDAAC;AAGtD;IADC,+DAAS,CAAC,0DAAgB,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;8BACpC,0DAAgB;uDAAC;AAGzC;IADC,+DAAS,CAAC,0EAAkC,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;8BAC7C,0EAAkC;gEAAC;AAGpE;IADC,+DAAS,CAAC,6EAAqC,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;8BACjC,6EAAqC;+EAAC;AAGtF;IADC,+DAAS,CAAC,eAAe,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;8BAClB,sEAA8B;wEAAC;AAGxE;IADC,+DAAS,CAAC,0EAAkC,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;8BAClD,0EAAkC;2DAAC;AAG/D;IADC,+DAAS,CAAC,oEAA4B,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;8BAC7C,oEAA4B;0DAAC;AAGxD;IADC,+DAAS,CAAC,oEAA4B,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;8BAC7C,oEAA4B;0DAAC;AAGxD;IADC,+DAAS,CAAC,mEAA2B,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;8BAC7C,mEAA2B;yDAAC;AAnC3C,eAAe;IAJ3B,+DAAS,CAAC;QACT,QAAQ,EAAE,sBAAsB;QAChC,mMAAuC;KACxC,CAAC;;GACW,eAAe,CA6H3B;AA7H2B;;;;;;;;;;;;;;;;;;;;;;;ACvBK;AACS;;;;;;;;;;;;;;;;;;;;ACDC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACAsF;AAChF;AAEO;AAER;AAE4B;AACS;AACpC;AAOjD,IAAa,sBAAsB,8BAAnC,MAAa,sBAAsB;IAkDjC,YACU,2BAAuD,EACvD,GAAe,EACf,KAAa,EACb,YAAyB,EACjC,WAAwB;QAJhB,gCAA2B,GAA3B,2BAA2B,CAA4B;QACvD,QAAG,GAAH,GAAG,CAAY;QACf,UAAK,GAAL,KAAK,CAAQ;QACb,iBAAY,GAAZ,YAAY,CAAa;QA1CnC,kBAAa,GAAG,IAAI,0DAAY,EAAqB,CAAC;QAEtD,oBAAe,GAAG,qDAAc,CAAC;QACjC,eAAU,GAAG,wBAAsB,CAAC,iBAAiB,CAAC;QACtD,eAAU,GAAG,wBAAsB,CAAC,kBAAkB,CAAC;QAEvD,oBAAe,GAAG,wBAAsB,CAAC,gBAAgB,CAAC;QAC1D,qBAAgB,GAAG,wBAAsB,CAAC,iBAAiB,CAAC;QAC5D,kBAAa,GAAW,EAAE,CAAC;QAE3B,yBAAoB,GAAG,eAAe,CAAC;QAEvC,iBAAY,GAAG;YACb,EAAE,MAAM,EAAE,eAAe,EAAE,UAAU,EAAE,qDAAc,CAAC,YAAY,EAAE,SAAS,EAAE,wBAAsB,CAAC,iBAAiB,EAAE;YACzH,EAAE,MAAM,EAAE,kBAAkB,EAAE,UAAU,EAAE,qDAAc,CAAC,eAAe,EAAE,SAAS,EAAE,SAAS,EAAE;YAChG,EAAE,MAAM,EAAE,eAAe,EAAE,UAAU,EAAE,qDAAc,CAAC,YAAY,EAAE,SAAS,EAAE,cAAc,EAAE;YAC/F,EAAE,MAAM,EAAE,eAAe,EAAE,UAAU,EAAE,qDAAc,CAAC,YAAY,EAAE,SAAS,EAAE,cAAc,EAAE;YAC/F,EAAE,MAAM,EAAE,iBAAiB,EAAE,UAAU,EAAE,qDAAc,CAAC,cAAc,EAAE,SAAS,EAAE,gBAAgB,EAAE;YACrG,EAAE,MAAM,EAAE,YAAY,EAAE,UAAU,EAAE,qDAAc,CAAC,SAAS,EAAE,SAAS,EAAE,WAAW,EAAE;YACtF,EAAE,MAAM,EAAE,YAAY,EAAE,UAAU,EAAE,qDAAc,CAAC,SAAS,EAAE,SAAS,EAAE,WAAW,EAAE;SACvF;QAED,mBAAc,GAAG;YACf,EAAE,MAAM,EAAE,EAAE,EAAE,UAAU,EAAE,qDAAc,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,EAAE;SAC3D;QAQD,iBAAY,GAA+B,EAAE,CAAC;QAY5C,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC,KAAK,CAAC;YACnC,YAAY,EAAE,CAAC,EAAE,CAAC;SACnB,CAAC,CAAC;IACL,CAAC;IAbD,IAAI,YAAY;QACd,OAAO,GAAG,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,IAAI,CAAC;IACrE,CAAC;IAaD,QAAQ;QACN,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;QACxB,IAAI,CAAC,sBAAsB,GAAG,IAAI,CAAC,2BAA2B,CAAC,UAAU,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE;YAC1F,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;QACzB,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,2BAA2B,CAAC,GAAG,EAAE,CAAC;QAEvC,IAAI,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,oDAAY,CAAC,WAAW,CAAC,EAAE;YAC3D,MAAM,aAAa,GAAG,EAAE,MAAM,EAAE,SAAS,EAAE,UAAU,EAAE,qDAAc,CAAC,OAAO,EAAE,SAAS,EAAE,wBAAsB,CAAC,gBAAgB,EAAE,CAAC;YACpI,MAAM,UAAU,GAAG,EAAE,MAAM,EAAE,EAAE,EAAE,UAAU,EAAE,qDAAc,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC;YAEhF,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,aAAa,CAAC,CAAC;YAC9C,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;SACtC;IACH,CAAC;IAED,WAAW;QACT,IAAI,CAAC,sBAAsB,IAAI,IAAI,CAAC,sBAAsB,CAAC,WAAW,EAAE,CAAC;QACzE,IAAI,CAAC,sBAAsB,GAAG,IAAI,CAAC;QAEnC,IAAI,CAAC,4BAA4B,IAAI,IAAI,CAAC,4BAA4B,CAAC,WAAW,EAAE,CAAC;QACrF,IAAI,CAAC,4BAA4B,GAAG,IAAI,CAAC;QAEzC,IAAI,CAAC,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;QAC/B,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC;IAClB,CAAC;IAED,eAAe;QACb,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;IAC1B,CAAC;IAEK,MAAM,CAAC,QAA2B;;YACtC,MAAM,IAAI,CAAC,2BAA2B,CAAC,+BAA+B,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;YACpF,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACpC,CAAC;KAAA;IAED,eAAe,CAAC,OAAgB,EAAE,SAAS,GAAG,KAAK;QACjD,IAAI,SAAS,EAAE;YACb,OAAO;SACR;QAED,IAAI,IAAI,CAAC,GAAG,EAAE;YACZ,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;SACpB;QAED,MAAM,mBAAmB,GAAG,GAAG,EAAE;YAC/B,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC,GAAG,EAAE;gBAChC,IAAI;oBACF,MAAM,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,aAAa,CAAC,aAAa,CAAC,4EAA4E,CAAC,CAAC;oBAC9H,IAAI,CAAC,EAAE,EAAE;wBACP,OAAO;qBACR;oBAED,IAAI,CAAC,GAAG,GAAG,IAAI,yDAAgB,CAAC,EAAE,EAAE;wBAClC,UAAU,EAAE,CAAC;wBACb,gBAAgB,EAAE,IAAI;wBACtB,kBAAkB,EAAE,EAAE;qBACvB,CAAC,CAAC;iBACJ;gBAAC,OAAO,KAAK,EAAE;iBACf;YACH,CAAC,CAAC;QACJ,CAAC,CAAC;QAEF,IAAI,OAAO,EAAE;YACX,UAAU,CAAC,GAAG,EAAE;gBACd,mBAAmB,EAAE,CAAC;YACxB,CAAC,EAAE,OAAO,CAAC,CAAC;SACb;aAAM;YACL,mBAAmB,EAAE,CAAC;SACvB;IACH,CAAC;IAED,aAAa;QACX,IAAI,CAAC,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC;IAChC,CAAC;IAED,kBAAkB;QAChB,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,YAAY,CAAC,KAAK,CAAC;IACxE,CAAC;IAEK,aAAa,CAAC,QAA2B;;YAC7C,IAAI,CAAC,QAAQ,IAAI,QAAQ,CAAC,eAAe,EAAE;gBACzC,OAAO;aACR;YAED,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC3C,CAAC;KAAA;CACF;AAnJQ,wCAAiB,GAAG,MAAM,CAAC;AAC3B,uCAAgB,GAAG,aAAa,CAAC;AACjC,yCAAkB,GAAG,CAAC,CAAC;;YAgDS,oEAA0B;YAClD,wDAAU;YACR,oDAAM;YACC,qDAAW;YACpB,0DAAW;;AAjD1B;IADC,+DAAS,CAAC,+DAAuB,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;8BAClD,+DAAuB;+DAAC;AAGzC;IADC,+DAAS,CAAC,oEAA4B,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;8BAClD,oEAA4B;oEAAC;AAGnD;IADC,4DAAM,EAAE;;6DAC6C;AAZ3C,sBAAsB;IALlC,+DAAS,CAAC;QACT,QAAQ,EAAE,6BAA6B;QACvC,sOAA8C;KAC/C,CAAC;qCAqDuC,oEAA0B;QAClD,wDAAU;QACR,oDAAM;QACC,qDAAW;QACpB,0DAAW;GAvDf,sBAAsB,CAoJlC;AApJkC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AChBkB;AAEoB;AACM;AAEhC;AACA;AAM/C,IAAa,qBAAqB,GAAlC,MAAa,qBAAqB;IAOhC,YACU,2BAAuD,EACvD,YAAyB;QADzB,gCAA2B,GAA3B,2BAA2B,CAA4B;QACvD,iBAAY,GAAZ,YAAY,CAAa;IAChC,CAAC;IAEJ,IAAI,cAAc;QAChB,OAAO,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,oDAAY,CAAC,WAAW,CAAC,CAAC;IACjE,CAAC;IAEK,MAAM,CAAC,QAA4B;;YACvC,IAAI,QAAQ,EAAE;gBACZ,IAAI,iBAAiB,GACnB,MAAM,IAAI,CAAC,2BAA2B,CAAC,YAAY,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;gBACnE,iBAAiB,qBACZ,iBAAiB,EACjB,QAAQ,CACZ,CAAC;gBAEF,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;aACzC;iBAAM;gBACL,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC;aACxB;QACH,CAAC;KAAA;IAED,YAAY;QACV,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,uDAAgB,CAAC,SAAS,CAAC,CAAC;IAC3D,CAAC;CACF;;YA1BwC,oEAA0B;YACzC,qDAAW;;AAPnC;IADC,+DAAS,CAAC,kEAA0B,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;8BAClD,kEAA0B;yDAAC;AAG/C;IADC,+DAAS,CAAC,8DAAsB,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;8BAC3C,8DAAsB;4DAAA;AALlC,qBAAqB;IAJjC,+DAAS,CAAC;QACT,QAAQ,EAAE,4BAA4B;QACtC,qNAA6C;KAC9C,CAAC;qCASuC,oEAA0B;QACzC,qDAAW;GATxB,qBAAqB,CAkCjC;AAlCiC;;;;;;;;;;;;;;;;;;;;ACZS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACA6B;AAC/B;AAMhB;AAMA;AACsB;AAEP;AAMxC,IAAa,sBAAsB,GAAnC,MAAa,sBAAsB;IAOjC,YACU,oBAAyC,EACzC,OAAe,EACf,YAAyB;QAFzB,yBAAoB,GAApB,oBAAoB,CAAqB;QACzC,YAAO,GAAP,OAAO,CAAQ;QACf,iBAAY,GAAZ,YAAY,CAAa;QATzB,wBAAmB,GAA0B,IAAI,0DAAY,CACrE,KAAK,CACN,CAAC;QAEF,yBAAoB,GAAG,IAAI,CAAC;IAMxB,CAAC;IAEL,QAAQ;QACN,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC;QAC7B,MAAM,UAAU,GAAG,GAAG,CAAC,OAAO,CAAC,oDAAS,CAAC,KAAK,CAAC,CAAC,CAAC;QAEjD,IAAI,CAAC,IAAI,GAAG,UAAU;YACpB,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,uBAAuB,CAAC,GAAG,CAAC;YAChD,CAAC,CAAC,IAAI,CAAC,oBAAoB,CAAC,YAAY,EAAE,CAAC;QAE7C,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,oDAAY,EAAE;YAClC,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACrD,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;SACrC;IACH,CAAC;IAED,mBAAmB,CAAC,IAAoB;QACtC,IAAI,IAAI,CAAC,IAAI,KAAK,oDAAY,CAAC,WAAW,EAAE;YAC1C,MAAM,QAAQ,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,OAAO,IAAI,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;YAEhF,IAAI,QAAQ,IAAI,QAAQ,CAAC,QAAQ,EAAE;gBACjC,MAAM,GAAG,GAAG,IAAI,CAAC,kBAAkB,CAAC,QAAQ,CAAC,CAAC;gBAC9C,QAAQ,CAAC,UAAU,GAAG,IAAI,CAAC;gBAE3B,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;aACjC;SACF;IACH,CAAC;IAED,YAAY;QACV,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,oDAAS,CAAC,KAAK,CAAC,CAAC,CAAC;QAC9D,MAAM,iBAAiB,GAAG,MAAM,CAAC,IAAI,CAAC,iEAAsB,CAAC,CAAC,IAAI,CAChE,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,KAAK,iEAAsB,CAAC,GAAG,CAAC,CACxD,CAAC;QAEF,MAAM,SAAS,GAAG,UAAU;YAC1B,CAAC,CAAC,iBAAiB;YACnB,CAAC,CAAC,iBAAiB,CAAC,SAAS,CAAC,oDAAS,CAAC,MAAM,CAAC,CAAC;QAElD,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,kBAAkB,CAAC,QAAkB;QACnC,MAAM,SAAS,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC;QACtC,MAAM,eAAe,GAAG,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;QAE7C,MAAM,GAAG,GAAG,GAAG,SAAS,IAAI,eAAe,CAAC,KAAK,EAAE,CAAC;QAEpD,OAAO,GAAG,CAAC;IACb,CAAC;IAED,kBAAkB,CAAC,IAAoB;QACrC,MAAM,cAAc,GAAG,yDAAc,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACjD,MAAM,SAAS,GAAG,IAAI,CAAC,YAAY,CAAC,cAAc,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;QAEnE,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,YAAY,CACV,cAA+B,EAC/B,YAA2B;QAE3B,MAAM,SAAS,GAAG,cAAc,CAAC,GAAG,CAAW,CAAC,SAAS,EAAE,EAAE;YAC3D,IACE,YAAY,KAAK,IAAI;gBACrB,SAAS,CAAC,OAAO;gBACjB,CAAC,uDAAe,CAAC,eAAe,CAAC,YAAY,EAAE,SAAS,CAAC,OAAO,CAAC,EACjE;gBACA,OAAO,IAAI,CAAC;aACb;YAED,MAAM,SAAS,GAAG,8DAAmB,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;YACvD,IAAI,kBAAkB,GAAyB,EAAE,CAAC;YAElD,IAAI,SAAS,CAAC,cAAc,EAAE;gBAC5B,kBAAkB,GAAG,SAAS,CAAC,cAAc,CAAC,GAAG,CAC/C,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;oBACf,KAAK,EAAE,UAAU;iBAClB,CAAC,CACH,CAAC;aACH;YAED,MAAM,aAAa,GAAG,IAAI,CAAC,YAAY,CAAC,kBAAkB,EAAE,YAAY,CAAC,CAAC;YAE1E,MAAM,QAAQ,GAAa;gBACzB,KAAK,EAAE,SAAS,CAAC,KAAK;gBACtB,KAAK,EAAE,SAAS,CAAC,KAAK;gBACtB,IAAI,EAAE,SAAS,CAAC,IAAI;gBACpB,UAAU,EAAE,SAAS,CAAC,UAAU;gBAChC,UAAU,EAAE,KAAK;gBACjB,QAAQ,EAAE,aAAa;gBACvB,OAAO,EAAE,SAAS,CAAC,OAAO;aAC3B,CAAC;YAEF,OAAO,QAAQ,CAAC;QAClB,CAAC,CAAC,CAAC;QAEH,OAAO,SAAS,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC;IACnD,CAAC;IAED,uBAAuB,CAAC,KAAa;QACnC,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC;QAC7B,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CACnD,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,KAAK,KAAK,KAAK,CAC3B,CAAC;QAEF,IACE,CAAC,UAAU;YACX,QAAQ;YACR,QAAQ,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EACnD;YACA,OAAO,IAAI,CAAC;SACb;QAED,MAAM,EAAE,eAAe,EAAE,GAAG,8DAAmB,CAAC,KAAK,CAAC,CAAC;QAEvD,IACE,eAAe;YACf,eAAe,CAAC,IAAI,CAAC,CAAC,cAAc,EAAE,EAAE,CAAC,GAAG,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC,EACtE;YACA,OAAO,IAAI,CAAC;SACb;QAED,OAAO,KAAK,CAAC;IACf,CAAC;IAED,gBAAgB,CAAC,KAAa;QAC5B,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC;QAC7B,MAAM,EAAE,eAAe,EAAE,GAAG,8DAAmB,CAAC,KAAK,CAAC,CAAC;QAEvD,IACE,eAAe,IAAI,eAAe,CAAC,IAAI,CAAC,CAAC,cAAc,EAAE,EAAE,CAAC,GAAG,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC,EACzF;YACA,OAAO,IAAI,CAAC;SACb;QACD,IAAG,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAC;YACrB,OAAO,IAAI,CAAC;SACb;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IAED,qBAAqB,CAAC,KAAY,EAAE,IAAc;QAChD,KAAK,CAAC,eAAe,EAAE,CAAC;QACxB,KAAK,CAAC,cAAc,EAAE,CAAC;QACvB,IAAI,CAAC,UAAU,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC;IACrC,CAAC;IAED,eAAe,CAAC,IAAc;QAC5B,IAAI,CAAC,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE;YAChD,OAAO;SACR;QAED,IAAI,IAAI,CAAC,UAAU,EAAE;YACnB,MAAM,GAAG,GAAG,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC;YAE1C,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;SACjC;QAED,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;IACzB,CAAC;IAED,uBAAuB;QACrB,IAAI,CAAC,oBAAoB,GAAG,CAAC,IAAI,CAAC,oBAAoB,CAAC;QACvD,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;IAC3D,CAAC;CAGF;;YA1KiC,2DAAmB;YAChC,sDAAM;YACD,qDAAW;;AATzB;IAAT,4DAAM,EAAE;8BAAsB,0DAAY;mEAEzC;AAHS,sBAAsB;IAJlC,+DAAS,CAAC;QACT,QAAQ,EAAE,6BAA6B;QACvC,wNAA8C;KAC/C,CAAC;qCASgC,2DAAmB;QAChC,sDAAM;QACD,qDAAW;GAVxB,sBAAsB,CAkLlC;AAlLkC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACtBiE;AACnB;AAE5B;AACwD;AACjD;AACd;AACmB;AACjB;AAOhD,IAAa,8BAA8B,GAA3C,MAAa,8BAA+B,SAAQ,yDAAiB;IAqCnE,YACE,WAAwB;QAExB,KAAK,EAAE,CAAC;QAvCV,cAAS,GAAG,IAAI,CAAC;QACjB,eAAU,GAAG,KAAK,CAAC;QAMnB,WAAM,GAAgD,IAAI,0DAAY,EAAiC,CAAC;QAGxG,aAAQ,GAAsB,IAAI,0DAAY,EAAO,CAAC;QAStD,gBAAW,GAAsB,IAAI,0DAAY,EAAO,CAAC;QAIzD,gBAAW,GAAG,iEAAU,CAAC;QAIzB,uBAAkB,GAA4C,EAAE,CAAC;QAa/D,IAAI,CAAC,eAAe,GAAG,MAAM,CAAC,IAAI,CAAC,6EAAsB,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,0EAAmB,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QACnI,IAAI,CAAC,cAAc,GAAG,WAAW,CAAC,KAAK,CAAC;YACtC,IAAI,EAAE;gBACJ,IAAI;gBACJ,yDAAU,CAAC,OAAO,CAAC;oBACjB,yDAAU,CAAC,QAAQ;iBACpB,CAAC;aACH;YACD,OAAO,EAAE;gBACP,IAAI;gBACJ,yDAAU,CAAC,OAAO,CAAC;oBACjB,yDAAU,CAAC,QAAQ;iBACpB,CAAC;aACH;YACD,IAAI,EAAE;gBACJ,EAAE;gBACF,yDAAU,CAAC,OAAO,CAAC;oBACjB,yDAAU,CAAC,QAAQ;oBACnB,yDAAU,CAAC,SAAS,CAAC,CAAC,CAAC;oBACvB,yDAAU,CAAC,SAAS,CAAC,EAAE,CAAC;iBACzB,CAAC;aACH;YACD,iCAAiC,EAAE;gBACjC,IAAI;gBACJ,yDAAU,CAAC,OAAO,CAAC;oBACjB,yDAAU,CAAC,QAAQ;oBACnB,yEAAe;oBACf,yDAAU,CAAC,GAAG,CAAC,CAAC,CAAC;oBACjB,yDAAU,CAAC,GAAG,CAAC,KAAK,CAAC;iBACtB,CAAC;aACH;YACD,kCAAkC,EAAE;gBAClC,IAAI;gBACJ,yDAAU,CAAC,OAAO,CAAC;oBACjB,yDAAU,CAAC,QAAQ;oBACnB,yEAAe;oBACf,yDAAU,CAAC,GAAG,CAAC,CAAC,CAAC;oBACjB,yDAAU,CAAC,GAAG,CAAC,KAAK,CAAC;iBACtB,CAAC;aACH;YACD,0BAA0B,EAAE;gBAC1B,IAAI;aACL;YACD,oBAAoB,EAAE;gBACpB,IAAI;gBACJ,yDAAU,CAAC,OAAO,CAAC;oBACjB,yDAAU,CAAC,QAAQ;oBACnB,yEAAe;oBACf,yDAAU,CAAC,GAAG,CAAC,CAAC,CAAC;oBACjB,yDAAU,CAAC,GAAG,CAAC,KAAK,CAAC;iBACtB,CAAC;aACH;YACD,uBAAuB,EAAE;gBACvB,IAAI;gBACJ,yDAAU,CAAC,OAAO,CAAC;oBACjB,yDAAU,CAAC,QAAQ;oBACnB,yDAAU,CAAC,GAAG,CAAC,CAAC,CAAC;oBACjB,yDAAU,CAAC,GAAG,CAAC,EAAE,CAAC;iBACnB,CAAC;aACH;YACD,iCAAiC,EAAE;gBACjC,IAAI;gBACJ,yDAAU,CAAC,OAAO,CAAC;oBACjB,yDAAU,CAAC,QAAQ;oBACnB,yEAAe;oBACf,yDAAU,CAAC,GAAG,CAAC,CAAC,CAAC;oBACjB,yDAAU,CAAC,GAAG,CAAC,KAAK,CAAC;iBACtB,CAAC;aACH;YACD,oCAAoC,EAAE;gBACpC,IAAI;gBACJ,yDAAU,CAAC,OAAO,CAAC;oBACjB,yDAAU,CAAC,QAAQ;oBACnB,yDAAU,CAAC,GAAG,CAAC,CAAC,CAAC;oBACjB,yDAAU,CAAC,GAAG,CAAC,EAAE,CAAC;iBACnB,CAAC;aACH;SACF,CAAC;IACJ,CAAC;IAtFD,IAAI,UAAU;QACZ,OAAO,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,UAAU,CAAC,OAAO,IAAI,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC;IAC1F,CAAC;IAsFD,QAAQ;QACN,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;QACvB,IAAI,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE;YAC1C,OAAO,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,MAAM,CAAC;YACzC,IAAI,CAAC,cAAc,CAAC,sBAAsB,EAAE,CAAC;SAC9C;QACD,IAAI,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE;YAC/B,OAAO;SACR;QAED,IAAI,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,0BAA0B,CAAC,KAAK,IAAI,EAAE;YAAE,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,0BAA0B,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QAChJ,IAAI,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,0BAA0B,CAAC,KAAK,IAAI,IAAI,EAAE;YACzE,IAAI,OAAO,GAAG,QAAQ,CAAC,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,0BAA0B,CAAC,KAAK,CAAC,CAAC;YACtF,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,OAAO,GAAG,CAAC,IAAI,OAAO,GAAG,KAAK,EAAE;gBACpD,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,0BAA0B,CAAC,SAAS,CAAC,EAAE,eAAe,EAAE,IAAI,EAAE,CAAC;gBAC5F,OAAO;aACR;YACD,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,0BAA0B,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;SAC3E;QAED,MAAM,SAAS,GAAG,kBACb,IAAI,CAAC,UAAU,EACf,IAAI,CAAC,cAAc,CAAC,KAAK,CACP,CAAC;QAExB,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC,EAAE;YACpC,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC;gBAC5B,MAAM,EAAE,2DAA2D;aACpE,CAAC,CAAC;YACH,OAAO;SACR;QAED,MAAM,kBAAkB,GAAG,IAAI,CAAC,wBAAwB,CAAC,SAAS,CAAC,CAAC;QACpE,IAAI,kBAAkB,IAAI,kBAAkB,CAAC,MAAM,GAAG,CAAC,EAAE;YACvD,yDAAiB,CAAC,+BAA+B,CAAC,IAAI,CAAC,cAAc,EAAE,kBAAkB,CAAC,CAAC;YAC3F,OAAO;SACR;QAED,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;QAC/C,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;QACtB,IAAI,CAAC,UAAU,EAAE,CAAC;IACpB,CAAC;IAED,kBAAkB;QAChB,KAAK,CAAC,kBAAkB,EAAE,CAAC;IAC7B,CAAC;IAEM,IAAI,CAAC,KAAa,EAAE,WAAmB,EAAE,YAAgC,IAAI;QAClF,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC,SAAS,CAAC;QAC9B,IAAI,CAAC,UAAU,GAAG,SAAS,IAAI,IAAI,0DAAkB,EAAE,CAAC;QACxD,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC;QAC9B,IAAI,CAAC,aAAa,EAAE,CAAC;QACrB,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;QACpB,IAAI,CAAC,YAAY,GAAG,WAAW,CAAC;QAChC,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;IACzB,CAAC;IAED,YAAY;QACV,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;QACtB,IAAI,CAAC,UAAU,EAAE,CAAC;QAClB,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC;IAC1B,CAAC;IAED,aAAa;QACX,MAAM,aAAa,GAAG,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC;QAC5D,IAAI,CAAC,kBAAkB,GAAG,CAAC,CAAC,aAAa,IAAI,aAAa,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,6EAAsB,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;aACzH,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,6EAAsB,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IACjF,CAAC;IAEO,UAAU;QAChB,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,CAAC;QAC5B,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;QACvB,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;IAC1B,CAAC;IAEO,aAAa,CAAC,SAA6B;QACjD,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,CAAC;QAC5B,IAAI,SAAS,EAAE;YACb,MAAM,EACJ,IAAI,EACJ,OAAO,EACP,IAAI,EACJ,iCAAiC,EACjC,kCAAkC,EAClC,0BAA0B,EAC1B,oBAAoB,EACpB,uBAAuB,EACvB,iCAAiC,EACjC,oCAAoC,EACrC,GAAG,SAAS,CAAC;YACd,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC;gBAC3B,IAAI;gBACJ,OAAO;gBACP,IAAI;gBACJ,iCAAiC;gBACjC,kCAAkC;gBAClC,0BAA0B;gBAC1B,oBAAoB;gBACpB,uBAAuB;gBACvB,iCAAiC;gBACjC,oCAAoC;aACrC,CAAC,CAAC;SACJ;IACH,CAAC;IAED,QAAQ,CAAC,OAAoB;QAC3B,OAAO,OAAO,CAAC,KAAK,IAAI,OAAO,CAAC,KAAK,KAAK,CAAC,CAAC;IAC9C,CAAC;CACF;;YA/LgB,0DAAW;;AA9B1B;IADC,4DAAM,EAAE;8BACD,0DAAY;8DAAoF;AAGxG;IADC,4DAAM,EAAE;8BACC,0DAAY;gEAAgC;AAGtD;IADC,2DAAK,EAAE;;uEACoD;AAG5D;IADC,2DAAK,EAAE;;gFACsE;AAG9E;IADC,4DAAM,EAAE;8BACI,0DAAY;mEAAgC;AApB9C,8BAA8B;IAL1C,+DAAS,CAAC;QACT,QAAQ,EAAE,uCAAuC;QACjD,6PAAwD;KAEzD,CAAC;qCAuCe,0DAAW;GAtCf,8BAA8B,CAqO1C;AArO0C;;;;;;;;;;;;;;;;;;;;ACfU;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACAmB;AAOxE,IAAa,wCAAwC,GAArD,MAAa,wCAAwC;IAEnD;QAEU,WAAM,GAAG,IAAI,0DAAY,EAAO,CAAC;QAE3C,WAAM,GAAG,EAAE,CAAC;QACZ,cAAS,GAAG,EAAE,CAAC;QACf,cAAS,GAAG,IAAI,CAAC;IAND,CAAC;IASjB,QAAQ;IACR,CAAC;IAED,YAAY;QACV,IAAI,IAAI,CAAC,UAAU,IAAI,SAAS,EAAE;YAChC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;SACnC;aAAM;YACL,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;SACpB;QAED,IAAI,CAAC,QAAQ,EAAE,CAAC;IAClB,CAAC;IAEM,gBAAgB,CAAC,KAAa,EAAE,QAAgB,EAAE,YAAiB,SAAS;QACjF,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;QACpB,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC;QAE1B,IAAI,SAAS,IAAI,SAAS,EAAE;YAC1B,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC;SAC7B;QACD,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;IACzB,CAAC;IAEM,QAAQ;QACb,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;IACxB,CAAC;CACF;AAjCW;IAAT,4DAAM,EAAE;;wEAAkC;AAJhC,wCAAwC;IALpD,+DAAS,CAAC;QACT,QAAQ,EAAE,kDAAkD;QAC5D,8RAAmE;KAEpE,CAAC;;GACW,wCAAwC,CAqCpD;AArCoD;;;;;;;;;;;;;;;;;;;;ACPW;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACAQ;AAOxE,IAAa,uCAAuC,GAApD,MAAa,uCAAuC;IAElD;QAEU,eAAU,GAAG,IAAI,0DAAY,EAAE,CAAC;QAChC,oBAAe,GAAG,IAAI,0DAAY,EAAE,CAAC;QAE/C,eAAU,GAAW,EAAE,CAAC;QACxB,cAAS,GAAG,IAAI,CAAC;IAND,CAAC;IAQjB,QAAQ;IACR,CAAC;IAED,IAAI;QACF,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC;QACvB,IAAI,CAAC,QAAQ,EAAE,CAAC;IAClB,CAAC;IAED,SAAS;QACP,IAAI,CAAC,eAAe,CAAC,IAAI,EAAE,CAAC;QAC5B,IAAI,CAAC,QAAQ,EAAE,CAAC;IAClB,CAAC;IAEM,gBAAgB,CAAC,QAAgB,wBAAwB;QAC9D,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;QACxB,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;IACzB,CAAC;IAEM,QAAQ;QACb,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;IACxB,CAAC;CACF;AA3BW;IAAT,4DAAM,EAAE;;2EAAiC;AAChC;IAAT,4DAAM,EAAE;;gFAAsC;AALpC,uCAAuC;IALnD,+DAAS,CAAC;QACT,QAAQ,EAAE,iDAAiD;QAC3D,2RAAkE;KAEnE,CAAC;;GACW,uCAAuC,CA+BnD;AA/BmD;;;;;;;;;;;;;;;;;;;;ACPW;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACAC;AAOhE,IAAa,wBAAwB,GAArC,MAAa,wBAAwB;IAOnC;QANA,cAAS,GAAG,IAAI,CAAC;QACjB,kCAA6B,GAAG,IAAI,CAAC;QACrC,4BAAuB,GAAW,EAAE,CAAC;QACrC,4BAAuB,GAAW,EAAE,CAAC;QACrC,YAAO,GAAG,IAAI,0DAAY,EAAW,CAAC;IAEtB,CAAC;IAEjB,QAAQ;IACR,CAAC;IAED,iCAAiC,CAAC,WAAmB,EAAE,WAAmB,EAAE,WAAmB,EAAE,WAAmB;QAClH,IAAI,CAAC,iBAAiB,CAAC,WAAW,EAAE,WAAW,EAAE,WAAW,EAAE,WAAW,CAAC,CAAC;QAC3E,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;QACvB,IAAI,CAAC,6BAA6B,GAAG,IAAI,CAAC;IAC5C,CAAC;IACD,OAAO;QACL,IAAI,CAAC,QAAQ,EAAE,CAAC;IAClB,CAAC;IAED,QAAQ;QACN,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACzB,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;IACxB,CAAC;IAED,QAAQ;QACN,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACxB,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;IACxB,CAAC;IAEO,iBAAiB,CAAC,WAAmB,EAAE,WAAmB,EAAE,WAAmB,EAAE,WAAmB;QAC1G,IAAI,CAAC,uBAAuB,GAAG,gEAAgE,WAAW,iBAAiB,CAAC;QAC5H,IAAI,CAAC,uBAAuB,GAAG,wEAAwE,WAAW,cAAc,CAAC;QACjI,IAAI,WAAW,IAAI,WAAW,EAAE;YAC9B,IAAI,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,WAAW,GAAG,WAAW,CAAC,GAAG,GAAG,GAAG,WAAW,GAAG,EAAE,CAAC,GAAG,EAAE,CAAC;YAChG,yEAAyE;YACzE,IAAI,CAAC,uBAAuB,IAAI,MAAM;kBAClC,0DAA0D,WAAW,sBAAsB;kBAC3F,yCAAyC,WAAW,UAAU,CAAC;SACpE;QACD,IAAI,WAAW,IAAI,WAAW,EAAE;YAC9B,IAAI,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,WAAW,GAAG,WAAW,CAAC,GAAG,GAAG,GAAG,WAAW,GAAG,EAAE,CAAC,GAAG,EAAE,CAAC;YAChG,mEAAmE;YACnE,IAAI,CAAC,uBAAuB,IAAI,MAAM;kBAClC,yDAAyD,WAAW,mBAAmB;kBACvF,yCAAyC,WAAW,UAAU,CAAC;SACpE;IACH,CAAC;CACF;AAjDY,wBAAwB;IALpC,+DAAS,CAAC;QACT,QAAQ,EAAE,gCAAgC;QAC1C,wOAAiD;KAElD,CAAC;;GACW,wBAAwB,CAiDpC;AAjDoC;;;;;;;;;;;;;;;;;;;;ACPQ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACA2B;AACpB;AAQpD,IAAa,yBAAyB,GAAtC,MAAa,yBAAyB;IAWpC;QAVU,mBAAc,GAAG,IAAI,0DAAY,EAAsB,CAAC;QAElE,cAAS,GAAY,IAAI,CAAC;QAC1B,kBAAa,GAAG,yDAAkB,CAAC;QACnC,yBAAoB,GAAuB,IAAI,CAAC;IAMhC,CAAC;IAJjB,IAAI,cAAc;QAChB,OAAO,IAAI,CAAC,oBAAoB,IAAI,IAAI,CAAC;IAC3C,CAAC;IAID,QAAQ;IACR,CAAC;IAEM,iBAAiB,CAAC,WAA+B;QACtD,IAAI,CAAC,oBAAoB,GAAG,WAAW,CAAC;IAC1C,CAAC;IAEM,aAAa;QAClB,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;QACpD,IAAI,CAAC,QAAQ,EAAE,CAAC;IAClB,CAAC;IAEM,gBAAgB;QACrB,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;IACzB,CAAC;IAEM,QAAQ;QACb,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC;QACjC,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;IACxB,CAAC;CAEF;AAjCW;IAAT,4DAAM,EAAE;;iEAAyD;AADvD,yBAAyB;IANrC,+DAAS,CAAC;QACT,QAAQ,EAAE,kCAAkC;QAC5C,8OAAmD;KAEpD,CAAC;;GAEW,yBAAyB,CAkCrC;AAlCqC;;;;;;;;;;;;;;;;;;;;ACTS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACAc;AAEN;AAG0C;AAOjG,IAAa,iCAAiC,GAA9C,MAAa,iCAAiC;IAmB5C,YACU,iBAA6C;QAA7C,sBAAiB,GAAjB,iBAAiB,CAA4B;QAnBvD,cAAS,GAAY,IAAI,CAAC;QAC1B,aAAQ,GAAY,KAAK,CAAC;IAmBtB,CAAC;IAdL,IAAI,QAAQ;QACV,IAAI,CAAC,IAAI,CAAC,uBAAuB,EAAE;YACjC,OAAO,EAAE,CAAC;SACX;QAED,OAAO,IAAI,CAAC,uBAAuB,CAAC,OAAO,CAAC;IAC9C,CAAC;IAED,IAAI,YAAY;QACd,OAAO,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,IAAI,CAAC,cAAc,GAAG,UAAU,CAAC,CAAC,CAAC,YAAY;IAC9E,CAAC;IAMD,QAAQ;QACN,IAAI,CAAC,YAAY;YACf,IAAI,CAAC,iBAAiB,CAAC,uBAAuB,CAAC,SAAS,CACtD,sBAAsB,CAAC,EAAE;gBACvB,IAAI,CAAC,sBAAsB,EAAE;oBAC3B,OAAO;iBACR;gBACD,IAAI,CAAC,cAAc,GAAG,sBAAsB,CAAC,IAAI,CAAC;gBAClD,IAAI,CAAC,cAAc,CAAC,sBAAsB,CAAC,CAAC;gBAC5C,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;YACxB,CAAC,CACF,CAAC;IACN,CAAC;IAED,WAAW;QACT,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,YAAY,CAAC,WAAW,EAAE,CAAC;IACvD,CAAC;IAEM,QAAQ;QACb,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;QACtB,IAAI,CAAC,cAAc,GAAG,IAAI;QAC1B,IAAI,CAAC,uBAAuB,GAAG,IAAI,CAAC;QACpC,IAAI,CAAC,iBAAiB,CAAC,uBAAuB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC5D,CAAC;IAEY,YAAY,CAAC,WAAmB;;YAC3C,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;YACvB,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;YACrB,IAAI,CAAC,iBAAiB,CAAC,yBAAyB,CAAC,WAAW,CAAC,CAAC;QAChE,CAAC;KAAA;IAED,cAAc,CAAC,sBAA0D;QACvE,MAAM,0BAA0B,qBAC3B,sBAAsB,IACzB,OAAO,EAAE,sBAAsB,CAAC,OAAO;iBACpC,IAAI,CAAC,IAAI,CAAC,qCAAqC,CAAC;iBAChD,GAAG,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,CAAC,mBAAM,CAAC,IAAE,KAAK,EAAE,KAAK,GAAG,CAAC,IAAG,CAAC,GACnD,CAAC;QAEF,IAAI,CAAC,uBAAuB,GAAG,0BAA0B,CAAC;IAC5D,CAAC;IAED,qCAAqC,CACnC,CAAkC,EAClC,CAAkC;QAElC,MAAM,OAAO,GAAG,GAAG,2DAAgB,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,+DAAoB,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CACjF,GAAG,8DAAmB,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC;QACtC,MAAM,OAAO,GAAG,GAAG,2DAAgB,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,+DAAoB,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CACjF,GAAG,8DAAmB,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC;QAEtC,IAAI,OAAO,GAAG,OAAO,EAAE;YACrB,OAAO,CAAC,CAAC,CAAC;SACX;QAED,IAAI,OAAO,GAAG,OAAO,EAAE;YACrB,OAAO,CAAC,CAAC;SACV;QAED,OAAO,CAAC,CAAC;IACX,CAAC;CACF;;YAhE8B,oEAA0B;;AApB5C,iCAAiC;IAL7C,+DAAS,CAAC;QACT,QAAQ,EAAE,0CAA0C;QACpD,sQAA2D;KAE5D,CAAC;qCAqB6B,oEAA0B;GApB5C,iCAAiC,CAoF7C;AApF6C;;;;;;;;;;;;;;;;;;;;ACZU;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACAN;AAElB;AAEoB;AAKnC;AAC+B;AAMhD,IAAa,qCAAqC,6CAAlD,MAAa,qCAAqC;IAShD,YAAoB,iBAA0C;QAA1C,sBAAiB,GAAjB,iBAAiB,CAAyB;QAN9D,cAAS,GAAG,IAAI,CAAC;QACjB,iBAAY,GAAG,KAAK,CAAC;QACrB,oBAAe,GAAe,EAAE,CAAC;QACjC,4BAAuB,GAAe,EAAE,CAAC;IAGyB,CAAC;IAEnE,QAAQ;IACR,CAAC;IAEM,IAAI,CACT,iBAAiD,EACjD,UAAkB,EAAE,WAAmB;QAEvC,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;QACvB,IAAI,CAAC,WAAW,GAAG,UAAU,CAAC;QAC9B,IAAI,CAAC,uBAAuB,GAAG,EAAE,CAAC;QAClC,IAAI,CAAC,0BAA0B,CAAC,iBAAiB,EAAE,WAAW,CAAC,CAAC;IAClE,CAAC;IAED,QAAQ;QACN,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;IACxB,CAAC;IAEK,QAAQ;;YACZ,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;YAEzB,MAAM,MAAM,GAA4B,IAAI,+DAAuB,EAAE,CAAC;YAEtE,MAAM,CAAC,YAAY,GAAG,IAAI,CAAC,uBAAuB;iBAC/C,GAAG,CAAS,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC;iBAC5B,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,qDAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;YAC5B,MAAM,CAAC,QAAQ,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC,eAAe,EAAE,CAAC,QAAQ,CAAC;YAEnE,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,iBAAiB,CAAC,6BAA6B,CACvE,MAAM,CACP,CAAC;YAEF,IAAI,CAAC,CAAC,MAAM,YAAY,kDAAU,CAAC,EAAE;gBACnC,MAAM,QAAQ,GAAG,uBAAuB,GAAG,IAAI,IAAI,EAAE,CAAC,cAAc,EAAE,CAAC;gBACvE,MAAM,GAAG,GAAG,GAAG,CAAC,eAAe,CAAC,MAAc,CAAC,CAAC;gBAChD,MAAM,YAAY,GAAG,QAAQ,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;gBACjD,YAAY,CAAC,IAAI,GAAG,GAAG,CAAC;gBACxB,YAAY,CAAC,QAAQ,GAAG,QAAQ,CAAC;gBACjC,YAAY,CAAC,KAAK,EAAE,CAAC;gBACrB,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;aACvB;YAED,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;QAC5B,CAAC;KAAA;IAED,YAAY,CAAC,KAAU;QACrB,IAAI,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE;YACpC,IAAI,CAAC,cAAc,EAAE,CAAC;SACvB;IACH,CAAC;IAED,cAAc,CAAC,KAAU;QACvB,IAAI,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE;YACpC,IAAI,CAAC,gBAAgB,EAAE,CAAC;YAExB,OAAO;SACR;QAED,IAAI,CAAC,uBAAuB,GAAG,IAAI,CAAC,uBAAuB,CAAC,MAAM,CAChE,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,CAC9B,CAAC;IACJ,CAAC;IAEO,0BAA0B,CAChC,iBAAiD,EAAE,WAAmB;QAEtE,MAAM,EAAE,UAAU,EAAE,GAAG,uCAAqC,CAAC;QAE7D,MAAM,cAAc,GAAa;YAC/B,KAAK,EAAE,UAAU;YACjB,IAAI,EAAE,UAAU;YAChB,GAAG,EAAE,UAAU;SAChB,CAAC;QAEF,MAAM,gBAAgB,GAAG,iBAAiB,CAAC,IAAI,CAC7C,QAAQ,CAAC,EAAE,CAAC,QAAQ,CAAC,EAAE,KAAK,IAAI,CAAC,WAAW,CAC7C,CAAC;QAEF,IAAI,CAAC,eAAe,GAAG;YACrB,cAAc;YACd,GAAG,gBAAgB,CAAC,UAAU,CAAC,GAAG,CAChC,qEAA6B,CAAC,yBAAyB,CACxD;SACF,CAAC;QACF,MAAM,cAAc,GAAG,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,IAAI,WAAW,CAAC,CAAC;QAC7E,IAAI,cAAc,IAAI,SAAS,EAAE;YAC/B,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;SACnD;IACH,CAAC;IAEO,cAAc;QACpB,IAAI,CAAC,uBAAuB,GAAG,CAAC,GAAG,IAAI,CAAC,eAAe,CAAC,CAAC;IAC3D,CAAC;IAEO,gBAAgB;QACtB,IAAI,CAAC,uBAAuB,GAAG,EAAE,CAAC;IACpC,CAAC;IAEO,eAAe,CAAC,IAAc;QACpC,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;QAClC,MAAM,EAAE,UAAU,EAAE,GAAG,uCAAqC,CAAC;QAE7D,OAAO,KAAK,KAAK,UAAU,IAAI,IAAI,KAAK,UAAU,IAAI,GAAG,KAAK,UAAU,CAAC;IAC3E,CAAC;CACF;AAjHQ,gDAAU,GAAG,YAAY,CAAC;;YAQM,iEAAuB;;AATnD,qCAAqC;IAJjD,+DAAS,CAAC;QACT,QAAQ,EAAE,gDAAgD;QAC1D,wRAAiE;KAClE,CAAC;qCAUuC,iEAAuB;GATnD,qCAAqC,CAkHjD;AAlHiD;;;;;;;;;;;;;;;;;;;;AChBY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACAE;AAC0B;AACT;AAOxD;AACqE;AACzC;AACiB;AACxB;AACc;AAC8B;AAChB;AACwB;AAOlG,IAAa,6BAA6B,GAA1C,MAAa,6BAA8B,SAAQ,yDAAiB;IAmClE,YACU,YAAyB,EACzB,oBAAmD,EACnD,gBAA4C,EAC5C,oBAAyC;QAEjD,KAAK,EAAE,CAAC;QALA,iBAAY,GAAZ,YAAY,CAAa;QACzB,yBAAoB,GAApB,oBAAoB,CAA+B;QACnD,qBAAgB,GAAhB,gBAAgB,CAA4B;QAC5C,yBAAoB,GAApB,oBAAoB,CAAqB;QAnCnD,cAAS,GAAG,IAAI,CAAC;QACjB,eAAU,GAAG,KAAK,CAAC;QACnB,gBAAW,GAAG,KAAK,CAAC;QACpB,4BAAuB,GAAG,KAAK,CAAC;QAEhC,4BAAuB,GAAG;YACxB,EAAE,KAAK,EAAE,YAAY,EAAE,KAAK,EAAE,0DAAmB,CAAC,UAAU,EAAE;YAC9D,EAAE,KAAK,EAAE,YAAY,EAAE,KAAK,EAAE,0DAAmB,CAAC,aAAa,EAAE;YACjE,EAAE,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,0DAAmB,CAAC,SAAS,EAAE;YAC3D,EAAE,KAAK,EAAE,WAAW,EAAE,KAAK,EAAE,0DAAmB,CAAC,YAAY,EAAE;YAC/D,EAAE,KAAK,EAAE,WAAW,EAAE,KAAK,EAAE,0DAAmB,CAAC,WAAW,EAAE;SAC/D,CAAC;QAGF,qBAAgB,GAA8C,EAAE,CAAC;QACjE,gBAAW,GAAG,mEAAa,CAAC;QAK5B,gBAAW,GAA4C,KAAK,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,cAAc,EAAE,EAAE,KAAK,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;QAI/I,oBAAe,GAAG,MAAM,CAAC;QACzB,wBAAmB,GAAG,QAAQ,CAAC;QAE/B,iCAA4B,GAAG,EAAE,GAAG,EAAE,EAAE,OAAO,EAAE,IAAI,MAAM,CAAC,oBAAoB,CAAC,EAAE,EAAE,CAAC;QAE9E,mBAAc,GAAmB,EAAE,CAAC;IAS5C,CAAC;IAED,QAAQ;QACN,KAAK,CAAC,QAAQ,EAAE,CAAC;QACjB,MAAM,IAAI,GAAG,IAAI,CAAC,oBAAoB,CAAC,YAAY,EAAE,CAAC;QACtD,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;QAEpC,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,4DAAiB,CAAC,EAAE;YAC5D,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;SAClE;QACD,IAAI,IAAI,CAAC,IAAI,IAAI,qDAAY,CAAC,WAAW,EAAE;YACzC,IAAI,CAAC,YAAY,GAAG,IAAI,qEAA6B,EAAE,CAAC;YACxD,IAAI,eAAe,GAAG,IAAI,CAAC,oBAAoB,CAAC,aAAa,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE;gBAC7E,IAAI,IAAI,EAAE;oBACR,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,YAAY,EAAE,KAAK,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;iBAC9E;YACH,CAAC,CAAC,CAAC;YAEH,IAAI,CAAC,gBAAgB,CAAC,GAAG,EAAE,CAAC;YAE5B,IAAI,qBAAqB,GAAG,IAAI,CAAC,gBAAgB,CAAC,UAAU,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE;gBAC5E,IAAI,IAAI,EAAE;oBACR,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;iBACnE;YACH,CAAC,CAAC,CAAC;YAEH,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;YAC1C,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC;SACjD;IACH,CAAC;IAED,WAAW;QACT,KAAK,CAAC,WAAW,EAAE,CAAC;QACpB,IAAI,CAAC,cAAc,IAAI,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC,CAAC;QAC7E,IAAI,CAAC,cAAc,GAAG,EAAE,CAAC;IAC3B,CAAC;IAED,kBAAkB;QAChB,KAAK,CAAC,kBAAkB,EAAE,CAAC;IAC7B,CAAC;IACD,gBAAgB;QACd,IAAI,CAAC,YAAY,CAAC,mBAAmB,GAAG,IAAI,CAAC,wBAAwB,CAAC;QACtE,IAAI,IAAI,CAAC,wBAAwB,IAAI,mEAAa,CAAC,SAAS,EAAE;YAC5D,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,gBAAgB,CAAC,eAAe,EAAE,CAAC;YAC/D,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,gBAAgB,CAAC,OAAO,EAAE,CAAC;YACvD,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,gBAAgB,CAAC,sBAAsB,EAAE,CAAC;YACtE,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,QAAQ,CAAC,eAAe,EAAE,CAAC;YACvD,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC;YAC/C,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,QAAQ,CAAC,sBAAsB,EAAE,CAAC;SAC/D;aACI;YACH,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC;YAC9C,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,QAAQ,CAAC,aAAa,CAChD,yDAAU,CAAC,OAAO,CAAC;gBACjB,yDAAU,CAAC,QAAQ;gBACnB,yDAAiB,CAAC,WAAW;aAC9B,CAAC,CAAC,CAAC;YACN,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,QAAQ,CAAC,sBAAsB,EAAE,CAAC;YAC9D,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,gBAAgB,CAAC,MAAM,EAAE,CAAC;YACtD,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,gBAAgB,CAAC,aAAa,CACxD,yDAAU,CAAC,OAAO,CAAC;gBACjB,yDAAU,CAAC,QAAQ;gBACnB,yDAAiB,CAAC,mBAAmB;aACtC,CAAC,CAAC,CAAC;YACN,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,gBAAgB,CAAC,sBAAsB,EAAE,CAAC;SACvE;IACH,CAAC;IAEK,QAAQ;;YACZ,IAAI,CAAC,uBAAuB,GAAG,KAAK,CAAC;YACrC,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;YACvB,IAAI,IAAI,CAAC,aAAa,CAAC,OAAO,IAAI,IAAI,CAAC,wBAAwB,IAAI,SAAS,EAAE;gBAC5E,OAAO;aACR;YACD,MAAM,KAAK,GAAG,kBACT,IAAI,CAAC,YAAY,EACjB,IAAI,CAAC,aAAa,CAAC,KAAK,IAC3B,WAAW,EAAE,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,IAAI,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,KAAK,GAC5D,CAAC;YACnC,IAAI,IAAI,CAAC,wBAAwB,IAAI,mEAAa,CAAC,SAAS,EAAE;gBAC5D,KAAK,CAAC,gBAAgB,GAAG,IAAI,CAAC;gBAC9B,KAAK,CAAC,QAAQ,GAAG,IAAI,CAAC;aACvB;YAED,IAAI,CAAC,8BAA8B,CAAC,KAAK,CAAC,CAAC;YAC3C,IAAI,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE;gBAC9B,OAAO;aACR;YAED,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW;gBAC/B,CAAC,CAAC,MAAM,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,KAAK,CAAC;gBAC5C,CAAC,CAAC,MAAM,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAChD,IAAI,QAAQ,YAAY,mDAAU,IAAI,QAAQ,CAAC,IAAI,KAAK,sDAAa,CAAC,4BAA4B,EAAE;gBAClG,IAAI,CAAC,uBAAuB,GAAG,IAAI,CAAC;aACrC;iBAAM,IAAI,QAAQ,EAAE;gBACnB,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;gBACzB,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;gBACtB,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;gBACxB,IAAI,CAAC,uBAAuB,GAAG,KAAK,CAAC;gBAErC,IAAK,QAAiC,CAAC,uBAAuB,EAAE;oBAC9D,IAAI,CAAC,8BAA8B,CAAC,IAAI,EAAE,CAAC;iBAC5C;aACF;QACH,CAAC;KAAA;IAEK,cAAc,CAAC,OAAoB;;YACvC,OAAO,CAAC,aAAa,EAAE,CAAC;QAC1B,CAAC;KAAA;IAEK,aAAa,CAAC,OAAoB;;YACtC,OAAO,CAAC,eAAe,EAAE,CAAC;QAC5B,CAAC;KAAA;IAEK,OAAO;;YACX,IAAI,CAAC,oBAAoB,CAAC,8BAA8B,CAAC,IAAI,CAAC,YAAY,EAAE,KAAK,CAAC,CAAC;QACrF,CAAC;KAAA;IAEM,IAAI,CAAC,QAAwC;QAClD,IAAI,CAAC,WAAW,GAAG,CAAC,QAAQ,CAAC;QAC7B,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;QACxB,IAAI,CAAC,YAAY,GAAG,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,qEAA6B,EAAE,CAAC;QACjG,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;QACvB,IAAI,CAAC,wBAAwB,GAAG,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,mBAAmB,CAAC,CAAC,CAAC,SAAS,CAAC;QACpF,IAAI,CAAC,UAAU,EAAE,CAAC;IACpB,CAAC;IAEO,8BAA8B,CAAC,QAAuC;QAC5E,MAAM,aAAa,GAAkD,EAAE,CAAC;QACxE,IAAI,IAAI,CAAC,YAAY,CAAC,UAAU,EAAE;YAChC,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;SACpE;QAED,QAAQ,CAAC,SAAS,GAAG,sDAAW,CAAC,iBAAiB,CAAC;QACnD,MAAM,kBAAkB,GAAG,2DAAmB,CAAC,yBAAyB,CAAC,aAAa,EAAE,QAAQ,CAAC,CAAC;QAElG,IAAI,kBAAkB,IAAI,kBAAkB,CAAC,MAAM,GAAG,CAAC,EAAE;YACvD,yDAAiB,CAAC,+BAA+B,CAAC,IAAI,CAAC,aAAa,EAAE,kBAAkB,CAAC,CAAC;SAC3F;IACH,CAAC;IAEO,UAAU;QAChB,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC;YAC3C,UAAU,EAAE;gBACV,IAAI,CAAC,YAAY,CAAC,EAAE;gBACpB,yDAAU,CAAC,OAAO,CAAC;oBACjB,yDAAU,CAAC,QAAQ;iBACpB,CAAC;aACH;YACD,QAAQ,EAAE;gBACR,IAAI,CAAC,YAAY,CAAC,QAAQ;gBAC1B,yDAAU,CAAC,OAAO,CAAC;oBACjB,yDAAU,CAAC,QAAQ;oBACnB,yDAAiB,CAAC,WAAW;iBAC9B,CAAC;aACH;YACD,gBAAgB,EAAE;gBAChB,IAAI,CAAC,YAAY,CAAC,gBAAgB;gBAClC,yDAAU,CAAC,OAAO,CAAC;oBACjB,yDAAU,CAAC,QAAQ;oBACnB,yDAAiB,CAAC,mBAAmB;iBACtC,CAAC;aACH;YACD,KAAK,EAAE;gBACL,IAAI,CAAC,YAAY,CAAC,KAAK;gBACvB,yDAAU,CAAC,OAAO,CAAC;oBACjB,yDAAU,CAAC,QAAQ;oBACnB,yDAAiB,CAAC,WAAW;iBAC9B,CAAC;aACH;YACD,OAAO,EAAE;gBACP,IAAI,CAAC,YAAY,CAAC,OAAO;gBACzB,yDAAU,CAAC,OAAO,CAAC;oBACjB,yDAAU,CAAC,QAAQ;oBACnB,yDAAU,CAAC,GAAG,CAAC,CAAC,CAAC;oBACjB,yDAAU,CAAC,GAAG,CAAC,KAAK,CAAC;oBACrB,yEAAe;iBAChB,CAAC;aACH;YACD,eAAe,EAAE;gBACf,IAAI,CAAC,YAAY,CAAC,eAAe;gBACjC,yDAAU,CAAC,OAAO,CAAC;oBACjB,yDAAU,CAAC,QAAQ;oBACnB,yDAAU,CAAC,GAAG,CAAC,CAAC,CAAC;oBACjB,yDAAU,CAAC,GAAG,CAAC,KAAK,CAAC;oBACrB,yEAAe;iBAChB,CAAC;aACH;YACD,sBAAsB,EAAE;gBACtB,IAAI,CAAC,YAAY,CAAC,sBAAsB;gBACxC,yDAAU,CAAC,OAAO,CAAC;oBACjB,yDAAU,CAAC,QAAQ;iBACpB,CAAC;aACH;YACD,mBAAmB,EAAE;gBACnB,IAAI,CAAC,YAAY,CAAC,mBAAmB;gBACrC,yDAAU,CAAC,OAAO,CAAC;oBACjB,yDAAU,CAAC,QAAQ;oBACnB,yDAAU,CAAC,GAAG,CAAC,CAAC,CAAC;oBACjB,yDAAU,CAAC,GAAG,CAAC,KAAK,CAAC;oBACrB,yEAAe;iBAChB,CAAC;aACH;YACD,yBAAyB,EAAE;gBACzB,IAAI,CAAC,YAAY,CAAC,yBAAyB;gBAC3C,yDAAU,CAAC,OAAO,CAAC;oBACjB,yDAAU,CAAC,QAAQ;iBACpB,CAAC;aACH;YACD,sBAAsB,EAAE;gBACtB,IAAI,CAAC,YAAY,CAAC,sBAAsB;gBACxC,yDAAU,CAAC,OAAO,CAAC;oBACjB,yDAAU,CAAC,QAAQ;oBACnB,yDAAU,CAAC,GAAG,CAAC,CAAC,CAAC;oBACjB,yDAAU,CAAC,GAAG,CAAC,KAAK,CAAC;oBACrB,yEAAe;iBAChB,CAAC;aACH;YACD,4BAA4B,EAAE;gBAC5B,IAAI,CAAC,YAAY,CAAC,4BAA4B;gBAC9C,yDAAU,CAAC,OAAO,CAAC;oBACjB,yDAAU,CAAC,QAAQ;iBACpB,CAAC;aACH;YACD,yBAAyB,EAAE;gBACzB,IAAI,CAAC,YAAY,CAAC,yBAAyB;gBAC3C,yDAAU,CAAC,OAAO,CAAC;oBACjB,yDAAU,CAAC,QAAQ;oBACnB,yDAAU,CAAC,GAAG,CAAC,CAAC,CAAC;oBACjB,yDAAU,CAAC,GAAG,CAAC,KAAK,CAAC;oBACrB,yEAAe;iBAChB,CAAC;aACH;YACD,eAAe,EAAE;gBACf,IAAI,CAAC,YAAY,CAAC,mBAAmB;aACtC;SACF,CAAC,CAAC;QAEH,IAAI,IAAI,CAAC,wBAAwB,IAAI,mEAAa,CAAC,SAAS,EAAE;YAC5D,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,gBAAgB,CAAC,eAAe,EAAE,CAAC;YAC/D,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,gBAAgB,CAAC,OAAO,EAAE,CAAC;YACvD,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,gBAAgB,CAAC,sBAAsB,EAAE,CAAC;YACtE,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,QAAQ,CAAC,eAAe,EAAE,CAAC;YACvD,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC;YAC/C,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,QAAQ,CAAC,sBAAsB,EAAE,CAAC;SAC/D;IACH,CAAC;IAED,gBAAgB,CAAC,gBAA+B,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,mBAAmB,CAAC,CAAC,CAAC,IAAI;QAC9G,OAAO,+DAAoB,CAAC,YAAY,CAAC,aAAa,CAAC,CAAC;IAC1D,CAAC;CACF;;YAjQyB,0DAAW;YACH,uEAA6B;YACjC,oEAA0B;YACtB,4DAAmB;;AArCnD;IADC,+DAAS,CAAC,sFAA6B,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;8BACzC,sFAA6B;qFAAC;AAFnD,6BAA6B;IALzC,+DAAS,CAAC;QACT,QAAQ,EAAE,sCAAsC;QAChD,0PAAuD;KAExD,CAAC;qCAqCwB,0DAAW;QACH,uEAA6B;QACjC,oEAA0B;QACtB,4DAAmB;GAvCxC,6BAA6B,CAqSzC;AArSyC;;;;;;;;;;;;;;;;;;;;ACxBU;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACAyC;AAE5C;AAI1C,MAAM,iBAAiB;IAkB5B;QALQ,sBAAiB,GAAG,KAAK,CAAC;QAC1B,yBAAoB,GAAG,KAAK,CAAC;QAC7B,8BAAyB,GAAG,2BAA2B,CAAC;QACxD,iCAA4B,GAAG,8BAA8B,CAAC;IAEtD,CAAC;IAEjB,QAAQ;IACR,CAAC;IAED,kBAAkB;QAChB,IAAI,CAAC,IAAI,CAAC,iBAAiB,IAAI,IAAI,CAAC,aAAa,IAAI,IAAI,CAAC,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE;YAClF,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC;YAC9B,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;SAC1F;QACD,IAAI,CAAC,IAAI,CAAC,oBAAoB,IAAI,IAAI,CAAC,gBAAgB,IAAI,IAAI,CAAC,gBAAgB,CAAC,MAAM,GAAG,CAAC,EAAE;YAC3F,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC;YACjC,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,SAAS,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;SAC9F;IACH,CAAC;IAED,WAAW;QACT,IAAI,CAAC,qBAAqB,IAAI,IAAI,CAAC,qBAAqB,CAAC,OAAO,EAAE,CAAC;QACnE,IAAI,CAAC,4BAA4B,IAAI,IAAI,CAAC,4BAA4B,CAAC,OAAO,EAAE,CAAC;QACjF,IAAI,CAAC,yBAAyB,IAAI,IAAI,CAAC,yBAAyB,CAAC,OAAO,EAAE,CAAC;IAC7E,CAAC;IAED,cAAc,CAAC,KAAqB;QAClC,IAAI,EAAE,GAAG,KAAK,CAAC,OAAO,CAAC,sBAAsB,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC;QAC9E,IAAI,CAAC,uBAAuB,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IAC1C,CAAC;IAED,iBAAiB,CAAC,WAAwB;QACxC,IAAI,EAAE,GAAG,WAAW,CAAC,EAAE,CAAC,aAAa,CAAC,sBAAsB,CAAC,IAAI,CAAC,4BAA4B,CAAC,CAAC;QAChG,IAAI,CAAC,uBAAuB,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IAC1C,CAAC;IAES,mBAAmB,CAAC,OAAoB,EAAE,OAAgB;QAClE,IAAI,CAAC,qBAAqB,IAAI,IAAI,CAAC,qBAAqB,CAAC,OAAO,EAAE,CAAC;QAEnE,MAAM,mBAAmB,GAAG,GAAG,EAAE;YAC/B,IAAI,CAAC,qBAAqB,GAAG,IAAI,yDAAgB,CAAC,OAAO,CAAC,CAAC;QAC7D,CAAC,CAAC;QAEF,IAAI,OAAO,EAAE;YACX,UAAU,CAAC,GAAG,EAAE;gBACd,mBAAmB,EAAE,CAAC;YACxB,CAAC,EAAE,OAAO,CAAC,CAAC;SACb;aAAM;YACL,mBAAmB,EAAE,CAAC;SACvB;IACH,CAAC;IAES,oBAAoB,CAAC,OAAoB,EAAE,OAAgB;QACnE,IAAI,CAAC,yBAAyB,IAAI,IAAI,CAAC,yBAAyB,CAAC,OAAO,EAAE,CAAC;QAE3E,MAAM,mBAAmB,GAAG,GAAG,EAAE;YAC/B,IAAI,CAAC,yBAAyB,GAAG,IAAI,yDAAgB,CAAC,OAAO,CAAC,CAAC;QACjE,CAAC,CAAC;QAEF,IAAI,OAAO,EAAE;YACX,UAAU,CAAC,GAAG,EAAE;gBACd,mBAAmB,EAAE,CAAC;YACxB,CAAC,EAAE,OAAO,CAAC,CAAC;SACb;aAAM;YACL,mBAAmB,EAAE,CAAC;SACvB;IACH,CAAC;IAES,oBAAoB;QAC5B,IAAI,IAAI,CAAC,qBAAqB,EAAE;YAC9B,IAAI,CAAC,qBAAqB,CAAC,OAAO,EAAE,CAAC;SACtC;IACH,CAAC;IAES,qBAAqB;QAC7B,IAAI,CAAC,yBAAyB,IAAI,IAAI,CAAC,yBAAyB,CAAC,OAAO,EAAE,CAAC;IAC7E,CAAC;IAEO,uBAAuB,CAAC,OAAoB,EAAE,OAAgB;QACpE,IAAI,CAAC,4BAA4B,IAAI,IAAI,CAAC,4BAA4B,CAAC,OAAO,EAAE,CAAC;QAEjF,MAAM,mBAAmB,GAAG,GAAG,EAAE;YAC/B,IAAI,CAAC,4BAA4B,GAAG,IAAI,yDAAgB,CAAC,OAAO,CAAC,CAAC;QACpE,CAAC,CAAC;QAEF,IAAI,OAAO,EAAE;YACX,UAAU,CAAC,GAAG,EAAE;gBACd,mBAAmB,EAAE,CAAC;YACxB,CAAC,EAAE,OAAO,CAAC,CAAC;SACb;aAAM;YACL,mBAAmB,EAAE,CAAC;SACvB;IACH,CAAC;CACF;AAzGC;IADC,kEAAY,CAAC,oBAAoB,CAAC;8BACpB,uDAAS;wDAAW;AAGnC;IADC,kEAAY,CAAC,uBAAuB,CAAC;8BACpB,uDAAS;2DAAc;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACXkG;AAEzF;AACO;AAM3D,IAAa,kBAAkB,GAA/B,MAAa,kBAAmB,SAAQ,sEAAiB;IAoBvD,YACU,KAAwB;QAEhC,KAAK,EAAE,CAAC;QAFA,UAAK,GAAL,KAAK,CAAmB;QAZ3B,mBAAc,GAAG,IAAI,0DAAY,EAAW,CAAC;QAE7C,gBAAW,GAAG,IAAI,0DAAY,EAAO,CAAC;QAE7C,oBAAe,GAAG,yDAAiB,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QAG/C,cAAS,GAAG,EAAE,CAAC;QAEP,8BAAyB,GAAG,KAAK,CAAC;IAM1C,CAAC;IAED,QAAQ;IACR,CAAC;IAED,kBAAkB;QAChB,IAAI,CAAC,IAAI,CAAC,QAAQ,IAAI,CAAC,IAAI,CAAC,yBAAyB,EAAE;YACrD,IAAI,CAAC,yBAAyB,GAAG,IAAI,CAAC;YACtC,IAAI,CAAC,cAAc,EAAE,CAAC;SACvB;IACH,CAAC;IAED,WAAW;QACT,KAAK,CAAC,WAAW,EAAE,CAAC;IACtB,CAAC;IAED,OAAO;QACL,IAAI,CAAC,IAAI,CAAC,oBAAoB,EAAE;YAC9B,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;YACrB,IAAI,CAAC,yBAAyB,GAAG,KAAK,CAAC;YACvC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YACxC,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC;YAExB,IAAI,CAAC,oBAAoB,EAAE,CAAC;YAC5B,IAAI,CAAC,SAAS,GAAG,EAAE,CAAC;SACrB;aAAM;YACL,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC;SACzB;IACH,CAAC;IAGD,QAAQ;QACN,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;YAClB,IAAI,CAAC,cAAc,EAAE,CAAC;SACvB;IACH,CAAC;IAEO,cAAc;QACpB,IAAI,CAAC,SAAS,GAAG,EAAE,CAAC;QACpB,IAAI,CAAC,IAAI,CAAC,oBAAoB,EAAE;YAC9B,IAAI,CAAC,oBAAoB,GAAG,QAAQ,CAAC,cAAc,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;SAC3E;QAED,MAAM,MAAM,GAAG,IAAI,CAAC,oBAAoB,CAAC,YAAY,CAAC;QACtD,MAAM,cAAc,GAAG,QAAQ,CAAC,eAAe,CAAC,YAAY,CAAC;QAE7D,IAAI,MAAM,GAAG,cAAc,EAAE;YAC3B,8DAA8D;YAC9D,IAAI,CAAC,SAAS,GAAG,CAAC,cAAc,GAAG,EAAE,CAAC,GAAG,IAAI,CAAC;YAC9C,IAAI,CAAC,KAAK,CAAC,aAAa,EAAE,CAAC;YAC3B,KAAK,CAAC,mBAAmB,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;SACtD;aAAM;YACL,KAAK,CAAC,oBAAoB,EAAE,CAAC;SAC9B;IACH,CAAC;CACF;;YA1DkB,+DAAiB;;AAlBlC;IADC,2DAAK,EAAE;;oDACiB;AAEzB;IADC,2DAAK,EAAE;;gEAC6B;AAErC;IADC,2DAAK,EAAE;;mEACgC;AAExC;IADC,4DAAM,EAAE;;0DAC2C;AAEpD;IADC,4DAAM,EAAE;;uDACoC;AA4C7C;IADC,kEAAY,CAAC,gBAAgB,EAAE,CAAC,eAAe,CAAC,CAAC;;;;kDAKjD;AA3DU,kBAAkB;IAJ9B,+DAAS,CAAC;QACT,QAAQ,EAAE,yBAAyB;QACnC,0NAA0C;KAC3C,CAAC;qCAsBiB,+DAAiB;GArBvB,kBAAkB,CA+E9B;AA/E8B;;;;;;;;;;;;;;;;;;;;ACTQ;;;;;;;;;;;;;;;;;;;;;;;ACAV;AACS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACDY;AACkB;AAEL;AACc;AAQ7E,IAAa,8BAA8B,GAA3C,MAAa,8BAA8B;IAUzC,YACU,YAAyB,EACzB,iBAA6C;QAD7C,iBAAY,GAAZ,YAAY,CAAa;QACzB,sBAAiB,GAAjB,iBAAiB,CAA4B;QAXvD,cAAS,GAAG,IAAI,CAAC;QACjB,eAAU,GAAG,KAAK,CAAC;QAInB,iBAAY,GAAG,KAAK,CAAC;IAQrB,CAAC;IAED,QAAQ;QACN,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;IAC1B,CAAC;IAEM,OAAO;QACZ,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;QAC1B,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC;YAC5C,IAAI,EAAE;gBACJ,EAAE;gBACF,yDAAU,CAAC,OAAO,CAAC;oBACjB,yDAAU,CAAC,QAAQ;oBACnB,yDAAU,CAAC,SAAS,CAAC,CAAC,CAAC;oBACvB,yDAAU,CAAC,SAAS,CAAC,EAAE,CAAC;iBACzB,CAAC;aACH;SACF,CAAC,CAAC;QAEH,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;QACxB,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;QACxB,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;QACvB,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,CAAC;IAC9B,CAAC;IAEM,QAAQ,CAAC,OAAyB;QACvC,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;QAC1B,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC;QACxB,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC;YAC5C,IAAI,EAAE;gBACJ,IAAI,CAAC,QAAQ,CAAC,IAAI;gBAClB,yDAAU,CAAC,OAAO,CAAC;oBACjB,yDAAU,CAAC,QAAQ;oBACnB,yDAAU,CAAC,SAAS,CAAC,CAAC,CAAC;oBACvB,yDAAU,CAAC,SAAS,CAAC,EAAE,CAAC;iBACzB,CAAC;aACH;SACF,CAAC,CAAC;QAEH,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;QACzB,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;QACxB,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;IACzB,CAAC;IAEK,QAAQ;;YACZ,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;YACvB,IAAI,IAAI,CAAC,cAAc,CAAC,OAAO,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE;gBACrD,OAAO;aACR;YAED,IAAI,IAAI,CAAC,WAAW,EAAE;gBACpB,MAAM,KAAK,GAAG,IAAI,CAAC,cAAc,CAAC,KAAe,CAAC;gBAClD,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,KAAK,CAAC;qBAC9B,IAAI,CAAC,CAAC,QAA0B,EAAE,EAAE;oBACnC,IAAG,QAAQ,YAAY,kDAAU,IAAI,QAAQ,CAAC,IAAI,KAAK,qDAAa,CAAC,oBAAoB,EAAE;wBACzF,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;qBAC1B;yBAAM,IAAI,QAAQ,EAAE;wBACnB,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;wBACxB,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;qBACvB;gBACH,CAAC,CAAC;aACL;iBAEI;gBACH,MAAM,KAAK,GAAG,kBACT,IAAI,CAAC,cAAc,CAAC,KAAK,IAC5B,EAAE,EAAE,IAAI,CAAC,QAAQ,CAAC,EAAE,GACD,CAAC;gBACtB,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,KAAK,CAAC;qBAC/B,IAAI,CAAC,CAAC,QAA0B,EAAE,EAAE;oBACnC,IAAG,QAAQ,YAAY,kDAAU,IAAI,QAAQ,CAAC,IAAI,KAAK,qDAAa,CAAC,oBAAoB,EAAE;wBACzF,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;qBAC1B;yBAAM,IAAI,QAAQ,EAAE;wBACnB,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;wBACxB,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;qBACvB;gBACH,CAAC,CAAC;aACL;QACH,CAAC;KAAA;IAEK,OAAO;;YACX,IAAI,CAAC,iBAAiB,CAAC,6BAA6B,CAAC,IAAI,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;QAC7E,CAAC;KAAA;CACF;;YAtFyB,0DAAW;YACN,oEAA0B;;AAZ5C,8BAA8B;IAL1C,+DAAS,CAAC;QACT,QAAQ,EAAE,uCAAuC;QACjD,6PAAwD;KAEzD,CAAC;qCAYwB,0DAAW;QACN,oEAA0B;GAZ5C,8BAA8B,CAiG1C;AAjG0C;;;;;;;;;;;;;;;;;;;;ACZU;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACAH;AAGa;AAS/D,IAAa,6BAA6B,GAA1C,MAAa,6BAA6B;IAIxC,YACU,2BAAuD;QAAvD,gCAA2B,GAA3B,2BAA2B,CAA4B;QAJjE,cAAS,GAAG,IAAI,CAAC;IAKX,CAAC;IAEP,QAAQ;IACR,CAAC;IAEM,IAAI,CAAC,OAAyB;QACnC,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;QACvB,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;QACvB,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC;IAC3B,CAAC;IAEK,QAAQ;;YACZ,IAAI;gBACJ,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,2BAA2B,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;gBAC/E,IAAI,MAAM,IAAI,IAAI,EAAC;oBACjB,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;oBACtB,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;oBACrB,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;iBACxB;aACF;YAAC,OAAO,KAAK,EAAC;gBACb,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;gBACxB,OAAO,CAAC,GAAG,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;aAC7B;QACD,CAAC;KAAA;IAED,QAAQ;QAEN,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;QACtB,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;IACvB,CAAC;CACF;;YA/BwC,oEAA0B;;AALtD,6BAA6B;IANzC,+DAAS,CAAC;QACT,QAAQ,EAAE,qCAAqC;QAC/C,uPAAsD;KAEvD,CAAC;qCAOuC,oEAA0B;GALtD,6BAA6B,CAoCzC;AApCyC;;;;;;;;;;;;;;;;;;;;ACZS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACA4B;AAEX;AAG2B;AACG;AACnC;AACjB;AAO9C,IAAa,6BAA6B,GAA1C,MAAa,6BAA8B,SAAQ,yDAAiB;IAqBlE,YACU,YAAyB,EACzB,iBAA6C,EAC7C,oBAAyC,EACzC,qBAAqD;QAE7D,KAAK,EAAE,CAAC;QALA,iBAAY,GAAZ,YAAY,CAAa;QACzB,sBAAiB,GAAjB,iBAAiB,CAA4B;QAC7C,yBAAoB,GAApB,oBAAoB,CAAqB;QACzC,0BAAqB,GAArB,qBAAqB,CAAgC;QAxB/D,cAAS,GAAG,IAAI,CAAC;QACjB,eAAU,GAAG,KAAK,CAAC;QACnB,kBAAa,GAAG,KAAK,CAAC;QACtB,cAAS,GAAG,KAAK,CAAC;IAwBlB,CAAC;IAfD,IAAI,cAAc;QAChB,OAAO,IAAI,CAAC,KAAK,KAAK,oDAAY,CAAC,WAAW,CAAC;IACjD,CAAC;IAED,IAAI,eAAe;QACjB,OAAO,IAAI,CAAC,KAAK,KAAK,oDAAY,CAAC,YAAY,CAAC;IAClD,CAAC;IAWD,QAAQ;QACN,KAAK,CAAC,QAAQ,EAAE,CAAC;QACjB,IAAI,CAAC,sBAAsB,GAAG,IAAI,CAAC,iBAAiB,CAAC,UAAU,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE;YAC/E,IAAI,IAAI,EAAE;gBACR,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;aACnE;QACH,CAAC,CAAC,CAAC;QAEH,MAAM,IAAI,GAAG,IAAI,CAAC,oBAAoB,CAAC,YAAY,EAAE,CAAC;QACtD,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;QAErC,IAAG,IAAI,CAAC,cAAc,EAAE;YACtB,IAAI,CAAC,iBAAiB,CAAC,GAAG,EAAE,CAAC;SAC9B;QAED,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC;QAE3B,MAAM,SAAS,GAAG,IAAI,CAAC,oBAAoB,CAAC,YAAY,EAAE,CAAC;QAC3D,IAAI,CAAC,KAAK,GAAG,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;QAE/C,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK,iBAC9C,KAAK,EAAE;gBACL,EAAE;gBACF,yDAAU,CAAC,OAAO,CAAC;oBACjB,yDAAU,CAAC,QAAQ;oBACnB,yDAAU,CAAC,KAAK;oBAChB,yEAAc,EAAE;oBAChB,yDAAU,CAAC,SAAS,CAAC,CAAC,CAAC;oBACvB,yDAAU,CAAC,SAAS,CAAC,EAAE,CAAC;iBACzB,CAAC;aACH,IACE,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC;YACxB,SAAS,EAAE;gBACT,IAAI;gBACJ,yDAAU,CAAC,OAAO,CAAC;oBACjB,yDAAU,CAAC,QAAQ;iBACpB,CAAC;aACH;SACF,CAAC,CAAC,CAAC,EAAE,CAAC,EACP,CAAC;QAEH,IAAI,CAAC,iBAAiB,CAAC,YAAY,CAAC,SAAS,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC,CAAC;IAClF,CAAC;IAED,WAAW;QACT,KAAK,CAAC,WAAW,EAAE,CAAC;QACpB,IAAI,CAAC,sBAAsB,IAAI,IAAI,CAAC,sBAAsB,CAAC,WAAW,EAAE,CAAC;QACzE,IAAI,CAAC,sBAAsB,GAAG,IAAI,CAAC;IACrC,CAAC;IAED,kBAAkB;QAChB,KAAK,CAAC,kBAAkB,EAAE,CAAC;IAC7B,CAAC;IAEM,IAAI;QACT,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC;QAC3B,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;QACxB,IAAI,CAAC,iBAAiB,CAAC,KAAK,EAAE,CAAC;QAC/B,IAAI,IAAI,CAAC,cAAc,EAAC;YACtB,IAAI,CAAC,iBAAiB,CAAC,GAAG,EAAE,CAAC;SAC9B;QACD,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;IACzB,CAAC;IAEK,QAAQ;;YACZ,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;YACvB,IAAI,IAAI,CAAC,iBAAiB,CAAC,OAAO,IAAI,IAAI,CAAC,aAAa,EAAE;gBACxD,OAAO;aACR;YAED,MAAM,KAAK,GAAG,IAAI,CAAC,iBAAiB,CAAC,KAAgC,CAAC;YACtE,IAAI,IAAI,CAAC,eAAe,EAAE;gBACxB,KAAK,CAAC,SAAS,GAAG,IAAI,CAAC,oBAAoB,CAAC,YAAY,EAAE,CAAC,SAAS,CAAC;aACtE;YAED,IAAI,CAAC,qBAAqB,CAAC,MAAM,CAAC,KAAK,CAAC;iBACvC,IAAI,CAAC,CAAC,QAAQ,EAAE,EAAE;gBACjB,IAAG,QAAQ,YAAY,kDAAU,IAAI,QAAQ,CAAC,IAAI,KAAK,qDAAa,CAAC,gBAAgB,EAAE;oBACrF,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;oBACvB,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;iBAC3B;qBAAM,IAAG,QAAQ,EAAE;oBAClB,IAAI,CAAC,SAAS,EAAE,CAAC;iBAClB;YACH,CAAC,CAAC;QACJ,CAAC;KAAA;IAEO,SAAS;QACf,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;QACxB,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;QACvB,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;QACtB,IAAI,CAAC,iBAAiB,CAAC,KAAK,EAAE,CAAC;QAC/B,IAAI,CAAC,iBAAiB,CAAC,eAAe,EAAE,CAAC;QACzC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE;YAC5D,MAAM,OAAO,GAAG,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;YACtD,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;QAC1B,CAAC,CAAC,CAAC;IACL,CAAC;CACF;;YAzGyB,0DAAW;YACN,oEAA0B;YACvB,2DAAmB;YAClB,wEAA8B;;AAzBpD,6BAA6B;IALzC,+DAAS,CAAC;QACT,QAAQ,EAAE,sCAAsC;QAChD,0PAAuD;KAExD,CAAC;qCAuBwB,0DAAW;QACN,oEAA0B;QACvB,2DAAmB;QAClB,wEAA8B;GAzBpD,6BAA6B,CA+HzC;AA/HyC;;;;;;;;;;;;;;;;;;;;ACfU;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACAF;AAGkB;AASpE,IAAa,gCAAgC,GAA7C,MAAa,gCAAgC;IAG3C,YACU,+BAA+D;QAA/D,oCAA+B,GAA/B,+BAA+B,CAAgC;QAHzE,cAAS,GAAG,IAAI,CAAC;IAIX,CAAC;IAEP,QAAQ;IACR,CAAC;IAEM,IAAI,CAAC,YAAmC;QAC5C,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;QACvB,IAAI,CAAC,aAAa,GAAG,YAAY,CAAC;IACrC,CAAC;IAEK,QAAQ;;YACZ,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,+BAA+B,CAAC,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,EAAE,EAAE,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC;YACtH,IAAI,MAAM,IAAI,IAAI,EAAC;gBACjB,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;gBACtB,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;aAC3B;QACH,CAAC;KAAA;IAED,QAAQ;QACN,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;QACtB,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;IAC5B,CAAC;CACF;;YAvB4C,wEAA8B;;AAJ9D,gCAAgC;IAN5C,+DAAS,CAAC;QACT,QAAQ,EAAE,yCAAyC;QACnD,mQAA0D;KAE3D,CAAC;qCAM2C,wEAA8B;GAJ9D,gCAAgC,CA2B5C;AA3B4C;;;;;;;;;;;;;;;;;;;;ACZU;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACAwB;AAEX;AAE2B;AACxB;AACzB;AAO9C,IAAa,8BAA8B,GAA3C,MAAa,8BAA+B,SAAQ,yDAAiB;IAgBnE,YACU,YAAyB,EACzB,qBAAqD,EACrD,iBAA6C,EAC7C,oBAAyC;QAEjD,KAAK,EAAE,CAAC;QALA,iBAAY,GAAZ,YAAY,CAAa;QACzB,0BAAqB,GAArB,qBAAqB,CAAgC;QACrD,sBAAiB,GAAjB,iBAAiB,CAA4B;QAC7C,yBAAoB,GAApB,oBAAoB,CAAqB;QAnBnD,cAAS,GAAG,IAAI,CAAC;QACjB,eAAU,GAAG,KAAK,CAAC;IAqBnB,CAAC;IAXD,IAAI,cAAc;QAChB,OAAO,IAAI,CAAC,KAAK,KAAK,oDAAY,CAAC,WAAW,CAAC;IACjD,CAAC;IAWD,QAAQ;QACN,KAAK,CAAC,QAAQ,EAAE,CAAC;QACjB,IAAI,IAAI,CAAC,cAAc,EAAE;YACvB,IAAI,CAAC,iBAAiB,CAAC,GAAG,EAAE,CAAC;SAC9B;QACD,IAAI,CAAC,sBAAsB,GAAG,IAAI,CAAC,iBAAiB,CAAC,UAAU,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE;YAC/E,IAAI,IAAI,EAAE;gBACR,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;aACnE;QACH,CAAC,CAAC,CAAC;QAEH,MAAM,SAAS,GAAG,IAAI,CAAC,oBAAoB,CAAC,YAAY,EAAE,CAAC;QAC3D,IAAI,CAAC,KAAK,GAAG,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;IACjD,CAAC;IAED,WAAW;QACT,KAAK,CAAC,WAAW,EAAE,CAAC;QACpB,IAAI,CAAC,sBAAsB,IAAI,IAAI,CAAC,sBAAsB,CAAC,WAAW,EAAE,CAAC;QACzE,IAAI,CAAC,sBAAsB,GAAG,IAAI,CAAC;IACrC,CAAC;IAED,kBAAkB;QAChB,KAAK,CAAC,kBAAkB,EAAE,CAAC;IAC7B,CAAC;IAEM,IAAI,CAAC,YAAmC;QAC7C,IAAI,CAAC,aAAa,GAAG,YAAY,CAAC;QAClC,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK,iBAC9C,SAAS,EAAE;gBACT,IAAI,CAAC,aAAa,CAAC,SAAS;gBAC5B,yDAAU,CAAC,OAAO,CAAC;oBACjB,yDAAU,CAAC,QAAQ;oBACnB,yDAAU,CAAC,SAAS,CAAC,CAAC,CAAC;oBACvB,yDAAU,CAAC,SAAS,CAAC,EAAE,CAAC;iBACzB,CAAC;aACH,EACD,QAAQ,EAAE;gBACR,IAAI,CAAC,aAAa,CAAC,QAAQ;gBAC3B,yDAAU,CAAC,OAAO,CAAC;oBACjB,yDAAU,CAAC,QAAQ;oBACnB,yDAAU,CAAC,SAAS,CAAC,CAAC,CAAC;oBACvB,yDAAU,CAAC,SAAS,CAAC,EAAE,CAAC;iBACzB,CAAC;aACH,IACE,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC;YACxB,SAAS,EAAE;gBACT,IAAI,CAAC,aAAa,CAAC,SAAS;gBAC5B,yDAAU,CAAC,OAAO,CAAC;oBACjB,yDAAU,CAAC,QAAQ;iBACpB,CAAC;aACH;SACF,CAAC,CAAC,CAAC,EAAE,CAAC,EACP,CAAC;QACH,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;IACzB,CAAC;IAEK,QAAQ;;YACZ,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;YACvB,IAAI,IAAI,CAAC,iBAAiB,CAAC,OAAO,EAAE;gBAClC,OAAO;aACR;YAED,IAAI;gBACF,IAAI,KAAK,GAAG,kBACP,IAAI,CAAC,iBAAiB,CAAC,KAAK,IAC/B,EAAE,EAAE,IAAI,CAAC,aAAa,CAAC,EAAE,IACtB,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC;oBACxB,WAAW,EAAE,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,KAAK,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,KAAK;iBACjG,CAAC,CAAC,CAAC,EAAE,CAAC,CACiB,CAAC;gBAC3B,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;gBAC5D,IAAI,MAAM,EAAE;oBACV,IAAI,IAAI,CAAC,cAAc,EAAE;wBACvB,IAAI,CAAC,qBAAqB,CAAC,GAAG,CAAC,IAAI,CAAC;qBACrC;oBACD,KAAK,qBACA,IAAI,CAAC,aAAa,EAClB,KAAK,CACT,CAAC;oBACF,IAAI,CAAC,qBAAqB,CAAC,kCAAkC,CAAwB,KAAK,EAAE,IAAI,CAAC,CAAC;oBAElG,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;oBACtB,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;iBACzB;aACF;YAAC,OAAO,KAAK,EAAE;gBACd,OAAO,CAAC,GAAG,CAAC,OAAO,EAAE,KAAK,CAAC;aAC5B;QACH,CAAC;KAAA;IAEK,OAAO;;YACX,IAAI,CAAC,qBAAqB,CAAC,kCAAkC,CAAC,IAAI,CAAC,aAAa,EAAE,KAAK,CAAC,CAAC;YACzF,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;YACxB,IAAI,CAAC,iBAAiB,CAAC,KAAK,EAAE,CAAC;QACjC,CAAC;KAAA;CACF;;YAtGyB,0DAAW;YACF,wEAA8B;YAClC,oEAA0B;YACvB,2DAAmB;;AApBxC,8BAA8B;IAL1C,+DAAS,CAAC;QACT,QAAQ,EAAE,uCAAuC;QACjD,6PAAwD;KAEzD,CAAC;qCAkBwB,0DAAW;QACF,wEAA8B;QAClC,oEAA0B;QACvB,2DAAmB;GApBxC,8BAA8B,CAuH1C;AAvH0C;;;;;;;;;;;;;;;;;;;;ACbU;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACA0B;AAEX;AAG0B;AACI;AACnC;AACjB;AAO9C,IAAa,4BAA4B,GAAzC,MAAa,4BAA6B,SAAQ,yDAAiB;IAmBjE,YACU,YAAyB,EACzB,iBAA6C,EAC7C,oBAAyC,EACzC,oBAAmD;QAE3D,KAAK,EAAE,CAAC;QALA,iBAAY,GAAZ,YAAY,CAAa;QACzB,sBAAiB,GAAjB,iBAAiB,CAA4B;QAC7C,yBAAoB,GAApB,oBAAoB,CAAqB;QACzC,yBAAoB,GAApB,oBAAoB,CAA+B;QAtB7D,cAAS,GAAG,IAAI,CAAC;QACjB,eAAU,GAAG,KAAK,CAAC;QACnB,cAAS,GAAG,KAAK,CAAC;QAClB,kBAAa,GAAG,KAAK,CAAC;QACtB,wBAAmB,GAAG,KAAK,CAAC;IAqB5B,CAAC;IAXD,IAAI,eAAe;QACjB,OAAO,IAAI,CAAC,KAAK,KAAK,oDAAY,CAAC,YAAY,CAAC;IAClD,CAAC;IAWD,QAAQ;QACN,KAAK,CAAC,QAAQ,EAAE,CAAC;QACjB,MAAM,SAAS,GAAG,IAAI,CAAC,oBAAoB,CAAC,YAAY,EAAE,CAAC;QAC3D,IAAI,CAAC,KAAK,GAAG,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;QAC/C,IAAI,IAAI,CAAC,eAAe,EAAE;YACxB,IAAI,CAAC,iBAAiB,CAAC,8BAA8B,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;YAE3E,IAAI,CAAC,sBAAsB,GAAG,IAAI,CAAC,iBAAiB,CAAC,uBAAuB,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE;gBAC5F,IAAI,IAAI,EAAE;oBACR,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,YAAY,EAAE,KAAK,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;iBAC9E;YACH,CAAC,CAAC,CAAC;YAEH,IAAI,CAAC,sBAAsB,GAAG,IAAI,CAAC,iBAAiB,CAAC,uBAAuB,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE;gBAC5F,IAAI,IAAI,EAAE;oBACR,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,YAAY,EAAE,KAAK,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;iBAC9E;YACH,CAAC,CAAC,CAAC;YAEH,IAAI,CAAC,sBAAsB,GAAG,IAAI,CAAC,iBAAiB,CAAC,uBAAuB,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE;gBAC5F,IAAI,IAAI,EAAE;oBACR,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,YAAY,EAAE,KAAK,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;iBAC9E;YACH,CAAC,CAAC,CAAC;SACJ;QAED,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK,iBAC7C,KAAK,EAAE;gBACL,EAAE;gBACF,yDAAU,CAAC,OAAO,CAAC;oBACjB,yDAAU,CAAC,QAAQ;oBACnB,yDAAU,CAAC,KAAK;oBAChB,yEAAc,EAAE;oBAChB,yDAAU,CAAC,SAAS,CAAC,CAAC,CAAC;oBACvB,yDAAU,CAAC,SAAS,CAAC,EAAE,CAAC;iBACzB,CAAC;aACH,IACE,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC;YACzB,cAAc,EAAE;gBACd,EAAE;gBACF,yDAAU,CAAC,OAAO,CAAC,EAClB,CAAC;aACH;SACF,CAAC,CAAC,CAAC,EAAE,CAAC,EACJ,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC;YACzB,cAAc,EAAE;gBACd,EAAE;gBACF,yDAAU,CAAC,OAAO,CAAC,EAClB,CAAC;aACH;SACF,CAAC,CAAC,CAAC,EAAE,CAAC,EACJ,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC;YACzB,cAAc,EAAE;gBACd,EAAE;gBACF,yDAAU,CAAC,OAAO,CAAC,EAClB,CAAC;aACH;SACF,CAAC,CAAC,CAAC,EAAE,CAAC,EACP,CAAC;QAEH,IAAI,CAAC,gBAAgB,CAAC,YAAY,CAAC,SAAS,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC,CAAC;IACjF,CAAC;IAED,WAAW;QACT,KAAK,CAAC,WAAW,EAAE,CAAC;QACpB,IAAI,CAAC,sBAAsB,IAAI,IAAI,CAAC,sBAAsB,CAAC,WAAW,EAAE,CAAC;QACzE,IAAI,CAAC,sBAAsB,GAAG,IAAI,CAAC;IACrC,CAAC;IAED,kBAAkB;QAChB,KAAK,CAAC,kBAAkB,EAAE,CAAC;IAC7B,CAAC;IAEM,IAAI;QACT,IAAI,CAAC,SAAS,EAAE,CAAC;QACjB,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;IACzB,CAAC;IAEK,QAAQ;;YACZ,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;YACvB,IAAI,CAAC,mBAAmB,GAAG,KAAK,CAAC;YACjC,MAAM,KAAK,GAAG,IAAI,CAAC,gBAAgB,CAAC,KAA+B,CAAC;YAEpE,IAAI,IAAI,CAAC,gBAAgB,CAAC,OAAO,IAAI,IAAI,CAAC,aAAa,EAAE;gBACvD,IAAI,CAAC,CAAC,KAAK,CAAC,cAAc,IAAI,KAAK,CAAC,cAAc,CAAC,MAAM,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,cAAc,IAAI,KAAK,CAAC,cAAc,CAAC,MAAM,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,cAAc,IAAI,KAAK,CAAC,cAAc,CAAC,MAAM,KAAK,CAAC,CAAC,EAAE;oBAChM,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC;iBACjC;gBAED,OAAO;aACR;YAED,IAAI,CAAC,CAAC,KAAK,CAAC,cAAc,IAAI,KAAK,CAAC,cAAc,CAAC,MAAM,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,cAAc,IAAI,KAAK,CAAC,cAAc,CAAC,MAAM,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,cAAc,IAAI,KAAK,CAAC,cAAc,CAAC,MAAM,KAAK,CAAC,CAAC,EAAE;gBAChM,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC;gBAChC,OAAO;aACR;YAED,IAAI,CAAC,oBAAoB,CAAC,MAAM,CAAC,KAAK,CAAC;iBACpC,IAAI,CAAC,CAAC,QAA8B,EAAE,EAAE;gBACvC,IAAI,QAAQ,YAAY,kDAAU,IAAI,QAAQ,CAAC,IAAI,KAAK,qDAAa,CAAC,gBAAgB,EAAE;oBACtF,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;oBACvB,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;iBAC3B;qBAAM,IAAI,QAAQ,EAAE;oBACnB,MAAM,SAAS,GAAG,IAAI,CAAC,oBAAoB,CAAC,YAAY,EAAE,CAAC;oBAC3D,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;oBACnD,IAAI,CAAC,SAAS,EAAE,CAAC;iBAClB;YACH,CAAC,CAAC;QACN,CAAC;KAAA;IAEO,SAAS;QACf,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;QACxB,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;QACvB,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;QACtB,IAAI,CAAC,mBAAmB,GAAG,KAAK,CAAC;QACjC,IAAI,CAAC,gBAAgB,CAAC,KAAK,EAAE,CAAC;QAC9B,IAAI,CAAC,gBAAgB,CAAC,eAAe,EAAE,CAAC;QACxC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE;YAC3D,MAAM,OAAO,GAAG,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;YACrD,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;QAC1B,CAAC,CAAC,CAAC;IACL,CAAC;CACF;;YAjIyB,0DAAW;YACN,oEAA0B;YACvB,2DAAmB;YACnB,uEAA6B;;AAvBlD,4BAA4B;IALxC,+DAAS,CAAC;QACT,QAAQ,EAAE,qCAAqC;QAC/C,uPAAsD;KAEvD,CAAC;qCAqBwB,0DAAW;QACN,oEAA0B;QACvB,2DAAmB;QACnB,uEAA6B;GAvBlD,4BAA4B,CAqJxC;AArJwC;;;;;;;;;;;;;;;;;;;;ACfU;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACAD;AAEgB;AAQlE,IAAa,+BAA+B,GAA5C,MAAa,+BAA+B;IAI1C,YACU,6BAA4D;QAA5D,kCAA6B,GAA7B,6BAA6B,CAA+B;QAJtE,cAAS,GAAG,IAAI,CAAC;IAKb,CAAC;IAEL,QAAQ;IACR,CAAC;IAEM,IAAI,CAAC,WAAiC;QAC3C,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;QACvB,IAAI,CAAC,YAAY,GAAG,WAAW,CAAC;IAClC,CAAC;IAEK,QAAQ;;YACZ,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,6BAA6B,CAAC,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC;YACrF,IAAI,MAAM,IAAI,IAAI,EAAC;gBACjB,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;gBACtB,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;aAC1B;QACH,CAAC;KAAA;IAED,QAAQ;QACN,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;QACtB,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;IAC3B,CAAC;CACF;;YAvB0C,uEAA6B;;AAL3D,+BAA+B;IAN3C,+DAAS,CAAC;QACT,QAAQ,EAAE,wCAAwC;QAClD,gQAAyD;KAE1D,CAAC;qCAOyC,uEAA6B;GAL3D,+BAA+B,CA4B3C;AA5B2C;;;;;;;;;;;;;;;;;;;;ACVU;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACAyB;AACX;AAI0B;AACvB;AACvB;AACF;AAO9C,IAAa,6BAA6B,GAA1C,MAAa,6BAA8B,SAAQ,yDAAiB;IAsBlE,YACU,YAAyB,EACzB,oBAAmD,EACnD,iBAA6C,EAC7C,oBAAyC;QAEjD,KAAK,EAAE,CAAC;QALA,iBAAY,GAAZ,YAAY,CAAa;QACzB,yBAAoB,GAApB,oBAAoB,CAA+B;QACnD,sBAAiB,GAAjB,iBAAiB,CAA4B;QAC7C,yBAAoB,GAApB,oBAAoB,CAAqB;QAzBnD,cAAS,GAAG,IAAI,CAAC;QACjB,eAAU,GAAG,KAAK,CAAC;QACnB,wBAAmB,GAAG,KAAK,CAAC;IA0B5B,CAAC;IAXD,IAAI,eAAe;QACjB,OAAO,IAAI,CAAC,KAAK,KAAK,oDAAY,CAAC,YAAY,CAAC;IAClD,CAAC;IAWD,QAAQ;QACN,KAAK,CAAC,QAAQ,EAAE,CAAC;QACjB,IAAI,CAAC,sBAAsB,GAAG,IAAI,CAAC,iBAAiB,CAAC,uBAAuB,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE;YAC5F,IAAI,IAAI,EAAE;gBACR,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,YAAY,EAAE,KAAK,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;aAC9E;QACH,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,sBAAsB,GAAG,IAAI,CAAC,iBAAiB,CAAC,uBAAuB,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE;YAC5F,IAAI,IAAI,EAAE;gBACR,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,YAAY,EAAE,KAAK,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;aAC9E;QACH,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,sBAAsB,GAAG,IAAI,CAAC,iBAAiB,CAAC,uBAAuB,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE;YAC5F,IAAI,IAAI,EAAE;gBACR,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,YAAY,EAAE,KAAK,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;aAC9E;QACH,CAAC,CAAC,CAAC;QAEH,MAAM,SAAS,GAAG,IAAI,CAAC,oBAAoB,CAAC,YAAY,EAAE,CAAC;QAC3D,IAAI,CAAC,KAAK,GAAG,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;IACjD,CAAC;IAED,kBAAkB;QAChB,KAAK,CAAC,kBAAkB,EAAE,CAAC;IAC7B,CAAC;IAED,WAAW;QACT,KAAK,CAAC,WAAW,EAAE,CAAC;QACpB,IAAI,CAAC,sBAAsB,IAAI,IAAI,CAAC,sBAAsB,CAAC,WAAW,EAAE,CAAC;QACzE,IAAI,CAAC,sBAAsB,GAAG,IAAI,CAAC;IACrC,CAAC;IAEM,IAAI,CAAC,WAAiC;QAC3C,IAAI,CAAC,YAAY,GAAG,WAAW,CAAC;QAChC,IAAI,CAAC,eAAe,GAAG,qDAAc,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;QAC1D,IAAI,CAAC,qBAAqB,GAAG,IAAI,CAAC,YAAY,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QAC/E,IAAI,CAAC,qBAAqB,GAAG,IAAI,CAAC,YAAY,CAAC,kBAAkB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QACjF,IAAI,CAAC,qBAAqB,GAAG,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC1E,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,qBAAqB,GAAG,IAAI,CAAC,qBAAqB,GAAG,IAAI,CAAC,qBAAqB,CAAC;QAE/G,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK,iBAC7C,SAAS,EAAE;gBACT,IAAI,CAAC,YAAY,CAAC,SAAS;gBAC3B,yDAAU,CAAC,OAAO,CAAC;oBACjB,yDAAU,CAAC,QAAQ;oBACnB,yDAAU,CAAC,SAAS,CAAC,CAAC,CAAC;oBACvB,yDAAU,CAAC,SAAS,CAAC,EAAE,CAAC;iBACzB,CAAC;aACH,EACD,QAAQ,EAAE;gBACR,IAAI,CAAC,YAAY,CAAC,QAAQ;gBAC1B,yDAAU,CAAC,OAAO,CAAC;oBACjB,yDAAU,CAAC,QAAQ;oBACnB,yDAAU,CAAC,SAAS,CAAC,CAAC,CAAC;oBACvB,yDAAU,CAAC,SAAS,CAAC,EAAE,CAAC;iBACzB,CAAC;aACH,IACE,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC;YACzB,cAAc,EAAE;gBACd,IAAI,CAAC,qBAAqB;gBAC1B,yDAAU,CAAC,OAAO,CAAC,EAClB,CAAC;aACH;SACF,CAAC,CAAC,CAAC,EAAE,CAAC,EACJ,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC;YACzB,cAAc,EAAE;gBACd,IAAI,CAAC,qBAAqB;gBAC1B,yDAAU,CAAC,OAAO,CAAC,EAClB,CAAC;aACH;SACF,CAAC,CAAC,CAAC,EAAE,CAAC,EACJ,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC;YACzB,cAAc,EAAE;gBACd,IAAI,CAAC,qBAAqB;gBAC1B,yDAAU,CAAC,OAAO,CAAC,EAClB,CAAC;aACH;SACF,CAAC,CAAC,CAAC,EAAE,CAAC,EACJ,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC;YACzB,MAAM,EAAE;gBACN,IAAI,CAAC,YAAY,CAAC,MAAM;gBACxB,yDAAU,CAAC,OAAO,CAAC;oBACjB,yDAAU,CAAC,QAAQ;iBACpB,CAAC;aACH;SACF,CAAC,CAAC,CAAC,EAAE,CAAC,EACP,CAAC;QACH,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;IACzB,CAAC;IAEK,QAAQ;;YACZ,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;YACvB,IAAI,CAAC,mBAAmB,GAAG,KAAK,CAAC;YAEjC,IAAI,KAAK,GAAG,kBACP,IAAI,CAAC,gBAAgB,CAAC,KAAK,IAC9B,MAAM,EAAE,qDAAc,CAAC,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,MAAM,CAAC,EAC1D,EAAE,EAAE,IAAI,CAAC,YAAY,CAAC,EAAE,IACrB,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC;gBACzB,WAAW,EAAE,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,WAAW;aACrD,CAAC,CAAC,CAAC,EAAE,CAAC,CACgB,CAAC;YAC1B,IAAI,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE;gBACjC,IAAI,CAAC,CAAC,KAAK,CAAC,cAAc,IAAI,KAAK,CAAC,cAAc,CAAC,MAAM,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,cAAc,IAAI,KAAK,CAAC,cAAc,CAAC,MAAM,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,cAAc,IAAI,KAAK,CAAC,cAAc,CAAC,MAAM,KAAK,CAAC,CAAC,EAAE;oBAChM,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC;iBACjC;gBAED,OAAO;aACR;YAED,IAAI,CAAC,CAAC,KAAK,CAAC,cAAc,IAAI,KAAK,CAAC,cAAc,CAAC,MAAM,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,cAAc,IAAI,KAAK,CAAC,cAAc,CAAC,MAAM,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,cAAc,IAAI,KAAK,CAAC,cAAc,CAAC,MAAM,KAAK,CAAC,CAAC,EAAE;gBAChM,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC;gBAChC,OAAO;aACR;YAED,IAAI;gBACF,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;gBAC3D,IAAI,MAAM,EAAE;oBACV,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;oBACtB,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;iBACzB;aACF;YAAC,OAAO,KAAK,EAAE;gBACd,OAAO,CAAC,GAAG,CAAC,OAAO,EAAE,KAAK,CAAC;aAC5B;QACH,CAAC;KAAA;IAEK,QAAQ;;YACZ,IAAI,CAAC,oBAAoB,CAAC,iCAAiC,CAAC,IAAI,CAAC,YAAY,EAAE,KAAK,CAAC,CAAC;YACtF,IAAI,CAAC,mBAAmB,GAAG,KAAK,CAAC;YACjC,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;YACxB,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;YACtB,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC;YAC5B,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;YACzB,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC;YAC5B,IAAI,CAAC,WAAW,EAAE,CAAC;QACrB,CAAC;KAAA;CACF;;YAlJyB,0DAAW;YACH,uEAA6B;YAChC,oEAA0B;YACvB,2DAAmB;;AA1BxC,6BAA6B;IALzC,+DAAS,CAAC;QACT,QAAQ,EAAE,sCAAsC;QAChD,0PAAuD;KAExD,CAAC;qCAwBwB,0DAAW;QACH,uEAA6B;QAChC,oEAA0B;QACvB,2DAAmB;GA1BxC,6BAA6B,CAyKzC;AAzKyC;;;;;;;;;;;;;;;;;;;;ACfU;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACAY;AAET;AAEP;AACc;AACQ;AAOtE,IAAa,oCAAoC,GAAjD,MAAa,oCAAoC;IAiB/C,YACU,iBAA6C;QAA7C,sBAAiB,GAAjB,iBAAiB,CAA4B;QAjBhD,oBAAe,GAAG,IAAI,0DAAY,EAAW,CAAC;QAQrD,qBAAgB,GAAG,yDAAkB,CAAC;QAEtC,cAAS,GAAG,IAAI,CAAC;QACjB,kBAAa,GAAuC,EAAE,CAAC;QAEvD,iBAAY,GAAG,KAAK,CAAC;IAIsC,CAAC;IAE5D,QAAQ;QACN,IAAI,CAAC,KAAK,GAAG,IAAI,IAAI,EAAE,CAAC;IAC1B,CAAC;IAEK,QAAQ;;YACZ,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;YAEzB,IAAI,MAAW,CAAC;YAEhB,QAAQ,IAAI,CAAC,QAAQ,EAAE;gBACrB,KAAK,yDAAkB,CAAC,oBAAoB;oBAC1C,IAAI,CAAC,2BAA2B,CAAC,YAAY,GAAG,IAAI,CAAC,eAAe,CAAC;oBACrE,IAAI,CAAC,2BAA2B,CAAC,QAAQ,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC,eAAe,EAAE,CAAC,QAAQ,CAAC;oBAC7F,IAAI,CAAC,2BAA2B,CAAC,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC;oBACxD,MAAM,GAAG,MAAM,IAAI,CAAC,iBAAiB,CAAC,kCAAkC,CAAC,IAAI,CAAC,2BAA2B,CAAC,CAAC;oBAC3G,MAAM;gBACR,KAAK,yDAAkB,CAAC,gBAAgB;oBACtC,IAAI,CAAC,4BAA4B,CAAC,YAAY,GAAG,IAAI,CAAC,eAAe,CAAC;oBACtE,IAAI,CAAC,4BAA4B,CAAC,QAAQ,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC,eAAe,EAAE,CAAC,QAAQ,CAAC;oBAC9F,IAAI,CAAC,4BAA4B,CAAC,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC;oBACzD,MAAM,GAAG,MAAM,IAAI,CAAC,iBAAiB,CAAC,mCAAmC,CAAC,IAAI,CAAC,4BAA4B,CAAC,CAAC;oBAC7G,MAAM;gBACR,KAAK,yDAAkB,CAAC,eAAe;oBACrC,IAAI,CAAC,2BAA2B,CAAC,YAAY,GAAG,IAAI,CAAC,eAAe,CAAC;oBACrE,IAAI,CAAC,2BAA2B,CAAC,QAAQ,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC,eAAe,EAAE,CAAC,QAAQ,CAAC;oBAC7F,IAAI,CAAC,2BAA2B,CAAC,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC;oBACxD,MAAM,GAAG,MAAM,IAAI,CAAC,iBAAiB,CAAC,kCAAkC,CAAC,IAAI,CAAC,2BAA2B,CAAC,CAAC;oBAC3G,MAAM;gBACR;oBACE,IAAI,MAAM,GAAG,IAAI,CAAC,eAAe,CAAC;oBAClC,IAAI,QAAQ,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC,eAAe,EAAE,CAAC,QAAQ,CAAC;oBAChE,MAAM,GAAG,MAAM,IAAI,CAAC,iBAAiB,CAAC,6BAA6B,CACjE,IAAI,CAAC,eAAe,EACpB,MAAM,EACN,QAAQ,EACR,IAAI,CAAC,KAAK,CAAC,CAAC;oBACd,MAAM;aACT;YAED,IAAI,CAAC,CAAC,MAAM,YAAY,kDAAU,CAAC,EAAE;gBACnC,IAAI,QAAQ,GAAG,IAAI,CAAC,gBAAgB,EAAE,CAAC;gBACvC,IAAI,GAAG,GAAG,GAAG,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC;gBACtC,IAAI,YAAY,GAAG,QAAQ,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;gBAC/C,YAAY,CAAC,IAAI,GAAG,GAAG,CAAC;gBACxB,YAAY,CAAC,QAAQ,GAAG,QAAQ,CAAC;gBACjC,YAAY,CAAC,KAAK,EAAE,CAAC;gBACrB,IAAI,CAAC,QAAQ,EAAE,CAAC;gBAChB,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;gBAC1B,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;aACjC;iBACI;gBACH,IAAI,CAAC,YAAY,GAAG,KAAK;aAC1B;QACH,CAAC;KAAA;IAEM,kCAAkC,CAAC,2BAAwD;QAChG,IAAI,CAAC,gBAAgB,EAAE,CAAC;QACxB,IAAI,CAAC,2BAA2B,GAAG,2BAA2B,CAAC;QAC/D,IAAI,CAAC,QAAQ,GAAG,yDAAkB,CAAC,oBAAoB,CAAC;QACxD,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;IACzB,CAAC;IAEM,mCAAmC,CAAC,YAA0C;QACnF,IAAI,CAAC,gBAAgB,EAAE,CAAC;QACxB,IAAI,CAAC,4BAA4B,GAAG,YAAY,CAAC;QACjD,IAAI,CAAC,QAAQ,GAAG,yDAAkB,CAAC,gBAAgB,CAAC;QACpD,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;IACzB,CAAC;IAEM,kCAAkC,CAAC,YAAyC;QACjF,IAAI,CAAC,gBAAgB,EAAE,CAAC;QACxB,IAAI,CAAC,2BAA2B,GAAG,YAAY,CAAC;QAChD,IAAI,CAAC,QAAQ,GAAG,yDAAkB,CAAC,eAAe,CAAC;QACnD,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;IACzB,CAAC;IAEM,6BAA6B,CAAC,eAAyB,EAAE,YAAsB;QACpF,IAAI,CAAC,gBAAgB,EAAE,CAAC;QACxB,IAAI,CAAC,eAAe,GAAG,eAAe,CAAC;QACvC,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC;QACjC,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;IACzB,CAAC;IAED,QAAQ;QACN,IAAI,CAAC,KAAK,GAAG,IAAI,IAAI,EAAE,CAAC;QACxB,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;IACxB,CAAC;IAEO,gBAAgB;QACtB,IAAI,IAAI,GAAW,QAAQ,CAAC;QAE5B,QAAQ,IAAI,CAAC,QAAQ,EAAE;YACrB,KAAK,yDAAkB,CAAC,oBAAoB;gBAC1C,IAAI,IAAI,IAAI,CAAC,2BAA2B,CAAC,uBAAuB,CAAC,WAAW,CAAC;gBAC7E,MAAM;YACR,KAAK,yDAAkB,CAAC,gBAAgB;gBACtC,IAAI,IAAI,IAAI,CAAC,4BAA4B,CAAC,UAAU,CAAC,WAAW,CAAC;gBACjE,MAAM;YACR,KAAK,yDAAkB,CAAC,eAAe;gBACrC,IAAI,IAAI,IAAI,CAAC,2BAA2B,CAAC,UAAU,CAAC,WAAW,CAAC;gBAChE,MAAM;YACR;gBACE,IAAI,YAAY,GAAG,CAAC,GAAI,IAAI,GAAG,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC;gBACpD,IAAI,YAAY,CAAC,MAAM,IAAI,CAAC,EAAE;oBAC5B,IAAI,IAAI,YAAY,CAAC,CAAC,CAAC,CAAC;iBACzB;qBAAM;oBACL,IAAI,GAAG,QAAQ,CAAC;oBAChB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,YAAY,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;wBAC5C,IAAI,IAAI,IAAI,YAAY,CAAC,CAAC,CAAC,EAAE,CAAC;qBAC/B;iBACF;gBACD,MAAM;SACT;QAED,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,IAAI,IAAI,IAAI,EAAE,CAAC,kBAAkB,EAAE,IAAI,mEAAwB,CAAC,IAAI,CAAC,eAAe,CAAC,EAAE,CAAC;IAC5H,CAAC;IAEO,gBAAgB;QACtB,IAAI,CAAC,aAAa,GAAG,EAAE,CAAC;QAExB,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,mEAAwB,CAAC,EAAE;YAEnE,IAAI,KAAK,GAAG,KAAe,CAAC;YAE5B,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC;SAC9D;QAED,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;IACrD,CAAC;CACF;;YAnI8B,oEAA0B;;AAlB5C,oCAAoC;IALhD,+DAAS,CAAC;QACT,QAAQ,EAAE,6CAA6C;QACvD,+QAA8D;KAE/D,CAAC;qCAmB6B,oEAA0B;GAlB5C,oCAAoC,CAqJhD;AArJgD;;;;;;;;;;;;;;;;;;;;ACbU;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACAK;AAGT;AACX;AACkB;AACQ;AAQtE,IAAa,yCAAyC,GAAtD,MAAa,yCAAyC;IAmBpD,YAAoB,iBAA6C;QAA7C,sBAAiB,GAAjB,iBAAiB,CAA4B;QAlB1D,mBAAc,GAAG,IAAI,0DAAY,EAAW,CAAC;QAQpD,qBAAgB,GAAG,yDAAkB,CAAC;QAEtC,cAAS,GAAG,IAAI,CAAC;QACjB,kBAAa,GAAuC,EAAE,CAAC;QAEvD,iBAAY,GAAG,KAAK,CAAC;IAKgD,CAAC;IAEtE,QAAQ;QACN,IAAI,CAAC,KAAK,GAAG,IAAI,IAAI,EAAE,CAAC;IAC1B,CAAC;IAEK,YAAY;;YAChB,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;YAEzB,IAAI,MAAW,CAAC;YAEhB,QAAQ,IAAI,CAAC,QAAQ,EAAE;gBACrB,KAAK,yDAAkB,CAAC,oBAAoB;oBAC1C,IAAI,CAAC,2BAA2B,CAAC,YAAY,GAAG,IAAI,CAAC,eAAe,CAAC;oBACrE,IAAI,CAAC,2BAA2B,CAAC,QAAQ,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC,eAAe,EAAE,CAAC,QAAQ,CAAC;oBAC7F,IAAI,CAAC,2BAA2B,CAAC,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC;oBACxD,MAAM,GAAG,MAAM,IAAI,CAAC,iBAAiB,CAAC,+BAA+B,CAAC,IAAI,CAAC,2BAA2B,CAAC,CAAC;oBACxG,MAAM;gBACR,KAAK,yDAAkB,CAAC,gBAAgB;oBACtC,IAAI,CAAC,4BAA4B,CAAC,YAAY,GAAG,IAAI,CAAC,eAAe,CAAC;oBACtE,IAAI,CAAC,4BAA4B,CAAC,QAAQ,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC,eAAe,EAAE,CAAC,QAAQ,CAAC;oBAC9F,IAAI,CAAC,4BAA4B,CAAC,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC;oBACzD,MAAM,GAAG,MAAM,IAAI,CAAC,iBAAiB,CAAC,gCAAgC,CAAC,IAAI,CAAC,4BAA4B,CAAC,CAAC;oBAC1G,MAAM;gBACR,KAAK,yDAAkB,CAAC,eAAe;oBACrC,IAAI,CAAC,2BAA2B,CAAC,YAAY,GAAG,IAAI,CAAC,eAAe,CAAC;oBACrE,IAAI,CAAC,2BAA2B,CAAC,QAAQ,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC,eAAe,EAAE,CAAC,QAAQ,CAAC;oBAC7F,IAAI,CAAC,2BAA2B,CAAC,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC;oBACxD,MAAM,GAAG,MAAM,IAAI,CAAC,iBAAiB,CAAC,+BAA+B,CAAC,IAAI,CAAC,2BAA2B,CAAC,CAAC;oBACxG,MAAM;gBACR;oBACE,IAAI,MAAM,GAAG,IAAI,CAAC,eAAe,CAAC;oBAClC,IAAI,QAAQ,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC,eAAe,EAAE,CAAC,QAAQ,CAAC;oBAChE,MAAM,GAAG,MAAM,IAAI,CAAC,iBAAiB,CAAC,0BAA0B,CAC9D,IAAI,CAAC,eAAe,EACpB,MAAM,EACN,QAAQ,EACR,IAAI,CAAC,KAAK,CAAC,CAAC;oBACd,MAAM;aACT;YAED,IAAI,CAAC,CAAC,MAAM,YAAY,yDAAU,CAAC,EAAE;gBACnC,IAAI,QAAQ,GAAG,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC;gBAC9C,IAAI,KAAK,GAAG,QAAQ,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;gBACxC,KAAK,CAAC,IAAI,GAAG,uBAAuB,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,EAAE,CAAC;gBAChH,KAAK,CAAC,KAAK,EAAE,CAAC;gBACd,IAAI,CAAC,QAAQ,EAAE,CAAC;gBAChB,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;aAChC;iBAAM;gBACL,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;aAC3B;QACH,CAAC;KAAA;IAED,kCAAkC,CAAC,2BAAwD;QACzF,IAAI,CAAC,gBAAgB,EAAE,CAAC;QACxB,IAAI,CAAC,2BAA2B,GAAG,2BAA2B,CAAC;QAC/D,IAAI,CAAC,QAAQ,GAAG,yDAAkB,CAAC,oBAAoB,CAAC;QACxD,IAAI,CAAC,OAAO,GAAG,GAAG,2BAA2B,CAAC,eAAe,CAAC,IAAI,KAAK,2BAA2B,CAAC,eAAe,CAAC,WAAW,KAAK,2BAA2B,CAAC,uBAAuB,CAAC,WAAW,GAAG;QACrM,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;IACzB,CAAC;IAEM,mCAAmC,CAAC,YAA0C;QACnF,IAAI,CAAC,gBAAgB,EAAE,CAAC;QACxB,IAAI,CAAC,4BAA4B,GAAG,YAAY,CAAC;QACjD,IAAI,CAAC,QAAQ,GAAG,yDAAkB,CAAC,gBAAgB,CAAC;QACpD,IAAI,CAAC,OAAO,GAAG,GAAG,YAAY,CAAC,UAAU,CAAC,YAAY,KAAK,YAAY,CAAC,UAAU,CAAC,WAAW,KAAK,YAAY,CAAC,UAAU,CAAC,WAAW,GAAG;QACzI,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;IACzB,CAAC;IAEM,kCAAkC,CAAC,YAAyC;QACjF,IAAI,CAAC,gBAAgB,EAAE,CAAC;QACxB,IAAI,CAAC,2BAA2B,GAAG,YAAY,CAAC;QAChD,IAAI,CAAC,QAAQ,GAAG,yDAAkB,CAAC,eAAe,CAAC;QACnD,IAAI,CAAC,OAAO,GAAG,GAAG,YAAY,CAAC,UAAU,CAAC,YAAY,KAAK,YAAY,CAAC,UAAU,CAAC,WAAW,KAAK,YAAY,CAAC,UAAU,CAAC,WAAW,GAAG;QACzI,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;IACzB,CAAC;IAEM,6BAA6B,CAAC,eAAyB,EAAE,YAAsB;QACpF,IAAI,CAAC,gBAAgB,EAAE,CAAC;QACxB,IAAI,CAAC,eAAe,GAAG,eAAe,CAAC;QACvC,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC;QACjC,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;QACvB,IAAI,CAAC,OAAO,GAAG,EAAE,CAAC;IACpB,CAAC;IAED,QAAQ;QACN,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;QAC1B,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;QACtB,IAAI,CAAC,OAAO,GAAG,EAAE,CAAC;QAClB,IAAI,CAAC,KAAK,GAAG,IAAI,IAAI,EAAE,CAAC;IAC1B,CAAC;IAEO,iBAAiB,CAAC,IAAY;QACpC,IAAI,KAAK,GAAW,QAAQ,CAAC;QAE7B,QAAQ,IAAI,CAAC,QAAQ,EAAE;YACrB,KAAK,yDAAkB,CAAC,oBAAoB;gBAC1C,KAAK,IAAI,GAAG,IAAI,CAAC,2BAA2B,CAAC,uBAAuB,CAAC,WAAW,MAAM,CAAC;gBACvF,MAAM;YACR,KAAK,yDAAkB,CAAC,gBAAgB;gBACtC,KAAK,IAAI,GAAG,IAAI,CAAC,4BAA4B,CAAC,UAAU,CAAC,WAAW,MAAM,CAAC;gBAC3E,MAAM;YACR,KAAK,yDAAkB,CAAC,eAAe;gBACrC,KAAK,IAAI,GAAG,IAAI,CAAC,2BAA2B,CAAC,UAAU,CAAC,WAAW,MAAM,CAAC;gBAC1E,MAAM;YACR;gBACE,IAAI,YAAY,GAAG,CAAC,GAAI,IAAI,GAAG,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC;gBACpD,IAAI,YAAY,CAAC,MAAM,IAAI,CAAC,EAAE;oBAC5B,KAAK,IAAI,GAAG,YAAY,CAAC,CAAC,CAAC,MAAM,CAAC;iBACnC;qBAAM;oBACL,KAAK,GAAG,UAAU,YAAY,CAAC,CAAC,CAAC,EAAE,CAAC;oBACpC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,YAAY,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;wBAC5C,KAAK,IAAI,KAAK,YAAY,CAAC,CAAC,CAAC,EAAE,CAAC;qBACjC;oBAED,KAAK,IAAI,OAAO;iBACjB;gBACD,MAAM;SACT;QAED,OAAO,mBAAmB,KAAK,4CAA4C;YACzE,kCAAkC,IAAI,EAAE;YACxC,kGAAkG;YAClG,kDAAkD;IACtD,CAAC;IAEO,eAAe,CAAC,IAAY;QAClC,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;QACjC,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC;QACvC,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;QACrC,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;QACjC,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;QACjC,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;QACjC,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;QACjC,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QAElC,OAAO,IAAI,CAAC;IACd,CAAC;IAEO,gBAAgB;QACtB,IAAI,CAAC,aAAa,GAAG,EAAE,CAAC;QAExB,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,mEAAwB,CAAC,EAAE;YAEnE,IAAI,KAAK,GAAG,KAAe,CAAC;YAE5B,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC;SAC9D;QAED,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;IACrD,CAAC;CACF;;YAvJwC,oEAA0B;;AAnBtD,yCAAyC;IALrD,+DAAS,CAAC;QACT,QAAQ,EAAE,mDAAmD;QAC7D,iSAAoE;KAErE,CAAC;qCAoBuC,oEAA0B;GAnBtD,yCAAyC,CA0KrD;AA1KqD;;;;;;;;;;;;;;;;;;;;ACdW;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACAO;AAE1B;AACY;AAM1D,IAAa,0BAA0B,GAAvC,MAAa,0BAA2B,SAAQ,yDAAiB;IAQ/D;QAAgB,KAAK,EAAE,CAAC;QAPd,wBAAmB,GAAyC,IAAI,0DAAY,EAAE;QACxF,qBAAgB,GAAW,EAAE,CAAC;QAC9B,uBAAkB,GAAW,EAAE,CAAC;QAChC,uBAAkB,GAAW,QAAQ,CAAC;QACtC,sBAAiB,GAAW,QAAQ,CAAC;QACrC,cAAS,GAAG,IAAI,CAAC;IAEQ,CAAC;IAE1B,QAAQ;IACR,CAAC;IAED,IAAI,CAAC,eAAe,EAAE,WAAW,EAAE,oBAA4B,QAAQ,EAAE,mBAA2B,QAAQ;QAC1G,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;QACvB,IAAI,CAAC,gBAAgB,GAAG,eAAe,CAAC;QACxC,IAAI,CAAC,kBAAkB,GAAG,WAAW,CAAC;QACtC,IAAI,CAAC,kBAAkB,GAAG,iBAAiB,CAAC;QAC5C,IAAI,CAAC,iBAAiB,GAAG,gBAAgB,CAAC;IAC5C,CAAC;IAED,QAAQ;QACN,IAAI,CAAC,WAAW,EAAE,CAAC;QACnB,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,6DAAsB,CAAC,MAAM,CAAC,CAAC;IAC/D,CAAC;IAED,SAAS;QACP,IAAI,CAAC,WAAW,EAAE,CAAC;QACnB,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,6DAAsB,CAAC,YAAY,CAAC,CAAC;IACrE,CAAC;IAEO,WAAW;QACjB,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;QACtB,IAAI,CAAC,gBAAgB,GAAG,EAAE,CAAC;QAC3B,IAAI,CAAC,kBAAkB,GAAG,EAAE,CAAC;IAC/B,CAAC;CACF;AAnCW;IAAT,4DAAM,EAAE;8BAAsB,0DAAY;uEAA6C;AAD7E,0BAA0B;IAJtC,+DAAS,CAAC;QACT,QAAQ,EAAE,iCAAiC;QAC3C,2OAAkD;KACnD,CAAC;;GACW,0BAA0B,CAoCtC;AApCsC;;;;;;;;;;;;;;;;;;;;ACTQ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACAc;AAGf;AACI;AACU;AAEkI;AAO9L,IAAa,iCAAiC,yCAA9C,MAAa,iCAAkC,SAAQ,yDAAiB;IA+BtE,YACU,8BAA6D,EAC7D,8BAA6D,EAC7D,8BAA6D,EAC7D,wBAAwD,EACxD,oBAAgD;QAExD,KAAK,EAAE,CAAC;QANA,mCAA8B,GAA9B,8BAA8B,CAA+B;QAC7D,mCAA8B,GAA9B,8BAA8B,CAA+B;QAC7D,mCAA8B,GAA9B,8BAA8B,CAA+B;QAC7D,6BAAwB,GAAxB,wBAAwB,CAAgC;QACxD,yBAAoB,GAApB,oBAAoB,CAA4B;QA/B1D,oBAAe,GAAG,qDAAc,CAAC;QACjC,eAAU,GAAG,mCAAiC,CAAC,iBAAiB,CAAC;QACjE,eAAU,GAAG,mCAAiC,CAAC,kBAAkB,CAAC;QAClE,cAAS,GAAG,IAAI,CAAC;QACjB,kBAAa,GAAW,EAAE,CAAC;QAE3B,mBAAc,GAAiC,EAAE,CAAC;QAClD,aAAQ,GAAG,IAAI,CAAC;QAChB,uBAAkB,GAAG,KAAK,CAAC;QAC3B,oBAAe,GAAG,YAAY,CAAC;QAC/B,6BAAwB,GAAY,KAAK,CAAC;QAC1C,mBAAc,GAAY,KAAK,CAAC;QAChC,uBAAkB,GAAW,IAAI,CAAC;QAKlC,iBAAY,GAAG;YACb,EAAE,MAAM,EAAE,UAAU,EAAE,UAAU,EAAE,qDAAc,CAAC,aAAa,EAAE,SAAS,EAAE,YAAY,EAAE,KAAK,EAAE,GAAG,EAAE;YACrG,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,qDAAc,CAAC,QAAQ,EAAE,SAAS,EAAE,mCAAiC,CAAC,2BAA2B,EAAE,KAAK,EAAE,GAAG,EAAE;YAC7I,EAAE,MAAM,EAAE,eAAe,EAAE,UAAU,EAAE,qDAAc,CAAC,IAAI,EAAE,SAAS,EAAE,kBAAkB,EAAE,KAAK,EAAE,GAAG,EAAE;YACvG,EAAE,MAAM,EAAE,eAAe,EAAE,UAAU,EAAE,qDAAc,CAAC,IAAI,EAAE,SAAS,EAAE,mCAAiC,CAAC,iBAAiB,EAAE,KAAK,EAAE,GAAG,EAAE;YACxI,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,qDAAc,CAAC,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE;YACrF,EAAE,MAAM,EAAE,EAAE,EAAE,UAAU,EAAE,qDAAc,CAAC,sBAAsB,EAAE,KAAK,EAAE,GAAG,EAAE;SAC9E,CAAC;IAUF,CAAC;IAED,QAAQ;QACN,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,oBAAoB,CAAC,cAAc,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE;YAC1E,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,iBAAiB,CAAC;YACxC,IAAI,CAAC,wBAAwB,GAAG,IAAI,CAAC,gBAAgB,CAAC;YACtD,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;QACxB,CAAC,CAAC;IACJ,CAAC;IAED,WAAW;QACT,IAAI,CAAC,UAAU,CAAC,WAAW,EAAE,CAAC;IAChC,CAAC;IAED,MAAM,CAAC,UAAgG;QACrG,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;QAC7B,IAAI,CAAC,oBAAoB,CAAC,eAAe,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;QAC/D,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC;QAClD,IAAI,CAAC,cAAc,GAAG,EAAE,CAAC;QACzB,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;QACvB,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;IACvB,CAAC;IAED,mBAAmB,CAAC,UAAgG,EAAE,iBAA8B;QAClJ,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;QACxB,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,YAAY,CAAC,iBAAiB,CAAC,CAAC;QAC/D,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;IACvC,CAAC;IAED,QAAQ;QACN,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;QACtB,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;QACvB,IAAI,CAAC,cAAc,GAAG,EAAE,CAAC;QACzB,IAAI,CAAC,SAAS,GAAG,EAAE,CAAC;QACpB,IAAI,CAAC,aAAa,GAAG,EAAE,CAAC;QACxB,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;QACtB,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC;IACjC,CAAC;IAEK,yBAAyB;;YAC7B,IAAI,MAAM,CAAC;YACX,QAAQ,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE;gBAC/B,KAAK,+DAAW,CAAC,GAAG;oBAClB,MAAM,GAAG,MAAM,IAAI,CAAC,8BAA8B,CAAC,sBAAsB,CAAC,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;oBACtG,MAAM;gBACR,KAAK,+DAAW,CAAC,GAAG;oBAClB,MAAM,GAAG,MAAM,IAAI,CAAC,8BAA8B,CAAC,sBAAsB,CAAC,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;oBACtG,MAAM;gBACR,KAAK,+DAAW,CAAC,GAAG;oBAClB,MAAM,GAAG,MAAM,IAAI,CAAC,8BAA8B,CAAC,sBAAsB,CAAC,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;oBACtG,MAAM;gBACR,KAAK,+DAAW,CAAC,OAAO;oBACtB,MAAM,GAAG,MAAM,IAAI,CAAC,wBAAwB,CAAC,sBAAsB,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;oBAC9F,MAAM;gBACR;oBACE,OAAO;aACV;YAED,IAAI,MAAM,YAAY,IAAI,EAAE;gBAC1B,MAAM,GAAG,GAAG,GAAG,CAAC,eAAe,CAAC,MAAc,CAAC,CAAC;gBAChD,IAAI,YAAY,GAAG,QAAQ,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;gBAC/C,YAAY,CAAC,IAAI,GAAG,GAAG,CAAC;gBACxB,YAAY,CAAC,QAAQ,GAAG,mBAAmB,CAAC;gBAC5C,YAAY,CAAC,KAAK,EAAE,CAAC;aACtB;QACH,CAAC;KAAA;IAEK,iBAAiB,CAAC,QAAoC;;YAC1D,QAAQ,CAAC,IAAI,CAAC,eAAe,CAAC,GAAG,IAAI,CAAC;YACtC,IAAI,MAAM,GAAG,MAAM,IAAI,CAAC,oBAAoB,CAAC,eAAe,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE,QAAQ,CAAC,QAAQ,CAAC,CAAC;YAC1G,IAAI,MAAM,YAAY,IAAI,EAAE;gBAC1B,MAAM,GAAG,GAAG,GAAG,CAAC,eAAe,CAAC,MAAc,CAAC,CAAC;gBAChD,IAAI,YAAY,GAAG,QAAQ,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;gBAC/C,YAAY,CAAC,IAAI,GAAG,GAAG,CAAC;gBACxB,YAAY,CAAC,QAAQ,GAAG,QAAQ,CAAC,QAAQ,CAAC;gBAC1C,YAAY,CAAC,KAAK,EAAE,CAAC;aACtB;YACD,QAAQ,CAAC,IAAI,CAAC,eAAe,CAAC,GAAG,KAAK,CAAC;QACzC,CAAC;KAAA;IAED,WAAW,CAAC,IAAgC;QAC1C,IAAI,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE;YACtC,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC;SAClE;aACI;YACH,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;SAChC;IACH,CAAC;IAEK,0BAA0B;;YAC9B,IAAI,IAAI,CAAC,cAAc,CAAC,MAAM,GAAG,CAAC,EAAE;gBAClC,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC;gBAC/B,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,OAAO,EAAE,GAAG,IAAI,IAAI,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;gBAChI,IAAI,QAAQ,GAAG,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;gBAExD,IAAI,MAAM,GAAG,MAAM,IAAI,CAAC,oBAAoB,CAAC,gBAAgB,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;gBAClG,IAAI,MAAM,YAAY,IAAI,EAAE;oBAC1B,IAAI,QAAQ,GAAW,GAAG,IAAI,CAAC,UAAU,CAAC,QAAQ,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,OAAO,EAAE,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,QAAQ,EAAE,GAAG,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC;oBAC5O,IAAI,IAAI,CAAC,cAAc,CAAC,MAAM,GAAG,CAAC,EAAE;wBAClC,IAAI,SAAS,GAAG,IAAI,CAAC,cAAc,CAAC,MAAM,GAAG,CAAC,CAAC;wBAC/C,QAAQ,GAAG,QAAQ,GAAG,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC,WAAW,CAAC,CAAC,OAAO,EAAE,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC,WAAW,CAAC,CAAC,QAAQ,EAAE,GAAG,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC,WAAW,CAAC,CAAC,WAAW,EAAE,EAAE;qBACxO;oBACD,QAAQ,GAAG,QAAQ,GAAG,MAAM,CAAC;oBAC7B,MAAM,GAAG,GAAG,GAAG,CAAC,eAAe,CAAC,MAAc,CAAC,CAAC;oBAChD,IAAI,YAAY,GAAG,QAAQ,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;oBAC/C,YAAY,CAAC,IAAI,GAAG,GAAG,CAAC;oBACxB,YAAY,CAAC,QAAQ,GAAG,QAAQ,CAAC;oBACjC,YAAY,CAAC,KAAK,EAAE,CAAC;oBACrB,IAAI,CAAC,eAAe,EAAE,CAAC;iBACxB;gBACD,IAAI,CAAC,kBAAkB,GAAG,KAAK,CAAC;aACjC;QACH,CAAC;KAAA;IAED,eAAe;QACb,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;YAC5B,IAAI,CAAC,YAAY,CAAC,GAAG,KAAK,CAAC;QAC7B,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,cAAc,GAAG,EAAE,CAAC;IAC3B,CAAC;IAEK,cAAc;;YAClB,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;YAC3B,IAAI,MAAM,GAAG,MAAM,IAAI,CAAC,oBAAoB,CAAC,sBAAsB,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;YAC9F,IAAI,CAAC,wBAAwB,GAAG,MAAM,CAAC;YACvC,IAAI,CAAC,cAAc,GAAG,KAAK,CAAC;QAC9B,CAAC;KAAA;IAEO,YAAY,CAAC,KAAkB;QACrC,MAAM,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC,+DAAW,CAAC;aACvC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;aACnC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,+DAAW,CAAC,GAA+B,CAAC,KAAK,+DAAW,CAAC,IAAI,CAAC;aAClF,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,KAAK,GAAG,+DAAW,CAAC,GAA+B,CAAC,CAAC,KAAK,+DAAW,CAAC,GAA+B,CAAC,CAAC;aACxH,IAAI,CAAC,IAAI,CAAC,CAAC;QAEd,OAAO,SAAS,IAAI,MAAM,CAAC;IAC7B,CAAC;CACF;AA/KQ,6DAA2B,GAAG,yBAAyB,CAAC;AACxD,mDAAiB,GAAG,aAAa,CAAC;AAClC,oDAAkB,GAAG,CAAC,CAAC,CAAC;;YA6BW,uEAA6B;YAC7B,uEAA6B;YAC7B,uEAA6B;YACnC,wEAA8B;YAClC,oEAA0B;;AApC/C,iCAAiC;IAL7C,+DAAS,CAAC;QACT,QAAQ,EAAE,yCAAyC;QACnD,mQAA0D;KAE3D,CAAC;qCAiC0C,uEAA6B;QAC7B,uEAA6B;QAC7B,uEAA6B;QACnC,wEAA8B;QAClC,oEAA0B;GApC/C,iCAAiC,CAgL7C;AAhL6C;;;;;;;;;;;;;;;;;;;;ACdS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACAwB;AAIjC;AACsB;AACuB;AACzB;AAEqC;AAC3B;AAO5E,IAAa,iCAAiC,GAA9C,MAAa,iCAAkC,SAAQ,yDAAiB;IAkBtE,YACU,YAAyB,EACzB,oBAAyC,EACzC,uBAAsD;QAE9D,KAAK,EAAE,CAAC;QAJA,iBAAY,GAAZ,YAAY,CAAa;QACzB,yBAAoB,GAApB,oBAAoB,CAAqB;QACzC,4BAAuB,GAAvB,uBAAuB,CAA+B;QAjBhE,cAAS,GAAG,IAAI,CAAC;QACjB,gBAAW,GAAY,IAAI,CAAC;QAE5B,eAAU,GAAY,KAAK,CAAC;QAE5B,0BAAqB,GAAuC,EAAE,CAAC;QAC/D,0BAAqB,GAAuC,EAAE,CAAC;QAC/D,0BAAqB,GAAuC,EAAE,CAAC;QAC/D,qBAAgB,GAAuC,EAAE,CAAC;QAC1D,mBAAc,GAAG,+DAAwB,CAAC;IAW1C,CAAC;IAED,IAAI,oBAAoB;QACtB,OAAO,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC,YAAY,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,IAAI,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC,YAAY,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,IAAI,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC,YAAY,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;IACzM,CAAC;IAED,QAAQ;QAEN,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,oEAAyB,CAAC,EAAE;YACpE,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;SAClE;QAED,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,6DAAkB,CAAC,EAAE;YAC7D,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;SACvE;QAED,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,uDAAgB,CAAC,KAAK,EAAE,CAAC,CAAC;QAEnF,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,6DAAkB,CAAC,EAAE;YAC7D,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;SACvE;QAED,MAAM,IAAI,GAAG,IAAI,CAAC,oBAAoB,CAAC,YAAY,EAAE,CAAC;QACtD,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;IAC7C,CAAC;IAED,WAAW;QACT,KAAK,CAAC,WAAW,EAAE,CAAC;IACtB,CAAC;IAED,MAAM,CAAC,YAAmC,EAAE,WAAoB,IAAI;QAClE,IAAI,CAAC,WAAW,GAAG,QAAQ,CAAC;QAC5B,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;QACvB,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC;QACjC,IAAI,CAAC,SAAS,EAAE,CAAC;IACnB,CAAC;IAED,QAAQ;QACN,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;QACtB,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;QACxB,IAAI,CAAC,iBAAiB,CAAC,KAAK,EAAE,CAAC;IACjC,CAAC;IAED,oBAAoB,CAAC,mBAA2B,EAAE,oBAA4B;QAC5E,OAAO,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC,mBAAmB,CAAC,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,IAAI,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC,oBAAoB,CAAC,CAAC,KAAK,CAAC,MAAM,IAAI,CAAC,CAAC;IAC1J,CAAC;IAEK,QAAQ;;YACZ,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;YACvB,IAAI,IAAI,CAAC,iBAAiB,CAAC,OAAO,IAAI,CAAC,IAAI,CAAC,oBAAoB,IAAI,IAAI,CAAC,oBAAoB,CAAC,cAAc,EAAE,eAAe,CAAC,IAAI,IAAI,CAAC,oBAAoB,CAAC,cAAc,EAAE,eAAe,CAAC,IAAI,IAAI,CAAC,oBAAoB,CAAC,cAAc,EAAE,eAAe,CAAC,EAAE;gBAC1P,OAAO;aACR;YAED,MAAM,KAAK,GAAG,gBACZ,EAAE,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE,IAC5C,IAAI,CAAC,iBAAiB,CAAC,KAAK,IAC/B,MAAM,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,EACpE,YAAY,EAAE,4DAAoB,CAAC,eAAe,CAAC,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC,YAAY,CAAC,KAAK,CAAC,EACtG,SAAS,EAAE,IAAI,CAAC,SAAS,EACzB,QAAQ,EAAE,IAAI,CAAC,cAAc,EAAE,CAAC,eAAe,EAAE,CAAC,QAAQ,EAC1D,YAAY,EAAE,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC,YAAY,CAAC,KAAK,IAAI,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC,YAAY,CAAC,KAAK,GAC/H,CAAC;YAE3B,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,uBAAuB,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;YACvE,IAAI,MAAM,YAAY,kDAAU,EAAE;gBAChC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;aACrB;YAED,IAAI,CAAC,QAAQ,EAAE,CAAC;QAClB,CAAC;KAAA;IAED,oBAAoB,CAAC,KAAK;QACxB,IAAI,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC,YAAY,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE;YACjE,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;SAC7D;aACI;YACH,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;SAC5D;IACH,CAAC;IAED,SAAS,CAAC,KAAK;QACb,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,+CAA+C,CAAC,EAAE;YACvE,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC;SACpD;IACH,CAAC;IAEO,SAAS;QACf,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK,eAC3C;YACD,MAAM,EAAE;gBACN,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,MAAM;gBAClD,yDAAU,CAAC,OAAO,CAAC;oBACjB,yDAAU,CAAC,QAAQ;iBACpB,CAAC;aACH;SACF,EACE;YACD,YAAY,EAAE;gBACZ,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;aACtE;SACF,EACE;YACD,YAAY,EAAE;gBACZ,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;aACtE;SACF,EACE;YACD,YAAY,EAAE;gBACZ,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;aACtE;SACF,IACD,YAAY,EAAE;gBACZ,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,YAAY;gBACxD,yDAAU,CAAC,OAAO,CAAC;oBACjB,yDAAU,CAAC,QAAQ;iBACpB,CAAC;aAAC,EACL,YAAY,EAAE;gBACZ,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,4DAAoB,CAAC,mBAAmB,CAAC,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC;gBAClG,yDAAU,CAAC,OAAO,CAAC;oBACjB,yDAAU,CAAC,QAAQ;iBACpB,CAAC;aACH,IACE;YACD,aAAa,EAAE;gBACb,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,aAAa;aACxD;SACF,EACE;YACD,aAAa,EAAE;gBACb,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,aAAa;aACxD;SACF,EACE;YACD,aAAa,EAAE;gBACb,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,aAAa;aACxD;SACF,EACD,CAAC;IACL,CAAC;CACF;;YAhJyB,0DAAW;YACH,2DAAmB;YAChB,uEAA6B;;AApBvD;IAAR,2DAAK,EAAE;;wEAAmD;AAClD;IAAR,2DAAK,EAAE;;wEAAmD;AAClD;IAAR,2DAAK,EAAE;;wEAAmD;AAHhD,iCAAiC;IAL7C,+DAAS,CAAC;QACT,QAAQ,EAAE,2CAA2C;QACrD,yQAA4D;KAE7D,CAAC;qCAoBwB,0DAAW;QACH,2DAAmB;QAChB,uEAA6B;GArBrD,iCAAiC,CAmK7C;AAnK6C;;;;;;;;;;;;;;;;;;;;ACjBW;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACAP;AAEQ;AACV;AACW;AAO3D,IAAa,gCAAgC,GAA7C,MAAa,gCAAgC;IAG3C,YACU,uBAAsD,EACtD,oBAAyC;QADzC,4BAAuB,GAAvB,uBAAuB,CAA+B;QACtD,yBAAoB,GAApB,oBAAoB,CAAqB;QAJnD,cAAS,GAAG,IAAI,CAAC;IAKb,CAAC;IAEL,QAAQ;IACR,CAAC;IAED,QAAQ;QACN,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;IACxB,CAAC;IAED,MAAM,CAAC,cAAsB;QAC3B,IAAI,CAAC,cAAc,GAAG,cAAc,CAAC;QACrC,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;IACzB,CAAC;IAEK,QAAQ;;YACZ,MAAM,IAAI,GAAG,IAAI,CAAC,oBAAoB,CAAC,YAAY,EAAE,CAAC;YACtD,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,uBAAuB,CAAC,MAAM,CAAC,IAAI,CAAC,cAAc,EAAE,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YACzG,IAAI,MAAM,YAAY,kDAAU,EAAE;gBAChC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;aACrB;YACD,IAAI,CAAC,QAAQ,EAAE,CAAC;QAClB,CAAC;KAAA;CACF;;YAxBoC,uEAA6B;YAChC,2DAAmB;;AALxC,gCAAgC;IAL5C,+DAAS,CAAC;QACT,QAAQ,EAAE,yCAAyC;QACnD,mQAA0D;KAE3D,CAAC;qCAKmC,uEAA6B;QAChC,2DAAmB;GALxC,gCAAgC,CA4B5C;AA5B4C;;;;;;;;;;;;;;;;;;;;ACXU;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACAkD;AACxB;AAE5B;AAC8E;AAChC;AACyC;AAClD;AAC9B;AACQ;AAOpE,IAAa,wBAAwB,GAArC,MAAa,wBAAwB;IAsDnC,YACE,YAAyB;QAtD3B,cAAS,GAAG,IAAI,CAAC;QAiBjB,iBAAY,GAAkC,IAAI,0DAAY,EAAmB,CAAC;QAElF,eAAU,GAAG,KAAK,CAAC;QAGnB,gBAAW,GAAG,YAAY,CAAC;QAC3B,oBAAe,GAAG,gBAAgB,CAAC;QACnC,mBAAc,GAAG,eAAe,CAAC;QACjC,6BAAwB,GAAG,wBAAwB,CAAC;QACpD,yBAAoB,GAAG,oBAAoB,CAAC;QAE5C,yBAAoB,GAAiC,EAAE,CAAC;QACxD,6BAAwB,GAAiC,EAAE,CAAC;QAC5D,4BAAuB,GAAiC,EAAE,CAAC;QAE3D,iBAAY,GAA4C,EAAE,CAAC;QAC3D,qBAAgB,GAA4C,EAAE,CAAC;QAC/D,oBAAe,GAA4C,EAAE,CAAC;QAEtD,sBAAiB,GAAG,2FAAkB,CAAC;QACvC,sBAAiB,GAAG,mFAAU,CAAC;QACvC,gBAAW,GAAG,mFAAU,CAAC;QACzB,4BAAuB,GAAG,mFAAU,CAAC;QAiBnC,IAAI,CAAC,WAAW,GAAG,YAAY,CAAC,KAAK,CAAC;YACpC,IAAI,EAAE;gBACJ,IAAI;gBACJ,yDAAU,CAAC,OAAO,CAAC;oBACjB,yDAAU,CAAC,QAAQ;iBACpB,CAAC;aACH;YACD,QAAQ,EAAE;gBACR,IAAI;gBACJ,yDAAU,CAAC,OAAO,CAAC;oBACjB,yDAAU,CAAC,QAAQ;iBACpB,CAAC;aACH;YACD,IAAI,EAAE;gBACJ,IAAI;gBACJ,yDAAU,CAAC,OAAO,CAAC;oBACjB,yDAAU,CAAC,QAAQ;iBACpB,CAAC;aACH;YACD,aAAa,EAAE;gBACb,IAAI;gBACJ,yDAAU,CAAC,OAAO,CAAC;oBACjB,yDAAU,CAAC,QAAQ;oBACnB,yEAAe;oBACf,yDAAU,CAAC,GAAG,CAAC,CAAC,CAAC;oBACjB,yDAAU,CAAC,GAAG,CAAC,KAAK,CAAC;iBACtB,CAAC;aACH;YACD,cAAc,EAAE;gBACd,IAAI;gBACJ,yDAAU,CAAC,OAAO,CAAC;oBACjB,yDAAU,CAAC,QAAQ;oBACnB,yEAAe;oBACf,yDAAU,CAAC,GAAG,CAAC,CAAC,CAAC;oBACjB,yDAAU,CAAC,GAAG,CAAC,KAAK,CAAC;iBACtB,CAAC;aACH;YACD,iBAAiB,EAAE;gBACjB,IAAI;gBACJ,yDAAU,CAAC,OAAO,CAAC;oBACjB,yDAAU,CAAC,QAAQ;oBACnB,yEAAe;oBACf,yDAAU,CAAC,GAAG,CAAC,CAAC,CAAC;oBACjB,yDAAU,CAAC,GAAG,CAAC,EAAE,CAAC;iBACnB,CAAC;aACH;YACD,YAAY,EAAE;gBACZ,IAAI;gBACJ,yDAAU,CAAC,OAAO,CAAC;oBACjB,yDAAU,CAAC,QAAQ;oBACnB,yEAAe;oBACf,yDAAU,CAAC,GAAG,CAAC,CAAC,CAAC;oBACjB,yDAAU,CAAC,GAAG,CAAC,KAAK,CAAC;iBACtB,CAAC;aACH;YACD,eAAe,EAAE;gBACf,IAAI;gBACJ,yDAAU,CAAC,OAAO,CAAC;oBACjB,yDAAU,CAAC,QAAQ;oBACnB,yEAAe;oBACf,yDAAU,CAAC,GAAG,CAAC,CAAC,CAAC;oBACjB,yDAAU,CAAC,GAAG,CAAC,EAAE,CAAC;iBACnB,CAAC;aACH;YACD,wBAAwB,EAAE;gBACxB,IAAI;gBACJ,yDAAU,CAAC,OAAO,CAAC;oBACjB,yDAAU,CAAC,QAAQ;oBACnB,yEAAe;oBACf,yDAAU,CAAC,GAAG,CAAC,CAAC,CAAC;oBACjB,yDAAU,CAAC,GAAG,CAAC,KAAK,CAAC;iBACtB,CAAC;aACH;YACD,2BAA2B,EAAE;gBAC3B,IAAI;gBACJ,yDAAU,CAAC,OAAO,CAAC;oBACjB,yDAAU,CAAC,QAAQ;oBACnB,yEAAe;oBACf,yDAAU,CAAC,GAAG,CAAC,CAAC,CAAC;oBACjB,yDAAU,CAAC,GAAG,CAAC,EAAE,CAAC;iBACnB,CAAC;aACH;YACD,0BAA0B,EAAE;gBAC1B,IAAI;gBACJ,yDAAU,CAAC,OAAO,CAAC;oBACjB,yDAAU,CAAC,QAAQ;oBACnB,yEAAe;oBACf,yDAAU,CAAC,GAAG,CAAC,CAAC,CAAC;oBACjB,yDAAU,CAAC,GAAG,CAAC,KAAK,CAAC;iBACtB,CAAC;aACH;YACD,6BAA6B,EAAE;gBAC7B,IAAI;gBACJ,yDAAU,CAAC,OAAO,CAAC;oBACjB,yDAAU,CAAC,QAAQ;oBACnB,yEAAe;oBACf,yDAAU,CAAC,GAAG,CAAC,CAAC,CAAC;oBACjB,yDAAU,CAAC,GAAG,CAAC,EAAE,CAAC;iBACnB,CAAC;aACH;SACF,CAAC;IACJ,CAAC;IApHD,IAAI,mBAAmB;QACrB,OAAO,IAAI,CAAC,iBAAiB,CAAC,gHAAsB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;IACrG,CAAC;IAED,IAAI,uBAAuB;QACzB,OAAO,IAAI,CAAC,yBAAyB,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,CAAC;IAC5E,CAAC;IAED,IAAI,aAAa;QACf,OAAO,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,KAAK,CAAC,CAAC;IAC1G,CAAC;IA4GD,QAAQ;QACN,IAAI,CAAC,iBAAiB,EAAE,CAAC;IAC3B,CAAC;IAED,WAAW,CAAC,OAAsB;QAChC,IAAI,CAAC,iBAAiB,EAAE,CAAC;IAC3B,CAAC;IAED,QAAQ;QACN,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;QACvB,IAAI,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE;YACvC,OAAO,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,MAAM,CAAC;YACtC,IAAI,CAAC,WAAW,CAAC,sBAAsB,EAAE,CAAC;SAC3C;QAED,IAAI,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE;YAC5B,OAAO;SACR;QAED,MAAM,SAAS,GAAG,uDAAe,CAAC,YAAY,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;QACvE,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,IAAI,SAAS,CAAC,IAAI,EAAE;YACvC,SAAS,CAAC,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;SAChC;QAED,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC,EAAE;YACpC,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC;gBACzB,MAAM,EAAE,yDAAyD;aAClE,CAAC,CAAC;YACH,OAAO;SACR;QAED,MAAM,kBAAkB,GAAG,IAAI,CAAC,wBAAwB,CAAC,SAAS,CAAC,CAAC;QACpE,IAAI,kBAAkB,IAAI,kBAAkB,CAAC,MAAM,GAAG,CAAC,EAAE;YACvD,yDAAiB,CAAC,+BAA+B,CAAC,IAAI,CAAC,WAAW,EAAE,kBAAkB,CAAC,CAAC;YACxF,OAAO;SACR;QAED,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAClC,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;QACtB,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;QACxB,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,CAAC;IAC3B,CAAC;IAED,yBAAyB,CAAC,UAA0B;QAClD,OAAO,IAAI,CAAC,iBAAiB,CAAC,CAAC,UAAU,IAAI,UAAU,KAAK,CAAC,CAAC,IAAI,gHAAsB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,UAAU,CAAC,IAAI,IAAI,EAAE,IAAI,CAAC,eAAe,CAAC,CAAC;IACjK,CAAC;IAED,eAAe,CAAC,UAA0B,EAAE,QAA4B;QACtE,IAAI,YAAY,GAAG,IAAI,CAAC,iBAAiB,CAAC,CAAC,UAAU,IAAI,UAAU,KAAK,CAAC,CAAC,IAAI,CAAC,QAAQ,IAAI,QAAQ,KAAK,CAAC,CAAC,IAAI,gHAAsB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,UAAU,CAAC,CAAC,QAAQ,CAAC,IAAI,IAAI,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC;QACpN,OAAO,YAAY,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACjD,CAAC;IAEO,iBAAiB,CAAC,GAAW,EAAE,IAAY;QACjD,IAAI,CAAC,GAAG,EAAE;YACR,OAAO,EAAE,CAAC;SACX;QAED,IAAI,MAAM,CAAC;QACX,QAAQ,IAAI,EAAE;YACZ,KAAK,IAAI,CAAC,WAAW;gBACnB,MAAM,GAAG,uEAAgB,CAAC;gBAC1B,MAAM;YACR,KAAK,IAAI,CAAC,eAAe;gBACvB,MAAM,GAAG,2EAAoB,CAAC;gBAC9B,MAAM;YACR,KAAK,IAAI,CAAC,cAAc;gBACtB,IAAI,IAAI,CAAC,OAAO,CAAC,IAAyB,KAAK,wDAAiB,CAAC,IAAI,IAAI,IAAI,CAAC,OAAO,CAAC,IAAyB,KAAK,wDAAiB,CAAC,IAAI,EAAE;oBAC1I,MAAM,GAAG,kFAA2B,CAAC;iBACtC;qBAAM;oBACL,MAAM,GAAG,oFAA6B,CAAC;iBACxC;gBACD,MAAM;YACR;gBACE,OAAO,EAAE,CAAC;SACb;QAED,OAAO,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE;YAC9B,OAAO;gBACL,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC;gBAChB,KAAK,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC;aAC1B,CAAC;QACJ,CAAC,CAAC,CAAC;IACL,CAAC;IAED,iBAAiB;QACf,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,mBAAmB,CAAC;QAC7C,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,uBAAuB,CAAC;QACrD,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,aAAa,CAAC;IAC5C,CAAC;IAEM,IAAI,CAAC,MAAuB;QACjC,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;QACtB,MAAM,EACJ,IAAI,EACJ,QAAQ,EACR,IAAI,EACJ,aAAa,EACb,cAAc,EACd,iBAAiB,EACjB,YAAY,EACZ,eAAe,EACf,0BAA0B,EAC1B,6BAA6B,EAC7B,wBAAwB,EACxB,2BAA2B,GAC5B,GAAG,MAAM,CAAC;QACX,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC;YACxB,IAAI;YACJ,QAAQ;YACR,IAAI;YACJ,aAAa,EAAE,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,aAAa;YAC1D,cAAc;YACd,iBAAiB;YACjB,YAAY;YACZ,eAAe;YACf,0BAA0B;YAC1B,6BAA6B;YAC7B,wBAAwB;YACxB,2BAA2B;SAC5B,CAAC,CAAC;QACH,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC;QAC9B,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;IACzB,CAAC;IAED,YAAY;QACV,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;QACtB,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;QACxB,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,CAAC;IAC3B,CAAC;IAED,QAAQ,CAAC,OAAoB;QAC3B,OAAO,OAAO,CAAC,KAAK,IAAI,OAAO,CAAC,KAAK,KAAK,CAAC,CAAC;IAC9C,CAAC;IAED,kBAAkB,CAAC,OAAa,KAAK;QACnC,IAAI,CAAC,iBAAiB,EAAE,CAAC;QACzB,QAAQ,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,EAAE;YAC5C,KAAK,qDAAc,CAAC,KAAK,CAAC;YAC1B,KAAK,qDAAc,CAAC,cAAc,CAAC;YACnC,KAAK,qDAAc,CAAC,iBAAiB;gBACnC,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,QAAQ,CAAC,QAAQ,CAAC,yDAAkB,CAAC,eAAe,CAAC,CAAC;gBAChF,IAAI,CAAC,iBAAiB,EAAE,CAAC;gBACzB,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,wDAAiB,CAAC,IAAI,CAAC,CAAC;gBAChE,MAAM;SACT;QAED,QAAQ,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,EAAE;YAC5C,KAAK,qDAAc,CAAC,SAAS,CAAC;YAC9B,KAAK,qDAAc,CAAC,cAAc,CAAC;YACnC,KAAK,qDAAc,CAAC,iBAAiB;gBACnC,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,0BAA0B,CAAC,KAAK,EAAE,CAAC;gBAC7D,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,0BAA0B,CAAC,eAAe,EAAE,CAAC;gBACvE,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,0BAA0B,CAAC,OAAO,EAAE,CAAC;gBAC/D,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,0BAA0B,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;gBACnE,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,6BAA6B,CAAC,KAAK,EAAE,CAAC;gBAChE,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,6BAA6B,CAAC,eAAe,EAAE,CAAC;gBAC1E,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,6BAA6B,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;gBACvE,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,6BAA6B,CAAC,OAAO,EAAE,CAAC;gBAClE,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,wBAAwB,CAAC,KAAK,EAAE,CAAC;gBAC3D,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,wBAAwB,CAAC,eAAe,EAAE,CAAC;gBACrE,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,wBAAwB,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;gBACjE,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,wBAAwB,CAAC,OAAO,EAAE,CAAC;gBAC7D,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,2BAA2B,CAAC,KAAK,EAAE,CAAC;gBAC9D,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,2BAA2B,CAAC,eAAe,EAAE,CAAC;gBACxE,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,2BAA2B,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;gBACrE,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,2BAA2B,CAAC,OAAO,EAAE,CAAC;gBAChE,IAAI,CAAC,uBAAuB,GAAG,2FAAkB,CAAC;gBAClD,MAAM;YACR;gBACE,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,0BAA0B,CAAC,aAAa,CAAC,yDAAU,CAAC,OAAO,CAAC;oBACpF,yDAAU,CAAC,QAAQ;oBACnB,yEAAe;oBACf,yDAAU,CAAC,GAAG,CAAC,CAAC,CAAC;oBACjB,yDAAU,CAAC,GAAG,CAAC,KAAK,CAAC;iBACtB,CAAC,CAAC,CAAC;gBACJ,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,0BAA0B,CAAC,MAAM,EAAE,CAAC;gBAC9D,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,6BAA6B,CAAC,aAAa,CAAC,yDAAU,CAAC,OAAO,CAAC;oBACvF,yDAAU,CAAC,QAAQ;oBACnB,yEAAe;oBACf,yDAAU,CAAC,GAAG,CAAC,CAAC,CAAC;oBACjB,yDAAU,CAAC,GAAG,CAAC,EAAE,CAAC;iBACnB,CAAC,CAAC,CAAC;gBACJ,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,6BAA6B,CAAC,MAAM,EAAE,CAAC;gBACjE,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,wBAAwB,CAAC,aAAa,CAAC,yDAAU,CAAC,OAAO,CAAC;oBAClF,yDAAU,CAAC,QAAQ;oBACnB,yEAAe;oBACf,yDAAU,CAAC,GAAG,CAAC,CAAC,CAAC;oBACjB,yDAAU,CAAC,GAAG,CAAC,KAAK,CAAC;iBACtB,CAAC,CAAC,CAAC;gBACJ,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,wBAAwB,CAAC,MAAM,EAAE,CAAC;gBAC5D,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,2BAA2B,CAAC,aAAa,CAAC,yDAAU,CAAC,OAAO,CAAC;oBACrF,yDAAU,CAAC,QAAQ;oBACnB,yEAAe;oBACf,yDAAU,CAAC,GAAG,CAAC,CAAC,CAAC;oBACjB,yDAAU,CAAC,GAAG,CAAC,EAAE,CAAC;iBACnB,CAAC,CAAC,CAAC;gBACJ,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,2BAA2B,CAAC,MAAM,EAAE,CAAC;gBAC/D,IAAI,CAAC,uBAAuB,GAAG,IAAI,CAAC,iBAAiB,CAAC;gBACtD,IAAG,CAAC,IAAI,EAAC;oBACP,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,wBAAwB,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;oBAClE,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,0BAA0B,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;iBACrE;gBACD,MAAM;SACT;IACH,CAAC;CACF;;YAtTiB,0DAAW;;AAnD3B;IADC,2DAAK,EAAE;;sDACmB;AAG3B;IADC,2DAAK,EAAE;;2DACqB;AAG7B;IADC,2DAAK,EAAE;;iEAC8C;AAGtD;IADC,2DAAK,EAAE;;0EACgE;AAKxE;IADC,4DAAM,EAAE;8BACK,0DAAY;8DAAwD;AAlBvE,wBAAwB;IALpC,+DAAS,CAAC;QACT,QAAQ,EAAE,gCAAgC;QAC1C,wPAAiD;KAElD,CAAC;qCAwDgB,0DAAW;GAvDhB,wBAAwB,CA6WpC;AA7WoC;;;;;;;;;;;;;;;;;;;;AChBS;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACAyB;AAQvE,IAAa,sBAAsB,GAAnC,MAAa,sBAAsB;IALnC;QAOE,UAAK,GAAW,CAAC,CAAC,CAAC;QAGnB,aAAQ,GAAqD,IAAI,0DAAY,EAAsC,CAAC;QAEpH,gBAAW,GAAY,KAAK,CAAC;IAmB/B,CAAC;IAjBC,KAAK;QACH,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;QACzB,IAAI,CAAC,UAAU,EAAE;IACnB,CAAC;IAED,YAAY;QACV,IAAI,CAAC,WAAW,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC;QACrC,IAAI,CAAC,UAAU,EAAE,CAAC;IACpB,CAAC;IAED,cAAc,CAAC,CAAQ;QACrB,CAAC,CAAC,eAAe,EAAE,CAAC;IACtB,CAAC;IAEO,UAAU;QAChB,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,WAAW,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;IACtE,CAAC;CACF;AAxBC;IADC,2DAAK,EAAE;;qDACW;AAGnB;IADC,4DAAM,EAAE;8BACC,0DAAY;wDAA8F;AALzG,sBAAsB;IALlC,+DAAS,CAAC;QACT,QAAQ,EAAE,6BAA6B;QACvC,+OAA8C;KAE/C,CAAC;GACW,sBAAsB,CA0BlC;AA1BkC;;;;;;;;;;;;;;;;;;;;ACRQ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACAoC;AAGb;AAOvC;AACoC;AACA;AACc;AAC0E;AACpG;AAC2E;AAC3D;AAClB;AACqD;AAQtG,IAAa,uBAAuB,GAApC,MAAa,uBAAuB;IAmClC,YACU,mBAAkD;QAAlD,wBAAmB,GAAnB,mBAAmB,CAA+B;QApB5D,cAAS,GAAG,IAAI,CAAC;QACjB,eAAU,GAAG,KAAK,CAAC;QAMnB,qBAAgB,GAAuB,IAAI,CAAC;QAC5C,kBAAa,GAAoB,IAAI,CAAC;QAEtC,6BAAwB,GAAG,CAAC,CAAC,CAAC;QAGtB,kBAAa,GAAmB,EAAE,CAAC;QAEnC,2BAAsB,GAAY,IAAI,CAAC;QAE/C,YAAO,GAAwG,EAAE,CAAC;QAKhH,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACrD,IAAI,CAAC,sBAAsB,GAAG,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACrE,IAAI,CAAC,uBAAuB,GAAG,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACvE,IAAI,CAAC,0BAA0B,GAAG,IAAI,CAAC,0BAA0B,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC/E,CAAC;IAED,eAAe;QACb,IAAI,IAAI,GAAG,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,SAAwC,EAAE,EAAE;YAC/F,IAAI,SAAS,CAAC,CAAC,CAAC,EAAE;gBAChB,IAAI,CAAC,mBAAmB,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;aACxC;iBAAM;gBACL,IAAI,CAAC,kBAAkB,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;aACvC;QACH,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAE9B,IAAI,GAAG,IAAI,CAAC,kBAAkB,CAAC,QAAQ,CAAC,SAAS,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,oBAAoB,EAAE,CAAC,CAAC;QACrF,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAE9B,IAAI,GAAG,IAAI,CAAC,kBAAkB,CAAC,WAAW,CAAC,SAAS,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,mBAAmB,CAAC,wCAAwC,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC;QACjJ,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAChC,CAAC;IAED,kBAAkB;QAChB,IAAI,CAAC,2BAA2B,CAAC,eAAe,CAAC,SAAS,CAAC,WAAW,CAAC,EAAE,GAAG,IAAI,CAAC,iBAAiB,CAAC,WAAW,CAAC,EAAC,CAAC,CAAC,CAAC;IACrH,CAAC;IAED,WAAW;QACT,IAAI,CAAC,aAAa,IAAI,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC;QAC7E,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC;IAC/B,CAAC;IAEM,IAAI,CAAC,iBAAgD;QAC1D,IAAI,CAAC,SAAS,GAAG,iBAAiB,CAAC;QACnC,IAAI,CAAC,WAAW,EAAE,CAAC;QACnB,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,UAAU,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,MAAM,EAAE;YACnE,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,qBAAqB,EAAE,qBAAqB,CAAC,CAAC;SAC5E;aAAM;YACL,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;SACxB;IACH,CAAC;IAED,YAAY,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE;QAC5B,IAAI,MAAM,EAAE;YACV,IAAI,CAAC,wBAAwB,GAAG,KAAK,CAAC;SACvC;IACH,CAAC;IAED,eAAe,CAAC,KAAK;QACnB,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;QACzD,IAAI,CAAC,WAAW,EAAE,CAAC;QAEnB,UAAU,CAAC,GAAG,EAAE;YACd,IAAI,GAAG,GAAG,QAAQ,CAAC,cAAc,CAAC,GAAG,IAAI,CAAC,gBAAgB,CAAC,EAAE,EAAE,CAAC,CAAC;YACjE,IAAI,GAAG,EAAE;gBACP,IAAI,UAAU,GAAG,QAAQ,CAAC,cAAc,CAAC,aAAa,CAAC,CAAC;gBACxD,IAAI,UAAU,EAAE;oBACd,UAAU,CAAC,KAAK,CAAC,WAAW,CAAC,KAAK,EAAE,GAAG,GAAG,CAAC,SAAS,IAAI,CAAC,CAAC;iBAC3D;aACF;QACH,CAAC,EAAE,GAAG,CAAC,CAAC;IACV,CAAC;IAED,gBAAgB;QACd,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC;QAC7B,IAAI,CAAC,WAAW,EAAE,CAAC;IACrB,CAAC;IAED,mBAAmB,CAAC,CAA6C;QAC/D,IAAI,CAAC,kBAAkB,GAAG,CAAC,CAAC,KAAK,CAAC;QAClC,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;IACvC,CAAC;IAED,mBAAmB,CAAC,MAAuB;QACzC,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACrC,CAAC;IAEK,WAAW;;YACf,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;YACvB,MAAM,SAAS,GAAG,IAAI,qEAA6B,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YACpE,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,mBAAmB,CAAC,oBAAoB,CAAC,SAAS,CAAC,CAAC;YAE9E,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;YACxB,IAAI,MAAM,EAAE;gBACV,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;gBACtB,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC;gBAC7B,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;aACvB;QACH,CAAC;KAAA;IAED,eAAe,CAAC,MAAuB;QACrC,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,IAAI,CAAC,kBAAkB,CAAC,GAAG,MAAM,CAAC;QAChE,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC;QAC/B,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;QAC1B,IAAI,CAAC,WAAW,EAAE,CAAC;IACrB,CAAC;IAED,iBAAiB,CAAC,WAAmB;QACnC,IAAI,CAAC,SAAS,CAAC,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,CAAC,SAAS,CAAC,EAAE,KAAK,WAAW,CAAC,CAAC;QACxG,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC;QAC7B,IAAI,CAAC,WAAW,EAAE,CAAC;IACrB,CAAC;IAED,eAAe,CAAC,OAA0B;QACxC,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE;YAC1B,OAAO;SACR;QAED,IAAI,CAAC,gBAAgB,CAAC,OAAO,GAAG,OAAO;QACvC,IAAI,CAAC,WAAW,EAAE,CAAC;IACrB,CAAC;IAEO,WAAW;QACjB,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE;YAC1B,OAAO;SACR;QAED,MAAM,cAAc,GAAG,CAAC,CAAkB,EAAE,CAAkB,EAAE,EAAE;YAChE,MAAM,OAAO,GAAG,GAAG,uEAAgB,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,2EAAoB,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,0EAAmB,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC;YAC/G,MAAM,OAAO,GAAG,GAAG,uEAAgB,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,2EAAoB,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,0EAAmB,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC;YAC/G,IAAI,OAAO,GAAG,OAAO,EAAE;gBACrB,OAAO,CAAC,CAAC,CAAC;aACX;YACD,IAAI,OAAO,GAAG,OAAO,EAAE;gBACrB,OAAO,CAAC,CAAC;aACV;YACD,OAAO,CAAC,CAAC;QACX,CAAC,CAAC;QACF,IAAI,CAAC,gBAAgB,CAAC,OAAO,GAAG,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;IACrF,CAAC;IAED,kBAAkB,CAAC,SAA6B;QAC9C,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,UAAU,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,MAAM,EAAE;YACnE,IAAI,CAAC,SAAS,CAAC,UAAU,GAAG,EAAE,CAAC;SAChC;QAED,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAE1C,IAAI,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,MAAM,EAAE;YACpC,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;YACvB,IAAI,CAAC,WAAW,EAAE,CAAC;SACpB;IACH,CAAC;IAED,mBAAmB,CAAC,SAA6B;QAC/C,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC,sBAAsB,CAAC,GAAG,SAA+B,CAAC;QACzF,IAAI,CAAC,sBAAsB,GAAG,IAAI,CAAC;QAEnC,IAAI,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,MAAM,EAAE;YACpC,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;YACvB,IAAI,CAAC,WAAW,EAAE,CAAC;SACpB;IACH,CAAC;IAED,oBAAoB;QAClB,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,UAAU,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,MAAM,EAAE;YACnE,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;SACvB;IACH,CAAC;IAED,cAAc;QACZ,IAAI,CAAC,sBAAsB,GAAG,IAAI,CAAC;QACnC,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,mBAAmB,EAAE,KAAK,CAAC,CAAC;IAC3D,CAAC;IAED,iBAAiB,CAAC,SAA6B;QAC7C,IAAI,CAAC,2BAA2B,CAAC,iBAAiB,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;IACnE,CAAC;IAED,eAAe,CAAC,SAA6B,EAAE,KAAa;QAC1D,IAAI,CAAC,sBAAsB,GAAG,KAAK,CAAC;QACpC,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,gBAAgB,EAAE,MAAM,EAAE,SAAS,CAAC,CAAC;IACpE,CAAC;IAED,eAAe,CAAC,SAA6B;QAC3C,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;IAClE,CAAC;IAEK,YAAY;;YAChB,MAAM,IAAI,CAAC,mBAAmB,CAAC,wCAAwC,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;YAC3F,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC;YAC7B,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;YACtB,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;YACtB,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;QAC1B,CAAC;KAAA;IAED,WAAW;QACT,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE;YAC1B,IAAI,CAAC,OAAO,GAAG,EAAE,CAAC;YAClB,OAAO;SACR;QAED,IAAI,CAAC,WAAW,EAAE,CAAC;QACnB,MAAM,OAAO,GAAG,6EAAsB,CAAC,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC;QAElG,IAAI,aAAgC,CAAC;QACrC,IAAI,aAAgC,CAAC;QAErC,IAAI,IAAI,CAAC,gBAAgB,CAAC,OAAO,IAAI,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAyB,KAAK,wDAAiB,CAAC,KAAK;YACtK,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAyB,KAAK,wDAAiB,CAAC,KAAK,CAAC,EAAE;YACzF,aAAa,GAAG,wDAAiB,CAAC,KAAK,CAAC;YACxC,aAAa,GAAG,wDAAiB,CAAC,KAAK,CAAC;SACzC;aAAM;YACL,aAAa,GAAG,wDAAiB,CAAC,IAAI,CAAC;YACvC,aAAa,GAAG,wDAAiB,CAAC,IAAI,CAAC;SACxC;QAGD,MAAM,KAAK,GAAG;YACZ,uEAAgB,CAAC,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;YAC9E,uEAAgB,CAAC,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC,aAAa,CAAC;YAC1F,uEAAgB,CAAC,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC,aAAa,CAAC;SAC3F,CAAC;QAEF,MAAM,iBAAiB,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAsB,KAAK,wDAAiB,CAAC,IAAI,CAAC,CAAC;QAClH,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC;aACjC,MAAM,CAAC,CAAC,CAAC,IAAI,EAAE,eAAe,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,eAAe,CAAC;aACtD,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,eAAe,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,CAAsB,EAAE,eAAe,EAAE,eAAyB,EAAE,CAAC,CAAC;aAC3H,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,eAAe,EAAE,SAAS,EAAE,EAAE,EAAE;YAC5C,MAAM,OAAO,GAAG,IAAI,CAAC,gBAAgB,CAAC,OAAO;iBAC1C,GAAG,CAAC,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE,CAAC,mBAAM,MAAM,IAAE,KAAK,EAAE,KAAK,GAAG,CAAC,IAAG,CAAC;iBACzD,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,IAAI,KAAK,IAAI,IAAI,MAAM,CAAC,IAAI,KAAM,6DAAM,CAAC,IAAI,CAAC,IAAI,CAAC,iBAAiB,IAAI,MAAM,CAAC,IAAI,KAAK,wDAAiB,CAAC,IAAI,CAAC,CAAC;iBACxI,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;gBACd,KAAK,EAAE,MAAM,CAAC,KAAK;gBACnB,OAAO,EAAE,MAAM,CAAC,KAAK,GAAG,KAAK,GAAG,2EAAoB,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,IAAI,GAAG,uEAAgB,CAAC,MAAM,CAAC,IAAI,CAAC;gBAC5G,SAAS,EAAE,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC;aAC9D,CAAC,CAAC;iBACF,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;YACxC,OAAO;gBACL,SAAS;gBACT,OAAO;aACR,CAAC;QACJ,CAAC,CAAC,CAAC;IACP,CAAC;IAED,cAAc,CAAC,MAAuB;QACpC,OAAO,IAAI,CAAC,gBAAgB,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,OAAO;aAC3D,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,kBAAkB,KAAK,IAAI,IAAI,IAAI,CAAC,kBAAkB,KAAK,SAAS,IAAI,CAAC,KAAK,IAAI,CAAC,kBAAkB,CAAC;aAC5H,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,CAAC,QAAQ,KAAK,MAAM,CAAC,QAAQ,IAAI,CAAC,CAAC,IAAI,KAAK,MAAM,CAAC,IAAI,CAAC,CAAC;IACnG,CAAC;IAED,sBAAsB,CAAC,SAA6B;QAClD,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,UAAU;aAC9B,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,sBAAsB,KAAK,IAAI,IAAI,IAAI,CAAC,sBAAsB,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,SAAS,CAAC,IAAI,CAAC,CAAC;IAC9H,CAAC;IAED,uBAAuB,CAAC,MAAuB;QAC7C,MAAM,aAAa,GAAoE,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QACxG,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE;YACrC,aAAa,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACvB,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,MAAM,CAAC,EAAE,CAAC,IAAI,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;QACzE,CAAC,CAAC,CAAC;QACH,MAAM,CAAC,SAAS,GAAG,kEAAW,CAAC,eAAe,CAAC;QAC/C,OAAO,2DAAmB,CAAC,yBAAyB,CAAC,aAAa,EAAE,MAAM,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;IAC9F,CAAC;IAED,0BAA0B,CAAC,SAA6B;QACtD,MAAM,aAAa,GAAoE,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QACxG,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE;YACrC,IAAI,EAAE,CAAC,EAAE,KAAK,SAAS,CAAC,EAAE,EAAE;gBAC1B,aAAa,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;aACxB;YAED,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;QACjD,CAAC,CAAC,CAAC;QACH,SAAS,CAAC,SAAS,GAAG,kEAAW,CAAC,kBAAkB,CAAC;QACrD,OAAO,2DAAmB,CAAC,yBAAyB,CAAC,aAAa,EAAE,SAAS,CAAC,CAAC;IACjF,CAAC;CACF;;YA9QgC,uEAA6B;;AAlC5D;IADC,+DAAS,CAAC,2EAAwB,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;8BAC1C,2EAAwB;iEAAC;AAGnD;IADC,+DAAS,CAAC,2EAAwB,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;8BAC1C,2EAAwB;iEAAC;AAGnD;IADC,+DAAS,CAAC,wFAA8B,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;8BAC9C,wFAA8B;mEAAC;AAG3D;IADC,+DAAS,CAAC,0IAAmC,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;8BAC1C,0IAAmC;4EAAC;AAGzE;IADC,+DAAS,CAAC,mHAA+B,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;8BAC1C,mHAA+B;wEAAC;AAdtD,uBAAuB;IANnC,+DAAS,CAAC;QACT,QAAQ,EAAE,8BAA8B;QACxC,kOAA+C;KAEhD,CAAC;qCAsC+B,uEAA6B;GApCjD,uBAAuB,CAkTnC;AAlTmC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC3BoG;AACvD;AAE5B;AAC8E;AAChC;AAC8D;AAChH;AACyC;AAC9B;AACmE;AAC3D;AAOpE,IAAa,8BAA8B,GAA3C,MAAa,8BAA8B;IA8EzC,YACU,YAAyB,EACzB,GAAe,EACf,KAAa;QAFb,iBAAY,GAAZ,YAAY,CAAa;QACzB,QAAG,GAAH,GAAG,CAAY;QACf,UAAK,GAAL,KAAK,CAAQ;QA7DvB,kBAAa,GAAyC,IAAI,0DAAY,EAA0B,CAAC;QAGjG,kBAAa,GAA6D,IAAI,0DAAY,EAA8C,CAAC;QAGzI,kBAAa,GAAkC,IAAI,0DAAY,EAAmB,CAAC;QAEnF,UAAK,GAAG,MAAM,CAAC;QACf,UAAK,GAAG,MAAM,CAAC;QACf,YAAO,GAAG,QAAQ,CAAC;QACnB,gBAAW,GAAG,YAAY,CAAC;QAC3B,oBAAe,GAAG,gBAAgB,CAAC;QACnC,mBAAc,GAAG,eAAe,CAAC;QACjC,6BAAwB,GAAG,wBAAwB,CAAC;QACpD,yBAAoB,GAAG,oBAAoB,CAAC;QAE5C,eAAU,GAAG,KAAK,CAAC;QAGnB,iBAAY,GAA4C,EAAE,CAAC;QAC3D,qBAAgB,GAA4C,EAAE,CAAC;QAC/D,oBAAe,GAA4C,EAAE,CAAC;QAEtD,sBAAiB,GAAG,2FAAkB,CAAC;QACvC,sBAAiB,GAAG,mFAAU,CAAC;QACvC,gBAAW,GAAG,mFAAU,CAAC;QACzB,4BAAuB,GAAG,mFAAU,CAAC;QAErC,aAAQ,GAAG;YACT,EAAE,MAAM,EAAE,EAAE,EAAE,SAAS,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,CAAC,EAAE,KAAK,EAAE;YACnE,EAAE,MAAM,EAAE,EAAE,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,IAAqB,EAAE,EAAE,CAAC,IAAI,IAAI,uEAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;YAC3G,EAAE,MAAM,EAAE,EAAE,EAAE,SAAS,EAAE,UAAU,EAAE,QAAQ,EAAE,CAAC,IAAqB,EAAE,EAAE,CAAC,IAAI,IAAI,2EAAoB,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE;YACvH,EAAE,MAAM,EAAE,EAAE,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,IAAqB,EAAE,EAAE,CAAC,IAAI,IAAI,0EAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;YAC9G,EAAE,MAAM,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,KAAK,EAAE;YAChC,EAAE,MAAM,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,KAAK,EAAE;YAChC,EAAE,MAAM,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,OAAO,EAAE;SACnC,CAAC;QAGF,cAAS,GAAG;YACV,UAAU,EAAE,CAAC;YACb,gBAAgB,EAAE,IAAI;YACtB,kBAAkB,EAAE,EAAE;SACvB,CAAC;QAmBA,IAAI,CAAC,WAAW,GAAG,YAAY,CAAC,KAAK,CAAC;YACpC,IAAI,EAAE;gBACJ,IAAI;gBACJ,yDAAU,CAAC,OAAO,CAAC;oBACjB,yDAAU,CAAC,QAAQ;iBACpB,CAAC;aACH;YACD,QAAQ,EAAE;gBACR,IAAI;gBACJ,yDAAU,CAAC,OAAO,CAAC;oBACjB,yDAAU,CAAC,QAAQ;iBACpB,CAAC;aACH;YACD,IAAI,EAAE;gBACJ,IAAI;gBACJ,yDAAU,CAAC,OAAO,CAAC;oBACjB,yDAAU,CAAC,QAAQ;iBACpB,CAAC;aACH;YACD,aAAa,EAAE;gBACb,IAAI;gBACJ,yDAAU,CAAC,OAAO,CAAC;oBACjB,yDAAU,CAAC,QAAQ;oBACnB,yEAAe;oBACf,yDAAU,CAAC,GAAG,CAAC,CAAC,CAAC;oBACjB,yDAAU,CAAC,GAAG,CAAC,KAAK,CAAC;iBACtB,CAAC;aACH;YACD,cAAc,EAAE;gBACd,IAAI;gBACJ,yDAAU,CAAC,OAAO,CAAC;oBACjB,yDAAU,CAAC,QAAQ;oBACnB,yEAAe;oBACf,yDAAU,CAAC,GAAG,CAAC,CAAC,CAAC;oBACjB,yDAAU,CAAC,GAAG,CAAC,KAAK,CAAC;iBACtB,CAAC;aACH;YACD,iBAAiB,EAAE;gBACjB,IAAI;gBACJ,yDAAU,CAAC,OAAO,CAAC;oBACjB,yDAAU,CAAC,QAAQ;oBACnB,yEAAe;oBACf,yDAAU,CAAC,GAAG,CAAC,CAAC,CAAC;oBACjB,yDAAU,CAAC,GAAG,CAAC,EAAE,CAAC;iBACnB,CAAC;aACH;YACD,YAAY,EAAE;gBACZ,IAAI;gBACJ,yDAAU,CAAC,OAAO,CAAC;oBACjB,yDAAU,CAAC,QAAQ;oBACnB,yEAAe;oBACf,yDAAU,CAAC,GAAG,CAAC,CAAC,CAAC;oBACjB,yDAAU,CAAC,GAAG,CAAC,KAAK,CAAC;iBACtB,CAAC;aACH;YACD,eAAe,EAAE;gBACf,IAAI;gBACJ,yDAAU,CAAC,OAAO,CAAC;oBACjB,yDAAU,CAAC,QAAQ;oBACnB,yEAAe;oBACf,yDAAU,CAAC,GAAG,CAAC,CAAC,CAAC;oBACjB,yDAAU,CAAC,GAAG,CAAC,EAAE,CAAC;iBACnB,CAAC;aACH;YACD,0BAA0B,EAAE;gBAC1B,IAAI;gBACJ,yDAAU,CAAC,OAAO,CAAC;oBACjB,yDAAU,CAAC,QAAQ;oBACnB,yEAAe;oBACf,yDAAU,CAAC,GAAG,CAAC,CAAC,CAAC;oBACjB,yDAAU,CAAC,GAAG,CAAC,KAAK,CAAC;iBACtB,CAAC;aACH;YACD,6BAA6B,EAAE;gBAC7B,IAAI;gBACJ,yDAAU,CAAC,OAAO,CAAC;oBACjB,yDAAU,CAAC,QAAQ;oBACnB,yEAAe;oBACf,yDAAU,CAAC,GAAG,CAAC,CAAC,CAAC;oBACjB,yDAAU,CAAC,GAAG,CAAC,EAAE,CAAC;iBACnB,CAAC;aACH;YACD,wBAAwB,EAAE;gBACxB,IAAI;gBACJ,yDAAU,CAAC,OAAO,CAAC;oBACjB,yDAAU,CAAC,QAAQ;oBACnB,yEAAe;oBACf,yDAAU,CAAC,GAAG,CAAC,CAAC,CAAC;oBACjB,yDAAU,CAAC,GAAG,CAAC,KAAK,CAAC;iBACtB,CAAC;aACH;YACD,2BAA2B,EAAE;gBAC3B,IAAI;gBACJ,yDAAU,CAAC,OAAO,CAAC;oBACjB,yDAAU,CAAC,QAAQ;oBACnB,yEAAe;oBACf,yDAAU,CAAC,GAAG,CAAC,CAAC,CAAC;oBACjB,yDAAU,CAAC,GAAG,CAAC,EAAE,CAAC;iBACnB,CAAC;aACH;SACF,CAAC;IACJ,CAAC;IAtHD,IAAI,mBAAmB;QACrB,OAAO,IAAI,CAAC,iBAAiB,CAAC,gHAAsB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;IACrG,CAAC;IAED,IAAI,uBAAuB;QACzB,OAAO,IAAI,CAAC,yBAAyB,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,CAAC;IAC5E,CAAC;IAED,IAAI,aAAa;QACf,OAAO,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,KAAK,CAAC,CAAC;IAC1G,CAAC;IA8GD,QAAQ;QACN,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;QACxB,IAAI,CAAC,iBAAiB,EAAE,CAAC;IAC3B,CAAC;IAED,kBAAkB;QAChB,IAAI,CAAC,2BAA2B,CAAC,YAAY,CAAC,SAAS,CAAC,QAAQ,CAAC,EAAE;YACjE,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC;QAChC,CAAC,CAAC,CAAC;IACL,CAAC;IAED,WAAW;QACT,IAAI,CAAC,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;QAC/B,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC;IAClB,CAAC;IAED,eAAe;QACb,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;IAC1B,CAAC;IAED,kBAAkB;QAChB,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;QACvB,IAAI,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE;YAC5B,OAAO;SACR;QAED,MAAM,MAAM,GAAG,uDAAe,CAAC,YAAY,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;QACpE,IAAI,IAAI,CAAC,eAAe,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,EAAE;YACzD,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC;gBACzB,MAAM,EAAE,yDAAyD;aAClE,CAAC,CAAC;YACH,OAAO;SACR;QAED,MAAM,kBAAkB,GAAG,IAAI,CAAC,wBAAwB,CAAC,MAAM,CAAC,CAAC;QACjE,IAAI,kBAAkB,IAAI,kBAAkB,CAAC,MAAM,GAAG,CAAC,EAAE;YACvD,0DAAiB,CAAC,+BAA+B,CAAC,IAAI,CAAC,WAAW,EAAE,kBAAkB,CAAC,CAAC;YACxF,OAAO;SACR;QAED,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,2BAA2B,CAAC,aAAa,CAAC,SAAS;QAC7E,MAAM,OAAO,GAAG;YACd,GAAG,IAAI,CAAC,OAAO;YACf,MAAM;SACP,CAAC;QAEF,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACjC,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;QACxB,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,CAAC;QACzB,IAAI,CAAC,kBAAkB,EAAE,CAAC;IAC5B,CAAC;IAED,yBAAyB,CAAC,UAA0B;QAClD,OAAO,IAAI,CAAC,iBAAiB,CAAC,CAAC,UAAU,IAAI,UAAU,KAAK,CAAC,CAAC,IAAI,gHAAsB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,UAAU,CAAC,IAAI,IAAI,EAAE,IAAI,CAAC,eAAe,CAAC,CAAC;IACjK,CAAC;IAED,eAAe,CAAC,UAA0B,EAAE,QAA4B;QACtE,IAAI,YAAY,GAAG,IAAI,CAAC,iBAAiB,CAAC,CAAC,UAAU,IAAI,UAAU,KAAK,CAAC,CAAC,IAAI,CAAC,QAAQ,IAAI,QAAQ,KAAK,CAAC,CAAC,IAAI,gHAAsB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,UAAU,CAAC,CAAC,QAAQ,CAAC,IAAI,IAAI,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC;QACpN,OAAO,YAAY,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACjD,CAAC;IAEO,iBAAiB,CAAC,GAAW,EAAE,IAAY;QACjD,IAAI,CAAC,GAAG,EAAE;YACR,OAAO,EAAE,CAAC;SACX;QAED,IAAI,MAAM,CAAC;QACX,QAAQ,IAAI,EAAE;YACZ,KAAK,IAAI,CAAC,WAAW;gBACnB,MAAM,GAAG,uEAAgB,CAAC;gBAC1B,MAAM;YACR,KAAK,IAAI,CAAC,eAAe;gBACvB,MAAM,GAAG,2EAAoB,CAAC;gBAC9B,MAAM;YACR,KAAK,IAAI,CAAC,cAAc;gBACtB,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE;oBAC7B,MAAM,GAAG,0EAAmB,CAAC;iBAC9B;qBAAM,IAAI,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAyB,KAAK,wDAAiB,CAAC,IAAI,IAAI,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAyB,KAAK,wDAAiB,CAAC,IAAI,EAAE;oBACvJ,MAAM,GAAG,kFAA2B,CAAC;iBACtC;qBAAM,IAAI,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAyB,KAAK,wDAAiB,CAAC,KAAK,IAAI,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAyB,KAAK,wDAAiB,CAAC,KAAK,EAAE;oBACzJ,MAAM,GAAG,oFAA6B,CAAC;iBACxC;qBAAM;oBACL,MAAM,GAAG,0EAAmB,CAAC;iBAC9B;gBACD,MAAM;YACR;gBACE,OAAO,EAAE,CAAC;SACb;QAED,OAAO,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE;YAC9B,OAAO;gBACL,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC;gBAChB,KAAK,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC;aAC1B,CAAC;QACJ,CAAC,CAAC,CAAC;IACL,CAAC;IAED,iBAAiB;QACf,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,mBAAmB,CAAC;QAC7C,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,uBAAuB,CAAC;QACrD,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,aAAa,CAAC;IAC5C,CAAC;IAED,WAAW,CAAC,MAAuB,EAAE,KAAa;QAChD,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC;IAC7C,CAAC;IAED,WAAW,CAAC,MAAuB;QACjC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAClC,CAAC;IAED,cAAc,CAAC,QAAgB;QAC7B,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,EAAE,KAAK,QAAQ,CAAC,CAAC;QACrE,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACxC,CAAC;IAED,aAAa,CAAC,MAAuB;QACnC,IAAI,CAAC,2BAA2B,CAAC,cAAc,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IAC7D,CAAC;IAED,qBAAqB;QACnB,IAAI,CAAC,aAAa,EAAE,CAAC;IACvB,CAAC;IAED,eAAe,CAAC,OAAgB,EAAE,SAAS,GAAG,KAAK;QACjD,IAAI,SAAS,EAAE;YACb,OAAO;SACR;QAED,IAAI,IAAI,CAAC,GAAG,EAAE;YACZ,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;SACpB;QAED,MAAM,mBAAmB,GAAG,GAAG,EAAE;YAC/B,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC,GAAG,EAAE;gBAChC,IAAI;oBACF,MAAM,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,aAAa,CAAC,aAAa,CAAC,6CAA6C,CAAC,CAAC;oBAC/F,IAAI,CAAC,EAAE,EAAE;wBACP,OAAO;qBACR;oBAED,IAAI,CAAC,GAAG,GAAG,IAAI,yDAAgB,CAAC,EAAE,EAAE;wBAClC,UAAU,EAAE,CAAC;wBACb,gBAAgB,EAAE,IAAI;wBACtB,kBAAkB,EAAE,EAAE;qBACvB,CAAC,CAAC;iBACJ;gBAAC,OAAO,KAAK,EAAE;iBACf;YACH,CAAC,CAAC;QACJ,CAAC,CAAC;QAEF,IAAI,OAAO,EAAE;YACX,UAAU,CAAC,GAAG,EAAE;gBACd,mBAAmB,EAAE,CAAC;YACxB,CAAC,EAAE,OAAO,CAAC,CAAC;SACb;aAAM;YACL,mBAAmB,EAAE,CAAC;SACvB;IACH,CAAC;IAED,aAAa;QACX,IAAI,CAAC,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC;IAChC,CAAC;IAED,QAAQ,CAAC,OAAoB;QAC3B,OAAO,OAAO,CAAC,KAAK,IAAI,OAAO,CAAC,KAAK,KAAK,CAAC,CAAC;IAC9C,CAAC;IAED,kBAAkB;QAChB,IAAI,CAAC,iBAAiB,EAAE,CAAC;QACzB,QAAQ,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,EAAE;YAC5C,KAAK,qDAAc,CAAC,KAAK,CAAC;YAC1B,KAAK,qDAAc,CAAC,cAAc,CAAC;YACnC,KAAK,qDAAc,CAAC,iBAAiB;gBACnC,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,QAAQ,CAAC,QAAQ,CAAC,yDAAkB,CAAC,eAAe,CAAC,CAAC;gBAChF,IAAI,CAAC,iBAAiB,EAAE,CAAC;gBACzB,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,wDAAiB,CAAC,IAAI,CAAC,CAAC;gBAChE,MAAM;YACR;gBACE,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;gBAClD,MAAM;SACT;QAED,QAAQ,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,EAAE;YAC5C,KAAK,qDAAc,CAAC,SAAS,CAAC;YAC9B,KAAK,qDAAc,CAAC,cAAc,CAAC;YACnC,KAAK,qDAAc,CAAC,iBAAiB;gBACnC,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,0BAA0B,CAAC,KAAK,EAAE,CAAC;gBAC7D,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,0BAA0B,CAAC,eAAe,EAAE,CAAC;gBACvE,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,0BAA0B,CAAC,OAAO,EAAE,CAAC;gBAC/D,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,0BAA0B,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;gBACnE,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,6BAA6B,CAAC,KAAK,EAAE,CAAC;gBAChE,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,6BAA6B,CAAC,eAAe,EAAE,CAAC;gBAC1E,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,6BAA6B,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;gBACvE,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,6BAA6B,CAAC,OAAO,EAAE,CAAC;gBAClE,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,wBAAwB,CAAC,KAAK,EAAE,CAAC;gBAC3D,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,wBAAwB,CAAC,eAAe,EAAE,CAAC;gBACrE,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,wBAAwB,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;gBACjE,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,wBAAwB,CAAC,OAAO,EAAE,CAAC;gBAC7D,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,2BAA2B,CAAC,KAAK,EAAE,CAAC;gBAC9D,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,2BAA2B,CAAC,eAAe,EAAE,CAAC;gBACxE,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,2BAA2B,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;gBACrE,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,2BAA2B,CAAC,OAAO,EAAE,CAAC;gBAChE,IAAI,CAAC,uBAAuB,GAAG,2FAAkB,CAAC;gBAClD,MAAM;YACR;gBACE,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,0BAA0B,CAAC,aAAa,CAAC,yDAAU,CAAC,OAAO,CAAC;oBACpF,yDAAU,CAAC,QAAQ;oBACnB,yEAAe;oBACf,yDAAU,CAAC,GAAG,CAAC,CAAC,CAAC;oBACjB,yDAAU,CAAC,GAAG,CAAC,KAAK,CAAC;iBACtB,CAAC,CAAC,CAAC;gBACJ,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,0BAA0B,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;gBACpE,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,0BAA0B,CAAC,MAAM,EAAE,CAAC;gBAC9D,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,6BAA6B,CAAC,aAAa,CAAC,yDAAU,CAAC,OAAO,CAAC;oBACvF,yDAAU,CAAC,QAAQ;oBACnB,yEAAe;oBACf,yDAAU,CAAC,GAAG,CAAC,CAAC,CAAC;oBACjB,yDAAU,CAAC,GAAG,CAAC,EAAE,CAAC;iBACnB,CAAC,CAAC,CAAC;gBACJ,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,6BAA6B,CAAC,MAAM,EAAE,CAAC;gBACjE,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,wBAAwB,CAAC,aAAa,CAAC,yDAAU,CAAC,OAAO,CAAC;oBAClF,yDAAU,CAAC,QAAQ;oBACnB,yEAAe;oBACf,yDAAU,CAAC,GAAG,CAAC,CAAC,CAAC;oBACjB,yDAAU,CAAC,GAAG,CAAC,KAAK,CAAC;iBACtB,CAAC,CAAC,CAAC;gBACJ,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,wBAAwB,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;gBAClE,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,wBAAwB,CAAC,MAAM,EAAE,CAAC;gBAC5D,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,2BAA2B,CAAC,aAAa,CAAC,yDAAU,CAAC,OAAO,CAAC;oBACrF,yDAAU,CAAC,QAAQ;oBACnB,yEAAe;oBACf,yDAAU,CAAC,GAAG,CAAC,CAAC,CAAC;oBACjB,yDAAU,CAAC,GAAG,CAAC,EAAE,CAAC;iBACnB,CAAC,CAAC,CAAC;gBACJ,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,2BAA2B,CAAC,MAAM,EAAE,CAAC;gBAC/D,IAAI,CAAC,uBAAuB,GAAG,IAAI,CAAC,iBAAiB,CAAC;gBACtD,MAAM;SACT;IACH,CAAC;CACF;;YA3VyB,0DAAW;YACpB,wDAAU;YACR,oDAAM;;AA/EvB;IADC,+DAAS,CAAC,0IAAmC,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;8BAC1C,0IAAmC;mFAAC;AAGzE;IADC,2DAAK,EAAE;;4DACmB;AAG3B;IADC,2DAAK,EAAE;;iEACqB;AAG7B;IADC,2DAAK,EAAE;;+DACmB;AAG3B;IADC,2DAAK,EAAE;;uEAC8C;AAGtD;IADC,2DAAK,EAAE;;gFACgE;AAGxE;IADC,4DAAM,EAAE;8BACM,0DAAY;qEAAsE;AAGjG;IADC,4DAAM,EAAE;8BACM,0DAAY;qEAA8G;AAGzI;IADC,4DAAM,EAAE;8BACM,0DAAY;qEAAwD;AA1BxE,8BAA8B;IAL1C,+DAAS,CAAC;QACT,QAAQ,EAAE,sCAAsC;QAChD,qPAAgD;KAEjD,CAAC;qCAgFwB,0DAAW;QACpB,wDAAU;QACR,oDAAM;GAjFZ,8BAA8B,CA0a1C;AA1a0C;;;;;;;;;;;;;;;;;;;;AClBE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACAkC;AAQ/E,IAAa,mCAAmC,GAAhD,MAAa,mCAAmC;IAY9C;QAVA,iBAAY,GAAyB,IAAI,0DAAY,EAAU,CAAC;QAGhE,oBAAe,GAAyB,IAAI,0DAAY,EAAU,CAAC;QAEnE,cAAS,GAAG,IAAI,CAAC;IAKD,CAAC;IAEjB,QAAQ;QACN,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;QAC1B,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;IACxB,CAAC;IAEM,cAAc,CAAC,QAAgB;QACpC,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC;QAC1B,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;QAC1B,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC;QACjC,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;IACzB,CAAC;IAEM,iBAAiB,CAAC,WAAmB;QAC1C,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;QAC1B,IAAI,CAAC,YAAY,GAAG,WAAW,CAAC;QAChC,IAAI,CAAC,oBAAoB,GAAG,KAAK,CAAC;QAClC,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;IACzB,CAAC;IAEK,QAAQ;;YACZ,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;YACzB,IAAI,IAAI,CAAC,oBAAoB,EAAE;gBAC7B,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;aACxC;iBAAM;gBACL,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;aAC9C;YAED,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;QACxB,CAAC;KAAA;IAED,QAAQ;QACN,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;QACtB,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;IAC5B,CAAC;CACF;AA9CC;IADC,4DAAM,CAAC,cAAc,CAAC;8BACT,0DAAY;yEAAsC;AAGhE;IADC,4DAAM,CAAC,iBAAiB,CAAC;8BACT,0DAAY;4EAAsC;AALxD,mCAAmC;IAN/C,+DAAS,CAAC;QACT,QAAQ,EAAE,4CAA4C;QACtD,4RAA6D;KAE9D,CAAC;;GAEW,mCAAmC,CAgD/C;AAhD+C;;;;;;;;;;;;;;;;;;;;ACRU;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACAiC;AAEvB;AACkF;AACK;AAItF;AACpB;AAQjD,IAAa,+BAA+B,GAA5C,MAAa,+BAAgC,SAAQ,yDAAiB;IA6BpE,YACU,GAAe,EACf,mBAAkD;QAC1D,KAAK,EAAE,CAAC;QAFA,QAAG,GAAH,GAAG,CAAY;QACf,wBAAmB,GAAnB,mBAAmB,CAA+B;QA9B5D,YAAO,GAAkR,EAAE,CAAC;QAE5R,UAAK,GAAG,MAAM,CAAC;QACf,cAAS,GAAG,IAAI,CAAC;QACjB,oBAAe,GAAG,gBAAgB,CAAC;QACnC,mBAAc,GAAG,eAAe,CAAC;QAGjC,eAAU,GAAG,KAAK,CAAC;QAInB,wBAAmB,GAAW,IAAI,CAAC;QACnC,yBAAoB,GAAW,IAAI,CAAC;QACpC,oBAAe,GAAG,qDAAc,CAAC;QAEjC,iBAAY,GAA4C,EAAE,CAAC;QAC3D,qBAAgB,GAA4C,EAAE,CAAC;QAC/D,oBAAe,GAA4C,EAAE,CAAC;QAE9D,qBAAgB,GAA6F,EAAE,CAAC;QAEhH,4CAAuC,GAAuE,EAAE,CAAC;QACjH,6CAAwC,GAAuE,EAAE,CAAC;QAClH,6CAAwC,GAAuE,EAAE,CAAC;QAClH,8CAAyC,GAAuE,EAAE,CAAC;QACnH,2CAAsC,GAAmG,EAAE,CAAC;IAM5I,CAAC;IAED,eAAe;QACb,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;IAC1B,CAAC;IAEM,IAAI,CAAC,SAA6B,EAAE,UAAkB;QAC3D,IAAI,CAAC,OAAO,GAAG,EAAE,CAAC;QAClB,IAAI,CAAC,gBAAgB,GAAG,EAAE,CAAC;QAC3B,IAAI,CAAC,uCAAuC,GAAG,EAAE,CAAC;QAClD,IAAI,CAAC,wCAAwC,GAAG,EAAE,CAAC;QACnD,IAAI,CAAC,wCAAwC,GAAG,EAAE,CAAC;QACnD,IAAI,CAAC,yCAAyC,GAAG,EAAE,CAAC;QACpD,IAAI,CAAC,sCAAsC,GAAG,EAAE,CAAC;QACjD,IAAI,CAAC,mBAAmB,GAAG,EAAE,CAAC;QAC9B,IAAI,CAAC,gBAAgB,GAAG,SAAS,CAAC;QAClC,IAAI,CAAC,kBAAkB,GAAG,UAAU,CAAC;QACrC,IAAI,CAAC,uBAAuB,EAAE,CAAC;QAC/B,IAAI,CAAC,WAAW,EAAE,CAAC;QACnB,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;IACzB,CAAC;IAED,YAAY;QACV,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;QACtB,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC;QAC7B,IAAI,CAAC,iBAAiB,GAAG,EAAE,CAAC;IAC9B,CAAC;IAED,WAAW;QACT,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC;QAChC,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC;QAEjC,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE;YAC1B,IAAI,CAAC,OAAO,GAAG,EAAE,CAAC;YAClB,OAAO;SACR;QAED,IAAI,CAAC,WAAW,EAAE,CAAC;QACnB,MAAM,OAAO,GAAG,iEAAsB,CAAC,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC;QAElG,IAAI,aAAgC,CAAC;QACrC,IAAI,aAAgC,CAAC;QAErC,IAAI,IAAI,CAAC,gBAAgB,CAAC,OAAO,IAAI,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAyB,KAAK,wDAAiB,CAAC,KAAK;YACtK,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAyB,KAAK,wDAAiB,CAAC,KAAK,CAAC,EAAE;YACzF,aAAa,GAAG,wDAAiB,CAAC,KAAK,CAAC;YACxC,aAAa,GAAG,wDAAiB,CAAC,KAAK,CAAC;SACzC;aAAM;YACL,aAAa,GAAG,wDAAiB,CAAC,IAAI,CAAC;YACvC,aAAa,GAAG,wDAAiB,CAAC,IAAI,CAAC;SACxC;QAED,IAAI,CAAC,mBAAmB,GAAG,wDAAiB,CAAC,aAAa,CAAC,CAAC;QAC5D,IAAI,CAAC,oBAAoB,GAAG,wDAAiB,CAAC,aAAa,CAAC,CAAC;QAE7D,MAAM,KAAK,GAAG;YACZ,2DAAgB,CAAC,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;YAC9E,2DAAgB,CAAC,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC,aAAa,CAAC;YAC1F,2DAAgB,CAAC,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC,aAAa,CAAC;SAC3F,CAAC;QACF,IAAI,qCAAqC,GAAmG,EAAE,CAAC;QAC/I,IAAI,CAAC,sCAAsC,GAAG,EAAE,CAAC;QAEjD,MAAM,iBAAiB,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAsB,KAAK,wDAAiB,CAAC,IAAI,CAAC,CAAC;QAClH,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC;aACjC,MAAM,CAAC,CAAC,CAAC,IAAI,EAAE,eAAe,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,eAAe,CAAC;aACtD,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,eAAe,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,CAAsB,EAAE,eAAe,EAAE,eAAyB,EAAE,CAAC,CAAC;aAC3H,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,eAAe,EAAE,SAAS,EAAE,EAAE,EAAE;YAC5C,MAAM,OAAO,GAAG,IAAI,CAAC,gBAAgB,CAAC,OAAO;iBAC1C,GAAG,CAAC,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE,CAAC,mBAAM,MAAM,IAAE,KAAK,EAAE,KAAK,GAAG,CAAC,IAAG,CAAC;iBACzD,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,IAAI,KAAK,IAAI,IAAI,MAAM,CAAC,IAAI,KAAK,iDAAM,CAAC,IAAI,CAAC,IAAI,CAAC,iBAAiB,IAAI,MAAM,CAAC,IAAI,KAAK,wDAAiB,CAAC,IAAI,CAAC,CAAC;iBACvI,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;gBACd,QAAQ,EAAE,MAAM,CAAC,EAAE;gBACnB,UAAU,EAAE,MAAM,CAAC,IAAI;gBACvB,cAAc,EAAE,MAAM,CAAC,QAAQ;gBAC/B,eAAe,EAAE,MAAM,CAAC,QAAQ,IAAI,yDAAkB,CAAC,eAAe,CAAC,CAAC,CAAC,2DAAgB,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,+DAAoB,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,KAAK,GAAG,2DAAgB,CAAC,MAAM,CAAC,IAAI,CAAC;gBACtL,eAAe,EAAE,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,EAAE,EAAE,MAAM,CAAC,IAAI,CAAC;gBAC5D,gBAAgB,EAAE,MAAM,CAAC,IAAI,IAAI,qDAAc,CAAC,SAAS,CAAC,CAAC,CAAC,2DAAgB,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,+DAAoB,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,KAAK,GAAG,2DAAgB,CAAC,MAAM,CAAC,IAAI,CAAC;gBACzK,iBAAiB,EAAE,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,EAAE,CAAC;gBACjD,SAAS,EAAE,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC;gBAC7D,OAAO,EAAE,MAAM,CAAC,KAAK,GAAG,KAAK,GAAG,+DAAoB,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,IAAI,GAAG,2DAAgB,CAAC,MAAM,CAAC,IAAI,CAAC;aAC7G,CAAC,CAAC;iBACF,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;YACxC,OAAO;gBACL,SAAS;gBACT,OAAO;aACR,CAAC;QACJ,CAAC,CAAC,CAAC;QAEL,IAAI,IAAI,CAAC,iBAAiB,IAAI,IAAI,CAAC,iBAAiB,CAAC,MAAM,GAAG,CAAC,EAAE;YAC/D,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,SAAS,GAAG,IAAI,CAAC,CAAC;YAClE,IAAI,CAAC,mBAAmB,GAAG,2BAA2B,GAAG,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;SACvF;QAED,IAAI,CAAC,gBAAgB,GAAG,EAAE,CAAC;QAE3B,IAAI,IAAI,CAAC,gBAAgB,EAAE;YACzB,IAAI,gBAAgB,GAAG,KAAK,CAAC;YAC7B,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;gBACvB,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;oBACpB,IAAI,IAAI,CAAC,gBAAgB,CAAC,OAAO,KAAK,2DAAoB,CAAC,IAAI,EAAE;wBAC/D,IAAI,CAAC,IAAI,CAAC,iCAAiC,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC,cAAc,IAAI,yDAAkB,CAAC,eAAe,IAAI,CAAC,CAAC,UAAU,IAAI,qDAAc,CAAC,SAAS,CAAC,EAAE;4BACnL,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,eAAe,EAAE,KAAK,EAAE,CAAC,CAAC,eAAe,EAAE,WAAW,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,CAAC,CAAC,iBAAiB,EAAE,CAAC;yBAC1J;qBACF;oBACD,IAAI,IAAI,CAAC,gBAAgB,CAAC,IAAI,IAAI,wDAAiB,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,cAAc,IAAI,yDAAkB,CAAC,eAAe,IAAI,CAAC,CAAC,UAAU,IAAI,qDAAc,CAAC,SAAS,CAAC,EAAE;wBAC/J,qCAAqC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,eAAe,EAAE,KAAK,EAAE,CAAC,CAAC,eAAe,EAAE,iBAAiB,EAAE,CAAC,CAAC,iBAAiB,EAAE,UAAU,EAAE,CAAC,CAAC,UAAU,EAAE,CAAC;qBACrK;gBACH,CAAC,CAAC,EAAE,gBAAgB,GAAG,IAAI;YAC7B,CAAC,CAAC,CAAC;YACH,IAAI,IAAI,CAAC,gBAAgB,CAAC,OAAO,KAAK,2DAAoB,CAAC,IAAI,EAAE;gBAC/D,IAAI,CAAC,wCAAwC,GAAG,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC;gBAClI,IAAI,CAAC,yCAAyC,GAAG,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC;gBAEpI,IAAI,CAAC,uCAAuC,GAAG,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC;gBACnI,IAAI,CAAC,wCAAwC,GAAG,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC;gBAEpI,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,OAAO,GAAG,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,iCAAiC,CAAC,EAAE,CAAC,UAAU,EAAE,EAAE,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC;aAC5I;YACD,IAAI,qCAAqC,CAAC,MAAM,GAAG,CAAC,EAAE;gBACpD,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,OAAO,GAAG,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,cAAc,IAAI,yDAAkB,CAAC,eAAe,IAAI,EAAE,CAAC,UAAU,IAAI,qDAAc,CAAC,SAAS,CAAC,CAAC,CAAC;gBACvK,qCAAqC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;oBAChD,IAAI,CAAC,IAAI,CAAC,sCAAsC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,IAAI,CAAC,CAAC,KAAK,CAAC,EAAE;wBAClF,IAAI,CAAC,sCAAsC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,iBAAiB,EAAE,CAAC,CAAC,iBAAiB,EAAE,UAAU,EAAE,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC;qBACxJ;gBACH,CAAC,CAAC,CAAC;aACJ;SACF;IACH,CAAC;IAEO,iCAAiC,CAAC,UAA0B,EAAE,cAAkC;QACtG,IAAI,iCAAiC,GAAG,CAAC,UAAU,IAAI,qDAAc,CAAC,kBAAkB,IAAI,cAAc,IAAI,yDAAkB,CAAC,IAAI,CAAC;YACpI,CAAC,UAAU,IAAI,qDAAc,CAAC,mBAAmB,IAAI,cAAc,IAAI,yDAAkB,CAAC,IAAI,CAAC;YAC/F,CAAC,UAAU,IAAI,qDAAc,CAAC,kBAAkB,IAAI,cAAc,IAAI,yDAAkB,CAAC,QAAQ,CAAC;YAClG,CAAC,UAAU,IAAI,qDAAc,CAAC,mBAAmB,IAAI,cAAc,IAAI,yDAAkB,CAAC,QAAQ,CAAC;YACnG,CAAC,UAAU,IAAI,qDAAc,CAAC,kBAAkB,IAAI,cAAc,IAAI,yDAAkB,CAAC,IAAI,CAAC;YAC9F,CAAC,UAAU,IAAI,qDAAc,CAAC,mBAAmB,IAAI,cAAc,IAAI,yDAAkB,CAAC,IAAI,CAAC;YAC/F,CAAC,UAAU,IAAI,qDAAc,CAAC,kBAAkB,IAAI,cAAc,IAAI,yDAAkB,CAAC,QAAQ,CAAC;YAClG,CAAC,UAAU,IAAI,qDAAc,CAAC,mBAAmB,IAAI,cAAc,IAAI,yDAAkB,CAAC,QAAQ,CAAC;QAErG,OAAO,iCAAiC,CAAC;IAC3C,CAAC;IAEO,eAAe,CAAC,OAAgB;QACtC,MAAM,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,aAAa,CAAC,aAAa,CAAC,kBAAkB,CAAC,CAAC;QACpE,IAAI,CAAC,mBAAmB,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC;IACxC,CAAC;IAEO,cAAc,CAAC,QAAgB,EAAE,UAA0B;QACjE,IAAI,MAAM,GAAG,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,QAAQ,CAAC,CAAC;QAChE,IAAI,MAAM,EAAE;YACV,OAAO,MAAM,CAAC,KAAK,CAAC,QAAQ,EAAE,GAAG,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;SAC9D;aAAM;YACL,OAAO,SAAS;SACjB;IACH,CAAC;IAEO,cAAc,CAAC,QAAgB;QACrC,IAAI,MAAM,GAAG,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,QAAQ,CAAC,CAAC;QAChE,IAAI,MAAM,EAAE;YACV,IAAI,MAAM,CAAC,MAAM,KAAK,6DAAsB,CAAC,IAAI,EAAE;gBAAE,OAAO,OAAO,CAAC;aAAE;YACtE,IAAI,MAAM,CAAC,MAAM,KAAK,6DAAsB,CAAC,KAAK,EAAE;gBAAE,OAAO,KAAK,CAAC;aAAE;YACrE,IAAI,MAAM,CAAC,MAAM,KAAK,6DAAsB,CAAC,OAAO,EAAE;gBAAE,OAAO,QAAQ,CAAC;aAAE;YAC1E,IAAI,MAAM,CAAC,MAAM,KAAK,6DAAsB,CAAC,KAAK,EAAE;gBAAE,OAAO,MAAM,CAAC;aAAE;SACvE;aAAM;YACL,OAAO,OAAO,CAAC;SAChB;IACH,CAAC;IAEO,WAAW;QACjB,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE;YAC1B,OAAO;SACR;QAED,MAAM,cAAc,GAAG,CAAC,CAAkB,EAAE,CAAkB,EAAE,EAAE;YAChE,MAAM,OAAO,GAAG,GAAG,2DAAgB,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,+DAAoB,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,8DAAmB,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC;YAC/G,MAAM,OAAO,GAAG,GAAG,2DAAgB,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,+DAAoB,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,8DAAmB,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC;YAC/G,IAAI,OAAO,GAAG,OAAO,EAAE;gBACrB,OAAO,CAAC,CAAC,CAAC;aACX;YACD,IAAI,OAAO,GAAG,OAAO,EAAE;gBACrB,OAAO,CAAC,CAAC;aACV;YACD,OAAO,CAAC,CAAC;QACX,CAAC,CAAC;QACF,IAAI,CAAC,gBAAgB,CAAC,OAAO,GAAG,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;IACrF,CAAC;IAEa,uBAAuB;;YACnC,IAAI,CAAC,iBAAiB,GAAG,EAAE,CAAC;YAC5B,IAAI,kBAAkB,GAAG,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;YACtE,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,mBAAmB,CAAC,WAAW,CAAC,IAAI,CAAC,kBAAkB,EAAE,IAAI,CAAC,gBAAgB,CAAC,EAAE,EAAE,kBAAkB,CAAC,CAAC;YACjI,IAAI,MAAM,YAAY,kDAAU,EAAE;aACjC;iBAAM;gBACL,IAAI,CAAC,iBAAiB,GAAG,MAAM,CAAC;aACjC;YAED,IAAI,CAAC,WAAW,EAAE,CAAC;QACrB,CAAC;KAAA;IAEO,UAAU,CAAC,UAA0B;QAC3C,OAAO,uDAAe,CAAC,mBAAmB,CAAC,UAAU,CAAC,CAAC;IACzD,CAAC;CACF;;YA9MgB,wDAAU;YACM,uEAA6B;;AA/BjD,+BAA+B;IAL3C,+DAAS,CAAC;QACT,QAAQ,EAAE,kCAAkC;QAC5C,8PAAmD;KAEpD,CAAC;qCA+Be,wDAAU;QACM,uEAA6B;GA/BjD,+BAA+B,CA4O3C;AA5O2C;;;;;;;;;;;;;;;;;;;;ACjBI;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACAJ;AACT;AACC;AACA;AACH;AACe;AACV;;;;;;;;;;;;;;;;;;;;ACNQ;;;;;;;;;;;;;;;;;;;;;;;;;;ACAJ;AAE2D;AAOrG,IAAa,wBAAwB,GAArC,MAAa,wBAAwB;IALrC;QAME,cAAS,GAAG,IAAI,CAAC;IA2BnB,CAAC;IAxBC,IAAI,UAAU;QACZ,OAAO,uEAAgB,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IAC7C,CAAC;IAED,IAAI,cAAc;QAChB,OAAO,2EAAoB,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IACrD,CAAC;IAED,IAAI,UAAU;QACZ,OAAO,0EAAmB,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IAChD,CAAC;IAEM,IAAI,CAAC,MAAuB;QACjC,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;QACtB,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;IACzB,CAAC;IAED,YAAY;QACV,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;QACtB,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;IACtB,CAAC;IACD,oBAAoB,CAAC,KAAK;QACxB,OAAO,KAAK,IAAI,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC;IACrC,CAAC;CACF;AA5BY,wBAAwB;IALpC,+DAAS,CAAC;QACT,QAAQ,EAAE,gCAAgC;QAC1C,wPAAiD;KAElD,CAAC;GACW,wBAAwB,CA4BpC;AA5BoC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACTwB;AAEjB;AAEI;AAC4F;AACL;AACvE;AACF;AAO9D,IAAa,gCAAgC,wCAA7C,MAAa,gCAAgC;IAwB3C,YACU,iBAA0C;QAA1C,sBAAiB,GAAjB,iBAAiB,CAAyB;QApBpD,cAAS,GAAG,IAAI,CAAC;QACjB,gBAAW,GAAsB,IAAI,4DAAiB,EAAE,CAAC;QACzD,sBAAiB,GAAuC,EAAE,CAAC;QAG3D,aAAQ,GAAG,KAAK,CAAC;IAgBb,CAAC;IAXL,IAAI,uBAAuB;QACzB,MAAM,OAAO,GAAG,IAAI,IAAI,EAAE,CAAC;QAC3B,OAAO,GAAG,OAAO,CAAC,WAAW,EAAE,GAAG,CAAC,IAAI,OAAO,CAAC,WAAW,EAAE,EAAE,CAAC;IACjE,CAAC;IAED,IAAI,WAAW;QACb,OAAO,IAAI,CAAC,OAAO,IAAE,kDAAW,CAAC,GAAG,EAAC,gBAAe,EAAC,uBAAsB,CAAC;IAC9E,CAAC;IAMD,QAAQ;IACR,CAAC;IAED,MAAM,CAAC,aAAyB,EAAE,OAAoB;QACpD,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,IAAI,CAAC,sBAAsB,GAAG,EAAE,CAAC;QACjC,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,CAAC;QAChC,IAAI,CAAC,UAAU,EAAE,CAAC;QAClB,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;IACzB,CAAC;IAED,OAAO;QACL,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;IACxB,CAAC;IAED,sBAAsB;QACpB,IAAI,CAAC,aAAa,EAAE,CAAC;QACrB,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC;IACzB,CAAC;IAED,eAAe;QACb,IAAI,CAAC,aAAa,EAAE,CAAC;IACvB,CAAC;IAEO,aAAa;QACnB,IAAI,IAAI,CAAC,UAAU,IAAI,SAAS,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,IAAI,CAAC,EAAE;YAC/D,IAAI,CAAC,aAAa,EAAE,CAAC;YACrB,OAAO,KAAK,CAAC;SACd;QACD,IAAI,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,SAAS,IAAI,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,IAAI,EAAE;YACjE,IAAI,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;YACpC,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;YAC1B,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;SACjC;QACD,OAAO,IAAI;IACb,CAAC;IAEK,QAAQ;;YACZ,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE;gBAAE,OAAO;YAClC,IAAI,CAAC,IAAI,CAAC,sBAAsB,IAAI,IAAI,CAAC,sBAAsB,CAAC,MAAM,KAAK,CAAC;gBAAE,OAAO;YACrF,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;YACrB,IAAI,WAAW,GAAa,EAAE,CAAC;YAC/B,IAAI,YAAY,GAAa,EAAE,CAAC;YAChC,IAAI,CAAC,sBAAsB,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;gBACtC,QAAQ,IAAI,CAAC,OAAO,EAAE;oBACpB,KAAK,kDAAW,CAAC,GAAG;wBAClB,QAAQ,CAAC,CAAC,IAAI,CAAC,QAAQ,EAAE;4BACvB,KAAK,wEAAiC,CAAC,SAAS;gCAC9C,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;gCAC7B,IAAI,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,IAAI,CAAC,UAAU;oCAAE,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;gCACrE,MAAM;yBACT;wBACD,MAAM;oBACR,KAAK,kDAAW,CAAC,GAAG;wBAClB,QAAQ,CAAC,CAAC,IAAI,CAAC,QAAQ,EAAE;4BACvB,KAAK,wEAAiC,CAAC,GAAG;gCACxC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;gCAC7B,IAAI,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,IAAI,CAAC,UAAU;oCAAE,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;gCACrE,MAAM;yBACT;wBACD,MAAM;oBACR,KAAK,kDAAW,CAAC,GAAG;wBAClB,QAAQ,CAAC,CAAC,IAAI,CAAC,QAAQ,EAAE;4BACvB,KAAK,uDAAgB,CAAC,GAAG;gCACvB,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;gCAC7B,IAAI,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,IAAI,CAAC,UAAU;oCAAE,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;gCACrE,MAAM;yBACT;wBACD,MAAM;iBACT;YACH,CAAC,CAAC,CAAC;YAEH,MAAM,OAAO,GAAG,IAAI,mEAA2B,EAAE,CAAC;YAClD,OAAO,CAAC,WAAW,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC;YAChD,OAAO,CAAC,YAAY,GAAG,YAAY,CAAC;YACpC,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC,WAAW,CAAC;YACtC,OAAO,CAAC,mBAAmB,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,GAAG,gEAAqB,CAAC,4BAA4B,CAAC;YAChH,OAAO,CAAC,iBAAiB,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,GAAG,gEAAqB,CAAC,4BAA4B,CAAC;YAC9G,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;YAC/B,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC,eAAe,EAAE,CAAC,QAAQ,CAAC;YAEpE,IAAI,MAAM,GAAG,MAAM,IAAI,CAAC,iBAAiB,CAAC,0BAA0B,CAAC,OAAO,CAAC,CAAC;YAC9E,IAAI,CAAC,CAAC,MAAM,YAAY,kDAAU,CAAC,EAAE;gBACnC,IAAI,QAAQ,GAAG,GAAG,kDAAW,CAAC,IAAI,CAAC,OAAO,CAAC,sBAAsB,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,kBAAkB,EAAE,IAAI,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,kBAAkB,EAAE,MAAM,CAAC;gBAC1J,MAAM,GAAG,GAAG,GAAG,CAAC,eAAe,CAAC,MAAc,CAAC,CAAC;gBAChD,IAAI,YAAY,GAAG,QAAQ,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;gBAC/C,YAAY,CAAC,IAAI,GAAG,GAAG,CAAC;gBACxB,YAAY,CAAC,QAAQ,GAAG,QAAQ,CAAC;gBACjC,YAAY,CAAC,KAAK,EAAE,CAAC;gBACrB,IAAI,CAAC,OAAO,EAAE,CAAC;aAChB;YACD,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;QACxB,CAAC;KAAA;IAEO,UAAU;QAChB,IAAI,CAAC,aAAa,EAAE,CAAC;QACrB,IAAI,CAAC,aAAa,EAAE,CAAC;QACrB,IAAI,CAAC,WAAW,GAAG,EAAE,CAAC;IACxB,CAAC;IAEO,aAAa;QACnB,IAAI,KAAK,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,KAAK,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;QAC3B,IAAI,CAAC,UAAU,GAAG,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;IACnC,CAAC;IAEO,aAAa;QACnB,IAAI,CAAC,iBAAiB,GAAG,EAAE,CAAC;QAC5B,QAAQ,IAAI,CAAC,OAAO,EAAE;YACpB,KAAK,kDAAW,CAAC,GAAG;gBAClB,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,6DAAkB,CAAC,EAAE;oBAC7D,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;iBACnE;gBACD,MAAM;YACR,KAAK,kDAAW,CAAC,GAAG;gBAClB,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,6DAAkB,CAAC,EAAE;oBAC7D,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;iBACnE;gBACD,MAAM;YACR,KAAK,kDAAW,CAAC,GAAG;gBAClB,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,6DAAkB,CAAC,EAAE;oBAC7D,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;iBACnE;gBACD,MAAM;SACT;IACH,CAAC;IAEO,WAAW,CAAC,aAAyB;QAC3C,MAAM,EAAE,UAAU,EAAE,GAAG,kCAAgC,CAAC;QAExD,MAAM,cAAc,GAAa;YAC/B,KAAK,EAAE,UAAU;YACjB,IAAI,EAAE,UAAU;YAChB,GAAG,EAAE,UAAU;SAChB,CAAC;QAEF,IAAI,CAAC,cAAc,GAAG,EAAE,CAAC;QACzB,IAAI,CAAC,cAAc,GAAG,CAAC,cAAc,EAAE,GAAG,aAAa,CAAC,CAAC;QACzD,IAAI,CAAC,gBAAgB,EAAE,CAAC;IAC1B,CAAC;IAED,YAAY,CAAC,KAAU;QACrB,IAAI,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE;YACpC,IAAI,CAAC,gBAAgB,EAAE,CAAC;SACzB;IACH,CAAC;IAED,cAAc,CAAC,KAAU;QACvB,IAAI,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE;YACpC,IAAI,CAAC,kBAAkB,EAAE,CAAC;YAC1B,OAAO;SACR;QAED,IAAI,CAAC,sBAAsB,GAAG,IAAI,CAAC,sBAAsB,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;IACjG,CAAC;IAEO,gBAAgB;QACtB,MAAM,YAAY,GAAe,CAAC,GAAG,IAAI,CAAC,cAAc,CAAC,CAAC;QAC1D,IAAI,aAAa,GAAe,EAAE,CAAC;QAEnC,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;YAC9B,IAAI,CAAC,CAAC,QAAQ,IAAI,CAAC,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE;gBACvC,IAAI,CAAC,oBAAoB,CAAC,aAAa,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC;aACtD;QACH,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,sBAAsB,GAAG,CAAC,GAAG,YAAY,EAAE,GAAG,aAAa,CAAC,CAAC;IACpE,CAAC;IAEO,oBAAoB,CAAC,SAAqB,EAAE,YAAwB;QAC1E,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;YACvB,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAClB,IAAI,CAAC,CAAC,QAAQ,IAAI,CAAC,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE;gBACvC,IAAI,CAAC,oBAAoB,CAAC,SAAS,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC;aAClD;QACH,CAAC,CAAC,CAAC;IACL,CAAC;IAGO,kBAAkB;QACxB,IAAI,CAAC,sBAAsB,GAAG,EAAE,CAAC;IACnC,CAAC;IAEO,eAAe,CAAC,IAAc;QACpC,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;QAClC,MAAM,EAAE,UAAU,EAAE,GAAG,kCAAgC,CAAC;QAExD,OAAO,KAAK,KAAK,UAAU,IAAI,IAAI,KAAK,UAAU,IAAI,GAAG,KAAK,UAAU,CAAC;IAC3E,CAAC;IAEO,aAAa,CAAC,WAAqB,EAAE,IAAc,EAAE,WAAmB;QAC9E,IAAI,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;QACzB,IAAI,MAAM,IAAI,MAAM,CAAC,IAAI,CAAC,QAAQ,IAAI,WAAW,EAAE;YACjD,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACjC,OAAO;SACR;aAAM,IAAI,CAAC,MAAM;YAAE,OAAO;QAC3B,IAAI,CAAC,aAAa,CAAC,WAAW,EAAE,MAAM,EAAE,WAAW,CAAC,CAAC;IACvD,CAAC;CACF;AAjOQ,2CAAU,GAAG,YAAY,CAAC;;YAwBJ,iEAAuB;;AAtBpD;IADC,+DAAS,CAAC,UAAU,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;8BACvB,yDAAQ;kEAAC;AAHhB,gCAAgC;IAL5C,+DAAS,CAAC;QACT,QAAQ,EAAE,wCAAwC;QAClD,gQAAyD;KAE1D,CAAC;qCA0B6B,iEAAuB;GAzBzC,gCAAgC,CAkO5C;AAlO4C;;;;;;;;;;;;;;;;;;;;ACfS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACAkB;AAEb;AAE0B;AAEvC;AAC0B;AACQ;AACb;AAOnE,IAAa,gCAAgC,wCAA7C,MAAa,gCAAiC,SAAQ,yDAAiB;IAqCrE,YACU,+BAA+D;QAEvE,KAAK,EAAE,CAAC;QAFA,oCAA+B,GAA/B,+BAA+B,CAAgC;QA5BzE,oBAAe,GAAG,qDAAc,CAAC;QACjC,eAAU,GAAG,kCAAgC,CAAC,kBAAkB,CAAC;QACjE,eAAU,GAAG,kCAAgC,CAAC,sBAAsB,CAAC;QACrE,cAAS,GAAG,IAAI,CAAC;QACjB,kBAAa,GAAW,EAAE,CAAC;QAE3B,mBAAc,GAA+B,EAAE,CAAC;QAChD,aAAQ,GAAG,IAAI,CAAC;QAChB,6BAAwB,GAAG,KAAK,CAAC;QACjC,oBAAe,GAAG,YAAY,CAAC;QAC/B,qBAAgB,GAAuC;YACrD,EAAE,KAAK,EAAE,kDAAW,CAAC,kDAAW,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,qFAAkB,CAAC,kDAAW,CAAC,GAAG,CAAC,EAAE;YACnF,EAAE,KAAK,EAAE,kDAAW,CAAC,kDAAW,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,qFAAkB,CAAC,kDAAW,CAAC,GAAG,CAAC,EAAE;YACnF,EAAE,KAAK,EAAE,kDAAW,CAAC,kDAAW,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,qFAAkB,CAAC,kDAAW,CAAC,GAAG,CAAC,EAAE;SAAC,CAAC;QAGvF,iBAAY,GAAG;YACb,EAAE,MAAM,EAAE,UAAU,EAAE,UAAU,EAAE,qDAAc,CAAC,aAAa,EAAE,SAAS,EAAE,YAAY,EAAE,KAAK,EAAE,GAAG,EAAE;YACrG,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,qDAAc,CAAC,QAAQ,EAAE,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE;YACtF,EAAE,MAAM,EAAE,eAAe,EAAE,UAAU,EAAE,qDAAc,CAAC,IAAI,EAAE,SAAS,EAAE,cAAc,EAAE,KAAK,EAAE,GAAG,EAAE;YACnG,EAAE,MAAM,EAAE,eAAe,EAAE,UAAU,EAAE,qDAAc,CAAC,IAAI,EAAE,SAAS,EAAE,WAAW,EAAE,KAAK,EAAE,GAAG,EAAE;YAChG,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,qDAAc,CAAC,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE;YACrF,EAAE,MAAM,EAAE,EAAE,EAAE,UAAU,EAAE,qDAAc,CAAC,sBAAsB,EAAE,KAAK,EAAE,GAAG,EAAE;SAC9E,CAAC;QAEM,mBAAc,GAAmB,EAAE,CAAC;IAM5C,CAAC;IAEK,QAAQ;;YACZ,IAAI,WAAW,GAAG,IAAI,CAAC,+BAA+B,CAAC,UAAU,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE;gBAClF,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;gBACvB,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;YACxB,CAAC,CAAC,CAAC;YACH,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;YACtC,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;QACzD,CAAC;KAAA;IAED,WAAW;QACT,IAAI,CAAC,cAAc,IAAI,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC,CAAC;IAC/E,CAAC;IAEK,MAAM;;YACV,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;YACvD,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;YACvB,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;YACrB,IAAI,CAAC,+BAA+B,CAAC,oBAAoB,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;QACnF,CAAC;KAAA;IAED,gBAAgB,CAAC,IAA8B;QAC7C,IAAI,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE;YACtC,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC;SAClE;aACI;YACH,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;SAChC;IACH,CAAC;IAEK,eAAe;;YACnB,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;YACrB,IAAI,CAAC,SAAS,GAAG,EAAE,CAAC;YACpB,IAAI,CAAC,+BAA+B,CAAC,oBAAoB,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;QACnF,CAAC;KAAA;IAED,eAAe;QACb,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;YAC5B,IAAI,CAAC,YAAY,CAAC,GAAG,KAAK,CAAC;QAC7B,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,cAAc,GAAG,EAAE,CAAC;IAC3B,CAAC;IAED,QAAQ;QACN,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;QACtB,IAAI,CAAC,cAAc,GAAG,EAAE,CAAC;QACzB,IAAI,CAAC,SAAS,GAAG,EAAE,CAAC;QACpB,IAAI,CAAC,aAAa,GAAG,EAAE,CAAC;QACxB,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;IACxB,CAAC;IAEK,sBAAsB,CAAC,QAAkC;;YAC7D,QAAQ,CAAC,IAAI,CAAC,eAAe,CAAC,GAAG,IAAI,CAAC;YACtC,IAAI,MAAM,GAAG,MAAM,IAAI,CAAC,+BAA+B,CAAC,oBAAoB,CAAC,EAAE,aAAa,EAAE,IAAI,CAAC,gBAAgB,EAAE,QAAQ,EAAE,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC;YAChJ,IAAI,MAAM,YAAY,IAAI,EAAE;gBAC1B,MAAM,GAAG,GAAG,GAAG,CAAC,eAAe,CAAC,MAAc,CAAC,CAAC;gBAChD,IAAI,YAAY,GAAG,QAAQ,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;gBAC/C,YAAY,CAAC,IAAI,GAAG,GAAG,CAAC;gBACxB,YAAY,CAAC,QAAQ,GAAG,QAAQ,CAAC,IAAI,CAAC;gBACtC,YAAY,CAAC,KAAK,EAAE,CAAC;aACtB;YACD,QAAQ,CAAC,IAAI,CAAC,eAAe,CAAC,GAAG,KAAK,CAAC;QACzC,CAAC;KAAA;IAEK,0BAA0B;;YAC9B,IAAI,IAAI,CAAC,cAAc,CAAC,MAAM,GAAG,CAAC,EAAE;gBAClC,IAAI,CAAC,wBAAwB,GAAG,IAAI,CAAC;gBACrC,IAAI,KAAK,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,OAAO,EAAE,GAAG,IAAI,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;gBAClH,IAAI,QAAQ,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;gBACtC,IAAI,CAAC,eAAe,EAAE,CAAC;gBACvB,IAAI,MAAM,GAAG,MAAM,IAAI,CAAC,+BAA+B,CAAC,qBAAqB,CAAC,EAAE,aAAa,EAAE,IAAI,CAAC,gBAAgB,EAAE,SAAS,EAAE,QAAQ,EAAE,CAAC,CAAC;gBAC7I,IAAI,MAAM,YAAY,IAAI,EAAE;oBAC1B,IAAI,QAAQ,GAAW,GAAG,IAAI,CAAC,gBAAgB,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,OAAO,EAAE,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,QAAQ,EAAE,GAAG,CAAC,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC;oBACzL,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE;wBACpB,IAAI,SAAS,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;wBACjC,QAAQ,GAAG,QAAQ,GAAG,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,SAAS,CAAC,CAAC,OAAO,EAAE,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,SAAS,CAAC,CAAC,QAAQ,EAAE,GAAG,CAAC,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,SAAS,CAAC,CAAC,WAAW,EAAE,EAAE;qBACxL;oBACD,QAAQ,GAAG,QAAQ,GAAG,MAAM,CAAC;oBAC7B,MAAM,GAAG,GAAG,GAAG,CAAC,eAAe,CAAC,MAAc,CAAC,CAAC;oBAChD,IAAI,YAAY,GAAG,QAAQ,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;oBAC/C,YAAY,CAAC,IAAI,GAAG,GAAG,CAAC;oBACxB,YAAY,CAAC,QAAQ,GAAG,QAAQ,CAAC;oBACjC,YAAY,CAAC,KAAK,EAAE,CAAC;iBACtB;gBACD,IAAI,CAAC,wBAAwB,GAAG,KAAK,CAAC;aACvC;QACH,CAAC;KAAA;IAEK,iBAAiB;;YACrB,IAAI,IAAI,CAAC,cAAc,CAAC,MAAM,GAAG,CAAC,EAAE;gBAClC,IAAI,QAAQ,GAAG,SAAS,GAAG,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC;gBAChF,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,uDAAuD,EAAE,QAAQ,CAAC,CAAC;aAChG;QACH,CAAC;KAAA;IAEK,cAAc,CAAC,kBAA0C;;YAC7D,IAAI,kBAAkB,IAAI,6DAAsB,CAAC,YAAY,EAAE;gBAC7D,IAAI,IAAI,CAAC,cAAc,CAAC,MAAM,GAAG,CAAC,EAAE;oBAClC,IAAI,CAAC,wBAAwB,GAAG,IAAI,CAAC;oBACrC,IAAI,QAAQ,GAAG,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;oBAEpD,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,+BAA+B,CAAC,uBAAuB,CAAC,EAAE,aAAa,EAAE,IAAI,CAAC,gBAAgB,EAAE,SAAS,EAAE,QAAQ,EAAE,CAAC,CAAC;oBACjJ,IAAI,MAAM,EAAE;wBACV,KAAK,IAAI,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE;4BACnD,IAAI,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,EAAE;gCACnD,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;6BAC7B;yBACF;wBACD,IAAI,CAAC,eAAe,EAAE,CAAC;qBACxB;oBACD,IAAI,CAAC,wBAAwB,GAAG,KAAK,CAAC;iBACvC;aACF;QACH,CAAC;KAAA;IAEK,gBAAgB;;YACpB,IAAI,CAAC,eAAe,EAAE,CAAC;YACvB,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;QACnE,CAAC;KAAA;CACF;AA1JQ,uDAAsB,GAAG,cAAc,CAAC;AACxC,mDAAkB,GAAG,CAAC,CAAC,CAAC;;YA8BY,wEAA8B;;AApCzE;IADC,+DAAS,CAAC,mFAA4B,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;8BAC/C,mFAA4B;yEAAC;AAGtD;IADC,+DAAS,CAAC,8EAA0B,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;8BAC3C,8EAA0B;2EAAC;AAL3C,gCAAgC;IAL5C,+DAAS,CAAC;QACT,QAAQ,EAAE,wCAAwC;QAClD,gQAAyD;KAE1D,CAAC;qCAuC2C,wEAA8B;GAtC9D,gCAAgC,CAiK5C;AAjK4C;;;;;;;;;;;;;;;;;;;;AChBQ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACA5B;AACa;AACI;AACA;AACC;AACT;AACS;AAC8B;AAC5B;AACJ;AACC;AACE;AACH;AACD;AACQ;AACN;AACE;AACD;AACF;AACA;AACJ;AACG;AACE;AACF;AACO;AACG;AACa;AACrB;AACD;AACH;AACD;AACA;AACC;AACH;AACC;AACK;AACA;AACF;AACI;AACF;AACF;AACG;AACI;AACH;AACN;AACE;AACH;AACa;AACM;AACD;AACD;AACf;AACC;AACM;AACD;AACW;AACR;AACF;AACO;AACnB;AACQ;AACG;AACE;AACT;AACG;AACM;AACL;AACF;AACK;AACJ;AACW;AACH;;;;;;;;;;;;;;;;;;;;ACvED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACAc;AAEoB;AAEK;AACvC;AACD;AACkC;AAC/B;AAOjD,IAAa,wBAAwB,GAArC,MAAa,wBAAyB,SAAQ,yDAAiB;IAoB7D,YACU,YAAyB,EACzB,iBAA6C,EAC7C,oBAAmD;QAE3D,KAAK,EAAE,CAAC;QAJA,iBAAY,GAAZ,YAAY,CAAa;QACzB,sBAAiB,GAAjB,iBAAiB,CAA4B;QAC7C,yBAAoB,GAApB,oBAAoB,CAA+B;QAtB7D,gBAAW,GAAG,IAAI,CAAC;QACnB,eAAU,GAAG,KAAK,CAAC;QACnB,cAAS,GAAG,IAAI,CAAC;QACjB,yBAAoB,GAAG,KAAK,CAAC;QAE7B,eAAU,GAAW,EAAE,CAAC;QAGxB,cAAS,GAAyB,IAAI,4DAAoB,EAAE,CAAC;IAiB7D,CAAC;IAXD,IAAI,YAAY;QAEd,OAAO,IAAI,CAAC,aAAa,CAAC;IAC5B,CAAC;IAUD,QAAQ;QACN,IAAI,CAAC,SAAS,GAAG,IAAI,4DAAoB,EAAE,CAAC;QAC5C,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,iBAAiB,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,IAAI,EAAE,EAAE;YACvE,IAAI,IAAI,EAAE;gBACR,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;aACrE;QACH,CAAC,CAAC,CAAC;IACL,CAAC;IAEM,OAAO;QACZ,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;QACxB,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;QACxB,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;QACvB,IAAI,CAAC,QAAQ,EAAE,CAAC;IAClB,CAAC;IAEM,QAAQ,CAAC,QAA8B;QAC5C,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;QACxB,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;QACzB,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;QACvB,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QACzC,IAAI,CAAC,gBAAgB,GAAG,QAAQ,CAAC,eAAe,CAAC;QACjD,IAAI,CAAC,UAAU,GAAG,QAAQ,CAAC,SAAS,CAAC;QACrC,IAAI,CAAC,KAAK,GAAG,QAAQ,CAAC,IAAI,CAAC;QAC3B,IAAI,CAAC,QAAQ,EAAE,CAAC;IAClB,CAAC;IAEK,OAAO;;YACX,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;YACtB,IAAI,CAAC,oBAAoB,GAAG,KAAK,CAAC;YAClC,IAAI,CAAC,UAAU,GAAG,EAAE,CAAC;YACrB,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC;YAC7B,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;YAClB,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;gBACrB,MAAM,IAAI,CAAC,oBAAoB,CAAC,iCAAiC,CAAC,IAAI,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;aAC1F;YACD,IAAI,CAAC,SAAS,GAAG,IAAI,4DAAoB,EAAE,CAAC;YAC5C,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,CAAC;QAC7B,CAAC;KAAA;IAGK,cAAc,CAAC,OAAoB;;YACvC,OAAO,CAAC,aAAa,EAAE,CAAC;QAC1B,CAAC;KAAA;IAEK,aAAa,CAAC,OAAoB;;YACtC,OAAO,CAAC,eAAe,EAAE,CAAC;QAC5B,CAAC;KAAA;IAEK,QAAQ;;YACZ,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;YAEvB,IAAI,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE;gBAC9B,OAAO;aACR;YAED,MAAM,KAAK,GAAG,kBACT,IAAI,CAAC,SAAS,EACd,IAAI,CAAC,aAAa,CAAC,KAAK,CACJ,CAAC;YAE1B,MAAM,MAAM,GAAG,CAAC,CAAC,IAAI,CAAC,WAAW;gBAC/B,CAAC,CAAC,MAAM,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,KAAK,CAAC;gBAC5C,CAAC,CAAC,MAAM,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAEhD,IAAI,MAAM,YAAY,kDAAU,EAAE;gBAChC,IAAI,MAAM,CAAC,IAAI,KAAK,qDAAa,CAAC,wBAAwB,EAAE;oBAC1D,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC;iBAClC;aACF;iBAAM,IAAI,MAAM,EAAE;gBACjB,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;oBACrB,MAAM,IAAI,CAAC,oBAAoB,CAAC,iCAAiC,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;iBACjF;gBACD,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;gBACtB,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;gBACxB,IAAI,CAAC,oBAAoB,GAAG,KAAK,CAAC;gBAClC,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,CAAC;aAC5B;QACH,CAAC;KAAA;IAED,WAAW;QACT,IAAI,CAAC,YAAY,CAAC,WAAW,EAAE,CAAC;IAClC,CAAC;IAEO,QAAQ;QACd,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC;YAC3C,UAAU,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,EAAE,yDAAU,CAAC,OAAO,CAAC;oBACjD,yDAAU,CAAC,QAAQ;iBACpB,CAAC,CAAC;YACH,SAAS,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,SAAS,EAAE,yDAAU,CAAC,OAAO,CAAC;oBACvD,yDAAU,CAAC,QAAQ;oBACnB,yDAAiB,CAAC,WAAW;iBAC9B,CAAC;aACD;YACD,eAAe,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,eAAe,EAAE,yDAAU,CAAC,OAAO,CAAC;oBACnE,yDAAU,CAAC,QAAQ;oBACnB,yDAAU,CAAC,GAAG,CAAC,CAAC,CAAC;oBACjB,yDAAU,CAAC,GAAG,CAAC,EAAE,CAAC;oBAClB,uDAAe;iBAChB,CAAC;aACD;YACD,IAAI,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,yDAAU,CAAC,OAAO,CAAC;oBAC7C,yDAAU,CAAC,QAAQ;oBACnB,yDAAU,CAAC,GAAG,CAAC,CAAC,CAAC;oBACjB,yDAAU,CAAC,GAAG,CAAC,KAAK,CAAC;oBACrB,uDAAe;iBAChB,CAAC,CAAC;SACJ,CAAC,CAAC;IACL,CAAC;CACF;;YApHyB,0DAAW;YACN,oEAA0B;YACvB,uEAA6B;;AAvBlD,wBAAwB;IALpC,+DAAS,CAAC;QACT,QAAQ,EAAE,iCAAiC;QAC3C,2OAAkD;KAEnD,CAAC;qCAsBwB,0DAAW;QACN,oEAA0B;QACvB,uEAA6B;GAvBlD,wBAAwB,CAyIpC;AAzIoC;;;;;;;;;;;;;;;;;;;;ACfc;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACAiB;AACa;AAErB;AACuB;AACA;AACE;AACtC;AAInB;AAO5B,IAAa,2BAA2B,GAAxC,MAAa,2BAA4B,SAAQ,yDAAiB;IAqChE,YAAoB,YAAyB,EACnC,kBAA2C;QAEnD,KAAK,EAAE,CAAC;QAHU,iBAAY,GAAZ,YAAY,CAAa;QACnC,uBAAkB,GAAlB,kBAAkB,CAAyB;QArCrD,cAAS,GAAG,IAAI,CAAC;QACjB,gBAAW,GAAG,IAAI,CAAC;QAInB,iBAAY,GAA+C,EAAE,CAAC;QAG9D,uBAAkB,GAAiD,EAAE,CAAC;QACtE,qBAAgB,GAAiD,EAAE,CAAC;QACpE,iBAAY,GAAgD,EAAE,CAAC;QAE/D,eAAU,GAAG,KAAK,CAAC;QAEnB,mBAAc,GAAG,KAAK,CAAC;IA0BvB,CAAC;IAxBD,IAAI,kBAAkB;QACpB,OAAO,IAAI,CAAC,mBAAmB,IAAI,SAAS,CAAC;IAC/C,CAAC;IAED,IAAI,sBAAsB;QACxB,OAAO,2DAAgB,CAAC,QAAQ,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;IAC7D,CAAC;IAED,IAAI,uBAAuB;QACzB,OAAO,IAAI,CAAC,qBAAqB,IAAI,SAAS,CAAC;IACjD,CAAC;IAED,IAAI,mBAAmB;QACrB,IAAI,IAAI,CAAC,mBAAmB,IAAI,IAAI,IAAI,IAAI,CAAC,mBAAmB,IAAI,SAAS,EAAE;YAC7E,OAAO,IAAI,CAAC,mBAAmB,IAAI,qDAAc,CAAC,UAAU,IAAI,IAAI,CAAC,mBAAmB,IAAI,qDAAc,CAAC,OAAO,IAAI,IAAI,CAAC,mBAAmB,IAAI,qDAAc,CAAC,SAAS;gBACxK,IAAI,CAAC,mBAAmB,IAAI,qDAAc,CAAC,WAAW,IAAI,IAAI,CAAC,mBAAmB,IAAI,qDAAc,CAAC,QAAQ,IAAI,IAAI,CAAC,mBAAmB,IAAI,qDAAc,CAAC,UAAU,CAAC;SAC1K;QACD,OAAO,KAAK;IACd,CAAC;IAQD,QAAQ;QACN,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,0DAAe,CAAC,EAAE;YAC1D,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;SAC9D;QAED,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,2DAAgB,CAAC,EAAE;YAC3D,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;SAC9D;QAED,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,kEAAuB,CAAC,EAAE;YAClE,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;SACpE;QAED,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,gEAAqB,CAAC,EAAE;YAChE,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;SAClE;IACH,CAAC;IAED,kBAAkB;QAChB,KAAK,CAAC,kBAAkB,EAAE,CAAC;IAC7B,CAAC;IAEM,OAAO,CAAC,QAAa;QAC1B,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;QACxB,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC;QAC1B,IAAI,CAAC,QAAQ,EAAE,CAAC;QAChB,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;IACzB,CAAC;IAEM,QAAQ,CAAC,MAAuB;QACrC,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;QACzB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,kBAAkB,CAAC,6BAA6B,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACxF,IAAI,CAAC,QAAQ,EAAE,CAAC;QAChB,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;IACzB,CAAC;IAED,eAAe;QACb,IAAI,CAAC,kBAAkB,EAAE,CAAC;QAC1B,IAAI,CAAC,yBAAyB,EAAE,CAAC;IACnC,CAAC;IAEK,cAAc,CAAC,OAAoB;;YACvC,OAAO,CAAC,aAAa,EAAE,CAAC;QAC1B,CAAC;KAAA;IAEK,aAAa,CAAC,OAAoB;;YACtC,OAAO,CAAC,eAAe,EAAE,CAAC;QAC5B,CAAC;KAAA;IAED,QAAQ;QACN,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;QACtB,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;QACxB,IAAI,CAAC,SAAS,EAAE,CAAC;QACjB,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;YACrB,IAAI,CAAC,kBAAkB,CAAC,4BAA4B,CAAC,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;YACzE,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;SACpB;IACH,CAAC;IAEK,QAAQ;;YACZ,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;YACvB,IAAI,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE;gBAC7B,OAAO;aACR;YAED,IAAI,CAAC,IAAI,CAAC,kBAAkB,IAAI,CAAC,IAAI,CAAC,uBAAuB,EAAE;gBAC7D,OAAO;aACR;YAED,IAAI,IAAI,CAAC,mBAAmB,IAAI,IAAI,CAAC,yBAAyB,EAAE,EAAE;gBAChE,OAAO;aACR;YAED,IAAI,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,sDAAc,CAAC,gBACjD,UAAU,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,IAC1B,IAAI,CAAC,YAAY,CAAC,KAAK,CACT,CAAC,CAAC,CAAC;gBACpB,IAAI,uDAAe,CAAC,gBAClB,EAAE,EAAE,IAAI,CAAC,MAAM,CAAC,EAAE,IACf,IAAI,CAAC,YAAY,CAAC,KAAK,CACR,CAAC,CAAC;YACxB,MAAM,CAAC,KAAK,GAAG,IAAI,CAAC,oBAAoB,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,WAAW,CAAC,CAAC;YAC3E,MAAM,CAAC,KAAK,GAAG,IAAI,CAAC,oBAAoB,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,WAAW,CAAC,CAAC;YAC3E,MAAM,CAAC,MAAM,GAAG,IAAI,CAAC,oBAAoB,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,WAAW,CAAC,CAAC;YAC7E,MAAM,CAAC,aAAa,GAAG,IAAI,CAAC,iCAAiC,CAAC,MAAM,CAAC,aAAa,EAAE,MAAM,CAAC,YAAY,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC;YACzH,IAAI,MAAM,CAAC,OAAO,IAAI,IAAI,EAAE;gBAC1B,MAAM,CAAC,OAAO,GAAG,IAAI,CAAC,oBAAoB,CAAC,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,WAAW,CAAC,CAAC;aAChF;YAED,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;YAC3B,MAAM,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,MAAM,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,MAAwB,CAAC;gBAC3F,CAAC,CAAC,MAAM,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,MAAyB,CAAC,CAAC;YAClE,IAAI,MAAM,EAAE;gBACV,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;oBACrB,MAAM,IAAI,CAAC,kBAAkB,CAAC,4BAA4B,CAAC,MAAyB,EAAE,IAAI,CAAC,CAAC;oBAC5F,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;iBACpB;gBACD,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;gBACtB,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;gBACxB,IAAI,CAAC,SAAS,EAAE,CAAC;aAClB;YAED,IAAI,CAAC,cAAc,GAAG,KAAK,CAAC;QAC9B,CAAC;KAAA;IAEO,oBAAoB,CAAC,KAAa,EAAE,QAAyB;QACnE,IAAI,MAAM,GAAG,4DAAoB,CAAC,eAAe,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;QACnE,OAAO,MAAM,CAAC;IAChB,CAAC;IAEO,iCAAiC,CAAC,KAAa,EAAE,YAA8B,EAAE,OAAuB;QAC9G,IAAI,MAAc,CAAC;QACnB,QAAQ,OAAO,EAAE;YACf,KAAK,qDAAc,CAAC,oBAAoB,CAAC;YACzC,KAAK,qDAAc,CAAC,iBAAiB,CAAC;YACtC,KAAK,qDAAc,CAAC,mBAAmB;gBACrC,MAAM,GAAG,4DAAoB,CAAC,YAAY,CAAC,KAAK,EAAE,YAAY,CAAC,CAAC;gBAChE,MAAM;YACR;gBACE,MAAM,GAAG,4DAAoB,CAAC,YAAY,CAAC,KAAK,EAAE,YAAY,CAAC,CAAC;SACnE;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,WAAW,CAAC,UAA0B,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI;QAC5E,OAAO,0DAAe,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;IAC/C,CAAC;IAEO,kBAAkB;QACxB,IAAI,IAAI,CAAC,sBAAsB,EAAE;YAC/B,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,KAAK,CAAC,aAAa,CAAC,yDAAU,CAAC,OAAO,CAAC;gBAChE,yDAAU,CAAC,QAAQ;gBACnB,iEAAyB;gBACzB,yDAAU,CAAC,GAAG,CAAC,CAAC,CAAC;aAClB,CAAC,CAAC,CAAC;YACJ,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;SAC3C;aAAM;YACL,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;YACzC,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,KAAK,CAAC,eAAe,EAAE,CAAC;YACnD,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC;SAC5C;IACH,CAAC;IAEO,yBAAyB;QAC/B,IAAI,6DAAkB,CAAC,QAAQ,CAAC,IAAI,CAAC,mBAAmB,CAAC,EAAE;YACzD,IAAI,CAAC,6DAAkB,CAAC,QAAQ,CAAC,IAAI,CAAC,qBAAqB,CAAC,EAAE;gBAC5D,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,kBAAkB,CAAC;gBAC7C,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,YAAY,CAAC,KAAK,EAAE,CAAC;gBAChD,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;gBACpD,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;aACnD;SACF;aACI;YACH,IAAI,6DAAkB,CAAC,QAAQ,CAAC,IAAI,CAAC,qBAAqB,CAAC,EAAE;gBAC3D,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,gBAAgB,CAAC;gBAC3C,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,YAAY,CAAC,KAAK,EAAE,CAAC;aACjD;SACF;IACH,CAAC;IAEO,QAAQ;QACd,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC;QACpE,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,sDAAe,CAAC,EAAE,CAAC;QACvF,IAAI,CAAC,qBAAqB,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC;QAC3E,IAAI,CAAC,aAAa,GAAG,6DAAkB,CAAC,QAAQ,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC,IAAI,CAAC,gBAAgB,CAAC;QAC7H,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC;YAC1C,IAAI,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,yDAAU,CAAC,OAAO,CAAC;oBAC/D,yDAAU,CAAC,QAAQ;oBACnB,yDAAU,CAAC,SAAS,CAAC,CAAC,CAAC;oBACvB,yDAAU,CAAC,SAAS,CAAC,EAAE,CAAC;iBACzB,CAAC,CAAC;YACH,aAAa,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,EAAE,yDAAU,CAAC,OAAO,CAAC;oBACjF,yDAAU,CAAC,QAAQ;oBACnB,iEAAyB;oBACzB,yDAAU,CAAC,GAAG,CAAC,CAAC,CAAC;iBAClB,CAAC,CAAC;YACH,QAAQ,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,EAAE,yDAAU,CAAC,OAAO,CAAC;oBACvE,yDAAU,CAAC,QAAQ;oBACnB,yDAAU,CAAC,SAAS,CAAC,CAAC,CAAC;oBACvB,yDAAU,CAAC,SAAS,CAAC,EAAE,CAAC;iBACzB,CAAC,CAAC;YACH,OAAO,EAAE,CAAC,IAAI,CAAC,mBAAmB,EAAE,yDAAU,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;YAC3D,SAAS,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,EAAE,yDAAU,CAAC,OAAO,CAAC;oBACzE,yDAAU,CAAC,QAAQ;oBACnB,iEAAyB;oBACzB,yDAAU,CAAC,GAAG,CAAC,CAAC,CAAC;oBACjB,yDAAU,CAAC,GAAG,CAAC,EAAE,CAAC;iBACnB,CAAC,CAAC;YACH,MAAM,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,EAAE,yDAAU,CAAC,OAAO,CAAC;oBACnE,yDAAU,CAAC,QAAQ;oBACnB,iEAAyB;oBACzB,yDAAU,CAAC,GAAG,CAAC,CAAC,CAAC;iBAClB,CAAC,CAAC;YACH,KAAK,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,yDAAU,CAAC,OAAO,CAAC;oBACjE,yDAAU,CAAC,QAAQ;oBACnB,iEAAyB;oBACzB,yDAAU,CAAC,GAAG,CAAC,CAAC,CAAC;iBAClB,CAAC,CAAC;YACH,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,QAAQ,EAAE,CAAC,IAAI,CAAC,sBAAsB,EAAE,CAAC;YAClG,WAAW,EAAE,CAAC,IAAI,CAAC,oBAAoB,EAAE,yDAAU,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;YAChE,YAAY,EAAE,CAAC,IAAI,CAAC,qBAAqB,EAAE,yDAAU,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;YAClE,SAAS,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC;YACvD,OAAO,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC;SACpD,CAAC,CAAC;IACL,CAAC;IAEO,SAAS;QACf,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,CAAC;QAC1B,IAAI,CAAC,oBAAoB,GAAG,sDAAe,CAAC,EAAE,CAAC;QAC/C,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,gBAAgB,CAAC;QAC3C,IAAI,CAAC,cAAc,GAAG,KAAK,CAAC;IAC9B,CAAC;IAEO,yBAAyB;QAC/B,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,SAAS,CAAC,KAAK,IAAI,IAAI,IAAI,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,SAAS,CAAC,KAAK,IAAI,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,IAAI,IAAI,IAAI,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,IAAI,EAAE,CAAC,EAAE;YACpN,OAAO,KAAK,CAAC;SACd;QAED,IAAI,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,SAAS,CAAC,KAAK,IAAI,IAAI,IAAI,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE;YACrH,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,SAAS,CAAC,SAAS,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC;YAC9D,OAAO,IAAI,CAAC;SACb;QAED,IAAI,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,SAAS,CAAC,KAAK,IAAI,IAAI,IAAI,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE;YACnH,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC;YAC5D,OAAO,IAAI,CAAC;SACb;QAED,IAAI,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,SAAS,CAAC,KAAK,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,IAAI,IAAI,IAAI,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,IAAI,EAAE,CAAC,EAAE;YAC9J,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;YACjE,OAAO,IAAI,CAAC;SACb;QACD,IAAI,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,SAAS,CAAC,KAAK,IAAI,IAAI,IAAI,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,SAAS,CAAC,KAAK,IAAI,EAAE,CAAC,EAAE;YAChK,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,SAAS,CAAC,SAAS,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;YACnE,OAAO,IAAI,CAAC;SACb;QACD,IAAI,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,IAAI,IAAI,IAAI,QAAQ,CAAC,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,QAAQ,CAAC,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE;YAC7J,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC;YAC5D,OAAO,IAAI,CAAC;SACb;QAGD,OAAO,KAAK,CAAC;IACf,CAAC;CACF;;YA3PmC,0DAAW;YACf,iEAAuB;;AAtC1C,2BAA2B;IALvC,+DAAS,CAAC;QACT,QAAQ,EAAE,qCAAqC;QAC/C,uPAAsD;KAEvD,CAAC;qCAsCkC,0DAAW;QACf,iEAAuB;GAtC1C,2BAA2B,CAgSvC;AAhSuC;;;;;;;;;;;;;;;;;;;;AClBS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACAP;AAEkB;AAQ5D,IAAa,0BAA0B,GAAvC,MAAa,0BAA0B;IAGrC,YACU,kBAA2C;QAA3C,uBAAkB,GAAlB,kBAAkB,CAAyB;QAHrD,cAAS,GAAG,IAAI,CAAC;IAIb,CAAC;IAEE,IAAI,CAAC,MAAuB;QACjC,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;QACvB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACvB,CAAC;IAEK,QAAQ;;YACZ,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YACjE,IAAI,MAAM,EAAE;gBACV,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;gBACtB,IAAI,CAAC,MAAM,GAAG,SAAS,CAAC;aACzB;QACH,CAAC;KAAA;IAED,QAAQ;QACN,IAAI,CAAC,MAAM,GAAG,SAAS,CAAC;QACxB,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;IACxB,CAAC;CAEF;;YArB+B,iEAAuB;;AAJ1C,0BAA0B;IALtC,+DAAS,CAAC;QACT,QAAQ,EAAE,mCAAmC;QAC7C,iPAAoD;KAErD,CAAC;qCAK8B,iEAAuB;GAJ1C,0BAA0B,CAyBtC;AAzBsC;;;;;;;;;;;;;;;;;;;;ACVY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACAa;AAEJ;AAS5D,IAAa,4BAA4B,GAAzC,MAAa,4BAA4B;IAOvC,YACU,wBAAiD;QAAjD,6BAAwB,GAAxB,wBAAwB,CAAyB;QAP3D,cAAS,GAAG,IAAI,CAAC;QAIjB,mBAAc,GAAG,IAAI,0DAAY,EAAU,CAAC;IAIxC,CAAC;IAEL,QAAQ;IACR,CAAC;IAEM,IAAI,CAAC,KAAqB;QAC/B,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;QACvB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;IACrB,CAAC;IAED,QAAQ;QACN,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;QACtB,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;QACnB,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;QAClB,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;IAC1B,CAAC;IAEK,QAAQ;;YACZ,IAAI,CAAC,IAAI,CAAC,UAAU;gBAClB,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;YACzB,IAAI,MAA4B,CAAC;YACjC,MAAM,GAAG,MAAM,IAAI,CAAC,wBAAwB,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAErE,IAAI,MAAM,KAAK,IAAI,EAAE;gBACnB,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;gBACxC,IAAI,CAAC,QAAQ,EAAE,CAAC;aACjB;iBAAM,IAAI,MAAM,KAAK,KAAK,EAAE;gBAC3B,IAAI,CAAC,MAAM,GAAG,uBAAuB,CAAC;aACvC;iBAAM;gBACL,MAAM,UAAU,GAAG,MAAoB,CAAC;gBACxC,IAAI,UAAU,EAAE;oBACd,IAAI,CAAC,MAAM,GAAG,UAAU,CAAC,OAAO,CAAC;iBAClC;aACF;YACD,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;QAC1B,CAAC;KAAA;CACF;;YArCqC,iEAAuB;;AARhD,4BAA4B;IALxC,+DAAS,CAAC;QACT,QAAQ,EAAE,qCAAqC;QAC/C,uPAAsD;KAEvD,CAAC;qCASoC,iEAAuB;GARhD,4BAA4B,CA6CxC;AA7CwC;;;;;;;;;;;;;;;;;;;;ACXQ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACAmB;AAEJ;AAEJ;AAC0C;AAGvB;AAO/E,IAAa,0BAA0B,GAAvC,MAAa,0BAA0B;IA2BrC,YACU,YAAyB,EACzB,uBAAgD;QADhD,iBAAY,GAAZ,YAAY,CAAa;QACzB,4BAAuB,GAAvB,uBAAuB,CAAyB;QA5B1D,cAAS,GAAG,IAAI,CAAC;QAajB,sBAAiB,GAAG,2DAAgB,CAAC;QAIrC,oCAA+B,GAAG,IAAI,0DAAY,EAAE,CAAC;IAWS,CAAC;IAN/D,IAAI,iBAAiB;QACnB,OAAO,IAAI,CAAC,oBAAoB,CAAC;IACnC,CAAC;IAMD,QAAQ;QACN,IAAI,CAAC,eAAe,GAAG,EAAE,CAAC;QAC1B,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,gEAAqB,CAAC,EAAE;YAChE,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;SACjE;IAEH,CAAC;IAEK,QAAQ;;YACZ,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;YACvB,IAAI,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE;gBAC9B,IAAI,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,OAAO,CAAC,OAAO;oBAC7C,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;gBAC3B,IAAI,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,cAAc,CAAC,OAAO;oBACpD,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC;gBAClC,IAAI,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,aAAa,CAAC,OAAO;oBACnD,IAAI,CAAC,sBAAsB,GAAG,IAAI,CAAC;gBACrC,IAAI,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,qBAAqB,CAAC,OAAO;oBAC3D,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC;gBAChC,OAAO;aACR;YAED,IAAI,QAAQ,GAAW,IAAI,CAAC;YAC5B,IAAI,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,aAAa,IAAI,IAAI,CAAC,IAAI,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,aAAa,CAAC,KAAK,IAAI,IAAI,EAAE;gBAC9H,QAAQ,GAAG,UAAU,CAAC,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,qBAAqB,CAAC,KAAK,CAAC,CAAC;gBAC/E,IAAI,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,GAAG,CAAC,IAAI,QAAQ,GAAG,IAAI,CAAC,gBAAgB,CAAC,KAAK,GAAG,CAAC,CAAC,EAAE;oBACnF,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC;oBAC9B,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,qBAAqB,CAAC,SAAS,CAAC,EAAE,eAAe,EAAE,IAAI,EAAE,CAAC,CAAC;oBACvF,OAAO;iBACR;aACF;YAED,MAAM,KAAK,GAAG,kBAAK,IAAI,CAAC,aAAa,CAAC,KAAK,IAAE,qBAAqB,EAAE,QAAQ,EAAE,QAAQ,EAAE,IAAI,CAAC,gBAAgB,CAAC,EAAE,EAAE,EAAE,EAAE,IAAI,CAAC,KAAK,CAAC,EAAE,EAAE,UAAU,EAAE,IAAI,CAAC,gBAAgB,CAAC,UAAU,GAAoB;YACrM,IAAI,CAAC,IAAI,CAAC,+BAA+B,CAAC,KAAK,CAAC,EAAE;gBAChD,OAAO;aACR;YACD,IAAI,KAAK,CAAC,qBAAqB,IAAI,IAAI,EAAE;gBACvC,KAAK,CAAC,qBAAqB,GAAG,4DAAoB,CAAC,eAAe,CAAC,KAAK,CAAC,qBAAqB,EAAE,IAAI,CAAC,gBAAgB,CAAC,WAAW,CAAC,CAAC;aACpI;YAED,MAAM,IAAI,CAAC,uBAAuB,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,QAAwB,EAAE,EAAE;gBACpF,IAAI,QAAQ,YAAY,kDAAU,IAAI,QAAQ,CAAC,IAAI,KAAK,qDAAa,CAAC,mCAAmC,EAAE;oBACzG,IAAI,CAAC,wBAAwB,GAAG,IAAI,CAAC;oBACrC,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC;iBAC/B;qBAAM;oBACL,IAAI,CAAC,+BAA+B,CAAC,IAAI,EAAE,CAAC;iBAC7C;YACH,CAAC,CAAC,CAAC;YAEH,IAAI,CAAC,QAAQ,EAAE,CAAC;QAClB,CAAC;KAAA;IAEM,IAAI,CAAC,KAAqB,EAAE,eAAgC,EAAE,gBAAoD,EAAE,cAAuB;QAChJ,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;QACvB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,iBAAiB,GAAG,gBAAgB,CAAC;QAC1C,IAAI,CAAC,iBAAiB,CAAC,GAAG,EAAE,CAAC;QAC7B,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,cAAc,CAAC,QAAQ,EAAE,EAAE,KAAK,EAAE,KAAK,CAAC,cAAc,EAAE,CAAC,CAAC;QACrG,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC;QAClF,IAAI,CAAC,gBAAgB,GAAG,eAAe,CAAC;QACxC,IAAI,CAAC,oBAAoB,GAAG,cAAc,CAAC;QAC3C,IAAI,IAAI,CAAC,KAAK,CAAC,qBAAqB,IAAI,IAAI,EAAE;YAC5C,IAAI,CAAC,KAAK,CAAC,qBAAqB,GAAG,4DAAoB,CAAC,iBAAiB,CAAC,IAAI,CAAC,KAAK,CAAC,qBAAqB,EAAE,IAAI,CAAC,gBAAgB,CAAC,WAAW,CAAC,CAAC;SAChJ;QACD,IAAI,CAAC,QAAQ,EAAE,CAAC;IAClB,CAAC;IAED,2BAA2B;QACzB,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,qBAAqB,CAAC,eAAe,EAAE,CAAC;QACpE,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,qBAAqB,CAAC,aAAa,CAAC,yDAAU,CAAC,OAAO,CAAC;YACjF,yDAAU,CAAC,QAAQ;SACpB,CAAC,CAAC,CAAC;QACJ,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,qBAAqB,CAAC,sBAAsB,EAAE,CAAC;QAE3E,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,aAAa,CAAC,eAAe,EAAE,CAAC;QAC5D,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,aAAa,CAAC,aAAa,CAAC,yDAAU,CAAC,OAAO,CAAC,CAAC,yDAAU,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;QACnG,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,aAAa,CAAC,sBAAsB,EAAE,CAAC;QAEnE,IAAI,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,qBAAqB,CAAC,KAAK,IAAI,EAAE,EAAE;YACjE,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,qBAAqB,CAAC,QAAQ,CAAC,IAAI,CAAC;SACjE;QAAA,CAAC;QAEF,IAAI,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,aAAa,CAAC,KAAK,IAAI,IAAI,IAAI,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,qBAAqB,CAAC,KAAK,IAAI,IAAI,EAAE;YAC9H,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,aAAa,CAAC,eAAe,EAAE,CAAC;YAC5D,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,aAAa,CAAC,sBAAsB,EAAE,CAAC;YACnE,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,qBAAqB,CAAC,eAAe,EAAE,CAAC;YACpE,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,qBAAqB,CAAC,sBAAsB,EAAE,CAAC;SAC5E;IACH,CAAC;IAEO,+BAA+B,CAAC,KAAqB;QAC3D,IAAI,QAAQ,GAAG,IAAI,CAAC,uBAAuB,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC;QAC/D,IAAI,CAAC,UAAU,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;QAC5E,IAAI,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,IAAI,KAAK,CAAC,OAAO,IAAI,CAAC,CAAC,EAAE,IAAI,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE;YACvF,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;YACzB,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC;SAC/B;QACD,IAAI,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,cAAc,IAAI,KAAK,CAAC,cAAc,IAAI,CAAC,CAAC,EAAE,IAAI,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE;YACrG,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC;YAChC,IAAI,CAAC,wBAAwB,GAAG,IAAI,CAAC;SACtC;QACD,IAAI,IAAI,CAAC,iBAAiB,IAAI,IAAI,CAAC,wBAAwB,EAAE;YAC3D,OAAO,KAAK,CAAC;SACd;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,QAAQ;QACN,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;QACtB,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;QACxB,IAAI,CAAC,WAAW,EAAE,CAAC;QACnB,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,CAAC;IAC7B,CAAC;IAEO,QAAQ;QACd,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC;YAC3C,cAAc,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,cAAc,EAAE,yDAAU,CAAC,OAAO,CAAC;oBAC7D,yDAAU,CAAC,QAAQ;oBACnB,yDAAU,CAAC,GAAG,CAAC,CAAC,CAAC;oBACjB,yDAAU,CAAC,GAAG,CAAC,KAAK,CAAC;oBACrB,uDAAe;iBAChB,CAAC,CAAC;YACH,OAAO,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,yDAAU,CAAC,OAAO,CAAC;oBAC/C,yDAAU,CAAC,QAAQ;oBACnB,yDAAU,CAAC,GAAG,CAAC,CAAC,CAAC;oBACjB,yDAAU,CAAC,GAAG,CAAC,KAAK,CAAC;oBACrB,uDAAe;iBAChB,CAAC,CAAC;YACH,aAAa,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC;YACzC,qBAAqB,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,qBAAqB,CAAC;SAC1D,CAAC,CAAC;QACH,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,OAAO,CAAC,YAAY,CAAC,SAAS,CAAC,GAAG,EAAE;YAC9D,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;YAC1B,IAAI,CAAC,iBAAiB,GAAG,KAAK,CAAC;QACjC,CAAC,CAAC;QACF,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,cAAc,CAAC,YAAY,CAAC,SAAS,CAAC,GAAG,EAAE;YACrE,IAAI,CAAC,mBAAmB,GAAG,KAAK,CAAC;YACjC,IAAI,CAAC,wBAAwB,GAAG,KAAK,CAAC;QACxC,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,qBAAqB,CAAC,YAAY,CAAC,SAAS,CAAC,GAAG,EAAE;YAC5E,IAAI,CAAC,iBAAiB,GAAG,KAAK,CAAC;QACjC,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,aAAa,CAAC,YAAY,CAAC,SAAS,CAAC,GAAG,EAAE;YACpE,IAAI,CAAC,sBAAsB,GAAG,KAAK,CAAC;QACtC,CAAC,CAAC,CAAC;QAEH,IAAI,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,aAAa,IAAI,IAAI,CAAC,EAAE;YACnE,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,aAAa,CAAC,aAAa,CAAC,yDAAU,CAAC,OAAO,CAAC,CAAC,yDAAU,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;YACnG,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,qBAAqB,CAAC,aAAa,CAAC,yDAAU,CAAC,OAAO,CAAC,CAAC,yDAAU,CAAC,QAAQ;aACtG,CAAC,CAAC,CAAC;SACL;IACH,CAAC;IAEO,WAAW;QACjB,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;QAC1B,IAAI,CAAC,mBAAmB,GAAG,KAAK,CAAC;QACjC,IAAI,CAAC,sBAAsB,GAAG,KAAK,CAAC;QACpC,IAAI,CAAC,iBAAiB,GAAG,KAAK,CAAC;IACjC,CAAC;CACF;;YAlKyB,0DAAW;YACA,iEAAuB;;AA7B/C,0BAA0B;IALtC,+DAAS,CAAC;QACT,QAAQ,EAAE,mCAAmC;QAC7C,iPAAoD;KAErD,CAAC;qCA6BwB,0DAAW;QACA,iEAAuB;GA7B/C,0BAA0B,CA8LtC;AA9LsC;;;;;;;;;;;;;;;;;;;;ACfa;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACAF;AAEiD;AAC/C;AAC8B;AACP;AAC3B;AAOhD,IAAa,6BAA6B,GAA1C,MAAa,6BAA6B;IAUxC,YACU,iBAA0C;QAA1C,sBAAiB,GAAjB,iBAAiB,CAAyB;QAVpD,cAAS,GAAG,IAAI,CAAC;QACjB,mBAAc,GAAuC,EAAE,CAAC;QAExD,iBAAY,GAAG,KAAK,CAAC;QAIb,6BAAwB,GAA6B,IAAI,gEAAwB,EAAE,CAAC;IAIxF,CAAC;IAEL,QAAQ;IACR,CAAC;IAEM,4BAA4B,CAAC,UAAgC,EAAE,WAAmB;QACvF,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;QAC1B,IAAI,CAAC,0BAA0B,GAAG,UAAsC,CAAC;QACzE,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;QAC/B,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC;QAC7B,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;IACzB,CAAC;IAEM,0BAA0B,CAAC,MAAgB,EAAE,mBAA0C;QAC5F,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC;QAC5B,IAAI,CAAC,wBAAwB,CAAC,SAAS,GAAG,MAAM,CAAC;QACjD,IAAI,CAAC,wBAAwB,CAAC,mBAAmB,GAAG,mBAAmB,CAAC;QACxE,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;IACzB,CAAC;IAED,QAAQ;QACN,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;IACxB,CAAC;IAEY,QAAQ;;YACnB,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;YACzB,IAAI,MAAW,CAAC;YAChB,IAAI,IAAI,CAAC,gBAAgB,EAAE;gBACzB,IAAI,CAAC,wBAAwB,CAAC,YAAY,GAAG,IAAI,CAAC,eAAe,CAAC;gBAClE,IAAI,CAAC,wBAAwB,CAAC,QAAQ,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC,eAAe,EAAE,CAAC,QAAQ,CAAC;aAC3F;iBACI;gBACH,IAAI,CAAC,0BAA0B,CAAC,YAAY,GAAG,IAAI,CAAC,eAAe,CAAC;gBACpE,IAAI,CAAC,0BAA0B,CAAC,QAAQ,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC,eAAe,EAAE,CAAC,QAAQ,CAAC;aAC7F;YAED,MAAM,GAAG,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC,MAAM,IAAI,CAAC,iBAAiB,CAAC,6BAA6B,CAAC,IAAI,CAAC,wBAAwB,CAAC;gBACxH,CAAC,CAAC,MAAM,IAAI,CAAC,iBAAiB,CAAC,+BAA+B,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC;YAChG,IAAI,CAAC,CAAC,MAAM,YAAY,kDAAU,CAAC,EAAE;gBACrC,IAAI,QAAQ,GAAG,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC,IAAI,CAAC,wBAAwB,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,0BAA0B,EAAE,CAAC;gBAC3G,MAAM,GAAG,GAAG,GAAG,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC;gBACxC,IAAI,YAAY,GAAG,QAAQ,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;gBAC/C,YAAY,CAAC,IAAI,GAAG,GAAG,CAAC;gBACxB,YAAY,CAAC,QAAQ,GAAG,QAAQ,CAAC;gBACjC,YAAY,CAAC,KAAK,EAAE,CAAC;gBACrB,IAAI,CAAC,QAAQ,EAAE,CAAC;aACjB;YACD,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;QAC5B,CAAC;KAAA;IAEO,0BAA0B;QAChC,IAAI,IAAI,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,0BAA0B,CAAC,QAAQ,GAAG,gEAAqB,CAAC,4BAA4B,CAAC,CAAC;QACnH,IAAI,EAAE,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,0BAA0B,CAAC,MAAM,GAAG,gEAAqB,CAAC,4BAA4B,CAAC,CAAC;QAC/G,IAAI,aAAa,GAAG,gEAAqB,CAAC,IAAI,CAAC,0BAA0B,CAAC,YAAY,CAAC,CAAC;QACxF,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,IAAI,EAAC,GAAG,CAAC,IAAI,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,kBAAkB,CAAC,OAAO,CAAC,IAAI,aAAa,EAAE,CAAC;IACxI,CAAC;IAEO,wBAAwB;QAC9B,IAAI,IAAI,GAAG,IAAI,IAAI,EAAE,CAAC;QACtB,IAAI,QAAQ,GAAG,IAAI,CAAC,wBAAwB,CAAC,YAAY,IAAI,uDAAgB,CAAC,GAAG,CAAC,CAAC,CAAC,kBAAkB,IAAI,CAAC,kBAAkB,EAAE,MAAM;YACnI,CAAC,CAAC,kBAAkB,IAAI,CAAC,kBAAkB,EAAE,IAAI,gEAAqB,CAAC,IAAI,CAAC,wBAAwB,CAAC,YAAY,CAAC,EAAE;QACtH,OAAO,QAAQ,CAAC;IAClB,CAAC;IAEO,gBAAgB,CAAC,UAAmB;QAC1C,IAAI,CAAC,gBAAgB,GAAG,UAAU,CAAC;QACnC,IAAI,CAAC,cAAc,GAAG,EAAE,CAAC;QACzB,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,gEAAqB,CAAC,EAAE;YAChE,IAAI,KAAK,GAAC,KAAe,CAAC;YAC1B,IAAI,MAAM,CAAC,GAAG,CAAC,IAAI,uDAAgB,CAAC,GAAG,IAAI,IAAI,CAAC,gBAAgB,EAAE;gBAChE,KAAK,IAAI,QAAQ,CAAC;aACnB;YACD,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC;SAC/D;QACD,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;IACtD,CAAC;CACF;;YA7E8B,iEAAuB;;AAXzC,6BAA6B;IALzC,+DAAS,CAAC;QACT,QAAQ,EAAE,sCAAsC;QAChD,0PAAuD;KAExD,CAAC;qCAY6B,iEAAuB;GAXzC,6BAA6B,CAwFzC;AAxFyC;;;;;;;;;;;;;;;;;;;;ACbU;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACCiD;AACjC;AAEY;AACT;AACI;AACD;AACiB;AACL;AACP;AACrB;AAO1D,IAAa,6BAA6B,GAA1C,MAAa,6BAA6B;IAwCxC,YACU,YAAyB,EACzB,uBAAgD,EAChD,mBAAkD;QAFlD,iBAAY,GAAZ,YAAY,CAAa;QACzB,4BAAuB,GAAvB,uBAAuB,CAAyB;QAChD,wBAAmB,GAAnB,mBAAmB,CAA+B;QA1C5D,cAAS,GAAG,IAAI,CAAC;QAWjB,oBAAe,GAAG,qDAAc,CAAC;QAGjC,sBAAiB,GAAG,2DAAgB,CAAC;QACrC,sCAAiC,GAAG,IAAI,0DAAY,EAAU,CAAC;QAEvD,qCAAgC,GAAY,KAAK,CAAC;QAClD,kBAAa,GAAmB,EAAE,CAAC;QACnC,uBAAkB,GAAG,gEAAqB,CAAC;QASnD,iBAAY,GAAG;YACb,EAAE,MAAM,EAAE,eAAe,EAAE,UAAU,EAAE,qDAAc,CAAC,OAAO,EAAE;YAC/D,EAAE,MAAM,EAAE,WAAW,EAAE,SAAS,EAAE,SAAS,EAAE,UAAU,EAAE,qDAAc,CAAC,MAAM,EAAE;YAChF,EAAE,MAAM,EAAE,mBAAmB,EAAE,SAAS,EAAE,gBAAgB,EAAE,UAAU,EAAE,qDAAc,CAAC,MAAM,EAAE;YAC/F,EAAE,MAAM,EAAE,iBAAiB,EAAE,SAAS,EAAE,eAAe,EAAE,UAAU,EAAE,qDAAc,CAAC,aAAa,EAAE;YACnG,EAAE,MAAM,EAAE,WAAW,EAAE,SAAS,EAAE,uBAAuB,EAAE,UAAU,EAAE,qDAAc,CAAC,aAAa,EAAE;SACtG;IASG,CAAC;IARL,IAAI,iBAAiB;QACnB,OAAO,IAAI,CAAC,uBAAuB,EAAE,CAAC;IACxC,CAAC;IAQD,QAAQ;QAEN,IAAI,CAAC,eAAe,GAAG,EAAE,CAAC;QAC1B,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,gEAAqB,CAAC,EAAE;YAChE,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;SACjE;IACH,CAAC;IAED,eAAe;QACb,IAAI,SAAS,GAAG,IAAI,CAAC,gBAAgB,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC,EAAU,EAAE,EAAE;YAC5E,IAAI,CAAC,gCAAgC,GAAG,IAAI,CAAC;QAC/C,CAAC,CAAC,CAAC;QAEH,IAAI,aAAa,GAAG,IAAI,CAAC,cAAc,CAAC,+BAA+B,CAAC,SAAS,CAAC,GAAG,EAAE;YACrF,IAAI,CAAC,gCAAgC,GAAG,IAAI,CAAC;QAC/C,CAAC,CAAC,CAAC;QAEH,IAAI,OAAO,GAAG,IAAI,CAAC,uBAAuB,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE;YAClE,IAAI,oBAAoB,GAAa,EAAE,CAAC;YACxC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;gBACjB,oBAAoB,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC;gBACpE,IAAI,IAAI,CAAC,gBAAgB,IAAI,GAAG,CAAC,EAAE,IAAI,IAAI,CAAC,gBAAgB,CAAC,EAAE,EAAE;oBAC/D,IAAI,CAAC,SAAS,GAAG,GAAG,CAAC,MAAM,CAAC;oBAC5B,IAAI,CAAC,gBAAgB,GAAG,GAAG,CAAC;oBAC5B,IAAI,CAAC,QAAQ,EAAE,CAAC;iBACjB;YACH,CAAC,CAAC;YACF,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,2BAA2B,CAAC,oBAAoB,CAAC,CAAC;QAClF,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QACnC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;QACvC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACnC,CAAC;IAED,WAAW;QACT,IAAI,CAAC,aAAa,IAAI,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC;IAC/E,CAAC;IAED,WAAW,CAAC,KAAqB;QAC/B,IAAI,SAAS,GAAG,sDAAc,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;QAClD,SAAS,CAAC,UAAU,GAAG,IAAI,CAAC,gBAAgB,CAAC,UAAU,CAAC;QACxD,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,gBAAgB,EAAE,IAAI,CAAC,iBAAiB,EAAE,IAAI,CAAC,iBAAiB,CAAC,CAAC;IAC7G,CAAC;IAED,aAAa,CAAC,KAAqB;QACjC,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACpC,CAAC;IAEK,QAAQ;;YACZ,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;YACvB,IAAI,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE;gBACjC,IAAI,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,OAAO,CAAC,OAAO;oBAChD,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;gBAC3B,IAAI,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,cAAc,CAAC,OAAO;oBACvD,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC;gBAClC,IAAI,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,aAAa,CAAC,OAAO;oBACtD,IAAI,CAAC,sBAAsB,GAAG,IAAI,CAAC;gBACrC,IAAI,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,qBAAqB,CAAC,OAAO;oBAC9D,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC;gBAChC,OAAO;aACR;YAED,IAAI,QAAQ,GAAW,IAAI,CAAC;YAC5B,IAAI,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,aAAa,IAAI,IAAI,CAAC,IAAI,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,aAAa,CAAC,KAAK,IAAI,IAAI,EAAE;gBACjI,QAAQ,GAAG,UAAU,CAAC,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,qBAAqB,CAAC,KAAK,CAAC,CAAC;gBAClF,IAAI,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,GAAG,CAAC,IAAI,QAAQ,GAAG,IAAI,CAAC,gBAAgB,CAAC,KAAK,GAAG,CAAC,CAAC,EAAE;oBACnF,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC;oBAC9B,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,qBAAqB,CAAC,SAAS,CAAC,EAAE,eAAe,EAAE,IAAI,EAAE,CAAC,CAAC;oBAC1F,OAAO;iBACR;aACF;YAED,MAAM,KAAK,GAAG,kBAAK,IAAI,CAAC,gBAAgB,CAAC,KAAK,IAAE,qBAAqB,EAAE,QAAQ,EAAE,QAAQ,EAAE,IAAI,CAAC,gBAAgB,CAAC,EAAE,EAAE,UAAU,EAAE,IAAI,CAAC,gBAAgB,CAAC,UAAU,EAAE,EAAE,EAAE,CAAC,GAAoB;YAE5L,IAAI,CAAC,IAAI,CAAC,+BAA+B,CAAC,KAAK,CAAC,EAAE;gBAChD,OAAO;aACR;YAED,IAAI,KAAK,CAAC,qBAAqB,IAAI,IAAI,EAAE;gBACvC,KAAK,CAAC,qBAAqB,GAAG,4DAAoB,CAAC,eAAe,CAAC,KAAK,CAAC,qBAAqB,EAAE,IAAI,CAAC,gBAAgB,CAAC,WAAW,CAAC,CAAC;aACpI;YAED,MAAM,IAAI,CAAC,uBAAuB,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,QAAwB,EAAE,EAAE;gBACnF,IAAI,QAAQ,YAAY,kDAAU,IAAI,QAAQ,CAAC,IAAI,KAAK,qDAAa,CAAC,mCAAmC,EAAE;oBACzG,IAAI,CAAC,wBAAwB,GAAG,IAAI,CAAC;oBACrC,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC;iBAC/B;qBACI;oBACH,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;oBACxB,IAAI,CAAC,gCAAgC,GAAG,IAAI,CAAC;oBAC7C,IAAI,CAAC,gBAAgB,CAAC,KAAK,EAAE,CAAC;iBAC/B;YACH,CAAC,CAAC,CAAC;QACL,CAAC;KAAA;IAEM,IAAI,CAAC,eAAgC;QAC1C,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;QACvB,IAAI,CAAC,gBAAgB,GAAG,eAAe,CAAC;QACxC,IAAI,CAAC,SAAS,GAAG,eAAe,CAAC,MAAM,CAAC;QACxC,IAAI,CAAC,gCAAgC,GAAG,KAAK,CAAC;QAC9C,IAAI,CAAC,QAAQ,EAAE,CAAC;IAClB,CAAC;IAED,QAAQ;QACN,IAAI,CAAC,uBAAuB,CAAC,kCAAkC,CAAC,IAAI,CAAC,gBAAgB,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;QACjG,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;QACtB,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;QACxB,IAAI,CAAC,WAAW,EAAE,CAAC;QACnB,IAAI,CAAC,gBAAgB,CAAC,KAAK,EAAE,CAAC;QAC9B,IAAI,IAAI,CAAC,gCAAgC,EAAE;YACzC,IAAI,QAAQ,GAAG,IAAI,CAAC,mBAAmB,CAAC,aAAa,CAAC,QAAQ,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,IAAI,CAAC,gBAAgB,CAAC,UAAU,CAAC,CAAC;YACrH,IAAI,QAAQ,IAAI,QAAQ,CAAC,aAAa,EAAE;gBACtC,IAAI,CAAC,mBAAmB,CAAC,6BAA6B,CAAC,IAAI,CAAC,gBAAgB,CAAC,UAAU,CAAC,CAAC;aAC1F;SACF;IACH,CAAC;IAED,yCAAyC,CAAC,QAAgB;QACxD,IAAI,QAAQ,IAAI,IAAI,EAAE;YACpB,OAAO,GAAG,4DAAoB,CAAC,iBAAiB,CAAC,QAAQ,EAAE,IAAI,CAAC,gBAAgB,CAAC,WAAW,CAAC,IAAI,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,gBAAgB,CAAC,WAAW,CAAC,EAAE,CAAC;SAC9J;QACD,OAAO,GAAG,CAAC;IACb,CAAC;IAED,qBAAqB,CAAC,aAAmC;QACvD,IAAI,aAAa,IAAI,IAAI,EAAE;YACzB,OAAO,IAAI,CAAC,kBAAkB,CAAC,aAAa,CAAC,CAAC;SAC/C;QACD,OAAO,GAAG,CAAC;IACb,CAAC;IAED,2BAA2B;QACzB,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,qBAAqB,CAAC,eAAe,EAAE,CAAC;QACvE,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,qBAAqB,CAAC,aAAa,CAAC,yDAAU,CAAC,OAAO,CAAC;YACpF,yDAAU,CAAC,QAAQ;SAAE,CAAC,CAAC,CAAC;QAC1B,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,qBAAqB,CAAC,sBAAsB,EAAE,CAAC;QAE9E,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,aAAa,CAAC,eAAe,EAAE,CAAC;QAC/D,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,aAAa,CAAC,aAAa,CAAC,yDAAU,CAAC,OAAO,CAAC,CAAC,yDAAU,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;QACtG,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,aAAa,CAAC,sBAAsB,EAAE,CAAC;QAEtE,IAAI,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,qBAAqB,CAAC,KAAK,IAAI,EAAE,EAAE;YACpE,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,qBAAqB,CAAC,QAAQ,CAAC,IAAI,CAAC;SACpE;QAAA,CAAC;QAEF,IAAI,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,aAAa,CAAC,KAAK,IAAI,IAAI,IAAI,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,qBAAqB,CAAC,KAAK,IAAI,IAAI,EAAE;YACpI,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,aAAa,CAAC,eAAe,EAAE,CAAC;YAC/D,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,aAAa,CAAC,sBAAsB,EAAE,CAAC;YACtE,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,qBAAqB,CAAC,eAAe,EAAE,CAAC;YACvE,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,qBAAqB,CAAC,sBAAsB,EAAE,CAAC;SAC/E;IACH,CAAC;IAEO,+BAA+B,CAAC,KAAqB;QAC3D,IAAI,QAAQ,GAAG,IAAI,CAAC,uBAAuB,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC;QAC/D,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;QAC3E,IAAI,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,EAAE;YAClE,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;YACzB,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC;SAC/B;QACD,IAAI,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,cAAc,IAAI,KAAK,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,EAAE;YAChF,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC;YAChC,IAAI,CAAC,wBAAwB,GAAG,IAAI,CAAC;SACtC;QACD,IAAI,IAAI,CAAC,iBAAiB,IAAI,IAAI,CAAC,wBAAwB,EAAE;YAC3D,OAAO,KAAK,CAAC;SACd;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAEO,2BAA2B,CAAC,aAAuB;QACzD,IAAI,gBAAgB,GAAuC,EAAE,CAAC;QAC9D,IAAI,qBAAqB,GAAW,EAAE,CAAC;QACvC,OAAO,gBAAgB,CAAC,MAAM,GAAG,CAAC,EAAE;YAClC,IAAI,aAAa,CAAC,OAAO,CAAC,qBAAqB,CAAC,IAAI,CAAC,CAAC,EAAE;gBACtD,gBAAgB,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,qBAAqB,CAAC,QAAQ,EAAE,EAAE,KAAK,EAAE,qBAAqB,EAAE,CAAC,CAAC;aAClG;YACD,qBAAqB,IAAI,GAAG,CAAC;SAC9B;QACD,OAAO,gBAAgB,CAAC;IAC1B,CAAC;IAEO,uBAAuB;QAC7B,IAAI,IAAI,CAAC,gBAAgB,EAAE;YACzB,IAAI,OAAO,GAAG,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC;YAC5C,OAAO,OAAO,IAAI,qDAAc,CAAC,UAAU,IAAI,OAAO,IAAI,qDAAc,CAAC,OAAO,IAAI,OAAO,IAAI,qDAAc,CAAC,SAAS;gBACrH,OAAO,IAAI,qDAAc,CAAC,WAAW,IAAI,OAAO,IAAI,qDAAc,CAAC,QAAQ,IAAI,OAAO,IAAI,qDAAc,CAAC,UAAU,CAAC;SACvH;QACD,OAAO,KAAK;IACd,CAAC;IAEO,QAAQ;QACd,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC;YAC9C,cAAc,EAAE,CAAC,IAAI,EAAE,yDAAU,CAAC,OAAO,CAAC;oBACxC,yDAAU,CAAC,QAAQ;oBACnB,yDAAU,CAAC,GAAG,CAAC,CAAC,CAAC;oBACjB,yDAAU,CAAC,GAAG,CAAC,KAAK,CAAC;oBACrB,uDAAe;iBAChB,CAAC,CAAC;YACH,OAAO,EAAE,CAAC,IAAI,EAAE,yDAAU,CAAC,OAAO,CAAC;oBACjC,yDAAU,CAAC,QAAQ;oBACnB,yDAAU,CAAC,GAAG,CAAC,CAAC,CAAC;oBACjB,yDAAU,CAAC,GAAG,CAAC,KAAK,CAAC;oBACrB,uDAAe;iBAChB,CAAC,CAAC;YACH,aAAa,EAAE,CAAC,IAAI,CAAC;YACrB,qBAAqB,EAAE,CAAC,IAAI,CAAC;SAC9B,CAAC,CAAC;QACH,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,OAAO,CAAC,YAAY,CAAC,SAAS,CAAC,GAAG,EAAE;YACjE,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;YAC1B,IAAI,CAAC,iBAAiB,GAAG,KAAK,CAAC;QACjC,CAAC,CAAC;QACF,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,cAAc,CAAC,YAAY,CAAC,SAAS,CAAC,GAAG,EAAE;YACxE,IAAI,CAAC,mBAAmB,GAAG,KAAK,CAAC;YACjC,IAAI,CAAC,wBAAwB,GAAG,KAAK,CAAC;QACxC,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,qBAAqB,CAAC,YAAY,CAAC,SAAS,CAAC,GAAG,EAAE;YAC/E,IAAI,CAAC,iBAAiB,GAAG,KAAK,CAAC;QACjC,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,aAAa,CAAC,YAAY,CAAC,SAAS,CAAC,GAAG,EAAE;YACvE,IAAI,CAAC,sBAAsB,GAAG,KAAK,CAAC;QACtC,CAAC,CAAC,CAAC;QACH,IAAI,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,aAAa,IAAI,IAAI,CAAC,EAAE;YACnE,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,aAAa,CAAC,aAAa,CAAC,yDAAU,CAAC,OAAO,CAAC,CAAC,yDAAU,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;YACtG,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,qBAAqB,CAAC,aAAa,CAAC,yDAAU,CAAC,OAAO,CAAC,CAAC,yDAAU,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;SAChH;IACH,CAAC;IAEO,WAAW;QACjB,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;QAC1B,IAAI,CAAC,mBAAmB,GAAG,KAAK,CAAC;QACjC,IAAI,CAAC,sBAAsB,GAAG,KAAK,CAAC;QACpC,IAAI,CAAC,iBAAiB,GAAG,KAAK,CAAC;IACjC,CAAC;CACF;;YAhPyB,0DAAW;YACA,iEAAuB;YAC3B,uEAA6B;;AApB5D;IADC,+DAAS,CAAC,gFAA0B,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;8BAC9C,gFAA0B;qEAAC;AAGnD;IADC,+DAAS,CAAC,oFAA4B,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;8BAC9C,oFAA4B;uEAAC;AA1B5C,6BAA6B;IALzC,+DAAS,CAAC;QACT,QAAQ,EAAE,mCAAmC;QAC7C,6PAAwD;KAEzD,CAAC;qCA0CwB,0DAAW;QACA,iEAAuB;QAC3B,uEAA6B;GA3CjD,6BAA6B,CAyRzC;AAzRyC;;;;;;;;;;;;;;;;;;;;AClBc;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACAN;AACkB;AAGhB;AACqB;AAEyD;AAOlI,IAAa,gCAAgC,GAA7C,MAAa,gCAAgC;IAmBzC,YAAoB,mBAA4C,EACpD,WAAwB;QADhB,wBAAmB,GAAnB,mBAAmB,CAAyB;QACpD,gBAAW,GAAX,WAAW,CAAa;QAnBpC,cAAS,GAAG,IAAI,CAAC;QAIjB,kBAAa,GAAmB,EAAE,CAAC;QAEnC,eAAU,GAAgD,EAAE,CAAC;QAG7D,oBAAe,GAAiD,EAAE,CAAC;QAGnE,kBAAa,GAAiD,EAAE,CAAC;QAGjE,wBAAmB,GAAuD,EAAE,CAAC;IAIpC,CAAC;IAC5C,QAAQ;QACN,IAAI,CAAC,aAAa,EAAE,CAAC;QACrB,IAAI,CAAC,QAAQ,EAAE,CAAC;IAClB,CAAC;IAEO,aAAa;QACnB,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,8EAAuB,CAAC,EAAE;YAClE,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;SACjE;QACD,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,4EAAqB,CAAC,EAAE;YAC9D,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;SACjE;QACD,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,8EAAuB,CAAC,EAAE;YAChE,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;SACvE;QACD,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,uEAAgB,CAAC,EAAE;YACzD,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;SAC9D;IACH,CAAC;IAEQ,IAAI,CAAC,eAAgC;QACxC,IAAI,CAAC,2BAA2B,GAAG,eAAe,CAAC,kBAAkB,CAAC;QACtE,IAAI,CAAC,qBAAqB,GAAG,eAAe,CAAC,gBAAgB,CAAC;QAC9D,IAAI,CAAC,uBAAuB,GAAG,eAAe,CAAC,kBAAkB,CAAC;QAClE,IAAI,CAAC,kBAAkB,GAAG,eAAe,CAAC,WAAW,CAAC;QACxD,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;IAC3B,CAAC;IAED,aAAa;QACV,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;QACtB,IAAI,CAAC,SAAS,EAAE,CAAC;QACjB,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;IAC3B,CAAC;IACK,QAAQ;;YACV,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;YACvB,IAAI,IAAI,CAAC,uBAAuB,CAAC,OAAO,EAAE;gBACtC,OAAO;aACV;YAED,IAAI,QAAQ,GAAG,IAAI,2DAAmB,EAAE,CAAC;YACzC,QAAQ,CAAC,kBAAkB,GAAG,IAAI,CAAC,2BAA2B,CAAC;YAC/D,QAAQ,CAAC,WAAW,GAAG,IAAI,CAAC,kBAAkB,CAAC;YAC/C,QAAQ,CAAC,gBAAgB,GAAG,IAAI,CAAC,qBAAqB,CAAC;YACvD,QAAQ,CAAC,kBAAkB,GAAG,IAAI,CAAC,uBAAuB,CAAC;YAC5D,MAAM,IAAI,CAAC,mBAAmB,CAAC,kBAAkB,CAAC,QAAQ,CAAC,CAAC;YAE5D,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;YACtB,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;YACxB,IAAI,CAAC,SAAS,EAAE,CAAC;QACpB,CAAC;KAAA;IAED,QAAQ;QACN,IAAI,CAAC,uBAAuB,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC;YACpD,SAAS,EAAE,CAAC,IAAI,CAAC,kBAAkB,EAAE,yDAAU,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;YAC5D,YAAY,EAAE,CAAC,IAAI,CAAC,qBAAqB,EAAE,yDAAU,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;YAClE,cAAc,EAAE,CAAC,IAAI,CAAC,uBAAuB,EAAE,yDAAU,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;YACtE,kBAAkB,EAAE,CAAC,IAAI,CAAC,2BAA2B,EAAE,yDAAU,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;SAC/E,CAAC,CAAC;IACL,CAAC;IAEO,SAAS;QACf,IAAI,CAAC,uBAAuB,CAAC,KAAK,EAAE,CAAC;IACvC,CAAC;CACJ;;YAlE4C,iEAAuB;YACvC,0DAAW;;AApB3B,gCAAgC;IAL5C,+DAAS,CAAC;QACP,QAAQ,EAAE,0CAA0C;QACpD,sQAA2D;KAE9D,CAAC;qCAoB2C,iEAAuB;QACvC,0DAAW;GApB3B,gCAAgC,CAqF5C;AArF4C;;;;;;;;;;;;;;;;;;;;;;;ACdM;AACV;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACA2B;AAC6C;AAOxF;AAEuB;AACF;AAInB;AAC4D;AAQvF,IAAa,4BAA4B,oCAAzC,MAAa,4BAA6B,SAAQ,yDAAiB;IAiCjE,YACU,YAAyB,EACzB,GAAe,EACf,6BAA4D;QACpE,KAAK,EAAE,CAAC;QAHA,iBAAY,GAAZ,YAAY,CAAa;QACzB,QAAG,GAAH,GAAG,CAAY;QACf,kCAA6B,GAA7B,6BAA6B,CAA+B;QA9B/D,mBAAc,GAAG,EAAE,GAAG,EAAE,EAAE,OAAO,EAAE,IAAI,MAAM,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC;QAEhE,cAAS,GAAY,IAAI,CAAC;QAC1B,iBAAY,GAAG,qDAAc,CAAC;QAI9B,mBAAc,GAAmB,EAAE,CAAC;QAQpC,eAAU,GAAW,MAAM,CAAC;QAC5B,wBAAmB,GAAW,CAAC,CAAC,CAAC;QACjC,yBAAoB,GAAG,IAAI,0DAAY,EAA0B,CAAC;QAElE,iBAAY,GAAG;YACb,EAAE,MAAM,EAAE,GAAG,EAAE,UAAU,EAAE,qDAAc,CAAC,MAAM,EAAE;YAClD,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,qDAAc,CAAC,IAAI,EAAE,SAAS,EAAE,8BAA4B,CAAC,UAAU,EAAE;YACvG,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,EAAE,qDAAc,CAAC,EAAE,EAAE,SAAS,EAAE,8BAA4B,CAAC,QAAQ,EAAE;YACjG,EAAE,MAAM,EAAE,OAAO,EAAE,UAAU,EAAE,qDAAc,CAAC,KAAK,EAAE,SAAS,EAAE,8BAA4B,CAAC,eAAe,EAAE;YAC9G,EAAE,MAAM,EAAE,EAAE,EAAE,UAAU,EAAE,qDAAc,CAAC,MAAM,EAAE;SAClD,CAAC;IAOF,CAAC;IAED,QAAQ;QACN,IAAI,CAAC,WAAW,GAAG,IAAI,8DAAsB,EAAE,CAAC;QAEhD,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC;YACxC,IAAI,EAAE,CAAC,IAAI,EAAE,yDAAU,CAAC,OAAO,CAAC;oBAC9B,yDAAU,CAAC,QAAQ;oBACnB,yDAAU,CAAC,GAAG,CAAC,CAAC,CAAC;oBACjB,yDAAU,CAAC,GAAG,CAAC,GAAG,CAAC;oBACnB,uDAAe;iBAChB,CAAC,CAAC;YACH,EAAE,EAAE,CAAC,IAAI,EAAE,yDAAU,CAAC,OAAO,CAAC;oBAC5B,yDAAU,CAAC,QAAQ;oBACnB,yDAAU,CAAC,GAAG,CAAC,CAAC,CAAC;oBACjB,yDAAU,CAAC,GAAG,CAAC,GAAG,CAAC;oBACnB,uDAAe;iBAChB,CAAC,CAAC;YACH,QAAQ,EAAE,CAAC,EAAE,EAAE,yDAAU,CAAC,QAAQ,CAAC;SACpC,CAAC,CAAC;IACL,CAAC;IAED,eAAe;QACb,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;IAC1B,CAAC;IAED,OAAO;QACL,IAAI,CAAC,SAAS,GAAG,EAAE,CAAC;QACpB,IAAI,CAAC,eAAe,GAAG,KAAK,CAAC;QAC7B,IAAI,CAAC,oBAAoB,GAAG,KAAK,CAAC;QAClC,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;QACvB,IAAI,CAAC,kBAAkB,GAAG,KAAK,CAAC;QAChC,IAAI,CAAC,iBAAiB,GAAG,KAAK,CAAC;QAC/B,IAAI,CAAC,WAAW,GAAG,IAAI,8DAAsB,EAAE,CAAC;IAClD,CAAC;IAED,IAAI,CAAC,QAA8B;QACjC,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;QACvB,IAAI,CAAC,WAAW,GAAG,QAAQ,CAAC,EAAE,CAAC;QAC/B,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;QACvB,IAAI,CAAC,WAAW,CAAC,QAAQ,GAAG,8BAA4B,CAAC,aAAa,CAAC;QACvE,IAAI,CAAC,6BAA6B,CAAC,iBAAiB,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE;YAC1E,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;YAExB,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC,cAAc,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QACtG,CAAC,CAAC,CAAC;IACL,CAAC;IAED,YAAY;QACV,IAAI,IAAI,CAAC,iBAAiB,EAAE;YAC1B,IAAI,CAAC,iBAAiB,GAAG,KAAK,CAAC;SAChC;QACD,IAAI,IAAI,CAAC,kBAAkB,EAAE;YAC3B,IAAI,CAAC,kBAAkB,GAAG,KAAK,CAAC;SACjC;IACH,CAAC;IAED,WAAW;QACT,IAAI,CAAC,oBAAoB,EAAE,CAAC;QAC5B,IAAI,CAAC,cAAc,IAAI,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC;QACzE,KAAK,CAAC,WAAW,EAAE,CAAC;IACtB,CAAC;IAED,aAAa,CAAC,KAA6B;QACzC,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACxC,CAAC;IAED,WAAW,CAAC,KAA6B;QACvC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC;IAC1D,CAAC;IAED,eAAe,CAAC,OAAe;QAC7B,MAAM,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,aAAa,CAAC,aAAa,CAAC,qDAAqD,CAAC,CAAC;QACvG,IAAI,CAAC,mBAAmB,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC;IACxC,CAAC;IAED,aAAa;QACX,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC;QAC5B,IAAI,CAAC,oBAAoB,GAAG,KAAK,CAAC;QAClC,IAAI,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE;YAC3B,OAAO;SACR;QAED,IAAI,CAAC,WAAW,CAAC,IAAI,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC;QAC/C,IAAI,CAAC,WAAW,CAAC,EAAE,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC;QAE3C,IAAI,IAAI,CAAC,WAAW,CAAC,IAAI,IAAI,IAAI,CAAC,WAAW,CAAC,EAAE,EAAE;YAChD,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC;YAC/B,OAAO;SACR;QAED,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,WAAW,CAAC,IAAI,IAAI,CAAC,CAAC,EAAE,KAAK,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC,EAAE;YAC9F,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC;YAC9B,OAAO;SACR;QAED,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAC3B,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,IAAI,CAAC,CAAC,IAAI,IAAI,IAAI,CAAC,WAAW,CAAC,IAAI,IAAI,CAAC,CAAC,EAAE,CAAC;eAC/D,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,IAAI,CAAC,CAAC,IAAI,IAAI,IAAI,CAAC,WAAW,CAAC,EAAE,IAAI,CAAC,CAAC,EAAE,CAAC;eAC9D,CAAC,CAAC,CAAC,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,IAAI,CAAC,CAAC,EAAE,GAAG,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE;YAErE,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC;YAC/B,OAAO;SACR;QAED,IAAI,CAAC,eAAe,GAAG,KAAK,CAAC;QAC7B,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QACtC,IAAI,SAAS,GAAG,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC;QAC1C,IAAI,CAAC,WAAW,GAAG,IAAI,8DAAsB,EAAE,CAAC;QAChD,IAAI,CAAC,WAAW,CAAC,QAAQ,GAAG,SAAS,CAAC;QACtC,SAAS,GAAG,IAAI,CAAC;IACnB,CAAC;IAED,QAAQ;QACN,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;QACtB,MAAM,SAAS,GAAG;YAChB,UAAU,EAAE,IAAI,CAAC,WAAW;YAC5B,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;SACzB,CAAC;QAC5B,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,EAAE;YACjC,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC;YACjC,OAAO;SACR;QAED,IAAI,CAAC,6BAA6B,CAAC,iBAAiB,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE;YAC9E,IAAI,MAAM,YAAY,kDAAU,EAAE;gBAChC,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;aACvB;iBAAM;gBACL,IAAI,CAAC,OAAO,EAAE,CAAC;gBACf,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;aACvB;QACH,CAAC,CAAC;IACJ,CAAC;IAEO,YAAY,CAAC,KAA6B;QAChD,IAAI,CAAC,mBAAmB,GAAG,CAAC,CAAC;QAC7B,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;YACvB,IAAI,CAAC,mBAAmB,IAAI,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;YACrC,IAAI,CAAC,mBAAmB,IAAI,CAAC,CAAC,IAAI,CAAC;QACrC,CAAC,CAAC;QACF,IAAI,IAAI,CAAC,mBAAmB,IAAI,8BAA4B,CAAC,WAAW;YACtE,OAAO,KAAK,CAAC;QACf,OAAO,IAAI,CAAC;IACd,CAAC;IAID,OAAO;QACL,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;IACzB,CAAC;IAED,QAAQ;QACN,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;IACxB,CAAC;CAEF;AAhMQ,uCAAU,GAAG,MAAM,CAAC;AACpB,0CAAa,GAAG,SAAS,CAAC;AAC1B,qCAAQ,GAAG,IAAI,CAAC;AAChB,4CAAe,GAAG,UAAU,CAAC;AAC7B,wCAAW,GAAG,GAAG,CAAC;;YA6BD,0DAAW;YACpB,wDAAU;YACgB,uEAA6B;;AApC3D,4BAA4B;IAJxC,+DAAS,CAAC;QACT,QAAQ,EAAE,qCAAqC;QAC/C,uPAAsD;KACvD,CAAC;qCAmCwB,0DAAW;QACpB,wDAAU;QACgB,uEAA6B;GApC3D,4BAA4B,CAiMxC;AAjMwC;;;;;;;;;;;;;;;;;;;;ACzBU;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACCa;AAGf;AAMjD,IAAa,4BAA4B,GAAzC,MAAa,4BAA6B,SAAQ,yDAAiB;IAKjE;QACE,KAAK,EAAE,CAAC;QALV,cAAS,GAAG,IAAI,CAAC;QAEjB,cAAS,GAAG,IAAI,0DAAY,EAA6B,CAAC;IAI1D,CAAC;IACD,QAAQ;IACR,CAAC;IAED,QAAQ;QACN,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;QACtB,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;IACpB,CAAC;IAED,QAAQ;QACN,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAChC,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;IACxB,CAAC;IAED,IAAI,CAAC,KAA6B;QAChC,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;QACvB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;IACrB,CAAC;CACF;AAzBY,4BAA4B;IAJxC,+DAAS,CAAC;QACT,QAAQ,EAAE,qCAAqC;QAC/C,8QAAsD;KACvD,CAAC;;GACW,4BAA4B,CAyBxC;AAzBwC;;;;;;;;;;;;;;;;;;;;ACVQ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACAe;AACI;AAGN;AAO9D,IAAa,0BAA0B,GAAvC,MAAa,0BAA0B;IAUrC,YAAoB,YAAyB,EACnC,gBAAyC;QAD/B,iBAAY,GAAZ,YAAY,CAAa;QACnC,qBAAgB,GAAhB,gBAAgB,CAAyB;QATnD,cAAS,GAAY,IAAI,CAAC;QAG1B,eAAU,GAAG,KAAK,CAAC;QAGnB,WAAM,GAAC,KAAK,CAAC;QACb,yBAAoB,GAAG,IAAI,0DAAY,EAA4B,CAAC;IAEb,CAAC;IAExD,QAAQ;IACR,CAAC;IAEY,IAAI,CAAC,OAAiC;;YACjD,IAAI,CAAC,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC;YAChC,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC;YACxB,IAAI,CAAC,QAAQ,EAAE,CAAC;YAChB,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;YACvB,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;QAC1B,CAAC;KAAA;IAEY,QAAQ;;YACnB,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;YACtB,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;YACrB,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;YACxB,IAAI,CAAC,gBAAgB,CAAC,KAAK,EAAE,CAAC;YAC9B,IAAI,CAAC,MAAM,GAAC,KAAK,CAAC;QACpB,CAAC;KAAA;IAEY,QAAQ;;YACnB,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;YACvB,IAAI,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE;gBACjC,OAAO;aACR;YACD,IAAI,MAAM,GAAG,IAAI,CAAC,gBAAgB,CAAC,KAAiC,CAAC;YACrE,IAAI,CAAC,MAAM,GAAC,IAAI,CAAC;YACjB,IAAI,MAAM,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;YAC3D,IAAI,MAAM,EAAE;gBACV,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;aACxC;YACD,IAAI,CAAC,QAAQ,EAAE,CAAC;QAClB,CAAC;KAAA;IAEO,QAAQ;QACd,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC;YAC9C,QAAQ,EAAE;gBACR,IAAI,CAAC,QAAQ,CAAC,QAAQ;gBACtB,yDAAU,CAAC,OAAO,CAAC;oBACjB,yDAAU,CAAC,QAAQ;oBACnB,yDAAU,CAAC,SAAS,CAAC,CAAC,CAAC;oBACvB,yDAAU,CAAC,SAAS,CAAC,EAAE,CAAC;iBACzB,CAAC;aACH;YACD,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;YACtB,IAAI,EAAE;gBACJ,IAAI,CAAC,QAAQ,CAAC,IAAI;gBAClB,yDAAU,CAAC,OAAO,CAAC;oBACjB,yDAAU,CAAC,QAAQ;oBACnB,yDAAU,CAAC,SAAS,CAAC,CAAC,CAAC;oBACvB,yDAAU,CAAC,SAAS,CAAC,EAAE,CAAC;iBACzB,CAAC;aACH;SACF,CAAC,CAAC;IACL,CAAC;CACF;;YAzDmC,0DAAW;YACjB,iEAAuB;;AAXxC,0BAA0B;IALtC,+DAAS,CAAC;QACT,QAAQ,EAAE,mCAAmC;QAC7C,iPAAoD;KAErD,CAAC;qCAWkC,0DAAW;QACjB,iEAAuB;GAXxC,0BAA0B,CAmEtC;AAnEsC;;;;;;;;;;;;;;;;;;;;ACXa;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACA6B;AAGX;AACmD;AAC7D;AACN;AAC4C;AAEG;AACpD;AAOjD,IAAa,8BAA8B,GAA3C,MAAa,8BAA8B;IA0BzC,YACU,uBAAgD,EAChD,GAAe,EACf,KAAa;QAFb,4BAAuB,GAAvB,uBAAuB,CAAyB;QAChD,QAAG,GAAH,GAAG,CAAY;QACf,UAAK,GAAL,KAAK,CAAQ;QA5BvB,cAAS,GAAG,IAAI,CAAC;QAEjB,WAAM,GAAW,CAAC,CAAC;QACnB,mBAAc,GAAY,KAAK,CAAC;QAGhC,oBAAe,GAAG,qDAAc,CAAC;QACjC,iBAAY,GAAG,EAAE,CAAC;QAQV,uBAAkB,GAAG,gEAAqB,CAAC;QAC3C,sBAAiB,GAAG,4DAAiB,CAAC;QACtC,kBAAa,GAAmB,EAAE,CAAC;QACnC,qBAAgB,GAAG,2DAAgB,CAAC;QACpC,mBAAc,GAAG,yDAAc,CAAC;QAExC,eAAU,GAAW,IAAI,CAAC;QAC1B,aAAQ,GAAY,KAAK,CAAC;QAC1B,kBAAa,GAAY,KAAK,CAAC;IAM3B,CAAC;IAEL,2BAA2B,CAAC,KAAa,EAAE,YAA8B,EAAE,OAAuB;QAChG,IAAI,MAAc,CAAC;QACnB,QAAQ,OAAO,EAAE;YACf,KAAK,qDAAc,CAAC,oBAAoB,CAAC;YACzC,KAAK,qDAAc,CAAC,iBAAiB,CAAC;YACtC,KAAK,qDAAc,CAAC,mBAAmB;gBACrC,MAAM,GAAG,4DAAoB,CAAC,cAAc,CAAC,KAAK,EAAE,YAAY,CAAC,CAAC;gBAClE,MAAM;YACR;gBACE,MAAM,GAAG,4DAAoB,CAAC,cAAc,CAAC,KAAK,EAAE,YAAY,CAAC,CAAC;SACrE;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,QAAQ;QACN,IAAI,MAAM,GAAG,IAAI,CAAC,uBAAuB,CAAC,eAAe,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE;YAC1E,IAAI,cAAc,GAAG,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,IAAI,IAAI,CAAC,MAAM,CAAC,CAAC;YAC9D,IAAI,cAAc,EAAE;gBAClB,IAAI,MAAM,GAAG,cAAc,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE;oBACzC,OAAO,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;gBACjC,CAAC,CAAC,CAAC;gBAEH,IAAI,CAAC,SAAS,GAAG,MAA8B,CAAC;gBAChD,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,qBAAqB,CAAC,CAAC;gBACxE,IAAI,CAAC,WAAW,GAAG,cAAc,CAAC,SAAS,CAAC;gBAC5C,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE;oBACrD,IAAI,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,qBAAqB,CAAC,CAAC;oBAC/D,IAAI,KAAK,CAAC,SAAS,IAAI,IAAI,EAAE;wBAC3B,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;wBAC1D,IAAI,CAAC,UAAU,IAAI,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;qBACtD;iBACF;gBAED,IAAI,CAAC,4BAA4B,GAAG,cAAc,CAAC,2BAA2B,CAAC;gBAC/E,IAAI,CAAC,oBAAoB,GAAG,cAAc,CAAC,oBAAoB,CAAC;gBAChE,IAAI,CAAC,uBAAuB,GAAG,cAAc,CAAC,sBAAsB,CAAC;aACtE;QACH,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAClC,CAAC;IAED,WAAW;QACT,IAAI,CAAC,aAAa;YAChB,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC,CAAC;IAC3D,CAAC;IAEM,IAAI,CAAC,OAAgC;QAC1C,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC;QACjC,IAAI,CAAC,YAAY,GAAG,OAAO,CAAC,YAAY,CAAC;QACzC,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;QAC/B,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;QAC7B,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,EAAE,CAAC;QACzB,IAAI,CAAC,4BAA4B,GAAG,OAAO,CAAC,2BAA2B,CAAC;QACxE,IAAI,CAAC,oBAAoB,GAAG,OAAO,CAAC,oBAAoB,CAAC;QACzD,IAAI,CAAC,uBAAuB,GAAG,OAAO,CAAC,sBAAsB,CAAC;QAC9D,IAAI,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE;YAClC,OAAO,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;QACjC,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,WAAW,GAAG,OAAO,CAAC,SAAS,CAAC;QACrC,IAAI,CAAC,SAAS,GAAG,MAA8B,CAAC;QAChD,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;QACvB,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,qBAAqB,CAAC,CAAC;QACxE,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE;YACrD,IAAI,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,qBAAqB,CAAC,CAAC;YAC/D,IAAI,KAAK,CAAC,SAAS,IAAI,IAAI,EAAE;gBAC3B,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;gBAC1D,IAAI,CAAC,UAAU,IAAI,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;aACtD;SACF;QAED,IAAI,CAAC,aAAa,EAAE,CAAC;QACrB,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;IACxB,CAAC;IAEY,qBAAqB,CAAC,KAAa;;YAC9C,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;YACrB,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;YACvB,IAAI,CAAC,QAAQ,GAAG,YAAY,CAAC;YAC7B,IAAI,CAAC,uBAAuB,CAAC,+BAA+B,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;gBAC/E,IAAI,KAAK,YAAY,+DAAuB,EAAE;oBAC5C,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;iBAClB;qBACI,IAAI,KAAK,YAAY,kDAAU,EAAE;oBACpC,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;iBAC3B;gBACD,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;YACxB,CAAC,CAAC,CAAC;QACL,CAAC;KAAA;IAED,QAAQ;QACN,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;QACvB,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;QACtB,IAAI,CAAC,YAAY,GAAG,EAAE,CAAC;QACvB,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;QACxB,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC;IAC7B,CAAC;IAED,yBAAyB,CAAC,QAAgB;QACxC,IAAI,QAAQ,IAAI,IAAI,EAAE;YACpB,OAAO,GAAG,4DAAoB,CAAC,gBAAgB,CAAC,QAAQ,EAAE,CAAC,CAAC,IAAI,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;SACxG;QACD,OAAO,GAAG,CAAC;IACb,CAAC;IAED,qBAAqB,CAAC,aAAmC;QACvD,IAAI,aAAa,IAAI,IAAI,EAAE;YACzB,OAAO,IAAI,CAAC,kBAAkB,CAAC,aAAa,CAAC,CAAC;SAC/C;QACD,OAAO,GAAG,CAAC;IACb,CAAC;IAED,uBAAuB;QACrB,IAAI,IAAI,CAAC,OAAO,IAAI,IAAI,IAAI,IAAI,CAAC,OAAO,IAAI,SAAS,EAAE;YACrD,OAAO,IAAI,CAAC,OAAO,IAAI,qDAAc,CAAC,UAAU,IAAI,IAAI,CAAC,OAAO,IAAI,qDAAc,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO,IAAI,qDAAc,CAAC,SAAS;gBACpI,IAAI,CAAC,OAAO,IAAI,qDAAc,CAAC,WAAW,IAAI,IAAI,CAAC,OAAO,IAAI,qDAAc,CAAC,QAAQ,IAAI,IAAI,CAAC,OAAO,IAAI,qDAAc,CAAC,UAAU,CAAC;SACtI;QACD,OAAO,KAAK;IACd,CAAC;IAED,oBAAoB,CAAC,QAAgB;QACnC,IAAI,cAAc,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;QAChF,OAAO,GAAG,cAAc,IAAI,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC;IAC1E,CAAC;IAED,iBAAiB,CAAC,SAAoB;QACpC,IAAI,SAAS,IAAI,IAAI,EAAE;YACrB,OAAO,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC;SACvC;QACD,OAAO,GAAG,CAAC;IACb,CAAC;IAED,2BAA2B,CAAC,2BAAmC,EAAE,sBAA8B,EAAE,cAAuB;QACtH,IAAI,IAAI,CAAC,0BAA0B,EAAE,IAAI,2BAA2B,IAAI,CAAC,IAAI,sBAAsB,IAAI,CAAC,EAAE;YACxG,IAAI,GAAG,GAAG,IAAI,CAAC,2BAA2B,CAAC,cAAc,CAAC,CAAC,CAAC,sBAAsB,CAAC,CAAC,CAAC,2BAA2B,EAAE,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;YACnJ,IAAI,MAAM,GAAG,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,CAAC,cAAc,CAAC,OAAO,CAAC,IAAI,4DAAiB,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC;YAChH,IAAI,cAAc,EAAE;gBAClB,MAAM,IAAI,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;aAC/D;YACD,OAAO,MAAM,CAAC;SACf;QACD,OAAO,GAAG,CAAC;IACb,CAAC;IAED,eAAe,CAAC,OAAgB,EAAE,SAAS,GAAG,KAAK;QACjD,IAAI,SAAS,EAAE;YACb,OAAO;SACR;QAED,IAAI,IAAI,CAAC,GAAG,EAAE;YACZ,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;SACpB;QAED,MAAM,mBAAmB,GAAG,GAAG,EAAE;YAC/B,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC,GAAG,EAAE;gBAChC,IAAI;oBACF,MAAM,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,aAAa,CAAC,aAAa,CAC7C,4EAA4E,CAC7E,CAAC;oBACF,IAAI,CAAC,EAAE,EAAE;wBACP,OAAO;qBACR;oBAED,IAAI,CAAC,GAAG,GAAG,IAAI,yDAAgB,CAAC,EAAE,EAAE;wBAClC,UAAU,EAAE,CAAC;wBACb,gBAAgB,EAAE,IAAI;wBACtB,kBAAkB,EAAE,EAAE;qBACvB,CAAC,CAAC;iBACJ;gBAAC,OAAO,KAAK,EAAE,GAAG;YACrB,CAAC,CAAC,CAAC;QACL,CAAC,CAAC;QAEF,IAAI,OAAO,EAAE;YACX,UAAU,CAAC,GAAG,EAAE;gBACd,mBAAmB,EAAE,CAAC;YACxB,CAAC,EAAE,OAAO,CAAC,CAAC;SACb;aAAM;YACL,mBAAmB,EAAE,CAAC;SACvB;IACH,CAAC;IAEO,0BAA0B;QAChC,OAAO,IAAI,CAAC,uBAAuB,EAAE,IAAI,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,IAAI,CAAC,CAAC;IACxF,CAAC;IAEO,mBAAmB,CAAC,UAAkB;QAC5C,IAAI,UAAU,IAAI,IAAI,EAAE;YACtB,IAAI,WAAW,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,GAAG,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC;YAChE,OAAO,KAAK,WAAW,GAAG,CAAC;SAC5B;QACD,OAAO,EAAE,CAAC;IACZ,CAAC;IAEO,eAAe,CAAC,KAAyB;QAC/C,IAAI,CAAC,GAAG,IAAI,0DAAkB,EAAE,CAAC;QACjC,CAAC,CAAC,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC;QAC1B,CAAC,CAAC,SAAS,GAAG,IAAI,CAAC,uBAAuB,CAAC,KAAK,CAAC,SAAS,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC3E,CAAC,CAAC,WAAW,GAAG,KAAK,CAAC,WAAW,CAAC;QAClC,CAAC,CAAC,qBAAqB,GAAG,KAAK,CAAC,qBAAqB,CAAC;QACtD,CAAC,CAAC,QAAQ,GAAG,IAAI,CAAC,2BAA2B,CAAC,KAAK,CAAC,QAAQ,EAAE,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;QAC/F,KAAK,CAAC,qBAAqB,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,qBAAqB,GAAG,IAAI,CAAC,uBAAuB,CAAC,KAAK,CAAC,qBAAqB,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,qBAAqB,GAAG,KAAK,CAAC,qBAAqB,CAAC;QACjM,CAAC,CAAC,aAAa,GAAG,KAAK,CAAC,aAAa,CAAC;QACtC,CAAC,CAAC,SAAS,GAAG,KAAK,CAAC,SAAS,CAAC;QAC9B,CAAC,CAAC,aAAa,GAAG,KAAK,CAAC,aAAa,CAAC;QACtC,OAAO,CAAC,CAAC;IACX,CAAC;IAEO,uBAAuB,CAAC,KAAa,EAAE,QAAyB;QACtE,IAAI,MAAM,GAAG,4DAAoB,CAAC,iBAAiB,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;QACrE,OAAO,MAAM,CAAC;IAChB,CAAC;IAEO,aAAa;QACnB,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,WAAW,EAAE,SAAS,EAAE,SAAS,EAAE,UAAU,EAAE,qDAAc,CAAC,MAAM,EAAE,CAAC,CAAC;QACzG,IAAI,IAAI,CAAC,uBAAuB,EAAE,EAAE;YAClC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,iBAAiB,EAAE,SAAS,EAAE,eAAe,EAAE,UAAU,EAAE,qDAAc,CAAC,aAAa,EAAE,CAAC,CAAC;YAC5H,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,WAAW,EAAE,SAAS,EAAE,uBAAuB,EAAE,UAAU,EAAE,qDAAc,CAAC,aAAa,EAAE,CAAC,CAAC;SAC/H;QAED,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,eAAe,EAAE,SAAS,EAAE,aAAa,EAAE,UAAU,EAAE,qDAAc,CAAC,MAAM,EAAE,CAAC,CAAC;QACjH,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,aAAa,EAAE,SAAS,EAAE,WAAW,EAAE,UAAU,EAAE,qDAAc,CAAC,SAAS,EAAE,CAAC,CAAC;QAChH,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,gBAAgB,EAAE,SAAS,EAAE,UAAU,EAAE,UAAU,EAAE,qDAAc,CAAC,YAAY,EAAE,CAAC,CAAC;IACvH,CAAC;CACF;;YApOoC,iEAAuB;YAC3C,wDAAU;YACR,oDAAM;;AA7BZ,8BAA8B;IAL1C,+DAAS,CAAC;QACT,QAAQ,EAAE,uCAAuC;QACjD,6PAAwD;KAEzD,CAAC;qCA4BmC,iEAAuB;QAC3C,wDAAU;QACR,oDAAM;GA7BZ,8BAA8B,CA+P1C;AA/P0C;;;;;;;;;;;;;;;;;;;;ACjBI;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACAiC;AACC;AAGzB;AACE;AACwB;AACnB;AACwD;AACzE;AAO9C,IAAa,gCAAgC,wCAA7C,MAAa,gCAAiC,SAAQ,yDAAiB;IAqCrE,YACU,YAAyB,EACzB,iBAA6C,EAC7C,mBAAkD,EAClD,IAAuB,EACvB,YAAyB;QAEjC,KAAK,EAAE,CAAC;QANA,iBAAY,GAAZ,YAAY,CAAa;QACzB,sBAAiB,GAAjB,iBAAiB,CAA4B;QAC7C,wBAAmB,GAAnB,mBAAmB,CAA+B;QAClD,SAAI,GAAJ,IAAI,CAAmB;QACvB,iBAAY,GAAZ,YAAY,CAAa;QAxCnC,gBAAW,GAAG,IAAI,CAAC;QACnB,cAAS,GAAG,IAAI,CAAC;QACjB,eAAU,GAAG,KAAK,CAAC;QACnB,qBAAgB,GAAG,IAAI,CAAC;QACxB,yBAAoB,GAAG,KAAK,CAAC;QAG7B,eAAU,GAAW,EAAE,CAAC;QACxB,kBAAa,GAAW,EAAE,CAAC;QAC3B,kBAAa,GAA0B,EAAE,CAAC;QAE1C,qBAAgB,GAAG,MAAM,CAAC;QAC1B,sBAAiB,GAAG,WAAW,CAAC;QAChC,yBAAoB,GAAG,cAAc,CAAC;QACtC,eAAU,GAAG,KAAK,CAAC;QAEX,mBAAc,GAAmB,EAAE,CAAC;IA2B5C,CAAC;IAzBD,IAAI,YAAY;QACd,IAAI,IAAI,CAAC,gBAAgB,EAAE;YACzB,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,OAAO,EAAE,CAAC;YAC7D,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC,OAAO,EAAE,CAAC;YACjE,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC,MAAM,EAAE,CAAC;SAC9D;aAAM;YACL,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC,OAAO,EAAE,CAAC;YAC9D,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC,MAAM,EAAE,CAAC;YAChE,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,MAAM,EAAE,CAAC;SAC7D;QACD,OAAO,IAAI,CAAC,aAAa,CAAC;IAC5B,CAAC;IAED,IAAI,aAAa;QACf,OAAO,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,oDAAY,CAAC,WAAW,CAAC,CAAC;IACjE,CAAC;IAYD,QAAQ;QACN,IAAI,CAAC,SAAS,GAAG,IAAI,6DAAoB,EAAE,CAAC;QAE5C,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC;YAC3C,OAAO,EAAE,CAAC,IAAI,CAAC,gBAAgB,EAAE,yDAAU,CAAC,QAAQ,CAAC;YACrD,UAAU,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,EAAE,yDAAU,CAAC,QAAQ,CAAC;YACpD,IAAI,EAAE,CAAC,IAAI,CAAC,aAAa,EAAE,yDAAiB,CAAC;YAC7C,SAAS,EAAE,CAAC,IAAI,CAAC,UAAU,EAAE,yDAAU,CAAC,QAAQ,CAAC;YACjD,YAAY,EAAE,CAAC,IAAI,CAAC,aAAa,EAAE,yDAAU,CAAC,QAAQ,CAAC;SACxD,CAAC,CAAC;QAEH,IAAI,YAAY,GAAG,IAAI,CAAC,iBAAiB,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,IAAI,EAAE,EAAE;YACtE,IAAI,IAAI,EAAE;gBACR,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;aACrE;QACH,CAAC,CAAC,CAAC;QAEH,IAAI,YAAY,GAAG,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,QAAgB,EAAE,EAAE;YACtG,IAAG,QAAQ,EAAE;gBACX,MAAM,MAAM,GAAG,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;gBACnC,IAAG,MAAM,CAAC,CAAC,CAAC,KAAK,MAAM,EAAE;oBACvB,MAAM,cAAc,GAAG,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;oBAClD,cAAc,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC;oBAC3B,IAAI,CAAC,UAAU,GAAG,cAAc,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;iBAC5C;qBAAM,IAAG,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,IAAI,EAAE;oBAC3B,MAAM,cAAc,GAAG,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;oBAClD,cAAc,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC;oBAC3B,IAAI,CAAC,UAAU,GAAG,cAAc,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;iBAC5C;aACF;QACH,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,YAAY,EAAE,YAAY,CAAC,CAAC;IACvD,CAAC;IAED,WAAW;QACT,IAAI,CAAC,cAAc;YACjB,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC,CAAC;IAC5D,CAAC;IAEK,QAAQ;;YACZ,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;YAEvB,IAAI,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE;gBAC9B,OAAO;aACR;YAED,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;YAEvB,MAAM,KAAK,GAAG,kBACT,IAAI,CAAC,SAAS,EACd,IAAI,CAAC,aAAa,CAAC,KAAK,CACJ,CAAC;YAE1B,IAAI,eAAe,CAAC;YACpB,IAAI,iBAAwC,CAAC;YAC7C,IAAG,CAAC,IAAI,CAAC,gBAAgB,EAAE;gBACzB,eAAe,GAAG,IAAI,CAAC,2BAA2B,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;gBACvE,iBAAiB,GAAG,IAAI,CAAC,wBAAwB,CAAC,eAAe,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC;gBACvF,eAAe,GAAG,IAAI,CAAC,mBAAmB,CAAC,eAAe,CAAC,CAAC;aAC7D;YAED,KAAK,CAAC,mBAAmB,GAAG,IAAI,CAAC,gBAAgB;gBAC/C,CAAC,CAAC,CAAC;gBACH,CAAC,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;YAEjD,KAAK,CAAC,YAAY,GAAG,IAAI,CAAC,gBAAgB;gBACtC,CAAC,CAAC,IAAI,CAAC,UAAU;gBACjB,CAAC,CAAC,4DAAoB,CAAC,eAAe,CAAC,eAAe,CAAC,CAAC;YAE5D,MAAM,MAAM,GAAG,CAAC,CAAC,IAAI,CAAC,WAAW;gBAC/B,CAAC,CAAC,MAAM,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,KAAK,CAAC;gBAC3C,CAAC,CAAC,MAAM,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAE/C,IAAI,MAAM,YAAY,kDAAU,EAAE;gBAChC,IAAI,MAAM,CAAC,IAAI,KAAK,qDAAa,CAAC,8BAA8B,EAAE;oBAChE,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC;iBAClC;aACF;iBAAM,IAAI,MAAM,EAAE;gBACjB,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;oBACrB,MAAM,IAAI,CAAC,mBAAmB,CAAC,iCAAiC,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;iBACxF;gBACD,IAAI,CAAC,SAAS,GAAG,IAAI,6DAAoB,EAAE,CAAC;gBAC5C,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;gBACtB,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;gBACxB,IAAI,CAAC,oBAAoB,GAAG,KAAK,CAAC;gBAClC,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,CAAC;gBAC3B,IAAI,CAAC,aAAa,GAAG,EAAE,CAAC;gBACxB,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;aACzB;QACH,CAAC;KAAA;IAEK,cAAc,CAAC,OAAoB;;YACvC,OAAO,CAAC,aAAa,EAAE,CAAC;QAC1B,CAAC;KAAA;IAEK,aAAa,CAAC,OAAoB;;YACtC,OAAO,CAAC,eAAe,EAAE,CAAC;QAC5B,CAAC;KAAA;IAED,eAAe;QACb,IAAG,IAAI,CAAC,oBAAoB,EAAE;YAC5B,IAAI,CAAC,oBAAoB,GAAG,KAAK,CAAC;SACnC;IACH,CAAC;IAEK,OAAO;;YACX,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;YACtB,IAAI,CAAC,aAAa,GAAG,EAAE,CAAC;YACxB,IAAI,CAAC,UAAU,GAAG,EAAE,CAAC;YACrB,IAAI,CAAC,aAAa,GAAG,EAAE,CAAC;YACxB,IAAG,CAAC,IAAI,CAAC,WAAW,EAAE;gBACpB,MAAM,IAAI,CAAC,mBAAmB,CAAC,iCAAiC,CAAC,IAAI,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;aACzF;YACD,IAAI,CAAC,SAAS,GAAG,IAAI,6DAAoB,EAAE,CAAC;QAC9C,CAAC;KAAA;IAEM,OAAO;QACZ,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;QACxB,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;IACzB,CAAC;IAEM,QAAQ,CAAC,QAA8B;QAC5C,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;QACvB,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;QAEzB,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QACzC,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,mBAAmB,CAAC,CAAC;QACxE,IAAI,CAAC,gBAAgB,GAAG,QAAQ,CAAC,mBAAmB,KAAK,CAAC,CAAC;QAE3D,IAAI,IAAI,CAAC,gBAAgB,EAAE;YACzB,IAAI,CAAC,UAAU,GAAG,QAAQ,CAAC,YAAY,CAAC;SACzC;aAAM;YACL,IAAI,gBAAgB,GAAG,IAAI,CAAC,6BAA6B,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC;YACjF,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,wBAAwB,CAAC,gBAAgB,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC;YAEzF,gBAAgB,GAAG,IAAI,CAAC,mBAAmB,CAAC,gBAAgB,CAAC,CAAC;YAC9D,IAAI,CAAC,aAAa,GAAG,4DAAoB,CAAC,eAAe,CAAC,gBAAgB,CAAC,CAAC;SAC7E;QACD,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC;IAC5B,CAAC;IAED,YAAY,CAAC,KAAa;QACxB,OAAO,2DAAmB,CAAC,KAAK,CAAC,CAAC;IACpC,CAAC;IAED,mCAAmC;IAC3B,eAAe,CAAC,IAAY;QAClC,MAAM,MAAM,GAAG,EAAE,CAAC;QAElB,IAAI,CAAC,IAAI,GAAG,2DAAmB,CAAC,GAAG,CAAC,KAAK,2DAAmB,CAAC,GAAG,EAAE;YAChE,MAAM,CAAC,IAAI,CAAC,2DAAmB,CAAC,GAAG,CAAC,CAAC;SACtC;QACD,IAAI,CAAC,IAAI,GAAG,2DAAmB,CAAC,GAAG,CAAC,KAAK,2DAAmB,CAAC,GAAG,EAAE;YAChE,MAAM,CAAC,IAAI,CAAC,2DAAmB,CAAC,GAAG,CAAC,CAAC;SACtC;QACD,IAAI,CAAC,IAAI,GAAG,2DAAmB,CAAC,GAAG,CAAC,KAAK,2DAAmB,CAAC,GAAG,EAAE;YAChE,MAAM,CAAC,IAAI,CAAC,2DAAmB,CAAC,GAAG,CAAC,CAAC;SACtC;QACD,IAAI,CAAC,IAAI,GAAG,2DAAmB,CAAC,GAAG,CAAC,KAAK,2DAAmB,CAAC,GAAG,EAAE;YAChE,MAAM,CAAC,IAAI,CAAC,2DAAmB,CAAC,GAAG,CAAC,CAAC;SACtC;QACD,IAAI,CAAC,IAAI,GAAG,2DAAmB,CAAC,GAAG,CAAC,KAAK,2DAAmB,CAAC,GAAG,EAAE;YAChE,MAAM,CAAC,IAAI,CAAC,2DAAmB,CAAC,GAAG,CAAC,CAAC;SACtC;QACD,IAAI,CAAC,IAAI,GAAG,2DAAmB,CAAC,GAAG,CAAC,KAAK,2DAAmB,CAAC,GAAG,EAAE;YAChE,MAAM,CAAC,IAAI,CAAC,2DAAmB,CAAC,GAAG,CAAC,CAAC;SACtC;QACD,IAAI,CAAC,IAAI,GAAG,2DAAmB,CAAC,GAAG,CAAC,KAAK,2DAAmB,CAAC,GAAG,EAAE;YAChE,MAAM,CAAC,IAAI,CAAC,2DAAmB,CAAC,GAAG,CAAC,CAAC;SACtC;QAED,OAAO,MAAM,CAAC;IAChB,CAAC;IAEO,2BAA2B,CAAC,SAAiB;QACnD,MAAM,IAAI,GAAG,IAAI,IAAI,EAAE,CAAC;QACxB,MAAM,kBAAkB,GAAG,IAAI,CAAC,iBAAiB,EAAE,GAAG,EAAE,CAAC;QACzD,MAAM,OAAO,GAAG,4DAAoB,CAAC,eAAe,CAAC,SAAS,CAAC,GAAG,kBAAkB,CAAC;QAErF,OAAO,OAAO,CAAC;IACjB,CAAC;IAEO,6BAA6B,CAAC,OAAe;QACnD,MAAM,IAAI,GAAG,IAAI,IAAI,EAAE,CAAC;QACxB,MAAM,kBAAkB,GAAG,IAAI,CAAC,iBAAiB,EAAE,GAAG,EAAE,CAAC;QACzD,MAAM,SAAS,GAAG,4DAAoB,CAAC,eAAe,CAAC,OAAO,CAAC,GAAG,kBAAkB,CAAC;QAErF,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,wEAAwE;IAChE,mBAAmB,CAAC,OAAe;QACzC,MAAM,YAAY,GAAG,kCAAgC,CAAC,cAAc,CAAC;QACrE,MAAM,oBAAoB,GAAG,CAAC,OAAO,GAAG,CAAC,IAAI,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,OAAO,GAAG,YAAY,IAAI,OAAO,GAAG,YAAY,CAAC,IAAI,OAAO,CAAC;QAEtI,OAAO,oBAAoB,CAAC;IAC9B,CAAC;IAEO,wBAAwB,CAAC,OAAe,EAAE,YAAmC;QACnF,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;QAE3C,IAAG,OAAO,GAAG,CAAC,EAAE;YACd,KAAI,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;gBAErC,IAAG,MAAM,CAAC,CAAC,CAAC,KAAK,2DAAmB,CAAC,GAAG,EAAE;oBACxC,MAAM,CAAC,CAAC,CAAC,GAAG,2DAAmB,CAAC,GAAG,CAAC;oBACpC,SAAS;iBACV;gBAED,MAAM,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;aAC3B;SACF;aAAM,IAAI,OAAO,GAAG,kCAAgC,CAAC,cAAc,EAAE;YACpE,KAAI,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;gBAErC,IAAG,MAAM,CAAC,CAAC,CAAC,KAAK,2DAAmB,CAAC,GAAG,EAAE;oBACxC,MAAM,CAAC,CAAC,CAAC,GAAG,2DAAmB,CAAC,GAAG,CAAC;oBACpC,SAAS;iBACV;gBAED,MAAM,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;aAC3B;SACF;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;CACF;AA9QgB,+CAAc,GAAG,KAAK,CAAC;;YAqCd,0DAAW;YACN,qEAA0B;YACxB,wEAA6B;YAC5C,+DAAiB;YACT,sDAAW;;AA1CxB,gCAAgC;IAL5C,+DAAS,CAAC;QACT,QAAQ,EAAE,iCAAiC;QAC3C,2OAAkD;KAEnD,CAAC;qCAuCwB,0DAAW;QACN,qEAA0B;QACxB,wEAA6B;QAC5C,+DAAiB;QACT,sDAAW;GA1CxB,gCAAgC,CA+Q5C;AA/Q4C;;;;;;;;;;;;;;;;;;;;AChBK;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACAkF;AAC/E;AAU5B;AACmE;AAC9C;AACgC;AACpB;AAM1D,IAAa,2BAA2B,mCAAxC,MAAa,2BAA4B,SAAQ,yDAAiB;IA2EhE,YACU,GAAe,EACf,6BAA4D,EAC5D,WAAuB,EACvB,IAAuB;QAE/B,KAAK,EAAE,CAAC;QALA,QAAG,GAAH,GAAG,CAAY;QACf,kCAA6B,GAA7B,6BAA6B,CAA+B;QAC5D,gBAAW,GAAX,WAAW,CAAY;QACvB,SAAI,GAAJ,IAAI,CAAmB;QAvEjC,cAAS,GAAG,IAAI,CAAC;QACjB,oBAAe,GAAG,IAAI,CAAC;QACvB,qBAAgB,GAAG,IAAI,CAAC;QACxB,cAAS,GAA2B,EAAE,CAAC;QACvC,wBAAmB,GAA2B,EAAE,CAAC;QACjD,qBAAgB,GAAG,IAAI,CAAC;QAExB,gBAAW,GAAG,qDAAc,CAAC;QAC7B,iBAAY,GAAG,kDAAW,CAAC;QAC3B,kBAAa,GAAY,KAAK,CAAC;QAE/B,4BAAuB,GAAG,IAAI,0DAAY,EAAsB,CAAC;QACjE,iBAAY,GAAG,EAAE,CAAC;QAClB,eAAU,GAAG,MAAM,CAAC;QAIpB,mBAAc,GAAG,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,UAAU,EAAE,qDAAc,CAAC,SAAS,EAAE,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,CAAC;QACpG,kBAAa,GAAmB,EAAE,CAAC;QACnC,eAAU,GAAG,IAAI,oDAAe,CAIrC,IAAI,CAAC,CAAC;QACD,cAAS,GAAG,IAAI,oDAAe,CAA6B,IAAI,CAAC,CAAC;QAClE,kBAAa,GAAG,IAAI,oDAAe,CAAU,KAAK,CAAC,CAAC;QAEpD,6BAAwB,GAAY,IAAI,CAAC;QAEjD,8BAAyB,GAAY,KAAK,CAAC;IA6C3C,CAAC;IA3CD,IAAI,wBAAwB;QAC1B,OAAO,IAAI,CAAC,uBAAuB,CAAC;IACtC,CAAC;IACD,IAAI,wBAAwB,CAAC,KAAc;QACzC,IAAI,CAAC,uBAAuB,GAAG,KAAK,CAAC;IACvC,CAAC;IACD,IAAI,yBAAyB;QAC3B,OAAO,IAAI,CAAC,wBAAwB,CAAC;IACvC,CAAC;IACD,IAAI,yBAAyB,CAAC,KAAc;QAC1C,IAAI,CAAC,wBAAwB,GAAG,KAAK,CAAC;QAEtC,IAAI,IAAI,CAAC,WAAW,CAAC,cAAc,EAAE;YACnC,IAAI,KAAK,KAAK,IAAI,EAAE;gBAClB,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;aAChD;iBAAM;gBACL,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;aAC/C;SACF;IACH,CAAC;IACD,IAAI,YAAY;QACd,OAAO,GAAG,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,IAAI,CAAC;IACrE,CAAC;IACD,IAAI,mBAAmB;QACrB,IAAI,UAAU,GAAG,iBAAiB,CAAC;QACnC,IAAI,IAAI,CAAC,UAAU,EAAE;YACnB,UAAU,GAAG,UAAU,GAAG,gBAAgB,CAAC;SAC5C;aAAM,IAAI,IAAI,CAAC,kBAAkB,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;YACtD,UAAU,GAAG,UAAU,GAAG,IAAI,CAAC,kBAAkB,CAAC;SACnD;aAAM;YACL,OAAO,EAAE,CAAC;SACX;QAED,OAAO,UAAU,CAAC;IACpB,CAAC;IAWD,QAAQ;QACN,IAAI,CAAC,WAAW,GAAG,IAAI,0DAAkB,EAAE,CAAC;QAC5C,IAAI,CAAC,oBAAoB,GAAG,IAAI,kEAA0B,EAAE,CAAC;QAC7D,IAAI,CAAC,mBAAmB,GAAG,IAAI,kEAA0B,EAAE,CAAC;QAE5D,MAAM,CAAC,6BAA2B,CAAC,+BAA+B,CAAC,GAAG,GAAG,EAAE;YACzE,OAAO,IAAI,CAAC,UAAU,CAAC;QACzB,CAAC,CAAC;QACF,MAAM,CAAC,6BAA2B,CAAC,kCAAkC,CAAC,GAAG,GAAG,EAAE;YAC5E,OAAO,IAAI,CAAC,SAAS,CAAC;QACxB,CAAC,CAAC;QACF,MAAM,CAAC,6BAA2B,CAAC,wBAAwB,CAAC,GAAG,IAAI,CAAC;QACpE,MAAM,CAAC,6BAA2B,CAAC,mCAAmC,CAAC,GAAG,GAAG,EAAE;YAC7E,OAAO,IAAI,CAAC,aAAa,CAAC;QAC5B,CAAC;QAED,IAAI,YAAY,GAAG,IAAI,CAAC,6BAA6B,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,SAAS,EAAE,EAAE;YACvF,IAAI,SAAS,EAAE;gBACb,IAAI,IAAI,CAAC,WAAW,CAAC,cAAc,EAAE;oBACnC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;iBAChC;gBAED,IAAI,IAAI,CAAC,wBAAwB,EAAE;oBACjC,IAAI,CAAC,oBAAoB,GAAG,SAAS,CAAC;oBACtC,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;iBACxD;qBAAM;oBACL,IAAI,CAAC,mBAAmB,GAAG,SAAS,CAAC;oBACrC,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,mBAAmB,EAAE,SAAS,CAAC,CAAC;iBAClE;aACF;QACH,CAAC,CAAC,CAAC;QAEH,IAAI,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC,uBAAuB,CAAC,SAAS,CAAC,CAAC,OAAqD,EAAE,EAAE;YACxH,IAAI,OAAO,CAAC,aAAa,CAAC,UAAU,KAAK,IAAI,CAAC,WAAW,CAAC,UAAU,EAAE;gBACpE,IAAI,CAAC,WAAW,CAAC,iBAAiB,GAAG,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC;gBAClE,IAAI,CAAC,WAAW,CAAC,KAAK,GAAG,OAAO,CAAC,aAAa,CAAC,KAAK,CAAC;gBAErD,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;oBACnB,SAAS,EAAE,IAAI,CAAC,WAAW;oBAC3B,KAAK,EAAE,IAAI,CAAC,WAAW,CAAC,KAAK;oBAC7B,iBAAiB,EAAE,IAAI,CAAC,WAAW,CAAC,iBAAiB;iBACtD,CAAC,CAAC;aACJ;YAAA,CAAC;QACJ,CAAC,CAAC,CAAC;QAEH,IAAI,gBAAgB,GAAG,IAAI,CAAC,6BAA6B,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC,SAAqC,EAAE,EAAE;YAC3H,IAAI,SAAS,EAAE;gBACb,MAAM,cAAc,GAAW,IAAI,CAAC,WAAW,CAAC,KAAK,IAAI,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,oBAAoB,CAAC;gBAErG,IAAI,cAAc,IAAI,SAAS,CAAC,QAAQ,EAAE;oBACxC,SAAS,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;wBAC7B,IAAI,CAAC,CAAC,OAAO,EAAE;4BACb,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;gCACpB,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,KAAK,IAAI,cAAc,CAAC,CAAC,CAAC,uDAAgB,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;4BAC/E,CAAC,CAAC;yBACH;oBACH,CAAC,CAAC;iBACH;gBACD,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;gBAEvD,IAAI,IAAI,CAAC,WAAW,CAAC,cAAc,EAAE;oBACnC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;iBAChC;aACF;QACH,CAAC,CAAC;QACF,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,YAAY,EAAE,MAAM,EAAE,gBAAgB,CAAC,CAAC;IAClE,CAAC;IAED,WAAW;QACT,IAAI,CAAC,oBAAoB,EAAE,CAAC;QAC5B,IAAI,CAAC,qBAAqB,EAAE,CAAC;QAC7B,IAAI,CAAC,aAAa,IAAI,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC,CAAC;QAC3E,KAAK,CAAC,WAAW,EAAE,CAAC;IACtB,CAAC;IAED,eAAe;QACb,IAAI,CAAC,oBAAoB,CAAC,CAAC,CAAC,CAAC;QAC7B,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;IAC1B,CAAC;IAED,YAAY;QACV,IAAI,CAAC,gBAAgB,GAAG,KAAK,CAAC;IAChC,CAAC;IAED,kBAAkB,CAAC,KAAa;QAC9B,OAAO,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAC1B,CAAC;IAEK,OAAO;;YACX,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;YACtB,IAAI,CAAC,YAAY,GAAG,EAAE,CAAC;YACvB,IAAI,CAAC,SAAS,GAAG,EAAE,CAAC;YACpB,IAAI,CAAC,mBAAmB,GAAG,EAAE,CAAC;YAC9B,IAAI,CAAC,oBAAoB,GAAG,IAAI,kEAA0B,EAAE,CAAC;YAC7D,IAAI,CAAC,mBAAmB,GAAG,IAAI,kEAA0B,EAAE,CAAC;YAC5D,IAAI,CAAC,wBAAwB,GAAG,IAAI,CAAC;YACrC,IAAI,CAAC,WAAW,GAAG,IAAI,0DAAkB,EAAE,CAAC;YAC5C,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAC/B,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC;YAC/B,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;YACxB,IAAI,CAAC,yBAAyB,GAAG,KAAK,CAAC;QACzC,CAAC;KAAA;IAED,iBAAiB;QACf,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC;QAC5B,MAAM,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,aAAa,CAAC,aAAa,CAAC,eAAe,CAAC,CAAC;QAE1E,IAAI,IAAI,CAAC,gBAAgB,EAAE;YACzB,WAAW,CAAC,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC;YACrD,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,YAAY,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;YAC1D,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,YAAY,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;SAC1D;aAAM;YACL,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,YAAY,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;YAC1D,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,YAAY,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;YACzD,WAAW,CAAC,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC;SACtD;IACH,CAAC;IAEM,cAAc;QACnB,IAAI,CAAC,eAAe,GAAG,KAAK,CAAC;QAC7B,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC;QAC7B,IAAI,IAAI,CAAC,gBAAgB,EAAE;YACzB,IAAI,CAAC,mBAAmB,CAAC,aAAa,CAAC,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC;YAChF,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,YAAY,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;YAC1D,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,YAAY,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;SAC1D;aAAM;YACL,IAAI,CAAC,mBAAmB,CAAC,aAAa,CAAC,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC;YAChF,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,YAAY,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;YAC1D,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,YAAY,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;SAC1D;IACH,CAAC;IAEY,IAAI,CAAC,GAAuB;;YACvC,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;YACvB,IAAI,CAAC,WAAW,GAAG,GAAG,CAAC;YACvB,IAAI,CAAC,aAAa,GAAG,GAAG,CAAC,cAAc,CAAC;YACxC,IAAI,CAAC,uBAAuB,GAAG,IAAI,CAAC;YAEpC,IAAI,GAAG,CAAC,MAAM,EAAE;gBACd,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC;gBAClE,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC;gBAExD,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC;gBACpF,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,UAAU,EAAE,CAAC,EAAE,EAAE;oBACpC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,KAAK,GAAG,CAAC,EAAE,UAAU,EAAE,qDAAc,CAAC,EAAE,EAAE,SAAS,EAAE,SAAS,EAAE,CAAC;iBACnG;gBAED,IAAI,CAAC,oBAAoB,CAAC,CAAC,CAAC,CAAC;aAC9B;YAED,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;YACvB,MAAM,cAAc,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,OAAO,CAAC,CAAC,EAAE,EAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YAC9E,MAAM,IAAI,CAAC,6BAA6B,CAAC,YAAY,CAAC,GAAG,CAAC,EAAE,EAAE,cAAc,CAAC,CAAC;YAE9E,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;gBACnB,SAAS,EAAE,IAAI,CAAC,WAAW;gBAC3B,KAAK,EAAE,IAAI,CAAC,WAAW,CAAC,KAAK;gBAC7B,iBAAiB,EAAE,GAAG,CAAC,iBAAiB;aACzC,CAAC,CAAC;YAEH,IAAI,GAAG,CAAC,cAAc,EAAE;gBACtB,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;aAC7C;YACD,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;YAExB,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC;QAC5B,CAAC;KAAA;IAEK,eAAe,CAAC,UAAkB,EAAE,KAAa;;YACrD,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;YACvB,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;YACvB,IAAI,CAAC,yBAAyB,GAAG,IAAI,CAAC;YACtC,IAAI,CAAC,WAAW,CAAC,IAAI,GAAG,YAAY;YACpC,IAAI,CAAC,aAAa,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC;QAExC,CAAC;KAAA;IAEO,aAAa,CAAC,UAAkB,EAAE,KAAa;QACrD,IAAI,CAAC,6BAA6B,CAAC,YAAY,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE;YAChF,IAAI,KAAK,YAAY,0DAAkB,EAAE;gBACvC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;aAClB;QACH,CAAC,CAAC,CAAC;IACL,CAAC;IAEO,eAAe,CAAC,OAAgB;QACtC,MAAM,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,aAAa,CAAC,aAAa,CAAC,kBAAkB,CAAC,CAAC;QACpE,IAAI,CAAC,mBAAmB,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC;IACxC,CAAC;IAED,oBAAoB,CAAC,OAAgB,EAAE,SAAS,GAAG,KAAK;QACtD,MAAM,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,aAAa,CAAC,aAAa,CAAC,4EAA4E,CAAC,CAAC;QAC9H,IAAI,EAAE,EAAE;YACN,IAAI,CAAC,oBAAoB,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC;SACxC;IACH,CAAC;IAED,iBAAiB;QACf,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IACtD,CAAC;IAED,mBAAmB;QACjB,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC;QAC/B,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;QACvB,IAAI,CAAC,6BAA6B,CAAC,YAAY,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,EAAE,IAAI,CAAC,wBAAwB,CAAC,CAAC,CAAC,kDAAW,CAAC,WAAW,CAAC,CAAC,CAAC,kDAAW,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE;YAC/J,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;YACxB,IAAI,CAAC,oBAAoB,CAAC,CAAC,CAAC,CAAC;QAC/B,CAAC,CAAC;IACJ,CAAC;IAED,eAAe,CAAC,KAA2B,EAAE,WAAmB;QAC9D,MAAM,MAAM,GAAG,KAAK,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,WAAW,CAA6B,CAAC,CAAC,CAAC,IAAI,CAAC;QAEtG,IAAI,MAAM,EAAE;YACV,IAAI,MAAM,CAAC,MAAM,KAAK,uDAAgB,CAAC,MAAM,EAAE;gBAC7C,OAAO,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,cAAc,CAAC;aAC9C;iBAEI,IAAI,MAAM,CAAC,MAAM,KAAK,uDAAgB,CAAC,UAAU,EAAE;gBACtD,OAAO,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,kBAAkB,CAAC;aAClD;iBAEI,IAAI,IAAI,CAAC,wBAAwB,EAAE;gBACtC,IAAI,MAAM,CAAC,MAAM,KAAK,uDAAgB,CAAC,SAAS,EAAE;oBAChD,OAAO,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,uBAAuB,CAAC;iBACvD;qBAEI,IAAI,MAAM,CAAC,MAAM,KAAK,uDAAgB,CAAC,OAAO,EAAE;oBACnD,OAAO,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,eAAe,CAAC;iBAC/C;qBAEI,IAAI,IAAI,CAAC,WAAW,CAAC,iBAAiB,EAAE;oBAC3C,MAAM,gBAAgB,GAAG,IAAI,CAAC,WAAW,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,KAAK,IAAI,CAAC,CAAC,IAAI,IAAI,MAAM,CAAC,KAAK,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC;oBACtH,OAAO,gBAAgB,IAAI,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,gBAAgB,CAAC,QAAQ,CAAC;iBACvE;gBAED,OAAO,GAAG,CAAC;aACZ;iBACI;gBACH,IAAI,MAAM,CAAC,MAAM,KAAK,uDAAgB,CAAC,SAAS,EAAE;oBAChD,OAAO,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,sBAAsB,CAAC;iBACtD;gBAED,OAAO,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,wBAAwB,CAAC;aACxD;SACF;QACD,OAAO,GAAG,CAAC;IACb,CAAC;IAED,eAAe,CAAC,KAA2B,EAAE,WAAmB;QAC9D,MAAM,MAAM,GAAG,KAAK,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,WAAW,CAA6B,CAAC,CAAC,CAAC,IAAI,CAAC;QAEtG,IAAI,MAAM,EAAE;YACV,IAAI,MAAM,CAAC,MAAM,KAAK,uDAAgB,CAAC,MAAM,EAAE;gBAC7C,OAAO,IAAI,CAAC;aACb;YAED,IAAI,MAAM,CAAC,MAAM,KAAK,uDAAgB,CAAC,UAAU,EAAE;gBACjD,OAAO,GAAG,CAAC;aACZ;YAED,IAAI,IAAI,CAAC,uBAAuB,IAAI,IAAI,CAAC,wBAAwB,EAAE;gBACjE,MAAM,eAAe,GAAG,IAAI,CAAC,qBAAqB,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;gBACjE,OAAO,eAAe,CAAC;aACxB;YAED,OAAO,MAAM,CAAC,KAAK,CAAC;SACrB;QACD,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,qBAAqB,CAAC,KAAa;QACjC,IAAI,KAAK,IAAI,KAAK,KAAK,CAAC,EAAE;YACxB,MAAM,cAAc,GAAG,4DAAoB,CAAC,mBAAmB,CAAC,KAAK,CAAC,CAAC;YACvE,OAAO,cAAc,CAAC,QAAQ,EAAE,CAAC;SAClC;aAAM;YACL,OAAO,GAAG,CAAC;SACZ;IACH,CAAC;IAED,sBAAsB,CAAC,KAA2B,EAAE,WAAmB;QACrE,MAAM,MAAM,GAAG,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,WAAW,CAA6B,CAAC,CAAC,CAAC,IAAI,CAAC;QAE7E,IAAI,MAAM,EAAE;YACV,IAAI,MAAM,CAAC,MAAM,KAAK,uDAAgB,CAAC,MAAM,EAAE;gBAC7C,OAAO,SAAS,CAAC;aAClB;SACF;QAED,OAAO,EAAE,CAAC;IACZ,CAAC;IAEO,sBAAsB,CAAC,QAAgC,EAAE,SAAqC;QACpG,IAAI,QAAQ,EAAE;YACZ,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE;gBACnB,IAAI,SAAS,CAAC,QAAQ,EAAE;oBACtB,IAAI,SAAS,CAAC,kBAAkB,EAAE;wBAChC,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,SAAS,CAAC,kBAAkB,GAAG,IAAI,CAAC,CAAC;wBAC3D,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;qBACxD;oBAED,IAAI,MAAM,GAAG,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,IAAI,KAAK,CAAC,EAAE,CAAC,CAAC;oBACjE,IAAI,MAAM,EAAE;wBACV,KAAK,CAAC,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC;qBAChC;iBACF;YACH,CAAC,CAAC,CAAC;SACJ;IACH,CAAC;CACF;AAxYgB,2DAA+B,GAAG,WAAW,CAAC;AAC9C,8DAAkC,GAAG,cAAc,CAAC;AACpD,oDAAwB,GAAG,OAAO,CAAC;AACnC,+DAAmC,GAAG,eAAe,CAAC;;YAwEtD,wDAAU;YACgB,uEAA6B;YAC/C,oDAAU;YACjB,+DAAiB;;AA1EQ;IAAxC,+DAAS,CAAC,SAAS,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;8BAAW,wDAAU;6DAAC;AACrB;IAAxC,+DAAS,CAAC,SAAS,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;8BAAW,wDAAU;6DAAC;AACT;IAApD,+DAAS,CAAC,qBAAqB,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;8BAAsB,wDAAU;wEAAC;AAP1E,2BAA2B;IAJvC,+DAAS,CAAC;QACT,QAAQ,EAAE,oCAAoC;QAC9C,oPAAqD;KACtD,CAAC;qCA6Ee,wDAAU;QACgB,uEAA6B;QAC/C,oDAAU;QACjB,+DAAiB;GA/EtB,2BAA2B,CAyYvC;AAzYuC;;;;;;;;;;;;;;;;;;;;ACrBS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACAL;AACiB;AACO;AAGnB;AAEmB;AAOpE,IAAa,2BAA2B,GAAxC,MAAa,2BAA2B;IAUtC,YACU,6BAA4D;QAA5D,kCAA6B,GAA7B,6BAA6B,CAA+B;QAVtE,cAAS,GAAY,IAAI,CAAC;QAE1B,eAAU,GAAc,IAAI,wDAAS,CAAC,EAAE,CAAC,CAAC;QAE1C,eAAU,GAAY,KAAK,CAAC;QAC5B,YAAO,GAAY,IAAI,CAAC;QACxB,YAAO,GAAY,IAAI,CAAC;IAKpB,CAAC;IAEL,QAAQ;QACN,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,6BAA6B,CAAC,gBAAgB,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE;YAC1F,IAAI,KAAK,EAAE;gBACT,IAAI,CAAC,gBAAgB,GAAG,KAAK,CAAC;gBAC9B,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;aACxB;YACD,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;YACrB,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;QACvB,CAAC,CAAC,CAAC;IACL,CAAC;IAED,WAAW;QACT,IAAI,CAAC,cAAc,IAAI,IAAI,CAAC,cAAc,CAAC,WAAW,EAAE,CAAC;IAC3D,CAAC;IAED,IAAI,CAAC,QAAsD;QACzD,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC;QAC1B,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;QACpB,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;QACpB,IAAI,CAAC,6BAA6B,CAAC,wBAAwB,CAAC,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;QACvF,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;IACzB,CAAC;IAED,OAAO;QACL,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;QACtB,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;QACtB,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;QACxB,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC;QAC7B,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC;QACxB,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;IACvB,CAAC;IAEK,QAAQ;;YACZ,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;YACvB,IAAI,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE;gBAC3B,OAAO;aACR;YACD,IAAI,iBAAiB,GAA6B,EAAE,CAAC;YACrD,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;gBACnC,IAAI,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,gBAAgB,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,KAAK;uBAC7E,CAAC,IAAI,CAAC,cAAc,IAAI,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,iBAAiB,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC;uBACzG,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,WAAW,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE;oBAEzE,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,gBAAgB,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC;oBAC9E,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,WAAW,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC;oBACpE,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,iBAAiB,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;oBAC1G,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;iBAC9B;YACH,CAAC,CAAC,CAAC;YAEH,IAAI,iBAAiB,CAAC,MAAM,IAAI,CAAC,EAAE;gBACjC,IAAI,CAAC,OAAO,EAAE,CAAC;gBACf,OAAO;aACR;YAED,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;YACpB,IAAI,MAAM,GAAG,MAAM,IAAI,CAAC,6BAA6B,CAAC,eAAe,CAAC,IAAI,CAAC,SAAS,CAAC,UAAU,EAAE,iBAAiB,CAAC,CAAC;YACpH,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;YACrB,IAAI,CAAC,CAAC,MAAM,YAAY,yDAAU,CAAC,EAAE;gBACnC,IAAI,CAAC,OAAO,EAAE,CAAC;aAChB;QACH,CAAC;KAAA;IAEO,UAAU,CAAC,aAAuC;QACxD,IAAI,CAAC,UAAU,GAAG,IAAI,wDAAS,CAAC,EAAE,CAAC,CAAC;QACpC,aAAa,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE;YAC/B,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,WAAW,QAAQ,CAAC,KAAK,EAAE,EAAE,IAAI,0DAAW,CACrE,QAAQ,CAAC,IAAI,EACb,yDAAU,CAAC,OAAO,CAAC;gBACjB,yDAAU,CAAC,QAAQ;gBACnB,yDAAU,CAAC,GAAG,CAAC,CAAC,CAAC;gBACjB,yDAAU,CAAC,GAAG,CAAC,KAAK,CAAC;aACtB,CAAC,CACH,CAAC,CAAC;YAEH,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,gBAAgB,QAAQ,CAAC,KAAK,EAAE,EAAE,IAAI,0DAAW,CAC1E,QAAQ,CAAC,SAAS,EAClB,yDAAU,CAAC,OAAO,CAAC;gBACjB,yDAAU,CAAC,QAAQ;gBACnB,yDAAiB,CAAC,WAAW;aAC9B,CAAC,CACH,CAAC,CAAC;YAEH,IAAI,QAAQ,CAAC,cAAc,EAAE;gBAC3B,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,iBAAiB,QAAQ,CAAC,KAAK,EAAE,EAAE,IAAI,0DAAW,CAC3E,QAAQ,CAAC,UAAU,EACnB,yDAAU,CAAC,OAAO,CAAC;oBACjB,QAAQ,CAAC,cAAc,CAAC,CAAC,CAAC,yDAAU,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI;oBACpD,yDAAU,CAAC,GAAG,CAAC,CAAC,CAAC;oBACjB,yDAAU,CAAC,GAAG,CAAC,KAAK,CAAC;iBACtB,CAAC,CACH,CAAC,CAAC;aACJ;QACH,CAAC,CAAC,CAAC;IACL,CAAC;CAEF;;YAnG0C,uEAA6B;;AAX3D,2BAA2B;IALvC,+DAAS,CAAC;QACT,QAAQ,EAAE,mCAAmC;QAC7C,iPAAoD;KAErD,CAAC;qCAYyC,uEAA6B;GAX3D,2BAA2B,CA8GvC;AA9GuC;;;;;;;;;;;;;;;;;;;;ACdyB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACAf;AAElB;AAEgB;AACiC;AAC7B;AAMpD,IAAa,wCAAwC,gDAArD,MAAa,wCAAwC;IAUnD,YACU,iBAA0C;QAA1C,sBAAiB,GAAjB,iBAAiB,CAAyB;QARpD,cAAS,GAAG,IAAI,CAAC;QACjB,iBAAY,GAAG,KAAK,CAAC;QACrB,uBAAkB,GAAe,EAAE,CAAC;QACpC,sBAAiB,GAAe,EAAE,CAAC;IAM/B,CAAC;IAEL,QAAQ;IACR,CAAC;IAEM,IAAI,CAAC,cAA0C,EAAE,sBAA8B;QACpF,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;QACvB,IAAI,CAAC,eAAe,GAAG,cAAc,CAAC;QACtC,IAAI,CAAC,+BAA+B,GAAG,sBAAsB,CAAC;QAC9D,IAAI,CAAC,oBAAoB,CAAC,cAAc,CAAC,CAAC;IAC5C,CAAC;IAED,QAAQ;QACN,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;IACxB,CAAC;IAEK,QAAQ;;YACZ,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;YAEzB,IAAI,MAAM,GAA+B,IAAI,kEAA0B,EAAE,CAAC;YAC1E,MAAM,CAAC,UAAU,GAAG,IAAI,CAAC,eAAe,CAAC,UAAU,CAAC;YACpD,MAAM,CAAC,sBAAsB,GAAG,IAAI,CAAC,+BAA+B,CAAC;YACrE,MAAM,CAAC,QAAQ,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC,eAAe,EAAE,CAAC,QAAQ,CAAC;YACnE,MAAM,CAAC,MAAM,GAAG,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE;gBAC7C,OAAO,CAAC,CAAC,IAAI;YACf,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,qDAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;YAE5B,IAAI,MAAM,GAAG,MAAM,IAAI,CAAC,iBAAiB,CAAC,gCAAgC,CAAC,MAAM,CAAC,CAAC;YACnF,IAAI,CAAC,CAAC,MAAM,YAAY,kDAAU,CAAC,EAAE;gBACnC,IAAI,QAAQ,GAAG,IAAI,CAAC,eAAe,CAAC,YAAY,GAAG,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC,cAAc,EAAE,CAAC;gBACrF,MAAM,GAAG,GAAG,GAAG,CAAC,eAAe,CAAC,MAAc,CAAC,CAAC;gBAChD,IAAI,YAAY,GAAG,QAAQ,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;gBAC/C,YAAY,CAAC,IAAI,GAAG,GAAG,CAAC;gBACxB,YAAY,CAAC,QAAQ,GAAG,QAAQ,CAAC;gBACjC,YAAY,CAAC,KAAK,EAAE,CAAC;aACtB;YACD,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;QAC5B,CAAC;KAAA;IAED,YAAY,CAAC,KAAU;QACrB,IAAI,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE;YACpC,IAAI,CAAC,cAAc,EAAE,CAAC;SACvB;IACH,CAAC;IAED,cAAc,CAAC,KAAU;QACvB,IAAI,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE;YACpC,IAAI,CAAC,gBAAgB,EAAE,CAAC;YACxB,OAAO;SACR;QAED,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;IACvF,CAAC;IAEO,oBAAoB,CAAC,cAA0C;QACrE,MAAM,EAAE,UAAU,EAAE,GAAG,0CAAwC,CAAC;QAEhE,MAAM,cAAc,GAAa;YAC/B,KAAK,EAAE,UAAU;YACjB,IAAI,EAAE,UAAU;YAChB,GAAG,EAAE,UAAU;SAChB,CAAC;QAEF,IAAI,CAAC,kBAAkB,GAAG;YACxB,cAAc;YACd,GAAG,kEAA0B,CAAC,qBAAqB,CAAC,cAAc,CAAC;SACpE,CAAC;IACJ,CAAC;IAEO,cAAc;QACpB,MAAM,YAAY,GAAe,CAAC,GAAG,IAAI,CAAC,kBAAkB,CAAC,CAAC;QAC9D,MAAM,aAAa,GAAe,IAAI,CAAC,kBAAkB;aACtD,MAAM,CAAC,CAAC,MAAM,EAAE,WAAW,EAAE,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;aACxE,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;QAEpB,IAAI,CAAC,iBAAiB,GAAG,CAAC,GAAG,YAAY,EAAE,GAAG,aAAa,CAAC,CAAC;IAC/D,CAAC;IAEO,gBAAgB;QACtB,IAAI,CAAC,iBAAiB,GAAG,EAAE,CAAC;IAC9B,CAAC;IAEO,eAAe,CAAC,IAAc;QACpC,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;QAClC,MAAM,EAAE,UAAU,EAAE,GAAG,0CAAwC,CAAC;QAEhE,OAAO,KAAK,KAAK,UAAU,IAAI,IAAI,KAAK,UAAU,IAAI,GAAG,KAAK,UAAU,CAAC;IAC3E,CAAC;CACF;AAnGQ,mDAAU,GAAG,YAAY,CAAC;;YAUJ,iEAAuB;;AAXzC,wCAAwC;IAJpD,+DAAS,CAAC;QACT,QAAQ,EAAE,mDAAmD;QAC7D,iSAAoE;KACrE,CAAC;qCAY6B,iEAAuB;GAXzC,wCAAwC,CAoGpD;AApGoD;;;;;;;;;;;;;;;;;;;;ACZH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACAsB;AAClC;AAGuC;AAC/B;AAM9C,IAAa,2BAA2B,mCAAxC,MAAa,2BAA4B,SAAQ,yDAAiB;IAiDhE;QACE,KAAK,EAAE,CAAC;QAvCV,cAAS,GAAY,IAAI,CAAC;QAC1B,cAAS,GAA2B,EAAE,CAAC;QACvC,oBAAe,GAAG,qDAAc,CAAC;QACjC,oBAAe,GAAG,qDAAc,CAAC;QACjC,iBAAY,GAAG,kDAAW,CAAC;QAG3B,eAAU,GAAG,6BAA2B,CAAC,UAAU,CAAC;IAiCpD,CAAC;IA7BD,IAAI,YAAY;QACd,IAAI,IAAI,CAAC,QAAQ,KAAK,kDAAW,CAAC,QAAQ,EAAE;YAC1C,OAAO;gBACL,EAAE,MAAM,EAAE,YAAY,EAAE,UAAU,EAAE,qDAAc,CAAC,SAAS,EAAE,SAAS,EAAE,6BAA2B,CAAC,UAAU,EAAE;gBACjH,EAAE,MAAM,EAAE,UAAU,EAAE,UAAU,EAAE,qDAAc,CAAC,OAAO,EAAE,SAAS,EAAE,6BAA2B,CAAC,QAAQ,EAAE;gBAC3G,EAAE,MAAM,EAAE,OAAO,EAAE,UAAU,EAAE,qDAAc,CAAC,KAAK,EAAE,SAAS,EAAE,6BAA2B,CAAC,WAAW,EAAE;gBACzG,EAAE,MAAM,EAAE,QAAQ,EAAE,UAAU,EAAE,qDAAc,CAAC,MAAM,EAAE,SAAS,EAAE,6BAA2B,CAAC,YAAY,EAAE;gBAC5G,EAAE,MAAM,EAAE,mBAAmB,EAAE,UAAU,EAAE,qDAAc,CAAC,aAAa,EAAE,SAAS,EAAE,6BAA2B,CAAC,oBAAoB,EAAE;gBACtI,EAAE,MAAM,EAAE,IAAI,CAAC,qBAAqB,EAAE,UAAU,EAAE,qDAAc,CAAC,WAAW,EAAE,SAAS,EAAE,6BAA2B,CAAC,mBAAmB,EAAE;aAC3I,CAAC;SACH;aAAM,IAAI,IAAI,CAAC,QAAQ,KAAK,kDAAW,CAAC,WAAW,EAAE;YACpD,OAAO;gBACL,EAAE,MAAM,EAAE,YAAY,EAAE,UAAU,EAAE,qDAAc,CAAC,SAAS,EAAE,SAAS,EAAE,6BAA2B,CAAC,UAAU,EAAE;gBACjH,EAAE,MAAM,EAAE,UAAU,EAAE,UAAU,EAAE,qDAAc,CAAC,OAAO,EAAE,SAAS,EAAE,6BAA2B,CAAC,QAAQ,EAAE;gBAC3G,EAAE,MAAM,EAAE,YAAY,EAAE,UAAU,EAAE,qDAAc,CAAC,KAAK,EAAE,SAAS,EAAE,6BAA2B,CAAC,gBAAgB,EAAE;gBACnH,EAAE,MAAM,EAAE,YAAY,EAAE,UAAU,EAAE,qDAAc,CAAC,MAAM,EAAE,SAAS,EAAE,6BAA2B,CAAC,gBAAgB,EAAE;gBACpH,EAAE,MAAM,EAAE,mBAAmB,EAAE,UAAU,EAAE,qDAAc,CAAC,aAAa,EAAE,SAAS,EAAE,6BAA2B,CAAC,oBAAoB,EAAE;gBACtI,EAAE,MAAM,EAAE,IAAI,CAAC,qBAAqB,EAAE,UAAU,EAAE,qDAAc,CAAC,WAAW,EAAE,SAAS,EAAE,6BAA2B,CAAC,mBAAmB,EAAE;aAC3I,CAAC;SACH;IAEH,CAAC;IAED,WAAW;QACT,KAAK,CAAC,WAAW,EAAE,CAAC;IACtB,CAAC;IAMD,QAAQ;IAER,CAAC;IAED,OAAO;QACL,IAAI,CAAC,SAAS,GAAG,EAAE,CAAC;QACpB,IAAI,CAAC,cAAc,GAAG,KAAK,CAAC;QAC5B,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;QACtB,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC;IACvB,CAAC;IAEM,IAAI,CAAC,GAAuB;QACjC,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;QACvB,IAAI,CAAC,cAAc,GAAG,GAAG,CAAC,cAAc,CAAC;QACzC,IAAI,CAAC,QAAQ,GAAG,GAAG,CAAC,OAAO,CAAC;QAC5B,IAAI,CAAC,YAAY,CAAC;QAElB,IAAI,GAAG,CAAC,UAAU,KAAK,qDAAc,CAAC,GAAG,EAAE;YACzC,IAAI,CAAC,qBAAqB,GAAG,QAAQ,CAAC;SACvC;aAAM;YACL,IAAI,CAAC,qBAAqB,GAAG,KAAK,CAAC;SACpC;QAED,IAAI,CAAC,SAAS,GAAG,GAAG,CAAC,MAAM,CAAC;IAC9B,CAAC;CACF;AA5EQ,sCAAU,GAAG,MAAM,CAAC;AACpB,oCAAQ,GAAG,cAAc,CAAC;AAC1B,uCAAW,GAAG,OAAO,CAAC;AACtB,wCAAY,GAAG,QAAQ,CAAC;AACxB,gDAAoB,GAAG,mBAAmB,CAAC;AAC3C,+CAAmB,GAAG,eAAe,CAAC;AACtC,4CAAgB,GAAG,WAAW,CAAC;AAC/B,4CAAgB,GAAG,WAAW,CAAC;AARM;IAA3C,+DAAS,CAAC,YAAY,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;8BAAQ,mDAAK;0DAAC;AAD9C,2BAA2B;IAJvC,+DAAS,CAAC;QACT,QAAQ,EAAE,oCAAoC;QAC9C,oPAAqD;KACtD,CAAC;;GACW,2BAA2B,CA8EvC;AA9EuC;;;;;;;;;;;;;;;;;;;;ACXY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACAI;AAC8C;AAGxD;AACuE;AACxD;AACK;AAMlE,IAAa,6BAA6B,qCAA1C,MAAa,6BAA8B,SAAQ,yDAAiB;IAuClE,YACU,GAAe,EACf,YAAyB,EACzB,6BAA4D;QACpE,KAAK,EAAE,CAAC;QAHA,QAAG,GAAH,GAAG,CAAY;QACf,iBAAY,GAAZ,YAAY,CAAa;QACzB,kCAA6B,GAA7B,6BAA6B,CAA+B;QApCtE,mBAAc,GAAG,gBAAgB,CAAC;QAElC,eAAU,GAAG,+BAA6B,CAAC,UAAU,CAAC;QACtD,cAAS,GAAG,IAAI,CAAC;QACjB,eAAU,GAAG,KAAK,CAAC;QAGnB,cAAS,GAAyB,EAAE,CAAC;QACrC,eAAU,GAAG,CAAC,CAAC;QACf,oBAAe,GAAG,qDAAc,CAAC;QAEjC,cAAS,GAAG,kDAAW,CAAC;QAExB,kBAAa,GAAmB,EAAE,CAAC;QAEnC,mBAAc,GAAG,IAAI,0DAAY,EAAsB,CAAC;QACxD,uBAAkB,GAAG,IAAI,0DAAY,EAAsB,CAAC;QAE5D,iBAAY,GAAG;YACb,EAAE,MAAM,EAAE,UAAU,EAAE,UAAU,EAAE,qDAAc,CAAC,OAAO,EAAE,SAAS,EAAE,+BAA6B,CAAC,UAAU,EAAE;YAC/G,EAAE,MAAM,EAAE,QAAQ,EAAE,UAAU,EAAE,qDAAc,CAAC,MAAM,EAAE,SAAS,EAAE,+BAA6B,CAAC,YAAY,EAAE;YAC9G,EAAE,MAAM,EAAE,OAAO,EAAE,UAAU,EAAE,qDAAc,CAAC,KAAK,EAAE,SAAS,EAAE,+BAA6B,CAAC,WAAW,EAAE;YAC3G,EAAE,MAAM,EAAE,OAAO,EAAE,UAAU,EAAE,qDAAc,CAAC,KAAK,EAAE,SAAS,EAAE,+BAA6B,CAAC,WAAW,EAAE;YAC3G,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,qDAAc,CAAC,IAAI,EAAE,SAAS,EAAE,+BAA6B,CAAC,UAAU,EAAE;SACzG,CAAC;QACF,mBAAc,GAAG;YACf,EAAE,MAAM,EAAE,SAAS,EAAE,UAAU,EAAE,qDAAc,CAAC,OAAO,EAAE,KAAK,EAAE,EAAE,EAAE;SACrE,CAAC;QAWA,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC;YACzC,YAAY,EAAE,CAAC,EAAE,CAAC;SACnB,CAAC,CAAC;IACL,CAAC;IAZD,IAAI,YAAY;QACd,OAAO,GAAG,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,IAAI,CAAC;IACrE,CAAC;IAYD,QAAQ;QACN,IAAI,CAAC,MAAM,GAAG,IAAI,kEAA0B,EAAE,CAAC;QAC/C,IAAI,CAAC,SAAS,GAAG,IAAI,4DAAoB,EAAE,CAAC;IAC9C,CAAC;IAED,eAAe;QACb,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;IAC1B,CAAC;IAED,WAAW;QACT,KAAK,CAAC,WAAW,EAAE,CAAC;QACpB,IAAI,CAAC,aAAa;YAChB,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC,CAAC;IAC3D,CAAC;IAEY,IAAI,CAAC,UAAkB;;YAClC,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,6BAA6B,CAAC,aAAa,CAAC,QAAQ,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,UAAU,CAAC,CAAC;YAC5G,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;YACvB,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;YACvB,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,6BAA6B,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;YAC9E,IAAI,MAAM,IAAI,IAAI,CAAC,SAAS,IAAI,MAAM,CAAC,UAAU,KAAK,IAAI,CAAC,SAAS,CAAC,EAAE,EAAE;gBACvE,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC,UAAU,CAAC;gBACnC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;aACtB;YACD,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;QAC1B,CAAC;KAAA;IAEK,OAAO;;YACX,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;YACtB,IAAI,CAAC,SAAS,GAAG,EAAE,CAAC;QACtB,CAAC;KAAA;IAED,kBAAkB;QAChB,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,YAAY,CAAC,KAAK,CAAC;IACxE,CAAC;IAED,cAAc,CAAC,GAAiB;QAC9B,MAAM,SAAS,GAAG,oDAAY,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC;QAEtD,IAAI,IAAI,CAAC,SAAS,CAAC,iBAAiB,IAAI,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE;YAC5D,SAAS,CAAC,iBAAiB,GAAG,IAAI,CAAC,SAAS,CAAC,iBAAiB,CAAC;YAC/D,SAAS,CAAC,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC;SACxC;aAAM;YACL,IAAI,CAAC,6BAA6B,CAAC,oBAAoB,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE;gBACnF,SAAS,CAAC,iBAAiB,GAAG,IAAI,CAAC,SAAS,CAAC,iBAAiB,CAAC;gBAC/D,SAAS,CAAC,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC;YACzC,CAAC,CAAC,CAAC;SACJ;QAED,SAAS,CAAC,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC;QAC9C,SAAS,CAAC,cAAc,GAAG,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC;QACzD,SAAS,CAAC,oBAAoB,GAAG,IAAI,CAAC,MAAM,CAAC,oBAAoB,CAAC;QAClE,SAAS,CAAC,mBAAmB,GAAG,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC;QAE7D,IAAI,SAAS,CAAC,OAAO,KAAK,kDAAW,CAAC,IAAI,EAAE;YAC1C,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;SACzC;aAAM;YACL,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;SACrC;IACH,CAAC;IAEO,eAAe,CAAC,OAAgB;QACtC,MAAM,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,aAAa,CAAC,aAAa,CAAC,4EAA4E,CAAC,CAAC;QAC9H,IAAI,CAAC,mBAAmB,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC;IACxC,CAAC;CACF;AAjHQ,wCAAU,GAAG,MAAM,CAAC;AACpB,0CAAY,GAAG,QAAQ,CAAC;AACxB,yCAAW,GAAG,OAAO,CAAC;AACtB,yCAAW,GAAG,OAAO,CAAC;AACtB,wCAAU,GAAG,SAAS,CAAC;;YAmCf,wDAAU;YACD,0DAAW;YACM,uEAA6B;;AA1C3D,6BAA6B;IAJzC,+DAAS,CAAC;QACT,QAAQ,EAAE,sCAAsC;QAChD,0PAAuD;KACxD,CAAC;qCAyCe,wDAAU;QACD,0DAAW;QACM,uEAA6B;GA1C3D,6BAA6B,CAkHzC;AAlHyC;;;;;;;;;;;;;;;;;;;;;;;ACbe;AAChB;;;;;;;;;;;;;;;;;;;;ACDU;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACAa;AAGf;AAMjD,IAAa,4BAA4B,GAAzC,MAAa,4BAA6B,SAAQ,yDAAiB;IAKjE;QACE,KAAK,EAAE,CAAC;QALV,cAAS,GAAG,IAAI,CAAC;QAEjB,cAAS,GAAG,IAAI,0DAAY,EAA6B,CAAC;IAI1D,CAAC;IACD,QAAQ;IACR,CAAC;IAED,QAAQ;QACN,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;QACtB,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;IACpB,CAAC;IAED,QAAQ;QACN,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAChC,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;IACxB,CAAC;IAEM,IAAI,CAAC,KAAgC;QAC1C,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;QACvB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;IACrB,CAAC;CACF;AAzBY,4BAA4B;IAJxC,+DAAS,CAAC;QACT,QAAQ,EAAE,qCAAqC;QAC/C,oRAAsD;KACvD,CAAC;;GACW,4BAA4B,CAyBxC;AAzBwC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACR2B;AACqD;AAEI;AAC7E;AACF;AACoB;AACI;AAMtE,IAAa,kCAAkC,0CAA/C,MAAa,kCAAmC,SAAQ,yDAAiB;IAiCvE,YACU,YAAyB,EACzB,GAAe,EACf,6BAA4D;QACpE,KAAK,EAAE,CAAC;QAHA,iBAAY,GAAZ,YAAY,CAAa;QACzB,QAAG,GAAH,GAAG,CAAY;QACf,kCAA6B,GAA7B,6BAA6B,CAA+B;QA/B/D,mBAAc,GAAG,EAAE,GAAG,EAAE,EAAE,OAAO,EAAE,IAAI,MAAM,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC;QAEtD,iBAAY,GAAG,IAAI,0DAAY,EAAE,CAAC;QAC5C,cAAS,GAAY,IAAI,CAAC;QAC1B,iBAAY,GAAG,qDAAc,CAAC;QAK9B,mBAAc,GAAmB,EAAE,CAAC;QAQpC,eAAU,GAAW,MAAM,CAAC;QAC5B,uBAAkB,GAAG,IAAI,0DAAY,EAA6B,CAAC;QAEnE,iBAAY,GAAG;YACb,EAAE,MAAM,EAAE,GAAG,EAAE,UAAU,EAAE,qDAAc,CAAC,MAAM,EAAE;YAClD,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,qDAAc,CAAC,IAAI,EAAE,SAAS,EAAE,oCAAkC,CAAC,UAAU,EAAE;YAC7G,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,EAAE,qDAAc,CAAC,EAAE,EAAE,SAAS,EAAE,oCAAkC,CAAC,QAAQ,EAAE;YACvG,EAAE,MAAM,EAAE,OAAO,EAAE,UAAU,EAAE,qDAAc,CAAC,KAAK,EAAE,SAAS,EAAE,oCAAkC,CAAC,eAAe,EAAE;YACpH,EAAE,MAAM,EAAE,EAAE,EAAE,UAAU,EAAE,qDAAc,CAAC,MAAM,EAAE;SAClD,CAAC;IAOF,CAAC;IAGD,QAAQ;QACN,IAAI,CAAC,MAAM,GAAG,IAAI,sDAAc,EAAE,CAAC;QACnC,IAAI,CAAC,WAAW,GAAG,IAAI,iEAAyB,EAAE,CAAC;QACnD,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAEhC,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC;YACxC,IAAI,EAAE,CAAC,CAAC,EAAE,yDAAU,CAAC,QAAQ,CAAC;YAC9B,EAAE,EAAE,CAAC,CAAC,EAAE,yDAAU,CAAC,QAAQ,CAAC;YAC5B,QAAQ,EAAE,CAAC,EAAE,EAAE,yDAAU,CAAC,QAAQ,CAAC;SACpC,CAAC,CAAC;QAEH,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC;YACxC,eAAe,EAAE,CAAC,CAAC,EAAE,CAAC,yDAAU,CAAC,QAAQ,EAAE,yDAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,yDAAU,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;YACnF,cAAc,EAAE,CAAC,CAAC,EAAE,CAAC,yDAAU,CAAC,QAAQ,EAAE,yDAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,yDAAU,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC;YACpF,OAAO,EAAE,CAAC,CAAC,EAAE,CAAC,yDAAU,CAAC,QAAQ,EAAE,yDAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,yDAAU,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;YAC3E,qBAAqB,EAAE,CAAC,EAAE,EAAE,yDAAU,CAAC,QAAQ,CAAC;YAChD,oBAAoB,EAAE,CAAC,EAAE,EAAE,yDAAU,CAAC,QAAQ,CAAC;YAC/C,YAAY,EAAE,CAAC,EAAE,EAAE,yDAAU,CAAC,QAAQ,CAAC;SACxC,CAAC,CAAC;IACL,CAAC;IAED,eAAe;QACb,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;IAC1B,CAAC;IAED,OAAO;QACL,IAAI,CAAC,SAAS,GAAG,EAAE,CAAC;QACpB,IAAI,CAAC,eAAe,GAAG,KAAK,CAAC;QAC7B,IAAI,CAAC,eAAe,GAAG,KAAK,CAAC;QAC7B,IAAI,CAAC,kBAAkB,GAAG,KAAK,CAAC;QAChC,IAAI,CAAC,iBAAiB,GAAG,KAAK,CAAC;QAC/B,IAAI,CAAC,MAAM,GAAG,IAAI,sDAAc,EAAE,CAAC;QACnC,IAAI,CAAC,WAAW,GAAG,IAAI,iEAAyB,EAAE,CAAC;QACnD,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC;IAC3B,CAAC;IAED,IAAI,CAAC,QAA8B;QACjC,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;QACvB,IAAI,CAAC,WAAW,GAAG,QAAQ,CAAC,EAAE,CAAC;QAC/B,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;QAEvB,IAAI,CAAC,6BAA6B,CAAC,oBAAoB,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE;YAC7E,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;YAExB,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC,iBAAiB,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YAC1G,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC;YACzD,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YAEhC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;gBACzB,CAAC,CAAC,IAAI,GAAG,4DAAoB,CAAC,mBAAmB,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;gBAC1D,CAAC,CAAC,EAAE,GAAG,4DAAoB,CAAC,mBAAmB,CAAC,CAAC,CAAC,EAAE,GAAG,oCAAkC,CAAC,mBAAmB,CAAC,CAAC;YACjH,CAAC,CAAC,CAAC;QACL,CAAC,CAAC;IACJ,CAAC;IAED,YAAY;QACV,IAAI,IAAI,CAAC,iBAAiB,EAAE;YAC1B,IAAI,CAAC,iBAAiB,GAAG,KAAK,CAAC;SAChC;QACD,IAAI,IAAI,CAAC,kBAAkB,EAAE;YAC3B,IAAI,CAAC,kBAAkB,GAAG,KAAK,CAAC;SACjC;IACH,CAAC;IAED,WAAW;QACT,IAAI,CAAC,oBAAoB,EAAE,CAAC;QAC5B,IAAI,CAAC,cAAc,IAAI,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC;QACzE,KAAK,CAAC,WAAW,EAAE,CAAC;IACtB,CAAC;IAED,aAAa,CAAC,KAAgC;QAC5C,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACtC,CAAC;IAED,WAAW,CAAC,KAAgC;QAC1C,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC;IAC1D,CAAC;IAED,eAAe,CAAC,OAAe;QAC7B,MAAM,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,aAAa,CAAC,aAAa,CAAC,qDAAqD,CAAC,CAAC;QACvG,IAAI,CAAC,mBAAmB,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC;IACxC,CAAC;IAED,aAAa;QACX,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC;QAC5B,IAAI,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE;YAC3B,OAAO;SACR;QAED,IAAI,CAAC,WAAW,CAAC,IAAI,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC;QAC/C,IAAI,CAAC,WAAW,CAAC,EAAE,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC;QAE3C,IAAI,IAAI,CAAC,WAAW,CAAC,IAAI,IAAI,IAAI,CAAC,WAAW,CAAC,EAAE,EAAE;YAChD,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC;YAC/B,OAAO;SACR;QAED,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,WAAW,CAAC,IAAI,IAAI,CAAC,CAAC,EAAE,KAAK,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC,EAAE;YAC9F,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC;YAC9B,OAAO;SACR;QAED,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAC3B,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,IAAI,CAAC,CAAC,IAAI,IAAI,IAAI,CAAC,WAAW,CAAC,IAAI,IAAI,CAAC,CAAC,EAAE,CAAC;eAC/D,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,IAAI,CAAC,CAAC,IAAI,IAAI,IAAI,CAAC,WAAW,CAAC,EAAE,IAAI,CAAC,CAAC,EAAE,CAAC;eAC9D,CAAC,CAAC,CAAC,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,IAAI,CAAC,CAAC,EAAE,GAAG,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE;YAErE,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC;YAC/B,OAAO;SACR;QAED,IAAI,CAAC,eAAe,GAAG,KAAK,CAAC;QAC7B,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,kBAAK,IAAI,CAAC,WAAW,IAAE,EAAE,EAAE,CAAC,GAA+B,CAAC,CAAC;QACjF,IAAI,SAAS,GAAqC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QAC7E,IAAI,CAAC,SAAS,GAAG,EAAE,CAAC;QACpB,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC;QAC3D,IAAI,CAAC,WAAW,GAAG,IAAI,iEAAyB,EAAE,CAAC;QACnD,IAAI,CAAC,WAAW,CAAC,QAAQ,GAAG,SAAS,CAAC;IACxC,CAAC;IAED,QAAQ;QACN,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC;QAC5B,IAAI,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE;YAC3B,OAAO;SACR;QACD,MAAM,SAAS,GAAG;YAChB,UAAU,EAAE,IAAI,CAAC,WAAW;YAC5B,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YAClD,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC;SACL,CAAC;QAC/B,IAAI,CAAC,iBAAiB,CAAC,SAAS,CAAC,CAAC;QAElC,IAAI,CAAC,6BAA6B,CAAC,oBAAoB,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE;YACjF,IAAI,MAAM,YAAY,kDAAU,EAAE;gBAChC,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;aACvB;iBAAM;gBACL,IAAI,CAAC,OAAO,EAAE,CAAC;gBACf,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;aACvB;QACH,CAAC,CAAC;IACJ,CAAC;IACO,iBAAiB,CAAC,KAAgC;QACxD,KAAK,CAAC,KAAK,CAAC,YAAY,GAAG,4DAAoB,CAAC,6BAA6B,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;QACzG,KAAK,CAAC,KAAK,CAAC,oBAAoB,GAAG,4DAAoB,CAAC,mBAAmB,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,oBAAoB,CAAC,CAAC;QAC/G,KAAK,CAAC,KAAK,CAAC,mBAAmB,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,mBAAmB,CAAC;QAEnE,KAAK,CAAC,KAAK,CAAC,sBAAsB,GAAG,KAAK,CAAC,KAAK,CAAC,sBAAsB,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,sBAAsB,CAAC;QAC3H,KAAK,CAAC,KAAK,CAAC,eAAe,GAAG,KAAK,CAAC,KAAK,CAAC,eAAe,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,eAAe,CAAC;QACtG,KAAK,CAAC,KAAK,CAAC,uBAAuB,GAAG,KAAK,CAAC,KAAK,CAAC,uBAAuB,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,uBAAuB,CAAC;QAC9H,KAAK,CAAC,KAAK,CAAC,wBAAwB,GAAG,KAAK,CAAC,KAAK,CAAC,wBAAwB,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,wBAAwB,CAAC;QAEjI,KAAK,CAAC,KAAK,CAAC,sBAAsB,GAAG,KAAK,CAAC,KAAK,CAAC,uBAAuB,CAAC;QACzE,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;YACvB,CAAC,CAAC,IAAI,GAAG,4DAAoB,CAAC,mBAAmB,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;YAC1D,CAAC,CAAC,EAAE,GAAG,4DAAoB,CAAC,mBAAmB,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QACxD,CAAC,CAAC;IACJ,CAAC;IAEO,aAAa,CAAC,KAAqB;QACzC,IAAI,CAAC,MAAM,CAAC,mBAAmB,GAAG,IAAI,CAAC,MAAM,CAAC,mBAAmB;YAC/D,CAAC,CAAC,KAAK,CAAC,mBAAmB;YAC3B,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,mBAAmB,CAAC;QAEpC,IAAI,CAAC,MAAM,CAAC,YAAY,GAAG,IAAI,CAAC,MAAM,CAAC,YAAY;YACjD,CAAC,CAAC,4DAAoB,CAAC,6BAA6B,CAAC,KAAK,CAAC,YAAY,CAAC;YACxE,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC;QAE7B,IAAI,CAAC,MAAM,CAAC,oBAAoB,GAAG,IAAI,CAAC,MAAM,CAAC,oBAAoB;YACjE,CAAC,CAAC,4DAAoB,CAAC,mBAAmB,CAAC,KAAK,CAAC,oBAAoB,CAAC;YACtE,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,oBAAoB,CAAC;QAErC,IAAI,CAAC,MAAM,CAAC,uBAAuB,GAAG,CAAC,KAAK,CAAC,uBAAuB,KAAK,EAAE,IAAI,OAAO,KAAK,CAAC,uBAAuB,KAAK,SAAS,IAAI,KAAK,CAAC,uBAAuB,IAAI,IAAI,CAAC;YACzK,CAAC,CAAC,SAAS;YACX,CAAC,CAAC,KAAK,CAAC,uBAAuB,CAAC;QAElC,IAAI,CAAC,MAAM,CAAC,wBAAwB,GAAG,CAAC,KAAK,CAAC,wBAAwB,KAAK,EAAE,IAAI,OAAO,KAAK,CAAC,wBAAwB,KAAK,SAAS,IAAI,KAAK,CAAC,wBAAwB,IAAI,IAAI,CAAC;YAC7K,CAAC,CAAC,SAAS;YACX,CAAC,CAAC,KAAK,CAAC,wBAAwB,CAAC;QAEnC,IAAI,CAAC,MAAM,CAAC,eAAe,GAAG,CAAC,KAAK,CAAC,eAAe,KAAK,EAAE,IAAI,OAAO,KAAK,CAAC,eAAe,IAAI,SAAS,IAAI,KAAK,CAAC,eAAe,IAAI,IAAI,CAAC;YACxI,CAAC,CAAC,SAAS;YACX,CAAC,CAAC,KAAK,CAAC,eAAe,CAAC;QAE1B,IAAI,CAAC,WAAW,CAAC,QAAQ,GAAG,SAAS,CAAC;IACxC,CAAC;CACF;AAjOQ,6CAAU,GAAG,MAAM,CAAC;AACpB,2CAAQ,GAAG,IAAI,CAAC;AAChB,kDAAe,GAAG,UAAU,CAAC;AAC7B,sDAAmB,GAAG,IAAI,CAAC;;YA8BV,0DAAW;YACpB,wDAAU;YACgB,uEAA6B;;AA7B5D;IAAT,4DAAM,EAAE;;wEAAmC;AAPjC,kCAAkC;IAJ9C,+DAAS,CAAC;QACT,QAAQ,EAAE,2CAA2C;QACrD,yQAA4D;KAC7D,CAAC;qCAmCwB,0DAAW;QACpB,wDAAU;QACgB,uEAA6B;GApC3D,kCAAkC,CAkO9C;AAlO8C;;;;;;;;;;;;;;;;;;;;ACdI;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACA8D;AAC5D;AACQ;AACR;AACP;AAM9C,IAAa,4BAA4B,oCAAzC,MAAa,4BAA6B,SAAQ,yDAAiB;IAyCjE,YAAoB,GAAe;QACjC,KAAK,EAAE,CAAC;QADU,QAAG,GAAH,GAAG,CAAY;QAhCnC,oBAAe,GAAG,IAAI,CAAC;QACvB,cAAS,GAAG,IAAI,CAAC;QAEjB,kBAAa,GAAmB,EAAE,CAAC;QACnC,eAAU,GAAG,mBAAmB,CAAC;QACjC,oBAAe,GAAG,qDAAc,CAAC;QACjC,cAAS,GAAG,kDAAW,CAAC;QAExB,mBAAc,GAAG,IAAI,0DAAY,EAAsB,CAAC;QACxD,YAAO,GAAG,IAAI,oDAAe,CAAqB,IAAI,CAAC,CAAC;QACxD,wBAAmB,GAAG,IAAI,oDAAe,CAAS,CAAC,CAAC,CAAC;QACrD,gBAAW,GAAG,IAAI,oDAAe,CAAU,KAAK,CAAC,CAAC;QAClD,qBAAgB,GAAG,IAAI,CAAC;QAIxB,iBAAY,GAAG;YACb,EAAE,MAAM,EAAE,UAAU,EAAE,UAAU,EAAE,qDAAc,CAAC,iBAAiB,EAAE,SAAS,EAAE,8BAA4B,CAAC,UAAU,EAAE;YACxH,EAAE,MAAM,EAAE,QAAQ,EAAE,UAAU,EAAE,qDAAc,CAAC,MAAM,EAAE,SAAS,EAAE,8BAA4B,CAAC,YAAY,EAAE;YAC7G,EAAE,MAAM,EAAE,OAAO,EAAE,UAAU,EAAE,qDAAc,CAAC,KAAK,EAAE,SAAS,EAAE,8BAA4B,CAAC,WAAW,EAAE;YAC1G,EAAE,MAAM,EAAE,OAAO,EAAE,UAAU,EAAE,qDAAc,CAAC,KAAK,EAAE,SAAS,EAAE,8BAA4B,CAAC,WAAW,EAAE;YAC1G,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,qDAAc,CAAC,IAAI,EAAE,SAAS,EAAE,8BAA4B,CAAC,UAAU,EAAE;SACxG,CAAC;QAEF,mBAAc,GAAG;YACf,EAAE,MAAM,EAAE,SAAS,EAAE,UAAU,EAAE,qDAAc,CAAC,OAAO,EAAE,KAAK,EAAE,EAAE,EAAE;SACrE,CAAC;IAQF,CAAC;IAND,IAAI,YAAY;QACd,OAAO,GAAG,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,IAAI,CAAC;IACrE,CAAC;IAMD,QAAQ;QACN,IAAI,CAAC,YAAY,GAAG,IAAI,0DAAkB,EAAE,CAAC;QAC7C,MAAM,CAAC,8BAA4B,CAAC,6BAA6B,CAAC,GAAG,GAAG,EAAE;YACxE,OAAO,IAAI,CAAC,OAAO,CAAC;QACtB,CAAC,CAAC;QAEF,MAAM,CAAC,8BAA4B,CAAC,sCAAsC,CAAC,GAAG,GAAG,EAAE;YACjF,OAAO,IAAI,CAAC,mBAAmB,CAAC;QAClC,CAAC,CAAC;QAEF,MAAM,CAAC,8BAA4B,CAAC,gCAAgC,CAAC,GAAG,GAAG,EAAE;YAC3E,OAAO,IAAI,CAAC,WAAW,CAAC;QAC1B,CAAC,CAAC;QAEF,IAAI,aAAa,GAAG,IAAI,CAAC,mBAAmB,CAAC,SAAS,CAAC,CAAC,EAAU,EAAE,EAAE;YACpE,IAAI,EAAE,EAAE;gBACN,MAAM,GAAG,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;gBAC1D,IAAI,CAAC,GAAG,CAAC,UAAU,EAAE;oBACnB,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC;iBAC1B;aACF;QACH,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;IACzC,CAAC;IAED,eAAe;QACb,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;IAC1B,CAAC;IAED,WAAW;QACT,IAAI,CAAC,aAAa,IAAI,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC;IACzE,CAAC;IAED,OAAO;QACL,IAAI,CAAC,YAAY,GAAG,IAAI,0DAAkB,EAAE,CAAC;QAC7C,IAAI,CAAC,SAAS,GAAG,EAAE,CAAC;QACpB,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC7B,IAAI,CAAC,oBAAoB,EAAE,CAAC;IAC9B,CAAC;IAED,cAAc,CAAC,MAA0B;QACvC,MAAM,CAAC,UAAU,GAAG,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC;QACjD,MAAM,CAAC,cAAc,GAAG,IAAI,CAAC,YAAY,CAAC,cAAc,CAAC;QACzD,MAAM,CAAC,iBAAiB,GAAG,IAAI,CAAC,YAAY,CAAC,iBAAiB,CAAC;QAC/D,MAAM,CAAC,KAAK,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC;QACvC,MAAM,CAAC,oBAAoB,GAAG,IAAI,CAAC,YAAY,CAAC,oBAAoB,CAAC;QACrE,MAAM,CAAC,mBAAmB,GAAG,IAAI,CAAC,YAAY,CAAC,mBAAmB,CAAC;QAEnE,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACnC,CAAC;IAEM,IAAI,CAAC,IAAwB;QAClC,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;QACvB,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;QAClF,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;QACzB,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACxB,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC9B,CAAC;IAED,eAAe,CAAC,OAAe;QAC7B,MAAM,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,aAAa,CAAC,aAAa,CAAC,4EAA4E,CAAC,CAAC;QAC9H,IAAI,CAAC,mBAAmB,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC;IACxC,CAAC;IAED,cAAc;QACZ,IAAI,CAAC,eAAe,GAAG,KAAK,CAAC;QAC7B,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC;QAC7B,IAAI,CAAC,mBAAmB,CAAC,aAAa,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;QAC5E,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,YAAY,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;QACtD,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,YAAY,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;IACvD,CAAC;IAED,iBAAiB;QACf,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC;QAC5B,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC;QAC7B,MAAM,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,aAAa,CAAC,aAAa,CAAC,eAAe,CAAC,CAAC;QAC1E,WAAW,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;QACjD,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,YAAY,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;QACtD,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,YAAY,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;IACvD,CAAC;IAED,YAAY;QACV,IAAI,CAAC,gBAAgB,GAAG,KAAK,CAAC;IAChC,CAAC;CACF;AAjIQ,uCAAU,GAAG,MAAM,CAAC;AACpB,yCAAY,GAAG,QAAQ,CAAC;AACxB,wCAAW,GAAG,OAAO,CAAC;AACtB,wCAAW,GAAG,OAAO,CAAC;AACtB,uCAAU,GAAG,SAAS,CAAC;AACvB,0DAA6B,GAAG,SAAS,CAAC;AAC1C,mEAAsC,GAAG,iBAAiB,CAAC;AAC3D,6DAAgC,GAAG,YAAY,CAAC;;YAiC9B,wDAAU;;AAnBQ;IAA1C,+DAAS,CAAC,WAAW,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;8BAAO,wDAAU;0DAAC;AACP;IAApD,+DAAS,CAAC,qBAAqB,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;8BAAsB,wDAAU;yEAAC;AAvB1E,4BAA4B;IAJxC,+DAAS,CAAC;QACT,QAAQ,EAAE,qCAAqC;QAC/C,uPAAsD;KACvD,CAAC;qCA0CyB,wDAAU;GAzCxB,4BAA4B,CAkIxC;AAlIwC;;;;;;;;;;;;;;;;;;;;ACVY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACAW;AACX;AAER;AAM7C,IAAa,+BAA+B,uCAA5C,MAAa,+BAA+B;IAqB1C;QAXA,oBAAe,GAAG,IAAI,CAAC;QACvB,cAAS,GAAG,IAAI,CAAC;QACjB,qBAAgB,GAAG,IAAI,CAAC;QACxB,mBAAc,GAAmB,EAAE,CAAC;QAGpC,mBAAc,GAAG,IAAI,0DAAY,EAAsB,CAAC;QACxD,wBAAmB,GAAG,IAAI,oDAAe,CAAS,CAAC,CAAC,CAAC;QACrD,YAAO,GAAG,IAAI,oDAAe,CAAqB,IAAI,CAAC,CAAC;QACxD,gBAAW,GAAG,IAAI,oDAAe,CAAU,KAAK,CAAC,CAAC;IAEnC,CAAC;IAEhB,QAAQ;QACN,IAAI,CAAC,YAAY,GAAG,IAAI,0DAAkB,EAAE,CAAC;QAC7C,MAAM,CAAC,iCAA+B,CAAC,6BAA6B,CAAC;YACnE,GAAG,EAAE;gBACH,OAAO,IAAI,CAAC,OAAO,CAAC;YACtB,CAAC,CAAC;QAEJ,MAAM,CACJ,iCAA+B,CAAC,sCAAsC,CACvE,GAAG,GAAG,EAAE;YACP,OAAO,IAAI,CAAC,mBAAmB,CAAC;QAClC,CAAC,CAAC;QAEF,MAAM,CAAC,iCAA+B,CAAC,gCAAgC,CAAC;YACtE,GAAG,EAAE;gBACH,OAAO,IAAI,CAAC,WAAW,CAAC;YAC1B,CAAC,CAAC;QAEJ,MAAM,uBAAuB,GAAG,IAAI,CAAC,mBAAmB,CAAC,SAAS,CAChE,CAAC,EAAU,EAAE,EAAE;YACb,IAAI,EAAE,EAAE;gBACN,MAAM,GAAG,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;gBAC5D,IAAI,CAAC,GAAG,CAAC,UAAU,EAAE;oBACnB,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC;iBAC1B;aACF;QACH,CAAC,CACF,CAAC;QAEF,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC;IACpD,CAAC;IAED,OAAO;QACL,IAAI,CAAC,YAAY,GAAG,IAAI,0DAAkB,EAAE,CAAC;QAC7C,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC/B,CAAC;IAED,cAAc,CAAC,MAA0B;QACvC,IAAI,CAAC,OAAO,EAAE,CAAC;QACf,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;QACtB,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACnC,CAAC;IAEM,IAAI,CAAC,IAAwB;QAClC,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;QACvB,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,iBAAiB,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC;QAChE,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;QACzB,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACxB,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC9B,CAAC;IAED,YAAY;QACV,IAAI,CAAC,gBAAgB,GAAG,KAAK,CAAC;IAChC,CAAC;CACF;AA5EQ,0CAAU,GAAG,mBAAmB,CAAC;AACjC,4CAAY,GAAG,QAAQ,CAAC;AACxB,2CAAW,GAAG,OAAO,CAAC;AACtB,2CAAW,GAAG,OAAO,CAAC;AACtB,0CAAU,GAAG,SAAS,CAAC;AACvB,6DAA6B,GAAG,SAAS,CAAC;AAC1C,sEAAsC,GAAG,iBAAiB,CAAC;AAC3D,gEAAgC,GAAG,YAAY,CAAC;AAR5C,+BAA+B;IAJ3C,+DAAS,CAAC;QACT,QAAQ,EAAE,wCAAwC;QAClD,gQAAyD;KAC1D,CAAC;;GACW,+BAA+B,CA6E3C;AA7E2C;;;;;;;;;;;;;;;;;;;;ACTc;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACAR;AAEqH;AACtE;AACU;AAO3G,IAAa,kCAAkC,GAA/C,MAAa,kCAAkC;IAW7C,YACU,6BAA4D,EAC5D,6BAA4D,EAC5D,6BAA4D;QAF5D,kCAA6B,GAA7B,6BAA6B,CAA+B;QAC5D,kCAA6B,GAA7B,6BAA6B,CAA+B;QAC5D,kCAA6B,GAA7B,6BAA6B,CAA+B;QAbtE,cAAS,GAAG,IAAI,CAAC;QAGjB,eAAU,GAAG,KAAK,CAAC;IAWf,CAAC;IAEL,QAAQ;IACR,CAAC;IAEM,IAAI,CAAC,QAA4E;QACtF,IAAI,QAAQ,YAAY,4DAAoB,EAAE;YAC5C,IAAI,CAAC,cAAc,GAAG,KAAK,CAAC;YAC5B,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC;SAC3B;aAAM,IAAI,QAAQ,YAAY,4DAAoB,EAAE;YACnD,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;YAC3B,IAAI,CAAC,YAAY,GAAG,QAAgC,CAAC;SACtD;aAAK,IAAI,QAAQ,YAAY,4DAAoB,EAAE;YAClD,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;YAC3B,IAAI,CAAC,YAAY,GAAG,QAAgC,CAAC;SACtD;QAED,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;IACzB,CAAC;IAEK,QAAQ;;YACZ,IAAI,CAAC,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;gBAClF,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;gBAEvB,IAAI,MAA4B,CAAC;gBACjC,IAAG,IAAI,CAAC,SAAS,EAAE;oBACjB,MAAM,GAAG,MAAM,IAAI,CAAC,6BAA6B,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;iBAC7E;qBAAM,IAAG,IAAI,CAAC,YAAY,EAAE;oBAC3B,MAAM,GAAG,MAAM,IAAI,CAAC,6BAA6B,CAAC,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC;iBAChF;qBAAK,IAAG,IAAI,CAAC,YAAY,EAAE;oBAC1B,MAAM,GAAG,MAAM,IAAI,CAAC,6BAA6B,CAAC,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC;iBAChF;gBAED,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;gBACxB,IAAI,MAAM,KAAK,IAAI,EAAE;oBACnB,IAAI,CAAC,aAAa,EAAE,CAAC;iBACtB;qBAAM,IAAI,MAAM,KAAK,KAAK,EAAE;oBAC3B,IAAI,CAAC,MAAM,GAAG,uBAAuB,CAAC;iBACvC;qBAAM;oBACL,MAAM,UAAU,GAAG,MAAoB,CAAC;oBACxC,IAAI,UAAU,EAAE;wBACd,IAAI,CAAC,MAAM,GAAG,UAAU,CAAC,OAAO,CAAC;qBAClC;iBACF;aACF;QACH,CAAC;KAAA;IAED,aAAa;QACX,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;QACtB,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;QACzB,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;QACzB,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;QACnB,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;IACxB,CAAC;CACF;;YAzD0C,uEAA6B;YAC7B,uEAA6B;YAC7B,wFAA6B;;AAd3D,kCAAkC;IAL9C,+DAAS,CAAC;QACT,QAAQ,EAAE,4CAA4C;QACtD,4QAA6D;KAE9D,CAAC;qCAayC,uEAA6B;QAC7B,uEAA6B;QAC7B,wFAA6B;GAd3D,kCAAkC,CAqE9C;AArE8C;;;;;;;;;;;;;;;;;;;;ACXI;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACAD;AAQlD,IAAa,6BAA6B,GAA1C,MAAa,6BAA6B;IAGxC;QAFA,cAAS,GAAG,IAAI,CAAC;IAGb,CAAC;IAEL,QAAQ;IACR,CAAC;IAEM,IAAI;QACT,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;IACzB,CAAC;IAEK,QAAQ;;YACZ,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;QACxB,CAAC;KAAA;IAED,QAAQ;QACN,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;IACxB,CAAC;CACF;AApBY,6BAA6B;IANzC,+DAAS,CAAC;QACT,QAAQ,EAAE,qCAAqC;QAC/C,uPAAsD;KAEvD,CAAC;;GAEW,6BAA6B,CAoBzC;AApByC;;;;;;;;;;;;;;;;;;;;ACRQ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACAA;AAEiB;AAQnE,IAAa,4BAA4B,GAAzC,MAAa,4BAA4B;IAQvC,YACU,0BAAsD;QAAtD,+BAA0B,GAA1B,0BAA0B,CAA4B;QARhE,cAAS,GAAG,IAAI,CAAC;QAEjB,eAAU,GAAG,KAAK,CAAC;IAOf,CAAC;IAEL,QAAQ;IACR,CAAC;IAEM,IAAI,CAAC,QAA2B;QACrC,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC;QAC1B,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;IACzB,CAAC;IAEK,QAAQ;;YACZ,IAAI,IAAI,CAAC,SAAS,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;gBACtC,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;gBACvB,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,0BAA0B,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;gBAC/E,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;gBACxB,IAAI,MAAM,KAAK,IAAI,EAAE;oBACnB,IAAI,CAAC,aAAa,EAAE,CAAC;iBACtB;qBAAM,IAAI,MAAM,KAAK,KAAK,EAAE;oBAC3B,IAAI,CAAC,MAAM,GAAG,uBAAuB,CAAC;iBACvC;qBAAM;oBACL,MAAM,UAAU,GAAG,MAAoB,CAAC;oBACxC,IAAI,UAAU,EAAE;wBACd,IAAI,CAAC,MAAM,GAAG,UAAU,CAAC,OAAO,CAAC;qBAClC;iBACF;aACF;QACH,CAAC;KAAA;IAED,aAAa;QACX,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;QACtB,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;QACnB,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;IACxB,CAAC;CACF;;YAlCuC,gFAA0B;;AATrD,4BAA4B;IALxC,+DAAS,CAAC;QACT,QAAQ,EAAE,oCAAoC;QAC9C,oPAAqD;KAEtD,CAAC;qCAUsC,gFAA0B;GATrD,4BAA4B,CA2CxC;AA3CwC;;;;;;;;;;;;;;;;;;;;ACVO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACA0C;AACT;AAGuB;AACvD;AAC4B;AAC/B;AACa;AACe;AACtB;AAOpD,IAAa,0BAA0B,GAAvC,MAAa,0BAA2B,SAAQ,yDAAiB;IAiB/D,YACU,YAAyB,EACzB,iBAA6C,EAC7C,iBAA6C,EAC7C,YAAyB;QAEjC,KAAK,EAAE,CAAC;QALA,iBAAY,GAAZ,YAAY,CAAa;QACzB,sBAAiB,GAAjB,iBAAiB,CAA4B;QAC7C,sBAAiB,GAAjB,iBAAiB,CAA4B;QAC7C,iBAAY,GAAZ,YAAY,CAAa;QAjBnC,cAAS,GAAG,IAAI,CAAC;QACjB,eAAU,GAAG,KAAK,CAAC;QAOnB,oBAAe,GAAG,MAAM,CAAC;QACzB,wBAAmB,GAAG,QAAQ,CAAC;QAEvB,mBAAc,GAAmB,EAAE,CAAC;IAS5C,CAAC;IAED,IAAI,cAAc;QAChB,OAAO,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,oDAAY,CAAC,WAAW,CAAC,CAAC;IACjE,CAAC;IAED,IAAI,eAAe;QACjB,OAAO,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,oDAAY,CAAC,YAAY,CAAC,CAAC;IAClE,CAAC;IAED,QAAQ;QACN,KAAK,CAAC,QAAQ,EAAE,CAAC;QAEjB,IAAI,IAAI,CAAC,cAAc,EAAE;YACvB,IAAI,CAAC,iBAAiB,CAAC,GAAG,EAAE,CAAC;SAC9B;QAED,IAAI,CAAC,SAAS,GAAG,IAAI,yDAAiB,EAAE,CAAC;QAEzC,MAAM,YAAY,GAAG,IAAI,CAAC,iBAAiB,CAAC,UAAU,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE;YACtE,IAAI,IAAI,EAAE;gBACR,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;aACnE;QACH,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;IACzC,CAAC;IAED,WAAW;QACT,KAAK,CAAC,WAAW,EAAE,CAAC;QACpB,IAAI,CAAC,cAAc,IAAI,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC,CAAC;QAC7E,IAAI,CAAC,cAAc,GAAG,EAAE,CAAC;IAC3B,CAAC;IAED,kBAAkB;QAChB,KAAK,CAAC,kBAAkB,EAAE,CAAC;IAC7B,CAAC;IAEK,QAAQ;;YACZ,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;YACvB,IAAI,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE;gBAC9B,OAAO;aACR;YAED,MAAM,KAAK,GAAG,kBACT,IAAI,CAAC,SAAS,EACd,IAAI,CAAC,aAAa,CAAC,KAAK,IAC3B,WAAW,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,IAAI,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,GAC9F,CAAC;YAEvB,MAAM,MAAM,GAAG,KAAK,CAAC,EAAE;gBACrB,CAAC,CAAC,MAAM,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,KAAK,CAAC;gBAC1C,CAAC,CAAC,MAAM,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;YAE5C,IAAI,MAAM,YAAY,kDAAU,EAAE;gBAChC,IAAI,MAAM,CAAC,IAAI,KAAK,qDAAa,CAAC,qBAAqB,EAAE;oBACvD,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,SAAS,CAAC,EAAE,CAAC,IAAI,CAAC,mBAAmB,CAAC,EAAE,uBAAuB,EAAE,CAAC,CAAC;iBACtH;aACF;iBAAM,IAAI,MAAM,EAAE;gBACjB,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;gBACtB,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;gBACtB,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;gBACxB,IAAI,CAAC,iBAAiB,CAAC,8BAA8B,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;aACrE;QACH,CAAC;KAAA;IAEK,cAAc,CAAC,OAAoB;;YACvC,OAAO,CAAC,aAAa,EAAE,CAAC;QAC1B,CAAC;KAAA;IAEK,aAAa,CAAC,OAAoB;;YACtC,OAAO,CAAC,eAAe,EAAE,CAAC;QAC5B,CAAC;KAAA;IAEK,OAAO;;YACX,IAAI,CAAC,iBAAiB,CAAC,8BAA8B,CAAC,IAAI,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;QAC/E,CAAC;KAAA;IAEM,IAAI,CAAC,QAA4B;QACtC,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;QACxB,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,yDAAiB,EAAE,CAAC;QAClF,IAAI,CAAC,UAAU,EAAE,CAAC;QAClB,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;IACzB,CAAC;IAEO,UAAU;QAChB,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC;YAC3C,CAAC,IAAI,CAAC,eAAe,CAAC,EAAE;gBACtB,IAAI,CAAC,SAAS,CAAC,IAAI;gBACnB,yDAAU,CAAC,OAAO,CAAC;oBACjB,yDAAU,CAAC,QAAQ;oBACnB,yDAAU,CAAC,SAAS,CAAC,CAAC,CAAC;oBACvB,yDAAU,CAAC,SAAS,CAAC,EAAE,CAAC;iBACzB,CAAC;aACH;YACD,OAAO,EAAE;gBACP,IAAI,CAAC,SAAS,CAAC,OAAO;gBACtB,yDAAU,CAAC,OAAO,CAAC;oBACjB,yDAAU,CAAC,QAAQ;oBACnB,yDAAU,CAAC,SAAS,CAAC,CAAC,CAAC;oBACvB,yDAAU,CAAC,SAAS,CAAC,EAAE,CAAC;iBACzB,CAAC;aACH;YACD,SAAS,EAAE;gBACT,IAAI,CAAC,SAAS,CAAC,SAAS;gBACxB,yDAAU,CAAC,OAAO,CAAC;oBACjB,yDAAU,CAAC,QAAQ;iBACpB,CAAC;aACH;YACD,YAAY,EAAE;gBACZ,IAAI,CAAC,SAAS,CAAC,YAAY;gBAC3B,yDAAU,CAAC,OAAO,CAAC;oBACjB,yDAAU,CAAC,QAAQ;oBACnB,gFAAc,EAAE;iBACjB,CAAC;aACH;YACD,YAAY,EAAE;gBACZ,IAAI,CAAC,SAAS,CAAC,YAAY;gBAC3B,yDAAU,CAAC,OAAO,CAAC;oBACjB,yDAAU,CAAC,QAAQ;oBACnB,yDAAiB,CAAC,cAAc;iBACjC,CAAC;aACH;YACD,cAAc,EAAE;gBACd,IAAI,CAAC,SAAS,CAAC,cAAc;gBAC7B,yDAAU,CAAC,OAAO,CAAC;oBACjB,yDAAU,CAAC,QAAQ;oBACnB,yDAAiB,CAAC,uBAAuB;iBAC1C,CAAC;aACH;YACD,SAAS,EAAE;gBACT,IAAI,CAAC,SAAS,CAAC,SAAS;gBACxB,yDAAU,CAAC,OAAO,CAAC;oBACjB,yDAAU,CAAC,QAAQ;oBACnB,yDAAiB,CAAC,cAAc;iBACjC,CAAC;aACH;YACD,SAAS,EAAE;gBACT,IAAI,CAAC,SAAS,CAAC,SAAS;gBACxB,yDAAU,CAAC,OAAO,CAAC;oBACjB,yDAAU,CAAC,QAAQ;oBACnB,gFAAc,EAAE;iBACjB,CAAC;aACH;SACF,CAAC,CAAC;IACL,CAAC;CACF;;YAxJyB,0DAAW;YACN,oEAA0B;YAC1B,oEAA0B;YAC/B,qDAAW;;AAnBnC;IADC,+DAAS,CAAC,qFAA6B,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;8BACzC,qFAA6B;kFAAC;AAFnD,0BAA0B;IALtC,+DAAS,CAAC;QACT,QAAQ,EAAE,kCAAkC;QAC5C,8OAAmD;KAEpD,CAAC;qCAmBwB,0DAAW;QACN,oEAA0B;QAC1B,oEAA0B;QAC/B,qDAAW;GArBxB,0BAA0B,CA0KtC;AA1KsC;;;;;;;;;;;;;;;;;;;;ACjBY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACAD;AACkB;AAEL;AACA;AAEgC;AAO/F,IAAa,4BAA4B,GAAzC,MAAa,4BAA4B;IASvC,YACU,YAAyB,EACzB,oBAAmD,EACnD,kBAA+C;QAF/C,iBAAY,GAAZ,YAAY,CAAa;QACzB,yBAAoB,GAApB,oBAAoB,CAA+B;QACnD,uBAAkB,GAAlB,kBAAkB,CAA6B;QAXzD,cAAS,GAAG,IAAI,CAAC;QACjB,eAAU,GAAG,KAAK,CAAC;QACnB,cAAS,GAAG,KAAK,CAAC;QAClB,kBAAa,GAAG,KAAK,CAAC;IAUtB,CAAC;IAED,QAAQ;QAEN,IAAI,CAAC,wBAAwB,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC;YACtD,KAAK,EAAE;gBACL,EAAE;gBACF,yDAAU,CAAC,OAAO,CAAC;oBACjB,yDAAU,CAAC,QAAQ;oBACnB,yDAAU,CAAC,KAAK;oBAChB,yEAAc,EAAE;oBAChB,yDAAU,CAAC,SAAS,CAAC,CAAC,CAAC;oBACvB,yDAAU,CAAC,SAAS,CAAC,EAAE,CAAC;iBACzB,CAAC;aACH;SACF,CAAC,CAAC;QAEH,IAAI,CAAC,wBAAwB,CAAC,YAAY,CAAC,SAAS,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC,CAAC;IACzF,CAAC;IAEM,IAAI;QACT,IAAI,CAAC,qBAAqB,EAAE,CAAC;QAC7B,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;IAC7B,CAAC;IAEM,gBAAgB;QACrB,IAAI,CAAC,qBAAqB,EAAE,CAAC;QAC7B,IAAI,CAAC,cAAc,GAAG,KAAK,CAAC;IAC9B,CAAC;IAEK,QAAQ;;YACZ,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;YACtB,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;YACvB,IAAI,IAAI,CAAC,wBAAwB,CAAC,OAAO,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE;gBAChE,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;gBACvB,OAAO;aACR;YAED,MAAM,KAAK,GAAG,IAAI,CAAC,wBAAwB,CAAC,KAA+B,CAAC;YAC5E,IAAI,IAAI,CAAC,cAAc,EAAE;gBACvB,IAAI,CAAC,oBAAoB,CAAC,MAAM,CAAC,KAAK,CAAC;qBACpC,IAAI,CAAC,CAAC,QAA8B,EAAE,EAAE;oBACvC,IAAI,QAAQ,YAAY,kDAAU,IAAI,QAAQ,CAAC,IAAI,KAAK,qDAAa,CAAC,gBAAgB,EAAE;wBACtF,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;wBACvB,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;qBAC3B;yBAAM,IAAI,QAAQ,EAAE;wBACnB,IAAI,CAAC,SAAS,EAAE,CAAC;qBAClB;gBACH,CAAC,CAAC;aACL;iBAAI;gBACH,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,KAAK,CAAC;qBAClC,IAAI,CAAC,CAAC,QAA4B,EAAE,EAAE;oBACrC,IAAI,QAAQ,YAAY,kDAAU,IAAI,QAAQ,CAAC,IAAI,KAAK,qDAAa,CAAC,gBAAgB,EAAE;wBACtF,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;wBACvB,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;qBAC3B;yBAAM,IAAI,QAAQ,EAAE;wBACnB,IAAI,CAAC,SAAS,EAAE,CAAC;qBAClB;gBACH,CAAC,CAAC;aACL;QACH,CAAC;KAAA;IAEO,qBAAqB;QAC3B,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;QACxB,IAAI,CAAC,wBAAwB,CAAC,KAAK,EAAE,CAAC;QACtC,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;QACvB,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;IACzB,CAAC;IAEO,SAAS;QACf,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;QACxB,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;QACtB,IAAI,CAAC,wBAAwB,CAAC,KAAK,EAAE,CAAC;QACtC,IAAI,CAAC,wBAAwB,CAAC,eAAe,EAAE,CAAC;QAChD,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,wBAAwB,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE;YACnE,MAAM,OAAO,GAAG,IAAI,CAAC,wBAAwB,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;YAC7D,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;QAC1B,CAAC,CAAC,CAAC;IACL,CAAC;CACF;;YAnFyB,0DAAW;YACH,uEAA6B;YAC/B,qEAA2B;;AAZ9C,4BAA4B;IALxC,+DAAS,CAAC;QACT,QAAQ,EAAE,qCAAqC;QAC/C,uPAAsD;KAEvD,CAAC;qCAWwB,0DAAW;QACH,uEAA6B;QAC/B,qEAA2B;GAZ9C,4BAA4B,CA6FxC;AA7FwC;;;;;;;;;;;;;;;;;;;;ACba;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACAJ;AAG6C;AAQ/F,IAAa,+BAA+B,GAA5C,MAAa,+BAA+B;IAO1C,YACU,6BAA4D,EAC5D,iBAA8C;QAD9C,kCAA6B,GAA7B,6BAA6B,CAA+B;QAC5D,sBAAiB,GAAjB,iBAAiB,CAA6B;QARxD,cAAS,GAAG,IAAI,CAAC;QACjB,eAAU,GAAG,KAAK,CAAC;IAQf,CAAC;IAEL,QAAQ;IACR,CAAC;IAEM,IAAI,CAAC,WAAmC;QAC7C,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;QACxB,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;QACvB,IAAI,CAAC,YAAY,GAAG,WAAW,CAAC;QAChC,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;IAC5B,CAAC;IAEM,aAAa,CAAC,WAAmB;QACtC,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;QACxB,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;QACvB,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC;QAC3B,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;IACjC,CAAC;IAEK,QAAQ;;YACZ,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;YACvB,MAAM,MAAM,GAAG,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,IAAI,CAAC,6BAA6B,CAAC,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC;gBACvG,CAAC,CAAC,MAAM,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;YAC1D,IAAI,MAAM,IAAI,IAAI,EAAE;gBAClB,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;gBACtB,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;gBACzB,IAAI,CAAC,WAAW,GAAG,CAAC,CAAC;aACtB;QACH,CAAC;KAAA;IAED,QAAQ;QACN,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;QACtB,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;QACzB,IAAI,CAAC,WAAW,GAAG,CAAC,CAAC;IACvB,CAAC;CACF;;YArC0C,uEAA6B;YACzC,qEAA2B;;AAT7C,+BAA+B;IAN3C,+DAAS,CAAC;QACT,QAAQ,EAAE,wCAAwC;QAClD,gQAAyD;KAE1D,CAAC;qCAUyC,uEAA6B;QACzC,qEAA2B;GAT7C,+BAA+B,CA6C3C;AA7C2C;;;;;;;;;;;;;;;;;;;;ACXQ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACAS;AACO;AAEG;AACvB;AAE+C;AAO/F,IAAa,6BAA6B,GAA1C,MAAa,6BAA6B;IAUxC,YACU,YAAyB,EACzB,oBAAmD,EACnD,iBAA8C,EAC9C,oBAAyC;QAHzC,iBAAY,GAAZ,YAAY,CAAa;QACzB,yBAAoB,GAApB,oBAAoB,CAA+B;QACnD,sBAAiB,GAAjB,iBAAiB,CAA6B;QAC9C,yBAAoB,GAApB,oBAAoB,CAAqB;QAbnD,cAAS,GAAG,IAAI,CAAC;QACjB,eAAU,GAAG,KAAK,CAAC;IAaf,CAAC;IAEL,QAAQ;QACN,MAAM,SAAS,GAAG,IAAI,CAAC,oBAAoB,CAAC,YAAY,EAAE,CAAC;QAC3D,IAAI,CAAC,KAAK,GAAG,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;IACjD,CAAC;IAED,WAAW;IACX,CAAC;IAEM,IAAI,CAAC,WAAiC;QAC3C,IAAI,CAAC,oBAAoB,CAAC,kCAAkC,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;QAC7E,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;QACxB,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;QAC3B,IAAI,CAAC,YAAY,GAAG,WAAW,CAAC;QAChC,IAAI,CAAC,QAAQ,EAAE,CAAC;QAChB,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;IACzB,CAAC;IAEM,iBAAiB,CAAC,SAA6B;QACpD,IAAI,CAAC,iBAAiB,CAAC,kCAAkC,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;QACxE,IAAI,CAAC,cAAc,GAAG,KAAK,CAAC;QAC5B,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC;QAC5B,IAAI,CAAC,eAAe,GAAG,qDAAc,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;QACxD,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;QACxB,IAAI,CAAC,QAAQ,EAAE,CAAC;QAChB,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;IACzB,CAAC;IAEK,QAAQ;;YACZ,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;YACvB,IAAI,IAAI,CAAC,wBAAwB,CAAC,OAAO,EAAE;gBACzC,OAAO;aACR;YAED,IAAI;gBACF,IAAI,KAAK,qBACJ,IAAI,CAAC,wBAAwB,CAAC,KAAK,IACtC,MAAM,EAAE,qDAAc,CAAC,IAAI,CAAC,wBAAwB,CAAC,KAAK,CAAC,MAAM,CAAC,EAClE,EAAE,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,GACpE,CAAC;gBACF,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,KAAK,GAAG,KAA6B,CAAC,CAAC,CAAC,KAAK,GAAG,KAA2B,CAAC;gBAClG,MAAM,MAAM,GAAG,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,MAAM,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;gBAC5H,IAAI,MAAM,EAAE;oBACV,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;oBACtB,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;iBACzB;aACF;YAAC,OAAO,KAAK,EAAE;gBACd,OAAO,CAAC,GAAG,CAAC,OAAO,EAAE,KAAK,CAAC;aAC5B;QACH,CAAC;KAAA;IAED,QAAQ;QACN,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,IAAI,CAAC,oBAAoB,CAAC,iCAAiC,CAAC,IAAI,CAAC,YAAY,EAAE,KAAK,CAAC;YACzG,CAAC,CAAC,IAAI,CAAC,iBAAiB,CAAC,iCAAiC,CAAC,IAAI,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC;QACrF,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;QACxB,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;QACtB,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;QACzB,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;QACvB,IAAI,CAAC,wBAAwB,CAAC,KAAK,CAAC;QACpC,IAAI,CAAC,WAAW,EAAE,CAAC;IACrB,CAAC;IAEO,QAAQ;QACd,IAAI,CAAC,wBAAwB,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC;YACtD,SAAS,EAAE;gBACT,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,SAAS;gBAC7E,yDAAU,CAAC,OAAO,CAAC;oBACjB,yDAAU,CAAC,QAAQ;oBACnB,yDAAU,CAAC,SAAS,CAAC,CAAC,CAAC;oBACvB,yDAAU,CAAC,SAAS,CAAC,EAAE,CAAC;iBACzB,CAAC;aACH;YACD,QAAQ,EAAE;gBACR,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ;gBAC3E,yDAAU,CAAC,OAAO,CAAC;oBACjB,yDAAU,CAAC,QAAQ;oBACnB,yDAAU,CAAC,SAAS,CAAC,CAAC,CAAC;oBACvB,yDAAU,CAAC,SAAS,CAAC,EAAE,CAAC;iBACzB,CAAC;aACH;YACD,MAAM,EAAE;gBACN,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM;gBAChD,yDAAU,CAAC,OAAO,CAAC;oBACjB,yDAAU,CAAC,QAAQ;iBACpB,CAAC;aACH;SACF,CAAC,CAAC;IACL,CAAC;CACF;;YA7FyB,0DAAW;YACH,uEAA6B;YAChC,qEAA2B;YACxB,2DAAmB;;AAdxC,6BAA6B;IALzC,+DAAS,CAAC;QACT,QAAQ,EAAE,sCAAsC;QAChD,0PAAuD;KAExD,CAAC;qCAYwB,0DAAW;QACH,uEAA6B;QAChC,qEAA2B;QACxB,2DAAmB;GAdxC,6BAA6B,CAwGzC;AAxGyC;;;;;;;;;;;;;;;;;;;;ACbU;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACAmB;AAOvE,IAAa,8BAA8B,GAA3C,MAAa,8BAA8B;IAWzC;QAPA,cAAS,GAAG,IAAI,CAAC;QAGV,qBAAgB,GAAG,IAAI,0DAAY,EAAU,CAAC;IAKjD,CAAC;IAEL,QAAQ;IACR,CAAC;IAEM,IAAI,CAAC,QAAgB,EAAE,WAAmB,IAAI;QACnD,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC;QAC1B,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACzB,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;IACzB,CAAC;IAED,aAAa;QACX,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;IACxB,CAAC;IAED,cAAc;QACZ,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;QACtB,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAC5C,CAAC;CACF;AA7BC;IADC,2DAAK,EAAE;;yEACiB;AAFd,8BAA8B;IAL1C,+DAAS,CAAC;QACT,QAAQ,EAAE,sCAAsC;QAChD,0PAAuD;KAExD,CAAC;;GACW,8BAA8B,CA+B1C;AA/B0C;;;;;;;;;;;;;;;;;;;;;;;ACPG;AACH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACDO;AACT;AAED;AACgD;AACvC;AACuC;AAOxF,IAAa,sBAAsB,GAAnC,MAAa,sBAAsB;IAMjC,YACU,OAAe,EACf,oBAAyC,EACzC,YAAyB;QAFzB,YAAO,GAAP,OAAO,CAAQ;QACf,yBAAoB,GAApB,oBAAoB,CAAqB;QACzC,iBAAY,GAAZ,YAAY,CAAa;QARnC,cAAS,GAAG,IAAI,CAAC;QAEjB,YAAO,GAAqB,uDAAgB,CAAC,IAAI,CAAC;IAO9C,CAAC;IAEL,QAAQ;QACN,MAAM,IAAI,GAAG,IAAI,CAAC,oBAAoB,CAAC,YAAY,EAAE,CAAC;QACtD,IAAI,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,oDAAS,CAAC,KAAK,CAAC,CAAC,EAAE;YAC9C,MAAM,WAAW,GAAG,IAAI,CAAC,YAAY,CAAC,uBAAuB,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;YAChF,IAAI,CAAC,IAAI,GAAG,WAAW,CAAC,IAAI;YAC5B,IAAI,CAAC,QAAQ,GAAG,WAAW,CAAC,QAAQ,CAAC;SACtC;aACI;YACH,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;YACtB,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;SAC/B;IACH,CAAC;IAED,SAAS,CAAC,OAAO,GAAG,uDAAgB,CAAC,IAAI,EAAE,YAAoB,CAAC;QAC9D,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;QACvB,IAAI,OAAO,IAAI,uDAAgB,CAAC,IAAI,EAAE;YACpC,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,oBAAoB,EAAE,CAAC;SAC5C;aACI;YACH,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;SACxB;QACD,IAAI,CAAC,UAAU,GAAE,CAAC,SAAS,CAAC,CAAC;IAC/B,CAAC;IAEO,oBAAoB;QAC1B,IAAI,IAAI,GAAqB,uDAAgB,CAAC,cAAc,CAAC;QAC7D,QAAQ,IAAI,CAAC,IAAI,EAAE;YACjB,KAAK,oDAAY,CAAC,YAAY;gBAC5B,IAAI,GAAG,uDAAgB,CAAC,cAAc,CAAC;gBACvC,MAAM;YACR,KAAK,oDAAY,CAAC,WAAW;gBAC3B,IAAI,uDAAe,CAAC,eAAe,CAAC,IAAI,CAAC,QAAQ,EAAE,kDAAW,CAAC,GAAG,CAAC,EAAE;oBACnE,IAAI,GAAG,uDAAgB,CAAC,WAAW,CAAC;iBACrC;qBAAM,IAAI,uDAAe,CAAC,eAAe,CAAC,IAAI,CAAC,QAAQ,EAAE,kDAAW,CAAC,GAAG,CAAC,EAAE;oBAC1E,IAAI,GAAG,uDAAgB,CAAC,cAAc,CAAC;iBACxC;qBAAM,IAAI,uDAAe,CAAC,eAAe,CAAC,IAAI,CAAC,QAAQ,EAAE,kDAAW,CAAC,GAAG,CAAC,EAAE;oBAC1E,IAAI,GAAG,uDAAgB,CAAC,WAAW,CAAC;iBACrC;gBACD,MAAM;YACR,KAAK,oDAAY,CAAC,MAAM;gBACtB,IAAI,GAAG,uDAAgB,CAAC,WAAW,CAAC;gBACpC,MAAM;SACT;QACD,OAAO,IAAI,CAAC;IACd,CAAC;CACF;;YAlDoB,sDAAM;YACO,2DAAmB;YAC3B,qDAAW;;AATxB,sBAAsB;IALlC,+DAAS,CAAC;QACT,QAAQ,EAAE,6BAA6B;QACvC,+NAA8C;KAE/C,CAAC;qCAQmB,sDAAM;QACO,2DAAmB;QAC3B,qDAAW;GATxB,sBAAsB,CAyDlC;AAzDkC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACboE;AACF;AACA;AACF;AACT;AACF;AAEqB;AACD;AACJ;AACiB;AAClC;AACoB;AACa;AACA;AACJ;AACb;AACyB;AACxC;AAEe;AACA;AACJ;AACO;AACJ;AACmB;AAEb;AACS;AACf;AACa;AACP;AACJ;AACU;AACjB;AACa;AACd;AACE;AACE;AACM;AAEb;AACA;AAEmB;AACF;AACA;AACF;AACT;AACF;AAEiB;AACF;AACA;AACF;AAEA;AACF;AACA;AACF;AAEP;AACF;AACF;AACF;AAEmB;AACF;AAEA;AACF;AAEW;AACF;AACF;AACb;AACa;AACX;AACI;AACJ;AACP;AAC0B;AAEjC;AAEM;AACF;AACM;AACF;AACnB;AACgD;AACT;AACO;AACc;AACd;AACX;AACkB;AACF;AAElC;AAED;AAE+B;AACF;AACW;AAEF;AAEF;AACF;AAEM;AACF;AAExB;AACF;AAEU;AACF;AAEmB;AACF;AACb;AAEN;AACA;AACA;AAC0B;AAE/B;AACkB;AACT;AACf;AACa;AACX;AACI;AACJ;AACP;AACa;AAEtB;AAGjF,MAAM,cAAc,GAAG;IAC5B,4BAA4B,EAAE,qFAAwB;IACtD,2BAA2B,EAAE,oFAAuB;IACpD,2BAA2B,EAAE,oFAAuB;IACpD,0BAA0B,EAAE,mFAAsB;IAClD,qBAAqB,EAAE,8EAAkB;IACzC,oBAAoB,EAAE,6EAAiB;IAEvC,sBAAsB,EAAE,gFAAoB;IAC5C,6BAA6B,EAAE,uFAA0B;IACzD,wBAAwB,EAAE,kFAAqB;IAC/C,0BAA0B,EAAE,oFAAuB;IACnD,yBAAyB,EAAE,mFAAsB;IACjD,sBAAsB,EAAE,gFAAoB;IAE5C,mBAAmB,EAAE,8EAAkB;IAEvC,4BAA4B,EAAE,sFAAwB;IACtD,4BAA4B,EAAE,sFAAwB;IACtD,8BAA8B,EAAE,wFAA0B;IAC1D,4BAA4B,EAAE,sFAAwB;IACtD,0BAA0B,EAAE,oFAAsB;IAClD,oBAAoB,EAAE,8EAAiB;IACvC,mCAAmC,EAAE,6FAA8B;IACnE,qCAAqC,EAAE,+FAAgC;IACvE,8BAA8B,EAAE,mFAA0B;IAC1D,gCAAgC,EAAE,qFAA4B;IAC9D,qCAAqC,EAAE,+FAAgC;IACvE,yCAAyC,EAAE,oGAAmC;IAE9E,+BAA+B,EAAE,wFAA2B;IAC5D,8BAA8B,EAAE,uFAA2B;IAC3D,qCAAqC,EAAE,8FAAiC;IACxE,mBAAmB,EAAE,6EAAiB;IACtC,4BAA4B,EAAE,qFAAyB;IAEvD,8BAA8B,EAAE,wFAA2B;IAC3D,mCAAmC,EAAE,6FAA+B;IACpE,kCAAkC,EAAE,kGAA8B;IAClE,2BAA2B,EAAE,qFAAwB;IACrD,+BAA+B,EAAE,yFAA4B;IAC7D,wBAAwB,EAAE,kFAAsB;IAChD,8BAA8B,EAAE,wFAA2B;IAC3D,4BAA4B,EAAE,sFAAyB;IACvD,kCAAkC,EAAE,4FAA8B;IAClE,iCAAiC,EAAE,2FAA8B;IAEjE,wCAAwC,EAAE,kGAAmC;IAC7E,uCAAuC,EAAE,iGAAkC;IAE3E,6CAA6C,EAAE,uGAAsC;IACrF,4CAA4C,EAAE,uGAAqC;IACnF,qCAAqC,EAAC,gGAA+B;IAErE,6CAA6C,EAAE,uGAAuC;IACtF,4CAA4C,EAAE,sGAAsC;IACpF,2CAA2C,EAAE,qGAAqC;IAClF,0CAA0C,EAAE,oGAAoC;IAChF,oCAAoC,EAAE,8FAA+B;IACrE,wCAAwC,EAAE,kGAAkC;IAC5E,wCAAwC,EAAE,kGAAkC;IAC5E,yCAAyC,EAAE,mGAAmC;IAC9E,+CAA+C,EAAE,yGAAyC;IAE1F,+BAA+B,EAAE,yFAA2B;IAC5D,8BAA8B,EAAE,wFAA0B;IAE1D,mCAAmC,EAAE,6FAA+B;IACpE,kCAAkC,EAAE,4FAA8B;IAElE,6CAA6C,EAAE,uGAAuC;IACtF,4CAA4C,EAAE,sGAAsC;IACpF,kCAAkC,EAAE,4FAA6B;IACjE,4CAA4C,EAAE,sGAAqC;IACnF,2CAA2C,EAAE,qGAAoC;IACjF,mDAAmD,EAAE,6GAA4C;IACjG,kDAAkD,EAAE,4GAA2C;IAE/F,iCAAiC,EAAC,4FAA6B;IAC/D,iCAAiC,EAAE,4FAA6B;IAChE,+CAA+C,EAAE,0GAAyC;IAC1F,iCAAiC,EAAE,4FAA6B;IAEhE,8BAA8B,EAAE,yFAA2B;IAC3D,mCAAmC,EAAE,8FAA+B;IACpE,wCAAwC,EAAE,mGAAmC;IAC7E,2BAA2B,EAAE,sFAAwB;IACrD,+BAA+B,EAAE,0FAA4B;IAC7D,wBAAwB,EAAE,mFAAsB;IAChD,8BAA8B,EAAE,yFAA2B;IAC3D,4BAA4B,EAAE,uFAAyB;IACvD,kCAAkC,EAAE,6FAA8B;IAClE,4BAA4B,EAAE,uFAAyB;IAEvD,gCAAgC,EAAE,0FAA2B;IAC7D,+BAA+B,EAAE,yFAA0B;IAE3D,kCAAkC,EAAE,4FAA6B;IACjE,iCAAiC,EAAE,2FAA4B;IAC/D,iCAAiC,EAAE,2FAA4B;IAC/D,gCAAgC,EAAE,0FAA2B;IAE7D,iCAAiC,EAAE,2FAA4B;IAC/D,gCAAgC,EAAE,0FAA2B;IAE7D,gCAAgC,EAAE,0FAA2B;IAC7D,+BAA+B,EAAE,yFAA0B;IAC3D,+BAA+B,EAAE,yFAA0B;IAC3D,8BAA8B,EAAE,wFAAyB;IAEzD,0BAA0B,EAAE,oFAAsB;IAClD,yBAAyB,EAAE,mFAAqB;IAChD,0BAA0B,EAAE,oFAAsB;IAClD,yBAAyB,EAAE,mFAAqB;IAChD,wBAAwB,EAAE,kFAAoB;IAC9C,uBAAuB,EAAE,iFAAmB;IAE5C,iCAAiC,EAAE,2FAA4B;IAC/D,gCAAgC,EAAE,0FAA2B;IAC7D,gCAAgC,EAAE,0FAA2B;IAC7D,+BAA+B,EAAE,yFAA0B;IAE3D,oCAAoC,EAAE,8FAAgC;IACtE,mCAAmC,EAAE,6FAA+B;IACpE,kCAAkC,EAAE,4FAA8B;IAClE,2BAA2B,EAAE,qFAAwB;IACrD,sCAAsC,EAAE,gGAAkC;IAC1E,wBAAwB,EAAE,kFAAsB;IAChD,8BAA8B,EAAE,wFAA2B;IAC3D,4BAA4B,EAAE,sFAAyB;IACvD,kCAAkC,EAAE,4FAA8B;IAClE,4BAA4B,EAAE,sFAAyB;IAEvD,qBAAqB,EAAE,+EAAkB;IACzC,yBAAyB,EAAE,mFAAsB;IACjD,0BAA0B,EAAE,oFAAuB;IACnD,eAAe,EAAE,yEAAa;IAE9B,wBAAwB,EAAE,kFAAqB;IAC/C,uBAAuB,EAAE,iFAAoB;CAG9C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC9R8E;AACtC;AAE4B;AACwB;AACxC;AACoC;AAE/B;AAO1D,IAAa,iBAAiB,GAA9B,MAAa,iBAAiB;IAqB5B,YACU,OAAe,EACf,oBAAyC,EACzC,YAAyB;QAFzB,YAAO,GAAP,OAAO,CAAQ;QACf,yBAAoB,GAApB,oBAAoB,CAAqB;QACzC,iBAAY,GAAZ,YAAY,CAAa;QArBzB,kBAAa,GAAG,IAAI,0DAAY,EAAU,CAAC;QAGrD,eAAU,GAAG,oDAAY,CAAC;QAC1B,kBAAa,GAAG,uDAAgB,CAAC;QACjC,uBAAkB,GAAG,4DAAqB,CAAC;QAC3C,aAAQ,GAAG,kDAAW,CAAC;QACvB,YAAO,GAAG,sEAAc,CAAC;IAerB,CAAC;IAVL,IAAW,eAAe;QACxB,OAAO,IAAI,CAAC,IAAI,IAAI,oDAAY,CAAC,YAAY,CAAC;IAChD,CAAC;IAUD,QAAQ;QACN,MAAM,IAAI,GAAG,IAAI,CAAC,oBAAoB,CAAC,YAAY,EAAE,CAAC;QACtD,IAAI,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,oDAAS,CAAC,KAAK,CAAC,CAAC,EAAE;YAC9C,MAAM,WAAW,GAAG,IAAI,CAAC,YAAY,CAAC,uBAAuB,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;YAChF,IAAI,CAAC,IAAI,GAAG,WAAW,CAAC,IAAI;YAC5B,IAAI,CAAC,QAAQ,GAAG,WAAW,CAAC,QAAQ,CAAC;SACtC;aACI;YACH,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;YACtB,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;SAC/B;QACD,IAAI,CAAC,UAAU,GAAG,EAAE,CAAC;QACrB,IAAI,IAAI,CAAC,IAAI,IAAI,oDAAY,CAAC,WAAW,IAAI,IAAI,CAAC,IAAI,IAAI,oDAAY,CAAC,MAAM,EAAE;YAE7E,IAAI,IAAI,CAAC,IAAI,IAAI,oDAAY,CAAC,YAAY,EAAE;gBAC1C,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,cAAc,CAAC,kDAAW,CAAC,IAAI,CAAC,CAAC,CAAC;aAChE;YAED,IAAI,uDAAe,CAAC,eAAe,CAAC,IAAI,CAAC,QAAQ,EAAE,kDAAW,CAAC,GAAG,CAAC,EAAE;gBACnE,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,cAAc,CAAC,kDAAW,CAAC,GAAG,CAAC,CAAC,CAAC;aAC/D;YAED,IAAI,uDAAe,CAAC,eAAe,CAAC,IAAI,CAAC,QAAQ,EAAE,kDAAW,CAAC,GAAG,CAAC,EAAE;gBACnE,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,cAAc,CAAC,kDAAW,CAAC,GAAG,CAAC,CAAC,CAAC;aAC/D;YAED,IAAI,uDAAe,CAAC,eAAe,CAAC,IAAI,CAAC,QAAQ,EAAE,kDAAW,CAAC,GAAG,CAAC,EAAE;gBACnE,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,cAAc,CAAC,kDAAW,CAAC,GAAG,CAAC,CAAC,CAAC;aAC/D;SACF;IACH,CAAC;IAED,YAAY,CAAC,KAAuB;QAClC,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;QACrB,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACjC,CAAC;IAED,YAAY,CAAC,OAAoB;QAC/B,OAAO,uDAAe,CAAC,eAAe,CAAC,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IACjE,CAAC;IAEO,cAAc,CAAC,OAAoB;QACzC,IAAI,OAAO,GAAuC,EAAE,CAAC;QACrD,MAAM,IAAI,GAAG,4DAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC;QAClD,KAAK,IAAI,GAAG,IAAI,IAAI,EAAE;YACpB,IAAI,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,EAAE;gBAC5B,OAAO,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;aACxD;SACF;QACD,OAAO,OAAO,CAAC;IACjB,CAAC;IAED,QAAQ,CAAC,SAAgC;QACvC,OAAO,MAAM,CAAC,SAAS,CAAC,CAAC;IAC3B,CAAC;IAED,cAAc,CAAC,SAAgC;QAC7C,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC;IAC7B,CAAC;CACF;;YAhEoB,sDAAM;YACO,2DAAmB;YAC3B,qDAAW;;AAvB1B;IAAR,2DAAK,EAAE;;qDAAqC;AACpC;IAAR,2DAAK,EAAE;;kDAA2B;AACzB;IAAT,4DAAM,EAAE;;wDAA4C;AAH1C,iBAAiB;IAL7B,+DAAS,CAAC;QACT,QAAQ,EAAE,uBAAuB;QACjC,4NAAwC;KAEzC,CAAC;qCAuBmB,sDAAM;QACO,2DAAmB;QAC3B,qDAAW;GAxBxB,iBAAiB,CAsF7B;AAtF6B;;;;;;;;;;;;;;;;;;;;ACfoB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACAW;AACmK;AACrK;AACd;AAGG;AACQ;AAC6B;AACvC;AAQ9C,IAAa,4BAA4B,oCAAzC,MAAa,4BAA6B,SAAQ,yDAAiB;IA+BjE,YACU,+BAA+D,EAC/D,eAA+B;QACrC,KAAK,EAAE,CAAC;QAFF,oCAA+B,GAA/B,+BAA+B,CAAgC;QAC/D,oBAAe,GAAf,eAAe,CAAgB;QA7BzC,eAAU,GAAG,8BAA4B,CAAC,kBAAkB,CAAC;QAC7D,eAAU,GAAG,8BAA4B,CAAC,iBAAiB,CAAC;QAE5D,cAAS,GAAG,IAAI,CAAC;QACjB,aAAQ,GAAG,KAAK,CAAC;QACjB,qBAAgB,GAAgB,IAAI,CAAC;QACrC,qBAAgB,GAA4C;YAC1D,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,kDAAW,CAAC,GAAG,EAAE;YACxC,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,kDAAW,CAAC,GAAG,EAAE;YACxC,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,kDAAW,CAAC,GAAG,EAAE;SAAC,CAAC;QAE5C,oBAAe,GAAW,IAAI,CAAC;QAC/B,cAAS,GAAqC,EAAE,CAAC;QACjD,oBAAe,GAAG,qDAAc,CAAC;QACjC,sBAAiB,GAAqC,EAAE,CAAC;QACzD,iBAAY,GAAG,6DAAsB,CAAC;QACtC,iBAAY,GAAG;YACb,EAAE,MAAM,EAAE,UAAU,EAAE,UAAU,EAAE,qDAAc,CAAC,aAAa,EAAE,SAAS,EAAE,YAAY,EAAE,KAAK,EAAE,GAAG,EAAE;YACrG,EAAE,MAAM,EAAE,eAAe,EAAE,UAAU,EAAE,qDAAc,CAAC,YAAY,EAAE,SAAS,EAAE,cAAc,EAAE,KAAK,EAAE,GAAG,EAAE;YAC3G,EAAE,MAAM,EAAE,SAAS,EAAE,UAAU,EAAE,qDAAc,CAAC,cAAc,EAAE,SAAS,EAAE,gBAAgB,EAAE,KAAK,EAAE,GAAG,EAAE;YACzG,EAAE,MAAM,EAAE,cAAc,EAAE,UAAU,EAAE,qDAAc,CAAC,IAAI,EAAE,SAAS,EAAE,aAAa,EAAE,KAAK,EAAE,GAAG,EAAE;YACjG,EAAE,MAAM,EAAE,EAAE,EAAE,UAAU,EAAE,qDAAc,CAAC,sBAAsB,EAAE,KAAK,EAAE,GAAG,EAAE;YAC7E,EAAE,MAAM,EAAE,EAAE,EAAE,UAAU,EAAE,qDAAc,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE,EAAE;SAC7D,CAAC;QAEM,kBAAa,GAAmB,EAAE,CAAC;QACnC,cAAS,GAA+B,EAAE,CAAC;IAItC,CAAC;IAEd,QAAQ;QACN,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;QACvD,IAAI,OAAO,GAAG,IAAI,CAAC,+BAA+B,CAAC,UAAU,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE;YAC9E,IAAI,CAAC,wBAAwB,GAAG,EAAE,CAAC;YACnC,IAAI,KAAK,EAAE;gBACT,IAAI,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE;oBAC/B,IAAI,EAAE,CAAC,YAAY,GAAG,EAAE,CAAC,YAAY,EAAE;wBACrC,OAAO,CAAC,CAAC;qBACV;oBAED,IAAI,EAAE,CAAC,YAAY,GAAG,EAAE,CAAC,YAAY,EAAE;wBACrC,OAAO,CAAC,CAAC,CAAC;qBACX;oBAED,OAAO,CAAC,CAAC;gBACX,CAAC,CAAC,CAAC;gBACH,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE;oBACnB,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;wBACf,IAAI,CAAC,wBAAwB,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;oBACvE,CAAC,CAAC,CAAC;iBACJ;qBACG;oBACF,IAAI,CAAC,wBAAwB,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,wBAAwB,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;iBACtF;aACF;QACH,CAAC,CAAC,CAAC;QAEH,IAAI,WAAW,GAAG,IAAI,CAAC,+BAA+B,CAAC,kBAAkB,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE;YACzF,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;YACtB,IAAI,CAAC,YAAY,EAAE,CAAC;QACtB,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACjC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IACvC,CAAC;IAED,IAAI;QACF,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;QACvD,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;QACvB,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;QACrB,IAAI,CAAC,+BAA+B,CAAC,oBAAoB,CAAC,6DAAkB,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC;QACrG,IAAI,CAAC,YAAY,EAAE,CAAC;IACtB,CAAC;IAEK,OAAO;;YACX,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;YACtB,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC;YAC7B,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;YACtB,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC;YAC5B,IAAI,CAAC,iBAAiB,GAAG,EAAE,CAAC;QAC9B,CAAC;KAAA;IAED,eAAe;QACb,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;QACrB,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC;QAC5B,IAAI,CAAC,iBAAiB,GAAG,EAAE,CAAC;QAC5B,IAAI,CAAC,wBAAwB,GAAG,EAAE,CAAC;QACnC,IAAI,CAAC,+BAA+B,CAAC,oBAAoB,CAAC,6DAAkB,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC;QACrG,IAAI,CAAC,YAAY,EAAE,CAAC;IACtB,CAAC;IAEK,2BAA2B;;YAC/B,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;gBACjC,CAAC,CAAC,KAAK,GAAG,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC;gBACrC,CAAC,CAAC,WAAW,GAAG,IAAI,CAAC;YACvB,CAAC,CAAC,CAAC;YACH,MAAM,OAAO,GAAG;gBACd,OAAO,EAAE,IAAI,CAAC,gBAAgB;gBAC9B,QAAQ,EAAE,IAAI,CAAC,eAAe;gBAC9B,UAAU,EAAE,6DAAkB,CAAC,IAAI,CAAC,gBAAgB,CAAC;gBACrD,OAAO,EAAE,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE;oBACtC,OAAO,EAAE,UAAU,EAAE,CAAC,CAAC,UAAU,EAAE,eAAe,EAAE,CAAC,CAAC,eAAe,EAAE,eAAe,EAAE,CAAC,CAAC,eAAe,EAAE,CAAC;gBAC9G,CAAC,CAAqC;aACX,CAAC;YAE9B,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,+BAA+B,CAAC,qBAAqB,CAAC,OAAO,CAAC,CAAC;YACzF,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;QAC5B,CAAC;KAAA;IAEK,sBAAsB,CAAC,OAAuC;;YAClE,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC;YAC3B,IAAI,OAAO,CAAC,KAAK,IAAI,IAAI,CAAC,YAAY,CAAC,QAAQ,IAAI,OAAO,CAAC,KAAK,IAAI,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE;gBAC9F,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC;gBAC3C,MAAM,uBAAuB,GAAG;oBAC9B,OAAO,EAAE,IAAI,CAAC,gBAAgB;oBAC9B,QAAQ,EAAE,IAAI,CAAC,eAAe;oBAC9B,UAAU,EAAE,6DAAkB,CAAC,IAAI,CAAC,gBAAgB,CAAC;oBACrD,eAAe,EAAE,OAAO,CAAC,eAAe;oBACxC,UAAU,EAAE,OAAO,CAAC,UAAU;oBAC9B,eAAe,EAAE,OAAO,CAAC,eAAe;iBACd,CAAC;gBAC7B,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,+BAA+B,CAAC,oBAAoB,CAAC,uBAAuB,CAAC,CAAC;gBACxG,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;aACnC;iBACI;gBACH,MAAM,YAAY,GAAG;oBACnB,UAAU,EAAE,OAAO,CAAC,UAAU;oBAC9B,eAAe,EAAE,OAAO,CAAC,eAAe;oBACxC,eAAe,EAAE,OAAO,CAAC,eAAe;iBACR,CAAC;gBACnC,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,+BAA+B,CAAC,0BAA0B,CAAC,YAAY,CAAC,CAAC;gBACnG,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;aACnC;QACH,CAAC;KAAA;IAED,eAAe,CAAC,OAAuC;QACrD,IAAI,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,UAAU,IAAI,OAAO,CAAC,UAAU,CAAC,EAAE;YACxE,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,UAAU,IAAI,OAAO,CAAC,UAAU,CAAC,CAAC;SACjG;aACI;YACH,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;SACtC;IACH,CAAC;IAED,WAAW;QACT,IAAI,CAAC,aAAa,IAAI,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC;IACzE,CAAC;IAED,eAAe,CAAC,IAAoC;QAClD,OAAO,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,YAAY,CAAC,QAAQ,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC;IAC9F,CAAC;IAEO,YAAY;QAClB,IAAI,CAAC,SAAS,GAAG,EAAE,CAAC;QACpB,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;YACzB,IAAI,OAAO,GAAG,CAAC,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,aAAa,IAAI,CAAC,CAAC,CAAC,iBAAiB,GAAG,IAAI,CAAC,gBAAgB,CAAC,KAAK,IAAI,CAAC,gBAAgB,CAAC,CAAC;YACrI,IAAI,OAAO,EAAE;gBACX,IAAI,IAAI,GAAG,IAAI,sEAA8B,EAAE,CAAC;gBAChD,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC,EAAE,CAAC;gBACvB,IAAI,CAAC,YAAY,GAAG,CAAC,CAAC,IAAI,CAAC;gBAC3B,IAAI,CAAC,OAAO,GAAG,kDAAW,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;gBAClD,IAAI,CAAC,eAAe,GAAG,OAAO,CAAC,EAAE,CAAC;gBAClC,IAAI,aAAa,GAAG,OAAO,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,IAAI,IAAI,CAAC,gBAAgB,CAAC,CAAC;gBACzF,IAAI,CAAC,cAAc,GAAG,aAAa,CAAC,cAAc,CAAC;gBACnD,IAAI,CAAC,WAAW,GAAG,aAAa,CAAC,UAAU,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,aAAa,CAAC,UAAU,GAAG,IAAI,CAAC;gBAC7F,IAAI,CAAC,KAAK,GAAG,aAAa,CAAC,KAAK,CAAC;gBACjC,IAAI,CAAC,YAAY,GAAG,aAAa,CAAC,YAAY,CAAC;gBAC/C,IAAI,CAAC,eAAe,GAAG,aAAa,CAAC,QAAQ,CAAC;gBAC9C,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;aAC3B;QACH,CAAC,CAAC;QACF,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;IACxB,CAAC;IAEO,YAAY,CAAC,MAAM;QACzB,IAAI,MAAM,YAAY,kDAAU,EAAE;YAChC,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC;SAC5F;QACA,MAAsC,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;YACrD,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE;gBACxB,IAAI,cAAc,GAAG,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC;gBACtF,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,cAAc,CAAC,CAAC;aACxC;QACH,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,UAAU,GAAG,KAAK,CAAC,CAAC;QAClD,IAAI,CAAC,iBAAiB,GAAG,EAAE,CAAC;IAC9B,CAAC;IAEO,WAAW,CAAC,MAAM,EAAE,OAAuC;QACjE,IAAI,MAAM,YAAY,kDAAU,EAAE;YAChC,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC;YAC3F,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC;SAC1C;QACD,IAAI,CAAC,MAAM,CAAC,cAAc,EAAE;YAC1B,IAAI,QAAQ,GAAG,IAAI,CAAC,+BAA+B,CAAC,kBAAkB,CAAC,QAAQ,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,OAAO,CAAC,UAAU,CAAC,CAAC;YACxH,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,GAAG,QAAQ,CAAC,IAAI,yBAAyB,EAAE,MAAM,EAAE,GAAG,MAAM,CAAC,cAAc,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;SACtJ;IACH,CAAC;CACF;AA1MQ,8CAAiB,GAAG,cAAc,CAAC;AACnC,+CAAkB,GAAG,CAAC,CAAC;;YA8Ba,wEAA8B;YAC9C,0DAAc;;AAjC9B,4BAA4B;IANxC,+DAAS,CAAC;QACT,QAAQ,EAAE,oCAAoC;QAC9C,oPAAqD;QAErD,SAAS,EAAE,CAAC,0DAAc,CAAC;KAC5B,CAAC;qCAiC2C,wEAA8B;QAC9C,0DAAc;GAjC9B,4BAA4B,CA2MxC;AA3MwC;;;;;;;;;;;;;;;;;;;;ACjBoB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACAX;AACS;AACb;AACM;AAQpD,IAAa,sCAAsC,GAAnD,MAAa,sCAAuC,SAAQ,yDAAiB;IAmB3E,YACU,+BAA+D;QAEvE,KAAK,EAAE,CAAC;QAFA,oCAA+B,GAA/B,+BAA+B,CAAgC;QAnBzE,cAAS,GAAG,IAAI,CAAC;QACjB,aAAQ,GAAG,IAAI,CAAC;QAMhB,oBAAe,GAAG,iEAAc,CAAC;QAGjC,iBAAY,GAAG;YACb,EAAE,MAAM,EAAE,aAAa,EAAE,UAAU,EAAE,iEAAc,CAAC,IAAI,EAAE,SAAS,EAAE,gBAAgB,EAAE,KAAK,EAAE,GAAG,EAAE;YACnG,EAAE,MAAM,EAAE,iBAAiB,EAAE,UAAU,EAAE,iEAAc,CAAC,QAAQ,EAAE,SAAS,EAAE,gBAAgB,EAAE,KAAK,EAAE,GAAG,EAAE;YAC3G,EAAE,MAAM,EAAE,gBAAgB,EAAE,UAAU,EAAE,iEAAc,CAAC,QAAQ,EAAE,SAAS,EAAE,eAAe,EAAE,KAAK,EAAE,GAAG,EAAE;YACzG,EAAE,MAAM,EAAE,QAAQ,EAAE,UAAU,EAAE,iEAAc,CAAC,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,KAAK,EAAE,GAAG,EAAE;YACxF,EAAE,MAAM,EAAE,SAAS,EAAE,UAAU,EAAE,iEAAc,CAAC,IAAI,EAAE,SAAS,EAAE,kBAAkB,EAAE,KAAK,EAAE,GAAG,EAAE;SAClG,CAAC;IAMF,CAAC;IAED,QAAQ;IACR,CAAC;IAEK,MAAM,CAAC,QAAgB,EAAE,UAAkB,EAAE,YAAoB,EAAE,WAAmB;;YAC1F,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;YACrB,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;YAEvB,IAAI,CAAC,aAAa,GAAG,YAAY,CAAC;YAClC,IAAI,CAAC,YAAY,GAAG,WAAW,CAAC;YAEhC,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC;YAC1B,IAAI,CAAC,WAAW,GAAG,UAAU,CAAC;YAC9B,IAAI,CAAC,SAAS,IAAG,MAAM,IAAI,CAAC,+BAA+B,CAAC,wBAAwB,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,WAAW,CAAC,QAAQ,EAAE,CAAkC,EAAC;YACnK,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;QACxB,CAAC;KAAA;IAED,QAAQ;QACN,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;QACtB,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;QACtB,IAAI,CAAC,SAAS,GAAG,EAAE,CAAC;IACtB,CAAC;CACF;;YA1B4C,wEAA8B;;AApB9D,sCAAsC;IALlD,+DAAS,CAAC;QACT,QAAQ,EAAE,+CAA+C;QACzD,qRAAgE;KAEjE,CAAC;qCAqB2C,wEAA8B;GApB9D,sCAAsC,CA8ClD;AA9CkD;;;;;;;;;;;;;;;;;;;;ACXA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACAqB;AACJ;AACM;AACf;AACV;AAEH;AAO9C,IAAa,4BAA4B,GAAzC,MAAa,4BAA6B,SAAQ,yDAAiB;IAYjE,YACU,YAAyB,EACzB,+BAA+D;QAEvE,KAAK,EAAE,CAAC;QAHA,iBAAY,GAAZ,YAAY,CAAa;QACzB,oCAA+B,GAA/B,+BAA+B,CAAgC;QAb/D,kBAAa,GAAG,IAAI,0DAAY,EAAyB,CAAC;QAIpE,eAAU,GAAG,KAAK,CAAC;QACnB,yBAAoB,GAAG,KAAK,CAAC;QAC7B,cAAS,GAAG,IAAI,CAAC;QACjB,gBAAW,GAAG,IAAI,CAAC;IASnB,CAAC;IAED,QAAQ;QACN,IAAI,CAAC,QAAQ,GAAG,IAAI,6DAAqB,EAAE,CAAC;QAC5C,IAAI,CAAC,SAAS,GAAG,IAAI,gEAAwB,EAAE,CAAC;IAClD,CAAC;IAEM,QAAQ,CAAC,OAA8B,EAAE,QAAkC;QAChF,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;QACvB,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;QACxB,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;QACzB,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC;QACxB,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC;QAE1B,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,uBAAuB,EAAE,CAAC;QAEhD,IAAI,CAAC,iBAAiB,GAAG,EAAE,CAAC;QAE5B,KAAK,MAAM,KAAK,IAAI,8DAAW,EAAE;YAC/B,IAAI,OAAO,8DAAW,CAAC,KAAiC,CAAC,KAAK,QAAQ,EAAE;gBACtE,MAAM,SAAS,GAAG,8DAAW,CAAC,KAAiC,CAAC,CAAC;gBACjE,MAAM,YAAY,GAAG,OAAO,CAAC,iBAAiB,GAAG,SAAS,CAAC;gBAC3D,IAAI,YAAY,KAAK,CAAC,IAAI,SAAS,KAAK,GAAG,EAAE;oBAC3C,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;iBACxC;aACF;SACF;QAED,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,8DAAW,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;QAE9F,IAAI,CAAC,QAAQ,EAAE,CAAC;IAClB,CAAC;IAEM,OAAO,CAAC,QAAkC;QAC/C,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;QACvB,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;QACxB,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;QACxB,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC;QAE1B,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,uBAAuB,EAAE,CAAC;QAEhD,IAAI,CAAC,QAAQ,EAAE,CAAC;IAClB,CAAC;IAEK,QAAQ;;YACZ,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;YAEvB,IAAI,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE;gBAC7B,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;gBACxB,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC;gBACjC,OAAO;aACR;YAED,MAAM,KAAK,GAAG;gBACZ,UAAU,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE;gBAC7B,iBAAiB,EAAE,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE,CAAC,KAAK,GAAG,OAAO,EAAE,CAAC,CAAC;aACzF,CAAC;YAEF,IAAI,CAAC,WAAW;gBACd,CAAC,CAAC,MAAM,IAAI,CAAC,+BAA+B,CAAC,GAAG,CAAC,KAAK,CAAC;gBACvD,CAAC,CAAC,MAAM,IAAI,CAAC,+BAA+B,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,EAAE,iBAAiB,EAAE,KAAK,CAAC,iBAAiB,EAAE,CAAC,CAAC;YAEtH,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;YACtB,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;YACxB,IAAI,CAAC,oBAAoB,GAAG,KAAK,CAAC;YAClC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;gBACrB,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;aACxC;YACD,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,CAAC;QAC5B,CAAC;KAAA;IAEK,OAAO;;YACX,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;YACxB,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;YACtB,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;YACxB,IAAI,CAAC,SAAS,GAAG,IAAI,gEAAwB,EAAE,CAAC;YAChD,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,CAAC;QAC5B,CAAC;KAAA;IAEO,QAAQ;QACd,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC;YAC1C,QAAQ,EAAE,CAAC,IAAI,CAAC,iBAAiB,EAAE,yDAAU,CAAC,OAAO,CAAC;oBACpD,yDAAU,CAAC,QAAQ;iBACpB,CAAC,CAAC;SACJ,CAAC;IACJ,CAAC;IAEO,uBAAuB;QAC7B,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,8DAAW,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;QAElH,IAAI,oBAAoB,GAAG,IAAI,GAAG,EAAU,CAAC;QAC7C,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;YACxC,CAAC,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;gBAC3B,oBAAoB,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;YACtC,CAAC,CAAC;QACJ,CAAC,CAAC,CAAC;QAEH,OAAO,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,oBAAoB,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;IACzF,CAAC;CACF;;YAvGyB,0DAAW;YACQ,wEAA8B;;AAb/D;IAAT,4DAAM,EAAE;;mEAA2D;AADzD,4BAA4B;IALxC,+DAAS,CAAC;QACT,QAAQ,EAAE,qCAAqC;QAC/C,uPAAsD;KAEvD,CAAC;qCAcwB,0DAAW;QACQ,wEAA8B;GAd9D,4BAA4B,CAoHxC;AApHwC;;;;;;;;;;;;;;;;;;;;ACbQ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACAuB;AACb;AAQ3D,IAAa,2BAA2B,GAAxC,MAAa,2BAA2B;IAUtC,YACU,+BAA+D;QAA/D,oCAA+B,GAA/B,+BAA+B,CAAgC;QAV/D,oBAAe,GAAG,IAAI,0DAAY,EAAU,CAAC;QACvD,cAAS,GAAG,IAAI,CAAC;QACjB,iBAAY,GAAG,KAAK,CAAC;IASjB,CAAC;IAEL,QAAQ;IACR,CAAC;IAEM,IAAI,CAAC,SAAiB,EAAE,UAAkB;QAC/C,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC;QAC5B,IAAI,CAAC,WAAW,GAAG,UAAU,CAAC;QAC9B,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;IACzB,CAAC;IAEK,QAAQ;;YACZ,IAAI,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,WAAW,IAAI,CAAC,IAAI,CAAC,YAAY,EAAC;gBAC5D,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;gBACzB,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,+BAA+B,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;gBAEpG,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;gBAC1B,IAAI,MAAM,KAAK,IAAI,EAAC;oBAClB,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;oBAC5C,IAAI,CAAC,aAAa,EAAE,CAAC;iBACtB;qBAAM,IAAI,MAAM,KAAK,KAAK,EAAE;oBAC3B,IAAI,CAAC,MAAM,GAAG,uBAAuB,CAAC;iBACvC;qBAAM;oBACL,MAAM,UAAU,GAAG,MAAoB,CAAC;oBACxC,IAAI,UAAU,EAAE;wBACd,IAAI,CAAC,MAAM,GAAG,UAAU,CAAC,OAAO,CAAC;qBAClC;iBACF;aACF;QACH,CAAC;KAAA;IAED,aAAa;QACX,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;QACtB,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;QACnB,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;IACzB,CAAC;CACF;;YArC4C,wEAA8B;;AAV/D;IAAT,4DAAM,EAAE;;oEAA8C;AAD5C,2BAA2B;IALvC,+DAAS,CAAC;QACT,QAAQ,EAAE,mCAAmC;QAC7C,iPAAoD;KAErD,CAAC;qCAY2C,wEAA8B;GAX9D,2BAA2B,CAgDvC;AAhDuC;;;;;;;;;;;;;;;;;;;;ACTiC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACA+F;AAEhH;AAEU;AACH;AACjB;AAC4B;AAQ1E,IAAa,gDAAgD,GAA7D,MAAa,gDAAiD,SAAQ,yDAAiB;IAoCrF,YACU,8BAA6D,EAC7D,KAAwB,EACxB,WAAwB;QAEhC,KAAK,EAAE,CAAC;QAJA,mCAA8B,GAA9B,8BAA8B,CAA+B;QAC7D,UAAK,GAAL,KAAK,CAAmB;QACxB,gBAAW,GAAX,WAAW,CAAa;QAtC3B,oBAAe,GAAG,IAAI,0DAAY,EAAoB,CAAC;QAOvD,yBAAoB,GAAG,IAAI,0DAAY,EAAW,CAAC;QAI1D,cAAS,GAAG,IAAI,CAAC;QACjB,0BAAqB,GAAG,IAAI,CAAC;QAC7B,eAAU,GAAG,KAAK,CAAC;QACnB,eAAU,GAAG,KAAK,CAAC;QAGnB,kBAAa,GAAW,IAAI,CAAC;QAE7B,oBAAe,GAAG,KAAK,CAAC;QAYhB,4BAAuB,GAAG,KAAK,CAAC;QAEhC,mBAAc,GAAmB,EAAE,CAAC;IAQ5C,CAAC;IApBD,IAAI,SAAS;QACX,OAAO,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;IACzD,CAAC;IAED,IAAI,iBAAiB;QACnB,OAAO,IAAI,CAAC,UAAU,CAAC;IACzB,CAAC;IAgBD,QAAQ;QACN,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IAC/C,CAAC;IAED,kBAAkB;QAChB,IAAI,IAAI,CAAC,eAAe,IAAI,IAAI,CAAC,uBAAuB,EAAE;YACxD,IAAI,CAAC,uBAAuB,GAAG,KAAK,CAAC;SACtC;IACH,CAAC;IAED,WAAW;QACT,IAAI,CAAC,cAAc,IAAI,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC,CAAC;IAC/E,CAAC;IAEK,QAAQ;;YACZ,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;YAEvB,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE;gBACtB,IAAI,CAAC,aAAa,GAAG,kBAAkB,CAAC;gBACxC,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;gBACxB,OAAO;aACR;YAED,IAAI,CAAC,uBAAuB,EAAE,CAAC;YAC/B,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;QAC1B,CAAC;KAAA;IAED,YAAY;QACV,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;QACvB,IAAI,CAAC,UAAU,EAAE,CAAC;QAClB,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACxC,CAAC;IAED,QAAQ,CAAC,aAAkB;QACzB,MAAM,UAAU,GAAG,aAAa,CAAC,YAAY,CAAC,CAAC,CAAS,CAAC;QACzD,IAAI,UAAU,CAAC,IAAI,IAAI,CAAC,EAAE;YACxB,IAAI,CAAC,aAAa,GAAG,kCAAkC,CAAC;SACzD;aAAM,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,UAAU,CAAC,IAAI,IAAI,kBAAkB,EAAE;YACtF,IAAI,CAAC,aAAa,GAAG,sBAAsB,CAAC;SAC7C;aAAM;YACL,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;YAC1B,IAAI,CAAC,YAAY,GAAG,UAAU,CAAC;YAC/B,IAAI,CAAC,eAAe,GAAG,KAAK,CAAC;SAC9B;IACH,CAAC;IAEM,IAAI,CAAC,QAA8B;QACxC,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;QACxB,IAAI,CAAC,UAAU,GAAG,QAAQ,CAAC,EAAE,CAAC;QAC9B,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC;QAC1B,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;QACxB,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;QACvB,IAAI,CAAC,KAAK,CAAC,aAAa,EAAE,CAAC;IAC7B,CAAC;IAEO,UAAU;QAChB,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;QACtB,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;QACzB,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;QAC1B,IAAI,CAAC,eAAe,GAAG,KAAK,CAAC;QAC7B,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QAC7C,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACxC,CAAC;IAEa,uBAAuB;;YACnC,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,8BAA8B,CAAC,8BAA8B,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;YAC5H,IAAI,MAAM,EAAE;gBACV,IAAI,MAAM,YAAY,kDAAU,EAAE;oBAChC,IAAI,MAAM,CAAC,IAAI,IAAI,qDAAa,CAAC,iBAAiB,EAAE;wBAClD,IAAI,CAAC,aAAa,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;qBACvC;yBAAM;wBACL,IAAI,CAAC,aAAa,GAAG,MAAM,CAAC,OAAO,CAAC;qBACrC;iBACF;qBAAM;oBACL,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC;oBAC5B,IAAI,CAAC,uBAAuB,GAAG,IAAI,CAAC;oBACpC,MAAM,SAAS,GAAG,MAAkC,CAAC;oBACrD,IAAI,CAAC,8BAA8B,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,SAAS,CAAC,UAAU,EAAE,SAAS,CAAC,0BAA0B,CAAC,CAAC;iBACtH;gBACD,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;aACzB;QACH,CAAC;KAAA;CACF;;YAzF2C,uEAA6B;YACtD,+DAAiB;YACX,0DAAW;;AArCE;IAAnC,kEAAY,CAAC,oBAAoB,CAAC;8BAAuB,uDAAS;8FAAa;AAGhF;IADC,+DAAS,CAAC,qFAA6B,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;8BACjC,qFAA6B;wGAAC;AAGtE;IADC,4DAAM,EAAE;;8FACiD;AAR/C,gDAAgD;IAL5D,+DAAS,CAAC;QACT,QAAQ,EAAE,2DAA2D;QACrE,yTAA4E;KAE7E,CAAC;qCAsC0C,uEAA6B;QACtD,+DAAiB;QACX,0DAAW;GAvCvB,gDAAgD,CA8H5D;AA9H4D;;;;;;;;;;;;;;;;;;;;;;;ACfD;AACT;;;;;;;;;;;;;;;;;;;;ACDuB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACAF;AAGvB;AAMjD,IAAa,kDAAkD,GAA/D,MAAa,kDAAmD,SAAQ,yDAAiB;IAMvF;QACE,KAAK,EAAE,CAAC;QANV,cAAS,GAAG,IAAI,CAAC;QAGjB,sBAAiB,GAA0B,IAAI,0DAAY,EAAW,CAAC;IAIvE,CAAC;IACD,QAAQ;IACR,CAAC;IAED,QAAQ;QACN,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;QACtB,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACrC,CAAC;IAEK,QAAQ;;YACZ,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;YACtB,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACpC,CAAC;KAAA;IAEM,IAAI;QACT,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;IACzB,CAAC;CACF;AArBC;IADC,4DAAM,CAAC,mBAAmB,CAAC;8BACT,0DAAY;6FAAwC;AAJ5D,kDAAkD;IAJ9D,+DAAS,CAAC;QACT,QAAQ,EAAE,4DAA4D;QACtE,+UAA6E;KAC9E,CAAC;;GACW,kDAAkD,CAyB9D;AAzB8D;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACTyG;AAEvF;AAEf;AACH;AACsD;AACxD;AACZ;AACH;AAC0D;AAoBxG,IAAa,qCAAqC,GAAlD,MAAa,qCAAsC,SAAQ,yDAAiB;IAsC1E,YACU,8BAA6D,EAC7D,KAAwB,EACxB,WAAwB;QAEhC,KAAK,EAAE,CAAC;QAJA,mCAA8B,GAA9B,8BAA8B,CAA+B;QAC7D,UAAK,GAAL,KAAK,CAAmB;QACxB,gBAAW,GAAX,WAAW,CAAa;QAxC3B,oBAAe,GAAG,IAAI,0DAAY,EAAoB,CAAC;QAOvD,yBAAoB,GAAG,IAAI,0DAAY,EAAW,CAAC;QAI1D,cAAS,GAAG,IAAI,CAAC;QACjB,0BAAqB,GAAG,IAAI,CAAC;QAC7B,eAAU,GAAG,KAAK,CAAC;QACnB,eAAU,GAAG,KAAK,CAAC;QAEnB,kBAAa,GAAG,EAAE,CAAC;QACnB,kBAAa,GAAW,IAAI,CAAC;QAE7B,oBAAe,GAAG,KAAK,CAAC;QAchB,4BAAuB,GAAG,KAAK,CAAC;QAEhC,mBAAc,GAAmB,EAAE,CAAC;IAQ5C,CAAC;IArBD,IAAI,SAAS;QACX,OAAO,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;IACzD,CAAC;IAED,IAAI,iBAAiB;QACnB,OAAO,IAAI,CAAC,UAAU,CAAC;IACzB,CAAC;IAiBD,QAAQ;QACN,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IAC/C,CAAC;IAED,kBAAkB;QAChB,IAAI,IAAI,CAAC,eAAe,IAAI,IAAI,CAAC,uBAAuB,EAAE;YACxD,IAAI,CAAC,uBAAuB,GAAG,KAAK,CAAC;YACrC,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;SACzB;QAED,IAAI,CAAC,WAAW,CAAC,iBAAiB,CAAC,SAAS,CAAC,aAAa,CAAC,EAAE;YAC3D,IAAI,aAAa,EAAE;gBACjB,IAAI,CAAC,UAAU,EAAE;aAClB;QACH,CAAC,CAAC,CAAC;IACL,CAAC;IAED,WAAW;QACT,IAAI,CAAC,cAAc,IAAI,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC,CAAC;IAC/E,CAAC;IAEK,QAAQ;;YACZ,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;YAEvB,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE;gBACtB,IAAI,CAAC,aAAa,GAAG,kBAAkB,CAAC;gBACxC,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;gBACxB,OAAO;aACR;YAED,IAAI,IAAI,CAAC,eAAe,EAAE;gBACxB,IAAI,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE;oBAC3B,OAAO;iBACR;gBACD,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;gBACvB,MAAM,IAAI,CAAC,oBAAoB,EAAE,CAAC;aACnC;iBAAM;gBACL,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;gBACvB,MAAM,IAAI,CAAC,uBAAuB,EAAE,CAAC;aACtC;YAED,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;QAC1B,CAAC;KAAA;IAEK,YAAY;;YAChB,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;YACvB,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAErC,IAAI,IAAI,CAAC,eAAe,EAAE;gBACxB,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC;aACzB;iBAAM;gBACL,IAAI,CAAC,UAAU,EAAE,CAAC;gBAClB,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;aACvC;QACH,CAAC;KAAA;IAED,QAAQ,CAAC,aAAkB;QACzB,MAAM,UAAU,GAAG,aAAa,CAAC,YAAY,CAAC,CAAC,CAAS,CAAC;QACzD,IAAI,UAAU,CAAC,IAAI,IAAI,CAAC,EAAE;YACxB,IAAI,CAAC,aAAa,GAAG,kCAAkC,CAAC;SACzD;aAAM,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,UAAU,CAAC,IAAI,IAAI,UAAU,EAAE;YAC7E,IAAI,CAAC,aAAa,GAAG,sBAAsB,CAAC;SAC7C;aAAM;YACL,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;YAC1B,IAAI,CAAC,YAAY,GAAG,UAAU,CAAC;YAC/B,IAAI,CAAC,eAAe,GAAG,KAAK,CAAC;YAC7B,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;SACxB;IACH,CAAC;IAEM,IAAI,CAAC,UAAkB,EAAE,YAAoB;QAClD,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;QACxB,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;QAC7B,IAAI,CAAC,aAAa,GAAG,YAAY,CAAC;QAClC,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;QACxB,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;QACvB,IAAI,CAAC,KAAK,CAAC,aAAa,EAAE,CAAC;IAC7B,CAAC;IAEO,UAAU;QAChB,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;QACtB,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;QACzB,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;QAC1B,IAAI,CAAC,eAAe,GAAG,KAAK,CAAC;QAC7B,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;QACvB,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QAC7C,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACxC,CAAC;IAEa,uBAAuB;;YACnC,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,8BAA8B,CAAC,uBAAuB,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;YACrH,IAAI,MAAM,EAAE;gBACV,IAAI,MAAM,YAAY,kDAAU,EAAE;oBAChC,IAAI,MAAM,CAAC,IAAI,IAAI,qDAAa,CAAC,iBAAiB,EAAE;wBAClD,IAAI,CAAC,aAAa,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;qBACvC;yBAAM;wBACL,IAAI,CAAC,aAAa,GAAG,MAAM,CAAC,OAAO,CAAC;qBACrC;iBACF;qBAAM;oBACL,MAAM,SAAS,GAAG,IAAI,CAAC,+BAA+B,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;oBACpE,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;oBAC3B,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC;oBAC5B,IAAI,CAAC,aAAa,GAAG,MAAM,CAAC,YAAY,CAAC;oBACzC,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC;oBAC5B,IAAI,CAAC,uBAAuB,GAAG,IAAI,CAAC;oBAEpC,IAAI,CAAC,iCAAiC,GAAG,MAAM,CAAC;iBACjD;gBACD,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;aACzB;QACH,CAAC;KAAA;IAEa,oBAAoB;;YAChC,IAAI,aAAa,GAAG,IAAI,CAAC,iCAAiC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,IAAI,kDAAW,CAAC,IAAI,CAAC,CAAC;YAC3G,IAAI,CAAC,iCAAiC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,IAAI,kDAAW,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;gBACjG,aAAa,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC;YAC1E,CAAC,CAAC,CAAC;YAEH,aAAa,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;gBAC1B,MAAM,sBAAsB,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC;gBAE/E,IAAI,sBAAsB,EAAE;oBAC1B,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,sBAAsB,CAAC,mBAAmB,CAAC,CAAC,KAAK,CAAC;oBACtF,GAAG,CAAC,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,sBAAsB,CAAC,wBAAwB,CAAC,CAAC,KAAK,CAAC;oBAEhG,MAAM,qBAAqB,GAAG,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,sBAAsB,CAAC,yBAAyB,CAAC,CAAC;oBACzG,IAAI,qBAAqB,EAAE;wBACzB,GAAG,CAAC,UAAU,GAAG,qBAAqB,CAAC,KAAK,CAAC;qBAC9C;iBACF;YACH,CAAC,CAAC,CAAC;YAEH,MAAM,OAAO,GAAG,IAAI,yEAAiC,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,iCAAiC,CAAC,CAAC;YAC/G,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,8BAA8B,CAAC,oBAAoB,CAAC,OAAO,CAAC,CAAC;YACvF,IAAI,MAAM,EAAE;gBACV,IAAI,MAAM,YAAY,kDAAU,EAAE;oBAChC,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;oBACxB,IAAI,MAAM,CAAC,IAAI,IAAI,qDAAa,CAAC,iBAAiB,EAAE;wBAClD,IAAI,CAAC,aAAa,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;qBACvC;yBAAM;wBACL,IAAI,CAAC,aAAa,GAAG,MAAM,CAAC,OAAO,CAAC;qBACrC;iBACF;qBAAM;oBACL,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;oBACtB,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;oBACzB,MAAM,oBAAoB,GAAG,IAAI,CAAC,4BAA4B,CAAC,MAAM,CAAC,gCAAgC,CAAC,CAAC;oBACxG,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,oBAAoB,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;oBACnE,IAAI,CAAC,UAAU,EAAE,CAAC;iBACnB;aACF;YAED,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;QAC1B,CAAC;KAAA;IAEO,+BAA+B,CAAC,IAAoB;QAC1D,MAAM,uBAAuB,GAA6B,EAAE,CAAC;QAC7D,IAAI,aAAa,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,IAAI,kDAAW,CAAC,IAAI,CAAC,CAAC;QACpE,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,IAAI,kDAAW,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;YAC1D,aAAa,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC;QAC1E,CAAC,CAAC,CAAC;QAEH,aAAa,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;YAC1B,IAAI,sBAAsB,GAAG,uBAAuB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC;YAEzF,IAAI,CAAC,sBAAsB,EAAE;gBAC3B,sBAAsB,GAAG;oBACvB,GAAG,EAAE,GAAG,CAAC,KAAK;oBACd,mBAAmB,EAAE,mBAAmB,GAAG,CAAC,KAAK,EAAE;oBACnD,yBAAyB,EAAE,yBAAyB,GAAG,CAAC,KAAK,EAAE;oBAC/D,wBAAwB,EAAE,wBAAwB,GAAG,CAAC,KAAK,EAAE;oBAC7D,IAAI,EAAE,EAAE;oBACR,cAAc,EAAE,GAAG,CAAC,UAAU,IAAI,qDAAc,CAAC,GAAG,IAAI,GAAG,CAAC,UAAU,IAAI,qDAAc,CAAC,IAAI;iBACpE,CAAC;gBAC5B,uBAAuB,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;aACtD;YAED,sBAAsB,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACxC,CAAC,CAAC,CAAC;QAEH,OAAO,uBAAuB,CAAC;IACjC,CAAC;IAEO,UAAU,CAAC,uBAAiD;QAClE,IAAI,SAAS,GAAG,EAAE,CAAC;QACnB,uBAAuB,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;YACrC,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACtD,SAAS,CAAC,IAAI,CAAC,mBAAmB,CAAC,GAAG;gBACpC,IAAI;gBACJ,yDAAU,CAAC,OAAO,CAAC;oBACjB,yDAAU,CAAC,QAAQ;oBACnB,yDAAU,CAAC,GAAG,CAAC,CAAC,CAAC;oBACjB,yDAAU,CAAC,GAAG,CAAC,KAAK,CAAC;iBACtB,CAAC;aACc,CAAC;YAEnB,SAAS,CAAC,IAAI,CAAC,wBAAwB,CAAC,GAAG;gBACzC,IAAI;gBACJ,yDAAU,CAAC,OAAO,CAAC;oBACjB,yDAAU,CAAC,QAAQ;oBACnB,yDAAiB,CAAC,WAAW;iBAC9B,CAAC;aACc,CAAC;YAEnB,IAAI,IAAI,CAAC,cAAc,EAAE;gBACvB,SAAS,CAAC,IAAI,CAAC,yBAAyB,CAAC,GAAG;oBAC1C,IAAI;oBACJ,yDAAU,CAAC,OAAO,CAAC;wBACjB,yDAAU,CAAC,QAAQ;wBACnB,yDAAU,CAAC,GAAG,CAAC,CAAC,CAAC;wBACjB,yDAAU,CAAC,GAAG,CAAC,KAAK,CAAC;qBACtB,CAAC;iBACc,CAAC;aACpB;QACH,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;IACtD,CAAC;IAEO,gBAAgB,CAAC,QAAwB;QAC/C,OAAO,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAClD,CAAC;IAEO,4BAA4B,CAAC,gCAAyC;QAC5E,IAAI,cAAc,GAAG,qBAAqB,IAAI,CAAC,aAAa,sCAAsC,CAAC;QACnG,IAAI,gCAAgC,EAAE;YACpC,cAAc,GAAG,cAAc,GAAG,qFAAqF,CAAC;SACzH;QAED,OAAO,cAAc,CAAC;IACxB,CAAC;IAEO,eAAe,CAAC,OAAgB;QACtC,MAAM,EAAE,GAAG,IAAI,CAAC,oBAAoB,CAAC,KAAK,CAAC,aAAa,CAAC;QACzD,IAAI,CAAC,mBAAmB,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC;IACxC,CAAC;CACF;;YAlP2C,uEAA6B;YACtD,+DAAiB;YACX,0DAAW;;AAvCE;IAAnC,kEAAY,CAAC,oBAAoB,CAAC;8BAAuB,uDAAS;mFAAa;AAGhF;IADC,+DAAS,CAAC,oHAAkD,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;8BACjF,oHAAkD;0EAAC;AAGhE;IADC,4DAAM,EAAE;;mFACiD;AAR/C,qCAAqC;IALjD,+DAAS,CAAC;QACT,QAAQ,EAAE,8CAA8C;QACxD,kRAA+D;KAEhE,CAAC;qCAwC0C,uEAA6B;QACtD,+DAAiB;QACX,0DAAW;GAzCvB,qCAAqC,CAyRjD;AAzRiD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC9BsB;AAOxE,IAAa,yCAAyC,GAAtD,MAAa,yCAAyC;IAUpD;QARA,kCAA6B,GAAG,IAAI,0DAAY,EAAU,CAAC;QAG3D,cAAS,GAAG,IAAI,CAAC;QAEjB,eAAU,GAAG,KAAK,CAAC;IAIf,CAAC;IAEL,QAAQ;IACR,CAAC;IAEM,IAAI,CAAC,cAAsB;QAChC,IAAI,CAAC,eAAe,GAAG,cAAc,CAAC;QACtC,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;IACzB,CAAC;IAEK,QAAQ;;YACZ,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;YACnB,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;YACtB,IAAI,CAAC,6BAA6B,CAAC,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;QAChE,CAAC;KAAA;IAED,aAAa;QACX,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;QACnB,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;IACxB,CAAC;CACF;AA7BC;IADC,4DAAM,EAAE;;gGACkD;AAFhD,yCAAyC;IALrD,+DAAS,CAAC;QACT,QAAQ,EAAE,kDAAkD;QAC5D,qTAAmE;KAEpE,CAAC;;GACW,yCAAyC,CA+BrD;AA/BqD;;;;;;;;;;;;;;;;;;;;ACPU;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACAb;AACT;AACF;AACe;AACV;AACS;AACf;AACK;;;;;;;;;;;;;;;;;;;;ACPgB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACAwC;AACnB;AAEU;AACxC;AAC0D;AACjD;AACX;AACmB;AAOpE,IAAa,oCAAoC,GAAjD,MAAa,oCAAqC,SAAQ,yDAAiB;IA4CzE,YACE,WAAwB;QAExB,KAAK,EAAE,CAAC;QA9CV,cAAS,GAAG,IAAI,CAAC;QACjB,eAAU,GAAG,KAAK,CAAC;QAMnB,YAAO,GAAG,IAAI,0DAAY,EAAQ,CAAC;QAGnC,WAAM,GAAgD,IAAI,0DAAY,EAAiC,CAAC;QAGxG,aAAQ,GAAsB,IAAI,0DAAY,EAAO,CAAC;QAStD,gBAAW,GAAsB,IAAI,0DAAY,EAAO,CAAC;QAKzD,gBAAW,GAAG,qDAAU,CAAC;QAIzB,uBAAkB,GAA4C,EAAE,CAAC;QAGjE,6BAAwB,GAAG,wBAAwB,CAAC;QACpD,yBAAoB,GAAG,oBAAoB,CAAC;QAY1C,IAAI,CAAC,eAAe,GAAG,MAAM,CAAC,IAAI,CAAC,iEAAsB,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,8DAAmB,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QACnI,IAAI,CAAC,cAAc,GAAG,WAAW,CAAC,KAAK,CAAC;YACtC,IAAI,EAAE;gBACJ,IAAI;gBACJ,yDAAU,CAAC,OAAO,CAAC;oBACjB,yDAAU,CAAC,QAAQ;iBACpB,CAAC;aACH;YACD,OAAO,EAAE;gBACP,IAAI;gBACJ,yDAAU,CAAC,OAAO,CAAC;oBACjB,yDAAU,CAAC,QAAQ;iBACpB,CAAC;aACH;YACD,IAAI,EAAE;gBACJ,EAAE;gBACF,yDAAU,CAAC,OAAO,CAAC;oBACjB,yDAAU,CAAC,QAAQ;oBACnB,yDAAU,CAAC,SAAS,CAAC,CAAC,CAAC;oBACvB,yDAAU,CAAC,SAAS,CAAC,EAAE,CAAC;iBACzB,CAAC;aACH;YACD,iCAAiC,EAAE;gBACjC,IAAI;gBACJ,yDAAU,CAAC,OAAO,CAAC;oBACjB,yDAAU,CAAC,QAAQ;oBACnB,yEAAe;oBACf,yDAAU,CAAC,GAAG,CAAC,CAAC,CAAC;oBACjB,yDAAU,CAAC,GAAG,CAAC,KAAK,CAAC;iBACtB,CAAC;aACH;YACD,kCAAkC,EAAE;gBAClC,IAAI;gBACJ,yDAAU,CAAC,OAAO,CAAC;oBACjB,yDAAU,CAAC,QAAQ;oBACnB,yEAAe;oBACf,yDAAU,CAAC,GAAG,CAAC,CAAC,CAAC;oBACjB,yDAAU,CAAC,GAAG,CAAC,KAAK,CAAC;iBACtB,CAAC;aACH;YACD,0BAA0B,EAAE;gBAC1B,IAAI;aACL;YACD,oBAAoB,EAAE;gBACpB,IAAI;gBACJ,yDAAU,CAAC,OAAO,CAAC;oBACjB,yDAAU,CAAC,QAAQ;oBACnB,yEAAe;oBACf,yDAAU,CAAC,GAAG,CAAC,CAAC,CAAC;oBACjB,yDAAU,CAAC,GAAG,CAAC,KAAK,CAAC;iBACtB,CAAC;aACH;YACD,uBAAuB,EAAE;gBACvB,IAAI;gBACJ,yDAAU,CAAC,OAAO,CAAC;oBACjB,yDAAU,CAAC,QAAQ;oBACnB,yDAAU,CAAC,GAAG,CAAC,CAAC,CAAC;oBACjB,yDAAU,CAAC,GAAG,CAAC,EAAE,CAAC;iBACnB,CAAC;aACH;YACD,iCAAiC,EAAE;gBACjC,IAAI;gBACJ,yDAAU,CAAC,OAAO,CAAC;oBACjB,yDAAU,CAAC,QAAQ;oBACnB,yEAAe;oBACf,yDAAU,CAAC,GAAG,CAAC,CAAC,CAAC;oBACjB,yDAAU,CAAC,GAAG,CAAC,KAAK,CAAC;iBACtB,CAAC;aACH;YACD,oCAAoC,EAAE;gBACpC,IAAI;gBACJ,yDAAU,CAAC,OAAO,CAAC;oBACjB,yDAAU,CAAC,QAAQ;oBACnB,yDAAU,CAAC,GAAG,CAAC,CAAC,CAAC;oBACjB,yDAAU,CAAC,GAAG,CAAC,EAAE,CAAC;iBACnB,CAAC;aACH;SACF,CAAC;IACJ,CAAC;IAtFD,IAAI,UAAU;QACZ,OAAO,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,UAAU,CAAC,OAAO,IAAI,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC;IAC1F,CAAC;IAsFD,QAAQ;QACN,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;QACvB,IAAI,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE;YAC1C,OAAO,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,MAAM,CAAC;YACzC,IAAI,CAAC,cAAc,CAAC,sBAAsB,EAAE,CAAC;SAC9C;QACD,IAAI,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE;YAC/B,OAAO;SACR;QAED,IAAI,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,0BAA0B,CAAC,KAAK,IAAI,EAAE;YAAE,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,0BAA0B,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QAChJ,IAAI,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,0BAA0B,CAAC,KAAK,IAAI,IAAI,EAAE;YACzE,IAAI,OAAO,GAAG,QAAQ,CAAC,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,0BAA0B,CAAC,KAAK,CAAC,CAAC;YACtF,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,OAAO,GAAG,CAAC,IAAI,OAAO,GAAG,KAAK,EAAE;gBACpD,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,0BAA0B,CAAC,SAAS,CAAC,EAAE,eAAe,EAAE,IAAI,EAAE,CAAC;gBAC5F,OAAO;aACR;YACD,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,0BAA0B,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;SAC3E;QAED,MAAM,SAAS,GAAG,kBACb,IAAI,CAAC,UAAU,EACf,IAAI,CAAC,cAAc,CAAC,KAAK,CACP,CAAC;QAExB,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC,EAAE;YACpC,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC;gBAC5B,MAAM,EAAE,2DAA2D;aACpE,CAAC,CAAC;YACH,OAAO;SACR;QAED,MAAM,kBAAkB,GAAG,IAAI,CAAC,wBAAwB,CAAC,SAAS,CAAC,CAAC;QACpE,IAAI,kBAAkB,IAAI,kBAAkB,CAAC,MAAM,GAAG,CAAC,EAAE;YACvD,yDAAiB,CAAC,+BAA+B,CAAC,IAAI,CAAC,cAAc,EAAE,kBAAkB,CAAC,CAAC;YAC3F,OAAO;SACR;QAED,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;QAC/C,IAAI,CAAC,UAAU,EAAE,CAAC;QAClB,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;IACxB,CAAC;IAED,kBAAkB;QAChB,KAAK,CAAC,kBAAkB,EAAE,CAAC;IAC7B,CAAC;IAEM,IAAI,CAAC,KAAa,EAAE,WAAmB,EAAE,YAA+C,IAAI,EAAE,wBAAwB,GAAG,KAAK;QACnI,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC,SAAS,CAAC;QAC9B,IAAI,CAAC,UAAU,GAAG,SAAS,IAAI,IAAI,yEAAiC,EAAE,CAAC;QACvE,IAAI,CAAC,yBAAyB,GAAG,wBAAwB,CAAC;QAC1D,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC;QAC9B,IAAI,CAAC,aAAa,EAAE,CAAC;QACrB,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;QACpB,IAAI,CAAC,YAAY,GAAG,WAAW,CAAC;QAChC,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;IACzB,CAAC;IAED,YAAY;QACV,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;QACtB,IAAI,CAAC,UAAU,EAAE,CAAC;QAClB,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC;QACxB,IAAI,IAAI,CAAC,yBAAyB,EAAE;YAClC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;SACrB;IACH,CAAC;IAED,aAAa;QACX,MAAM,aAAa,GAAG,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC;QAC5D,IAAI,CAAC,kBAAkB,GAAG,CAAC,CAAC,aAAa,IAAI,aAAa,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,iEAAsB,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;aACzH,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,iEAAsB,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IACjF,CAAC;IAEO,UAAU;QAChB,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,CAAC;QAC5B,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;QACvB,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;IAC1B,CAAC;IAEO,aAAa,CAAC,SAA4C;QAChE,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,CAAC;QAC5B,IAAI,SAAS,EAAE;YACb,MAAM,EACJ,IAAI,EACJ,OAAO,EACP,IAAI,EACJ,iCAAiC,EACjC,kCAAkC,EAClC,0BAA0B,EAC1B,oBAAoB,EACpB,uBAAuB,EACvB,iCAAiC,EACjC,oCAAoC,EACrC,GAAG,SAAS,CAAC;YACd,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC;gBAC3B,IAAI;gBACJ,OAAO;gBACP,IAAI;gBACJ,iCAAiC;gBACjC,kCAAkC;gBAClC,0BAA0B;gBAC1B,oBAAoB;gBACpB,uBAAuB;gBACvB,iCAAiC;gBACjC,oCAAoC;aACrC,CAAC,CAAC;SACJ;IACH,CAAC;IAED,QAAQ,CAAC,OAAoB;QAC3B,OAAO,OAAO,CAAC,KAAK,IAAI,OAAO,CAAC,KAAK,KAAK,CAAC,CAAC;IAC9C,CAAC;CACF;;YAnMgB,0DAAW;;AArC1B;IADC,4DAAM,EAAE;;qEAC0B;AAGnC;IADC,4DAAM,EAAE;8BACD,0DAAY;oEAAoF;AAGxG;IADC,4DAAM,EAAE;8BACC,0DAAY;sEAAgC;AAGtD;IADC,2DAAK,EAAE;;6EACoD;AAG5D;IADC,2DAAK,EAAE;;sFACsE;AAG9E;IADC,4DAAM,EAAE;8BACI,0DAAY;yEAAgC;AAvB9C,oCAAoC;IALhD,+DAAS,CAAC;QACT,QAAQ,EAAE,8CAA8C;QACxD,ySAA+D;KAEhE,CAAC;qCA8Ce,0DAAW;GA7Cf,oCAAoC,CAgPhD;AAhPgD;;;;;;;;;;;;;;;;;;;;ACfK;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACAkB;AAOxE,IAAa,gCAAgC,GAA7C,MAAa,gCAAgC;IAU3C;QARA,YAAO,GAAG,IAAI,0DAAY,EAAU,CAAC;QAGrC,cAAS,GAAG,IAAI,CAAC;QAEjB,eAAU,GAAG,KAAK,CAAC;IAIf,CAAC;IAEL,QAAQ;IACR,CAAC;IAEM,IAAI;QACT,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;IACzB,CAAC;IAEK,QAAQ;;YACZ,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;YACnB,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;YACtB,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;QACtB,CAAC;KAAA;IAED,aAAa;QACX,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;QACnB,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;IACxB,CAAC;CACF;AA5BC;IADC,4DAAM,EAAE;;iEAC4B;AAF1B,gCAAgC;IAL5C,+DAAS,CAAC;QACT,QAAQ,EAAE,wCAAwC;QAClD,uRAAyD;KAE1D,CAAC;;GACW,gCAAgC,CA8B5C;AA9B4C;;;;;;;;;;;;;;;;;;;;ACPK;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACAqB;AAOvE,IAAa,4BAA4B,GAAzC,MAAa,4BAA4B;IALzC;QAOE,UAAK,GAAW,CAAC,CAAC,CAAC;QAGnB,aAAQ,GAAqD,IAAI,0DAAY,EAAsC,CAAC;QAEpH,gBAAW,GAAY,KAAK,CAAC;IAmB/B,CAAC;IAjBC,KAAK;QACH,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;QACzB,IAAI,CAAC,UAAU,EAAE;IACnB,CAAC;IAED,YAAY;QACV,IAAI,CAAC,WAAW,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC;QACrC,IAAI,CAAC,UAAU,EAAE,CAAC;IACpB,CAAC;IAED,cAAc,CAAC,CAAQ;QACrB,CAAC,CAAC,eAAe,EAAE,CAAC;IACtB,CAAC;IAEO,UAAU;QAChB,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,WAAW,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;IACtE,CAAC;CACF;AAxBC;IADC,2DAAK,EAAE;;2DACW;AAGnB;IADC,4DAAM,EAAE;8BACC,0DAAY;8DAA8F;AALzG,4BAA4B;IALxC,+DAAS,CAAC;QACT,QAAQ,EAAE,oCAAoC;QAC9C,2QAAqD;KAEtD,CAAC;GACW,4BAA4B,CA0BxC;AA1BwC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACP4D;AAS5E;AACgE;AACZ;AACQ;AAClB;AAC+B;AAE7B;AACU;AACO;AACqB;AAQ3G,IAAa,6BAA6B,GAA1C,MAAa,6BAA6B;IA4CxC,YACU,8BAA6D;QAA7D,mCAA8B,GAA9B,8BAA8B,CAA+B;QA3BvE,YAAO,GAAG,IAAI,0DAAY,EAAQ,CAAC;QAEnC,cAAS,GAAG,IAAI,CAAC;QACjB,eAAU,GAAG,KAAK,CAAC;QACnB,gCAA2B,GAAY,KAAK,CAAC;QAC7C,6BAAwB,GAAG,IAAI,CAAC;QAChC,iCAA4B,GAAY,IAAI,CAAC;QAC7C,eAAU,GAAY,KAAK,CAAC;QAQ5B,qBAAgB,GAAsC,IAAI,CAAC;QAC3D,kBAAa,GAAoB,IAAI,CAAC;QAEtC,6BAAwB,GAAG,CAAC,CAAC,CAAC;QAGtB,kBAAa,GAAmB,EAAE,CAAC;QACnC,2BAAsB,GAAY,IAAI,CAAC;QAE/C,YAAO,GAAwG,EAAE,CAAC;QAKhH,IAAI,CAAC,qBAAqB,GAAG,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACnE,IAAI,CAAC,sBAAsB,GAAG,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACrE,IAAI,CAAC,6BAA6B,GAAG,IAAI,CAAC,6BAA6B,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACnF,IAAI,CAAC,2CAA2C,GAAG,IAAI,CAAC,2CAA2C,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC/G,IAAI,CAAC,gCAAgC,GAAG,IAAI,CAAC,gCAAgC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACzF,IAAI,CAAC,2BAA2B,GAAG,IAAI,CAAC,2BAA2B,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACjF,CAAC;IAED,eAAe;QACb,IAAI,IAAI,GAAG,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,SAAuD,EAAE,EAAE;YAC9G,IAAI,SAAS,CAAC,CAAC,CAAC,EAAE;gBAChB,IAAI,CAAC,mBAAmB,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;aACxC;iBAAM;gBACL,IAAI,CAAC,kBAAkB,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;aACvC;QACH,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAE9B,IAAI,GAAG,IAAI,CAAC,kBAAkB,CAAC,QAAQ,CAAC,SAAS,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,oBAAoB,EAAE,CAAC,CAAC;QACrF,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAChC,CAAC;IAED,WAAW;QACT,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC;IAC/B,CAAC;IAEY,IAAI,CAAC,QAA8B,EAAE,kBAAuD,EAAE,0BAAmC;;YAC5I,MAAM,IAAI,CAAC,8BAA8B,CAAC,yCAAyC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;YACjG,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC;YAC1B,IAAI,CAAC,2BAA2B,GAAG,0BAA0B,CAAC;YAC9D,IAAI,CAAC,WAAW,GAAG,kBAAkB,CAAC;YACtC,IAAI,CAAC,2CAA2C,EAAE,CAAC;YACnD,IAAI,CAAC,2BAA2B,CAAC,IAAI,CAAC,CAAC;YAEvC,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE;gBACvE,IAAI,CAAC,CAAC,OAAO,IAAI,IAAI,EAAE;oBACrB,OAAO,CAAC,CAAC;iBACV;qBAAM;oBACL,OAAO,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC;iBACnC;YACH,CAAC,CAAC,CAAC,CAAC,CAAC;YAEL,IAAI,CAAC,IAAI,CAAC,WAAW,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE;gBACjD,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,qBAAqB,EAAE,qBAAqB,CAAC,CAAC;aAC5E;iBAAM;gBACL,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;aACxB;QACH,CAAC;KAAA;IAED,2CAA2C;QACzC,IAAI,IAAI,CAAC,WAAW,EAAE;YACpB,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE;gBACnC,SAAS,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE;oBACjC,IAAI,gBAAgB,GAAG,6EAAsB,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;oBACjF,IAAI,gBAAgB,EAAE;wBACpB,IAAI,CAAC,OAAO,gBAAgB,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,WAAW,CAAC,EAAE;4BAC1D,MAAM,CAAC,IAAI,GAAG,IAAI,CAAC;4BACnB,MAAM,CAAC,QAAQ,GAAG,IAAI,CAAC;4BACvB,MAAM,CAAC,IAAI,GAAG,IAAI,CAAC;yBACpB;6BAAM,IAAI,OAAO,gBAAgB,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,WAAW,EAAE;4BAChF,MAAM,CAAC,QAAQ,GAAG,IAAI,CAAC;4BACvB,MAAM,CAAC,IAAI,GAAG,IAAI,CAAC;yBACpB;6BAAM,IAAI,OAAO,gBAAgB,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,WAAW,EAAE;4BAC7F,MAAM,CAAC,IAAI,GAAG,IAAI,CAAC;yBACpB;qBACF;oBAED,IAAG,MAAM,CAAC,IAAI,IAAI,kEAAc,CAAC,KAAK,EAAC;wBACrC,MAAM,CAAC,QAAQ,GAAG,sEAAkB,CAAC,eAAe,CAAC;wBACrD,MAAM,CAAC,IAAI,GAAG,qEAAiB,CAAC,IAAI,CAAC;qBACtC;oBAED,IAAI,MAAM,CAAC,IAAI,IAAI,kEAAc,CAAC,SAAS;2BACtC,MAAM,CAAC,IAAI,IAAI,kEAAc,CAAC,cAAc;2BAC5C,MAAM,CAAC,IAAI,IAAI,kEAAc,CAAC,iBAAiB,EAAE;wBACpD,MAAM,CAAC,wBAAwB,GAAG,IAAI,CAAC;wBACvC,MAAM,CAAC,2BAA2B,GAAG,IAAI,CAAC;wBAC1C,MAAM,CAAC,0BAA0B,GAAG,IAAI,CAAC;wBACzC,MAAM,CAAC,6BAA6B,GAAG,IAAI,CAAC;qBAC7C;gBACH,CAAC,CAAC,CAAC;YACL,CAAC,CAAC,CAAC;SACJ;IACH,CAAC;IAED,YAAY,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE;QAC5B,IAAI,MAAM,EAAE;YACV,IAAI,CAAC,wBAAwB,GAAG,KAAK,CAAC;SACvC;IACH,CAAC;IAED,eAAe,CAAC,KAAK;QACnB,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;QAEhD,UAAU,CAAC,GAAG,EAAE;YACd,IAAI,GAAG,GAAG,QAAQ,CAAC,cAAc,CAAC,GAAG,IAAI,CAAC,gBAAgB,CAAC,KAAK,EAAE,CAAC,CAAC;YACpE,IAAI,GAAG,EAAE;gBACP,IAAI,UAAU,GAAG,QAAQ,CAAC,cAAc,CAAC,aAAa,CAAC,CAAC;gBACxD,IAAI,UAAU,EAAE;oBACd,UAAU,CAAC,KAAK,CAAC,WAAW,CAAC,KAAK,EAAE,GAAG,GAAG,CAAC,SAAS,IAAI,CAAC,CAAC;iBAC3D;aACF;QACH,CAAC,EAAE,GAAG,CAAC,CAAC;IACV,CAAC;IAED,gBAAgB;QACd,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC;IAC/B,CAAC;IAEK,WAAW;;YACf,IAAI,oBAAoB,GAAG,IAAI,CAAC,2BAA2B,EAAE,CAAC;YAC9D,IAAG,oBAAoB,EAAC;gBACtB,OAAO;aACR;YAED,IAAI,CAAC,qBAAqB,EAAE,CAAC;YAC7B,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;YACvB,IAAI,OAAO,GAA6B,IAAI,gEAAwB,EAAE,CAAC;YACvE,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC;YACvC,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC;YAC3C,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC,WAAW,CAAC;YACtC,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,8BAA8B,CAAC,4CAA4C,CAAC,OAAO,CAAC,CAAC;YAC/G,IAAG,MAAM,EAAE;gBACT,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;gBACxB,OAAO;aACR;YAED,IAAI,CAAC,oBAAoB,EAAE,CAAC;YAC5B,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;YACxB,IAAI,CAAC,mBAAmB,CAAC,IAAI,EAAE,CAAC;QAClC,CAAC;KAAA;IAED,eAAe,CAAC,MAAsC;QACpD,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,IAAI,CAAC,kBAAkB,CAAC,GAAG,MAAM,CAAC;QAChE,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC;QAC/B,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;IAC5B,CAAC;IAED,6BAA6B,CAAC,cAAsB;QAClD,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,IAAI,cAAc,CAAC,CAAC;QAC3E,IAAI,CAAC,IAAI,CAAC,WAAW,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE;YACjD,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,qBAAqB,EAAE,qBAAqB,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;SACxF;aAAM;YACL,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;SACxB;IACH,CAAC;IAED,eAAe,CAAC,OAAyC;QACvD,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE;YAC1B,OAAO;SACR;QAED,IAAI,CAAC,gBAAgB,CAAC,OAAO,GAAG,OAAO;IACzC,CAAC;IAED,kBAAkB,CAAC,SAA4C;QAC7D,IAAI,iBAAiB,GAAG,CAAC,CAAC;QAC1B,IAAI,CAAC,IAAI,CAAC,WAAW,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE;YACjD,IAAI,CAAC,WAAW,GAAG,EAAE,CAAC;YACtB,iBAAiB,GAAG,CAAC,CAAC;SACvB;aAAM;YACL,iBAAiB,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;SACrE;QAED,SAAS,CAAC,KAAK,GAAG,iBAAiB,GAAG,CAAC,CAAC;QACxC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAEjC,IAAI,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE;YAC3B,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;SACxB;QAED,IAAI,CAAC,2BAA2B,EAAE,CAAC;IACrC,CAAC;IAED,mBAAmB,CAAC,SAA4C;QAC9D,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,sBAAsB,CAAC,GAAG,SAA8C,CAAC;QAC/F,IAAI,CAAC,sBAAsB,GAAG,IAAI,CAAC;QAEnC,IAAI,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE;YAC3B,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;SACxB;IACH,CAAC;IAED,oBAAoB;QAClB,IAAI,CAAC,IAAI,CAAC,WAAW,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE;YACjD,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;SACvB;IACH,CAAC;IAED,cAAc;QACZ,IAAI,CAAC,sBAAsB,GAAG,IAAI,CAAC;QACnC,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,mBAAmB,EAAE,KAAK,CAAC,CAAC;IAC3D,CAAC;IAED,sBAAsB,CAAC,cAAsB;QAC3C,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;IAClD,CAAC;IAED,eAAe,CAAC,SAA6B;QAC3C,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;IAClE,CAAC;IAED,yBAAyB;QACvB,IAAI,CAAC,wBAAwB,CAAC,IAAI,EAAE,CAAC;IACvC,CAAC;IAEK,YAAY;;YAChB,MAAM,IAAI,CAAC,8BAA8B,CAAC,wCAAwC,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;YACtG,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC;YAC7B,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;YACtB,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;YACtB,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;YACxB,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;QACtB,CAAC;KAAA;IAED,oBAAoB;QAClB,IAAI,CAAC,4BAA4B,GAAG,KAAK,CAAC;IAC5C,CAAC;IAED,qBAAqB;QACnB,IAAI,CAAC,4BAA4B,GAAG,IAAI,CAAC;IAC3C,CAAC;IAED,qBAAqB,CAAC,MAAuB,EAAE,SAA6B;QAC1E,IAAI,MAAM,GAAG,SAAS,IAAI,SAAS,CAAC,OAAO;aAC1C,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,MAAM,CAAC,EAAE,CAAC;aAC9B,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,CAAC,QAAQ,KAAK,MAAM,CAAC,QAAQ,IAAI,CAAC,CAAC,IAAI,KAAK,MAAM,CAAC,IAAI,CAAC,CAAC;QAC/F,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,sBAAsB,CAAC,SAA6B;QAClD,IAAI,MAAM,GAAG,CAAC,IAAI,CAAC,WAAW;aAC7B,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,sBAAsB,KAAK,IAAI,IAAI,IAAI,CAAC,sBAAsB,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,SAAS,CAAC,IAAI,CAAC,CAAC;QAC1H,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,2BAA2B,CAAC,oBAA6B,KAAK;QAC5D,IAAI,oBAAoB,GAAG,KAAK,CAAC;QAEjC,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE;YACnC,SAAS,CAAC,UAAU,GAAG,IAAI,CAAC,gCAAgC,CAAC,0DAAkB,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC,CAAC;YAExG,IAAI,yBAAyB,GAAG,SAAS,CAAC,IAAI,IAAI,IAAI;mBACnD,SAAS,CAAC,iCAAiC,IAAI,IAAI;mBACnD,SAAS,CAAC,kCAAkC,IAAI,IAAI;mBACpD,SAAS,CAAC,0BAA0B,IAAI,IAAI;mBAC5C,SAAS,CAAC,oBAAoB,IAAI,IAAI,IAAI,SAAS,CAAC,uBAAuB,IAAI,IAAI;mBACnF,SAAS,CAAC,iCAAiC,IAAI,IAAI,IAAI,SAAS,CAAC,oCAAoC,IAAI,IAAI,CAAC;YAEjH,IAAI,SAAS,CAAC,OAAO,IAAI,SAAS,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE;gBACrD,SAAS,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE;oBACjC,MAAM,CAAC,UAAU,GAAG,IAAI,CAAC,6BAA6B,CAAC,uDAAe,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC;gBAC9F,CAAC,CAAC,CAAC;gBAEH,IAAI,8BAA8B,GAAG,SAAS,CAAC,OAAO,IAAI,IAAI,IAAI,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,qBAAqB,CAAC,uDAAe,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,0DAAkB,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;gBACrM,IAAI,sBAAsB,GAAG,SAAS,CAAC,OAAO,IAAI,IAAI;oBACtD,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,IAAI,IAAI,IAAI,CAAC,CAAC,QAAQ,IAAI,IAAI,IAAI,CAAC,CAAC,IAAI,IAAI,IAAI,CAAC;oBACjF,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,kEAAc,CAAC,cAAc,IAAI,CAAC,CAAC,IAAI,IAAI,kEAAc,CAAC,iBAAiB,IAAI,CAAC,CAAC,IAAI,IAAI,kEAAc,CAAC,SAAS,CAAC;2BACpJ,CAAC,CAAC,CAAC,aAAa,IAAI,IAAI,IAAI,CAAC,CAAC,cAAc,IAAI,IAAI,IAAI,CAAC,CAAC,iBAAiB,IAAI,IAAI,IAAI,CAAC,CAAC,YAAY,IAAI,IAAI,IAAI,CAAC,CAAC,eAAe,IAAI,IAAI,CAAC,CAAC;uBAC9I,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,kEAAc,CAAC,cAAc,IAAI,CAAC,CAAC,IAAI,IAAI,kEAAc,CAAC,iBAAiB,IAAI,CAAC,CAAC,IAAI,IAAI,kEAAc,CAAC,SAAS,CAAC;2BACvJ,CAAC,CAAC,CAAC,aAAa,IAAI,IAAI,IAAI,CAAC,CAAC,cAAc,IAAI,IAAI,IAAI,CAAC,CAAC,iBAAiB,IAAI,IAAI,IAAI,CAAC,CAAC,YAAY,IAAI,IAAI,IAAI,CAAC,CAAC,eAAe,IAAI,IAAI;+BACxI,CAAC,CAAC,wBAAwB,IAAI,IAAI,IAAI,CAAC,CAAC,2BAA2B,IAAI,IAAI,IAAI,CAAC,CAAC,0BAA0B,IAAI,IAAI,IAAI,CAAC,CAAC,6BAA6B,IAAI,IAAI,CAAC,CAAC,CAAC;aAC3K;YAED,IAAI,gCAAgC,GAAG,CAAC,sBAAsB;mBACzD,yBAAyB;mBACzB,8BAA8B;mBAC9B,CAAC,SAAS,CAAC,UAAU,IAAI,IAAI,IAAI,SAAS,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC;mBACjE,CAAC,SAAS,CAAC,OAAO,IAAI,IAAI,IAAI,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,UAAU,IAAI,IAAI,IAAI,CAAC,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC;YAEjH,IAAI,CAAC,oBAAoB,IAAI,gCAAgC,EAAE;gBAC7D,oBAAoB,GAAG,IAAI,CAAC;aAC7B;YAED,IAAI,iBAAiB,EAAE;gBACrB,SAAS,CAAC,2BAA2B,GAAG,gCAAgC,CAAC;aAC1E;QACH,CAAC,CAAC,CAAC;QAEH,IAAI,oBAAoB,EAAE;YACxB,IAAI,CAAC,qBAAqB,EAAE,CAAC;SAC9B;aAAM;YACL,IAAI,CAAC,oBAAoB,EAAE,CAAC;SAC7B;QAED,OAAO,oBAAoB,CAAC;IAC9B,CAAC;IAED,6BAA6B,CAAC,MAAuB;QACnD,MAAM,aAAa,GAAoE,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QACxG,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE;YAC5B,MAAM,kBAAkB,GAAG,0DAAkB,CAAC,WAAW,CAAC,EAAE,CAAC;YAC7D,aAAa,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;YACvC,IAAI,EAAE,CAAC,OAAO,IAAI,EAAE,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE;gBACvC,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,MAAM,CAAC,EAAE,CAAC,IAAI,aAAa,CAAC,IAAI,CAAC,uDAAe,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;aACxG;QACH,CAAC,CAAC,CAAC;QAEH,MAAM,CAAC,SAAS,GAAG,kEAAW,CAAC,eAAe,CAAC;QAC/C,IAAI,MAAM,GAAG,2DAAmB,CAAC,yBAAyB,CAAC,aAAa,EAAE,MAAM,EAAE,qEAA6B,CAAC,WAAW,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC;QAC/J,OAAO,MAAM,CAAC;IAChB,CAAC;IAEA,gCAAgC,CAAC,SAA6B;QAC7D,MAAM,aAAa,GAAoE,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QACxG,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE;YAC5B,MAAM,kBAAkB,GAAG,0DAAkB,CAAC,WAAW,CAAC,EAAE,CAAC;YAC7D,IAAI,kBAAkB,CAAC,EAAE,KAAK,SAAS,CAAC,EAAE,EAAE;gBAC1C,aAAa,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;aACxC;YAED,IAAI,EAAE,CAAC,OAAO,IAAI,EAAE,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE;gBACvC,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC,uDAAe,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;aACvF;QACH,CAAC,CAAC,CAAC;QAEH,SAAS,CAAC,SAAS,GAAG,kEAAW,CAAC,kBAAkB,CAAC;QACrD,IAAI,MAAM,GAAG,2DAAmB,CAAC,yBAAyB,CAAC,aAAa,EAAE,SAAS,CAAC,CAAC;QACrF,OAAO,MAAM,CAAC;IAChB,CAAC;CACF;;YAlU2C,uEAA6B;;AA1CvE;IADC,+DAAS,CAAC,qGAAoC,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;8BACpD,qGAAoC;yEAAC;AAGjE;IADC,+DAAS,CAAC,iGAAqC,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;8BAChD,iGAAqC;8EAAC;AAGvE;IADC,+DAAS,CAAC,8GAAyC,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;8BACtD,8GAAyC;4EAAC;AAGzE;IADC,+DAAS,CAAC,iFAA2B,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;8BAC1C,iFAA2B;0EAAC;AAGzD;IADC,+DAAS,CAAC,2FAAgC,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;8BAC1C,2FAAgC;+EAAC;AAGnE;IADC,4DAAM,EAAE;;8DAC0B;AAlBxB,6BAA6B;IANzC,+DAAS,CAAC;QACT,QAAQ,EAAE,qCAAqC;QAC/C,uPAAsD;KAEvD,CAAC;qCA+C0C,uEAA6B;GA7C5D,6BAA6B,CA+WzC;AA/WyC;;;;;;;;;;;;;;;;;;;;;;AC3BU;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACAyE;AAC5C;AAE2D;AAC5B;AACjD;AAC+I;AAC7J;AACE;AACgB;AAG5D,MAAM,aAAa;CAGzB;AAQD,IAAa,oCAAoC,GAAjD,MAAa,oCAAoC;IAmG/C,YACU,YAAyB,EACzB,GAAe,EACf,KAAa;QAFb,iBAAY,GAAZ,YAAY,CAAa;QACzB,QAAG,GAAH,GAAG,CAAY;QACf,UAAK,GAAL,KAAK,CAAQ;QA5EvB,yBAAoB,GAAG,IAAI,0DAAY,EAAQ,CAAC;QAGhD,0BAAqB,GAAG,IAAI,0DAAY,EAAQ,CAAC;QAEjD,UAAK,GAAG,MAAM,CAAC;QACf,YAAO,GAAG,QAAQ,CAAC;QACnB,gBAAW,GAAG,YAAY,CAAC;QAC3B,oBAAe,GAAG,gBAAgB,CAAC;QACnC,mBAAc,GAAG,eAAe,CAAC;QACjC,6BAAwB,GAAG,wBAAwB,CAAC;QACpD,yBAAoB,GAAG,oBAAoB,CAAC;QAI5C,oBAAe,GAAW,CAAC,EAAE,CAAC;QAQ9B,gBAAW,GAAY,KAAK,CAAC;QAC7B,eAAU,GAAY,KAAK,CAAC;QAE5B,iBAAY,GAAyB,EAAE,CAAC;QACxC,qBAAgB,GAAyB,EAAE,CAAC;QAC5C,oBAAe,GAAyB,EAAE,CAAC;QAE3C,uBAAkB,GAAyB,EAAE,CAAC;QAC9C,gBAAW,GAAG,qDAAU,CAAC;QACzB,kBAAa,GAAqD,EAAE,CAAC;QAErE,aAAQ,GAAG;YACT,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE;YAChC,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,EAAE,UAAU,EAAE;YACxC,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE;YAChC,EAAE,IAAI,EAAE,eAAe,EAAE,MAAM,EAAE,gBAAgB,EAAE;YACnD,EAAE,IAAI,EAAE,gBAAgB,EAAE,MAAM,EAAE,iBAAiB,EAAE;YACrD,EAAE,IAAI,EAAE,mBAAmB,EAAE,MAAM,EAAE,KAAK,EAAE;YAC5C,EAAE,IAAI,EAAE,cAAc,EAAE,MAAM,EAAE,eAAe,EAAE;YACjD,EAAE,IAAI,EAAE,iBAAiB,EAAE,MAAM,EAAE,KAAK,EAAE;YAC1C,EAAE,IAAI,EAAE,4BAA4B,EAAE,MAAM,EAAE,wBAAwB,EAAE;YACxE,EAAE,IAAI,EAAE,+BAA+B,EAAE,MAAM,EAAE,KAAK,EAAE;YACxD,EAAE,IAAI,EAAE,0BAA0B,EAAE,MAAM,EAAE,sBAAsB,EAAE;YACpE,EAAE,IAAI,EAAE,6BAA6B,EAAE,MAAM,EAAE,KAAK,EAAE;SACvD,CAAC;QAGF,cAAS,GAAG;YACV,UAAU,EAAE,CAAC;YACb,gBAAgB,EAAE,IAAI;YACtB,kBAAkB,EAAE,EAAE;SACvB,CAAC;QAyBA,IAAI,CAAC,eAAe,GAAG,MAAM,CAAC,IAAI,CAAC,iEAAsB,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,8DAAmB,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QAEnI,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC;YAC5C,IAAI,EAAE;gBACJ,IAAI;gBACJ,yDAAU,CAAC,OAAO,CAAC;oBACjB,yDAAU,CAAC,QAAQ;iBACpB,CAAC;aACH;YACD,OAAO,EAAE;gBACP,IAAI;gBACJ,yDAAU,CAAC,OAAO,CAAC;oBACjB,yDAAU,CAAC,QAAQ;iBACpB,CAAC;aACH;YACD,IAAI,EAAE;gBACJ,EAAE;gBACF,yDAAU,CAAC,OAAO,CAAC;oBACjB,yDAAU,CAAC,QAAQ;oBACnB,yDAAU,CAAC,SAAS,CAAC,CAAC,CAAC;oBACvB,yDAAU,CAAC,SAAS,CAAC,EAAE,CAAC;iBACzB,CAAC;aACH;YACD,iCAAiC,EAAE;gBACjC,IAAI;gBACJ,yDAAU,CAAC,OAAO,CAAC;oBACjB,yDAAU,CAAC,QAAQ;oBACnB,kEAAe;oBACf,yDAAU,CAAC,GAAG,CAAC,CAAC,CAAC;oBACjB,yDAAU,CAAC,GAAG,CAAC,KAAK,CAAC;iBACtB,CAAC;aACH;YACD,kCAAkC,EAAE;gBAClC,IAAI;gBACJ,yDAAU,CAAC,OAAO,CAAC;oBACjB,yDAAU,CAAC,QAAQ;oBACnB,kEAAe;oBACf,yDAAU,CAAC,GAAG,CAAC,CAAC,CAAC;oBACjB,yDAAU,CAAC,GAAG,CAAC,KAAK,CAAC;iBACtB,CAAC;aACH;YACD,0BAA0B,EAAE;gBAC1B,IAAI;aACL;YACD,oBAAoB,EAAE;gBACpB,IAAI;gBACJ,yDAAU,CAAC,OAAO,CAAC;oBACjB,yDAAU,CAAC,QAAQ;oBACnB,kEAAe;oBACf,yDAAU,CAAC,GAAG,CAAC,CAAC,CAAC;oBACjB,yDAAU,CAAC,GAAG,CAAC,KAAK,CAAC;iBACtB,CAAC;aACH;YACD,uBAAuB,EAAE;gBACvB,IAAI;gBACJ,yDAAU,CAAC,OAAO,CAAC;oBACjB,yDAAU,CAAC,QAAQ;oBACnB,yDAAU,CAAC,GAAG,CAAC,CAAC,CAAC;oBACjB,yDAAU,CAAC,GAAG,CAAC,EAAE,CAAC;iBACnB,CAAC;aACH;YACD,iCAAiC,EAAE;gBACjC,IAAI;gBACJ,yDAAU,CAAC,OAAO,CAAC;oBACjB,yDAAU,CAAC,QAAQ;oBACnB,kEAAe;oBACf,yDAAU,CAAC,GAAG,CAAC,CAAC,CAAC;oBACjB,yDAAU,CAAC,GAAG,CAAC,KAAK,CAAC;iBACtB,CAAC;aACH;YACD,oCAAoC,EAAE;gBACpC,IAAI;gBACJ,yDAAU,CAAC,OAAO,CAAC;oBACjB,yDAAU,CAAC,QAAQ;oBACnB,yDAAU,CAAC,GAAG,CAAC,CAAC,CAAC;oBACjB,yDAAU,CAAC,GAAG,CAAC,EAAE,CAAC;iBACnB,CAAC;aACH;SACF,CAAC,CAAC;IACL,CAAC;IAtGD,qBAAqB;QACnB,IAAI,MAAM,GAAG,IAAI,CAAC,iBAAiB,CAAC,iEAAsB,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;QAC3H,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,gBAAgB,CAAC,IAAoB;QACnC,OAAO,2DAAgB,CAAC,IAAI,CAAC,CAAC;IAChC,CAAC;IAED,oBAAoB,CAAC,QAA4B;QAC/C,OAAO,+DAAoB,CAAC,QAAQ,CAAC,CAAC;IACxC,CAAC;IAED,gBAAgB,CAAC,IAAuB;QACtC,OAAO,8DAAmB,CAAC,IAAI,CAAC,CAAC;IACnC,CAAC;IAyFD,QAAQ;QACN,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;QACxB,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QACnC,IAAI,CAAC,2BAA2B,EAAE,CAAC;QAEnC,IAAI,CAAC,cAAc,CAAC,YAAY,CAAC,SAAS,CAAC,GAAG,EAAE;YAC9C,IAAI,CAAC,SAAS,CAAC,IAAI,GAAG,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC;YAC9D,IAAI,CAAC,SAAS,CAAC,OAAO,GAAG,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC;YACpE,IAAI,CAAC,SAAS,CAAC,IAAI,GAAG,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC;YAC9D,IAAI,CAAC,SAAS,CAAC,iCAAiC,GAAG,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,iCAAiC,CAAC,KAAK,CAAC;YACxH,IAAI,CAAC,SAAS,CAAC,kCAAkC,GAAG,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,kCAAkC,CAAC,KAAK,CAAC;YAC1H,IAAI,CAAC,SAAS,CAAC,0BAA0B,GAAG,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,0BAA0B,CAAC,KAAK,CAAC;YAC1G,IAAI,CAAC,SAAS,CAAC,oBAAoB,GAAG,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,oBAAoB,CAAC,KAAK,CAAC;YAC9F,IAAI,CAAC,SAAS,CAAC,uBAAuB,GAAG,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,uBAAuB,CAAC,KAAK,CAAC;YACpG,IAAI,CAAC,SAAS,CAAC,iCAAiC,GAAG,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,iCAAiC,CAAC,KAAK,CAAC;YACxH,IAAI,CAAC,SAAS,CAAC,oCAAoC,GAAG,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,oCAAoC,CAAC,KAAK,CAAC;YAC9H,IAAI,CAAC,2BAA2B,EAAE,CAAC;QACrC,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,kBAAkB,GAAG,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,iEAAsB,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;aAC3I,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,iEAAsB,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IACjF,CAAC;IAED,WAAW;QACT,IAAI,CAAC,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;QAC/B,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC;IAClB,CAAC;IAED,eAAe;QACb,IAAI,CAAC,mBAAmB,EAAE,CAAC;QAC3B,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;IAC1B,CAAC;IAED,aAAa;QACX,MAAM,aAAa,GAAG,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC;QAC9D,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QACpD,IAAI,CAAC,SAAS,CAAC,IAAI,GAAG,aAAa,CAAC;QACpC,IAAI,CAAC,SAAS,CAAC,OAAO,GAAG,IAAI,CAAC;QAC9B,IAAI,CAAC,kBAAkB,GAAG,CAAC,CAAC,aAAa,IAAI,aAAa,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,iEAAsB,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;aACzH,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,iEAAsB,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IACjF,CAAC;IAED,gBAAgB;QACd,MAAM,gBAAgB,GAAG,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC;QACpE,IAAI,CAAC,SAAS,CAAC,OAAO,GAAG,gBAAgB,CAAC;QAC1C,IAAI,CAAC,2CAA2C,EAAE,CAAC;IACrD,CAAC;IAED,yBAAyB,CAAC,MAAsC;QAC9D,IAAI,MAAM,GAAG,IAAI,CAAC,iBAAiB,CAAC,CAAC,MAAM,CAAC,IAAI,IAAI,MAAM,CAAC,IAAI,KAAK,CAAC,CAAC,IAAI,iEAAsB,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,IAAI,EAAE,IAAI,CAAC,eAAe,CAAC,CAAC;QAC7K,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,eAAe,CAAC,MAAsC;QACpD,IAAI,YAAY,GAAG,IAAI,CAAC,iBAAiB,CAAC,CAAC,MAAM,CAAC,IAAI,IAAI,MAAM,CAAC,IAAI,KAAK,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,IAAI,MAAM,CAAC,QAAQ,KAAK,CAAC,CAAC,IAAI,iEAAsB,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,IAAI,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC;QAC9P,IAAI,MAAM,GAAG,YAAY,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACrD,IAAI,IAAI,CAAC,iCAAiC,IAAI,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE;YAC/E,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,IAAI,wDAAiB,CAAC,IAAI,IAAI,CAAC,CAAC,KAAK,IAAI,wDAAiB,CAAC,IAAI,CAAC;SACpG;aAAM,IAAI,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE;YAC5C,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,IAAI,wDAAiB,CAAC,KAAK,IAAI,CAAC,CAAC,KAAK,IAAI,wDAAiB,CAAC,KAAK,CAAC;SACtG;QAED,IAAI,MAAM,CAAC,QAAQ,IAAI,IAAI,IAAI,MAAM,IAAI,MAAM,CAAC,MAAM,IAAI,CAAC,EAAE;YAC3D,MAAM,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,wDAAiB,CAAC,IAAI,EAAE,CAAC;SAC3D;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,mBAAmB;QACjB,IAAI,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,SAAS,CAAC,OAAO,IAAI,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE;YACjF,IAAI,WAAW,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE;gBACpD,OAAO,MAAM,CAAC,IAAI;YACpB,CAAC,CAAC,CAAC;YAEH,IAAI,oBAAoB,GAAG,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,IAAI,wDAAiB,CAAC,IAAI,IAAI,IAAI,IAAI,wDAAiB,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC;YAC/H,IAAI,sBAAsB,GAAG,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,IAAI,wDAAiB,CAAC,KAAK,IAAI,IAAI,IAAI,wDAAiB,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC;YACnI,IAAI,CAAC,iCAAiC,GAAG,oBAAoB,IAAI,sBAAsB,CAAC;YACxF,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE;gBACtC,IAAI,IAAI,CAAC,iCAAiC,EAAE;oBAC1C,IAAI,MAAM,CAAC,IAAI,IAAI,wDAAiB,CAAC,KAAK,IAAI,MAAM,CAAC,IAAI,IAAI,wDAAiB,CAAC,KAAK,EAAE;wBACpF,MAAM,CAAC,IAAI,GAAG,IAAI,CAAC;qBACpB;iBACF;qBAAM;oBACL,IAAI,MAAM,CAAC,IAAI,IAAI,wDAAiB,CAAC,IAAI,IAAI,MAAM,CAAC,IAAI,IAAI,wDAAiB,CAAC,IAAI,EAAE;wBAClF,MAAM,CAAC,IAAI,GAAG,IAAI,CAAC;qBACpB;iBACF;YACH,CAAC,CAAC,CAAC;SACJ;IACH,CAAC;IAED,kBAAkB,CAAC,KAAa,EAAE,SAAyC,IAAI;QAC7E,IAAI,MAAM,IAAI,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,IAAI,qDAAc,CAAC,SAAS;eACzD,MAAM,CAAC,IAAI,IAAI,qDAAc,CAAC,iBAAiB;eAC/C,MAAM,CAAC,IAAI,IAAI,qDAAc,CAAC,cAAc,CAAC,EAAE;YAClD,OAAO,IAAI,CAAC;SACb;QAED,OAAO,KAAK,IAAI,IAAI,CAAC;IACvB,CAAC;IAED,sBAAsB,CAAC,KAAa,EAAE,SAAyC,IAAI;QACjF,IAAI,MAAM,IAAI,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,IAAI,qDAAc,CAAC,SAAS;eACzD,MAAM,CAAC,IAAI,IAAI,qDAAc,CAAC,iBAAiB;eAC/C,MAAM,CAAC,IAAI,IAAI,qDAAc,CAAC,cAAc,CAAC,EAAE;YAClD,OAAO,IAAI,CAAC;SACb;QAED,OAAO,KAAK,GAAG,CAAC,IAAI,KAAK,GAAG,KAAK,CAAC;IACpC,CAAC;IAED,kBAAkB,CAAC,KAAa,EAAE,SAAyC,IAAI;QAC7E,IAAI,MAAM,IAAI,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,IAAI,qDAAc,CAAC,SAAS;eACzD,MAAM,CAAC,IAAI,IAAI,qDAAc,CAAC,iBAAiB;eAC/C,MAAM,CAAC,IAAI,IAAI,qDAAc,CAAC,cAAc,CAAC,EAAE;YAClD,OAAO,IAAI,CAAC;SACb;QAED,OAAO,KAAK,GAAG,CAAC,IAAI,KAAK,IAAI,EAAE,CAAC;IAClC,CAAC;IAED,eAAe,CAAC,MAAsC;QACpD,IAAI,MAAM,GAAG,IAAI,CAAC,eAAe,CAAC,uDAAe,CAAC,WAAW,CAAC,MAAM,CAAC,EAAE,0DAAkB,CAAC,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;QACvH,OAAO,MAAM,IAAI,MAAM,CAAC,KAAK,KAAK,IAAI,CAAC,eAAe,CAAC;IACzD,CAAC;IAED,uBAAuB,CAAC,MAAsC,EAAE,QAAgB;QAC9E,IAAI,MAAM,GAAG,MAAM,CAAC,UAAU,IAAI,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC;QACnF,OAAO,MAAM,IAAI,MAAM,CAAC,KAAK,KAAK,IAAI,CAAC,eAAe,CAAC;IACzD,CAAC;IAED,0BAA0B,CAAC,SAA4C,EAAE,QAAgB;QACvF,IAAI,MAAM,GAAG,SAAS,CAAC,UAAU,IAAI,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC;QACzF,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,qBAAqB,CAAC,MAAsC;QAC1D,IAAI,MAAM,IAAI,IAAI,EAAE;YAClB,IAAI,qBAAqB,GAAG,IAAI,CAAC,eAAe,CAAC,uDAAe,CAAC,WAAW,CAAC,MAAM,CAAC,EAAE,0DAAkB,CAAC,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;YACtI,OAAO,qBAAqB,IAAI,MAAM,CAAC,KAAK,KAAK,IAAI,CAAC,eAAe,CAAC;SACvE;QAED,OAAO,KAAK,CAAC;IACf,CAAC;IAED,qBAAqB,CAAC,IAAoB;QACxC,OAAO,IAAI,IAAI,qDAAc,CAAC,cAAc,IAAI,IAAI,IAAI,qDAAc,CAAC,iBAAiB,IAAI,IAAI,IAAI,qDAAc,CAAC,SAAS,CAAC;IAC/H,CAAC;IAEO,iBAAiB,CAAC,GAAW,EAAE,IAAY;QACjD,IAAI,CAAC,GAAG,EAAE;YACR,OAAO,EAAE,CAAC;SACX;QAED,IAAI,MAAM,CAAC;QACX,QAAQ,IAAI,EAAE;YACZ,KAAK,IAAI,CAAC,WAAW;gBACnB,MAAM,GAAG,2DAAgB,CAAC;gBAC1B,MAAM;YACR,KAAK,IAAI,CAAC,eAAe;gBACvB,MAAM,GAAG,+DAAoB,CAAC;gBAC9B,MAAM;YACR,KAAK,IAAI,CAAC,cAAc;gBACtB,IAAI,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE;oBACvC,MAAM,GAAG,8DAAmB,CAAC;iBAC9B;qBAAM,IAAI,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAyB,KAAK,wDAAiB,CAAC,IAAI,IAAI,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAyB,KAAK,wDAAiB,CAAC,IAAI,EAAE;oBAC3K,MAAM,GAAG,sEAA2B,CAAC;iBACtC;qBAAM,IAAI,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAyB,KAAK,wDAAiB,CAAC,KAAK,IAAI,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAyB,KAAK,wDAAiB,CAAC,KAAK,EAAE;oBAC7K,MAAM,GAAG,wEAA6B,CAAC;iBACxC;qBAAM;oBACL,MAAM,GAAG,8DAAmB,CAAC;iBAC9B;gBACD,MAAM;YACR;gBACE,OAAO,EAAE,CAAC;SACb;QAED,OAAO,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE;YAC9B,OAAO;gBACL,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC;gBAChB,KAAK,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC;aAC1B,CAAC;QACJ,CAAC,CAAC,CAAC;IACL,CAAC;IAED,kBAAkB,CAAC,MAAsC;QACvD,MAAM,CAAC,QAAQ,GAAG,IAAI,CAAC;QACvB,MAAM,CAAC,IAAI,GAAG,IAAI,CAAC;QACnB,IAAI,CAAC,uBAAuB,GAAG,IAAI,CAAC,yBAAyB,CAAC,MAAM,CAAC,CAAC;QAEtE,IAAI,IAAI,CAAC,uBAAuB,CAAC,MAAM,IAAI,CAAC,EAAE;YAC5C,MAAM,CAAC,QAAQ,GAAG,IAAI,CAAC,uBAAuB,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;SACzD;QAED,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC;QACxD,IAAI,IAAI,CAAC,mBAAmB,CAAC,MAAM,IAAI,CAAC,EAAE;YACxC,MAAM,CAAC,IAAI,GAAG,IAAI,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;SACjD;IACH,CAAC;IAED,sBAAsB,CAAC,MAAsC;QAC3D,MAAM,CAAC,IAAI,GAAG,IAAI,CAAC;QACnB,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC;QACxD,IAAI,IAAI,CAAC,mBAAmB,CAAC,MAAM,IAAI,CAAC,EAAE;YACxC,MAAM,CAAC,IAAI,GAAG,IAAI,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;SACjD;IACH,CAAC;IAED,aAAa,CAAC,MAAsC;QAClD,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;QACxB,IAAI,CAAC,eAAe,GAAG,MAAM,CAAC,KAAK,CAAC;QACpC,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,KAAK,CAAC,qBAAQ,MAAM,CAAE,CAAC;QACjD,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC,qBAAqB,EAAE,CAAC;QACxD,IAAI,CAAC,uBAAuB,GAAG,IAAI,CAAC,yBAAyB,CAAC,MAAM,CAAC,CAAC;QACtE,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC;QACxD,IAAI,CAAC,qBAAqB,CAAC,IAAI,EAAE,CAAC;IACpC,CAAC;IAED,aAAa,CAAC,MAAsC;QAClD,IAAI,CAAC,eAAe,GAAG,CAAC,GAAG,CAAC;QAC5B,OAAO,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACxC,IAAI,MAAM,CAAC,IAAI,IAAI,qDAAc,CAAC,cAAc;eAC3C,MAAM,CAAC,IAAI,IAAI,qDAAc,CAAC,iBAAiB;eAC/C,MAAM,CAAC,IAAI,IAAI,qDAAc,CAAC,SAAS,EAAE;YAC5C,MAAM,CAAC,wBAAwB,GAAG,IAAI,CAAC;YACvC,MAAM,CAAC,2BAA2B,GAAG,IAAI,CAAC;YAC1C,MAAM,CAAC,0BAA0B,GAAG,IAAI,CAAC;YACzC,MAAM,CAAC,6BAA6B,GAAG,IAAI,CAAC;SAC7C;QAED,IAAI,CAAC,2BAA2B,EAAE,CAAC;QACnC,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;QACzB,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;QACxB,IAAI,CAAC,mBAAmB,EAAE,CAAC;IAC7B,CAAC;IAED,eAAe,CAAC,MAAsC,EAAE,KAAa;QACnE,IAAI,CAAC,eAAe,GAAG,CAAC,GAAG,CAAC;QAC5B,IAAI,IAAI,CAAC,cAAc,IAAI,MAAM,CAAC,KAAK,IAAI,IAAI,CAAC,UAAU,EAAE;YAC1D,IAAI,CAAC,SAAS,CAAC,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,IAAI,MAAM,CAAC,KAAK,CAAC,CAAC;SACtF;aAAM;YACL,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;SAClE;QACD,OAAO,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACxC,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;QACzB,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;QACxB,IAAI,CAAC,mBAAmB,EAAE,CAAC;QAC3B,IAAI,CAAC,2BAA2B,EAAE,CAAC;IACrC,CAAC;IAED,cAAc,CAAC,MAAsC;QACnD,IAAI,CAAC,SAAS,CAAC,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,IAAI,MAAM,CAAC,KAAK,CAAC,CAAC;QACrF,IAAI,CAAC,mBAAmB,EAAE,CAAC;QAC3B,IAAI,CAAC,2BAA2B,EAAE,CAAC;IACrC,CAAC;IAED,YAAY;QACV,IAAI,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,UAAU,EAAE;YACvC,OAAO;SACR;QAED,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;QACvB,IAAI,SAAS,GAAG,IAAI,sEAA8B,EAAE,CAAC;QACrD,IAAI,CAAC,cAAc,EAAE,CAAC;QACtB,SAAS,CAAC,KAAK,GAAG,IAAI,CAAC,cAAc,CAAC;QACtC,IAAI,CAAC,eAAe,GAAG,SAAS,CAAC,KAAK,CAAC;QACvC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,IAAI,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,MAAM,IAAI,CAAC,EAAE;YACjE,IAAI,CAAC,SAAS,CAAC,OAAO,GAAG,EAAE,CAAC;SAC7B;QAED,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QACvC,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,KAAK,CAAC,qBAAQ,SAAS,CAAE,CAAC;QACvD,IAAI,cAAc,GAAG,KAAK,GAAG,SAAS,CAAC,KAAK,CAAC;QAC7C,UAAU,CAAC,GAAG,EAAE;YACd,QAAQ,CAAC,cAAc,CAAC,cAAc,CAAC,CAAC,KAAK,EAAE,CAAC;YAChD,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC,qBAAqB,EAAE,CAAC;QAC1D,CAAC,EAAE,EAAE,CAAC,CAAC;QACP,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,qBAAqB;QACnB,IAAI,CAAC,aAAa,EAAE,CAAC;IACvB,CAAC;IAED,eAAe,CAAC,OAAgB,EAAE,SAAS,GAAG,KAAK;QACjD,IAAI,SAAS,EAAE;YACb,OAAO;SACR;QAED,IAAI,IAAI,CAAC,GAAG,EAAE;YACZ,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;SACpB;QAED,MAAM,mBAAmB,GAAG,GAAG,EAAE;YAC/B,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC,GAAG,EAAE;gBAChC,IAAI;oBACF,MAAM,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,aAAa,CAAC,aAAa,CAAC,6CAA6C,CAAC,CAAC;oBAC/F,IAAI,CAAC,EAAE,EAAE;wBACP,OAAO;qBACR;oBAED,IAAI,CAAC,GAAG,GAAG,IAAI,yDAAgB,CAAC,EAAE,EAAE;wBAClC,UAAU,EAAE,CAAC;wBACb,gBAAgB,EAAE,IAAI;wBACtB,kBAAkB,EAAE,EAAE;qBACvB,CAAC,CAAC;iBACJ;gBAAC,OAAO,KAAK,EAAE;iBACf;YACH,CAAC,CAAC;QACJ,CAAC,CAAC;QAEF,IAAI,OAAO,EAAE;YACX,UAAU,CAAC,GAAG,EAAE;gBACd,mBAAmB,EAAE,CAAC;YACxB,CAAC,EAAE,OAAO,CAAC,CAAC;SACb;aAAM;YACL,mBAAmB,EAAE,CAAC;SACvB;IACH,CAAC;IAED,aAAa;QACX,IAAI,CAAC,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC;IAChC,CAAC;IAED,QAAQ,CAAC,OAAoB;QAC3B,OAAO,OAAO,CAAC,KAAK,IAAI,OAAO,CAAC,KAAK,KAAK,CAAC,CAAC;IAC9C,CAAC;IAEO,aAAa,CAAC,SAA4C;QAChE,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,CAAC;QAC5B,IAAI,SAAS,EAAE;YACb,MAAM,EACJ,IAAI,EACJ,OAAO,EACP,IAAI,EACJ,iCAAiC,EACjC,kCAAkC,EAClC,0BAA0B,EAC1B,oBAAoB,EACpB,uBAAuB,EACvB,iCAAiC,EACjC,oCAAoC,EACrC,GAAG,SAAS,CAAC;YACd,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC;gBAC3B,IAAI;gBACJ,OAAO;gBACP,IAAI;gBACJ,iCAAiC;gBACjC,kCAAkC;gBAClC,0BAA0B;gBAC1B,oBAAoB;gBACpB,uBAAuB;gBACvB,iCAAiC;gBACjC,oCAAoC;aACrC,CAAC,CAAC;SACJ;IACH,CAAC;CACF;;YA3byB,0DAAW;YACpB,wDAAU;YACR,oDAAM;;AApGvB;IADC,2DAAK,EAAE;;kEACmB;AAG3B;IADC,2DAAK,EAAE;8BACG,yEAAiC;uEAAC;AAG7C;IADC,2DAAK,EAAE;;4EACe;AAGvB;IADC,2DAAK,EAAE;;6EAC6E;AAGrF;IADC,2DAAK,EAAE;;yGACgD;AAGxD;IADC,2DAAK,EAAE;;yFAC+B;AAGvC;IADC,2DAAK,EAAE;;4FACsE;AAG9E;IADC,2DAAK,EAAE;;+FAC+E;AAGvF;IADC,4DAAM,EAAE;;kFACuC;AAGhD;IADC,4DAAM,EAAE;;mFACwC;AA7BtC,oCAAoC;IANhD,+DAAS,CAAC;QACT,QAAQ,EAAE,6CAA6C;QACvD,iRAAuD;KAExD,CAAC;qCAsGwB,0DAAW;QACpB,wDAAU;QACR,oDAAM;GAtGZ,oCAAoC,CA+hBhD;AA/hBgD;;;;;;;;;;;;;;;;;;;;ACvBgB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACAO;AAQxE,IAAa,yCAAyC,GAAtD,MAAa,yCAAyC;IAYpD;QAVA,iBAAY,GAAyB,IAAI,0DAAY,EAAU,CAAC;QAGhE,oBAAe,GAAyB,IAAI,0DAAY,EAAU,CAAC;QAEnE,cAAS,GAAG,IAAI,CAAC;IAKD,CAAC;IAEjB,QAAQ;QACN,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;QAC1B,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;IACxB,CAAC;IAEM,cAAc,CAAC,QAAgB;QACpC,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC;QAC1B,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;QAC1B,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC;QAChC,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;IAC1B,CAAC;IAEM,iBAAiB,CAAC,cAAsB;QAC7C,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;QAC1B,IAAI,CAAC,eAAe,GAAG,cAAc,CAAC;QACtC,IAAI,CAAC,oBAAoB,GAAG,KAAK,CAAC;QAClC,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;IAC1B,CAAC;IAEM,QAAQ;;YACZ,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;YACzB,IAAI,IAAI,CAAC,oBAAoB,EAAC;gBAC5B,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;aACxC;iBAAM;gBACL,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;aACjD;YAED,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;QACxB,CAAC;KAAA;IAED,QAAQ;QACN,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;QACtB,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;IAC5B,CAAC;CACF;AA9CC;IADC,4DAAM,CAAC,cAAc,CAAC;8BACT,0DAAY;+EAAsC;AAGhE;IADC,4DAAM,CAAC,iBAAiB,CAAC;8BACT,0DAAY;kFAAsC;AALxD,yCAAyC;IANrD,+DAAS,CAAC;QACT,QAAQ,EAAE,mDAAmD;QAC7D,wTAAoE;KAErE,CAAC;;GAEW,yCAAyC,CAgDrD;AAhDqD;;;;;;;;;;;;;;;;;;;;ACRC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACAoC;AAExC;AAC2F;AACN;AAInE;AACpB;AAQjD,IAAa,qCAAqC,GAAlD,MAAa,qCAAsC,SAAQ,yDAAiB;IA2B1E,YACU,GAAe,EACf,mBAAkD;QAC1D,KAAK,EAAE,CAAC;QAFA,QAAG,GAAH,GAAG,CAAY;QACf,wBAAmB,GAAnB,mBAAmB,CAA+B;QA5B5D,YAAO,GAAkR,EAAE,CAAC;QAE5R,UAAK,GAAG,MAAM,CAAC;QACf,cAAS,GAAG,IAAI,CAAC;QACjB,oBAAe,GAAG,gBAAgB,CAAC;QACnC,mBAAc,GAAG,eAAe,CAAC;QAGjC,eAAU,GAAG,KAAK,CAAC;QAInB,wBAAmB,GAAW,IAAI,CAAC;QACnC,yBAAoB,GAAW,IAAI,CAAC;QAEpC,iBAAY,GAA4C,EAAE,CAAC;QAC3D,qBAAgB,GAA4C,EAAE,CAAC;QAC/D,oBAAe,GAA4C,EAAE,CAAC;QAE9D,qBAAgB,GAA6F,EAAE,CAAC;QAEhH,4CAAuC,GAAuE,EAAE,CAAC;QACjH,6CAAwC,GAAuE,EAAE,CAAC;QAClH,6CAAwC,GAAuE,EAAE;QACjH,8CAAyC,GAAuE,EAAE;IAMlH,CAAC;IAED,eAAe;QACb,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;IAC1B,CAAC;IAEM,IAAI,CAAC,SAA6B,EAAE,UAAkB;QAC3D,IAAI,CAAC,OAAO,GAAG,EAAE,CAAC;QAClB,IAAI,CAAC,gBAAgB,GAAG,EAAE,CAAC;QAC3B,IAAI,CAAC,uCAAuC,GAAG,EAAE,CAAC;QAClD,IAAI,CAAC,wCAAwC,GAAG,EAAE,CAAC;QACnD,IAAI,CAAC,wCAAwC,GAAG,EAAE,CAAC;QACnD,IAAI,CAAC,yCAAyC,GAAG,EAAE,CAAC;QACpD,IAAI,CAAC,mBAAmB,GAAG,EAAE,CAAC;QAC9B,IAAI,CAAC,gBAAgB,GAAG,SAAS,CAAC;QAClC,IAAI,CAAC,kBAAkB,GAAG,UAAU,CAAC;QACrC,IAAI,CAAC,uBAAuB,EAAE,CAAC;QAC/B,IAAI,CAAC,WAAW,EAAE,CAAC;QACnB,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;IACzB,CAAC;IAED,YAAY;QACV,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;QACtB,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC;QAC7B,IAAI,CAAC,iBAAiB,GAAG,EAAE,CAAC;IAC9B,CAAC;IAED,WAAW;QACT,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC;QAChC,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC;QAEjC,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE;YAC1B,IAAI,CAAC,OAAO,GAAG,EAAE,CAAC;YAClB,OAAO;SACR;QAED,IAAI,CAAC,WAAW,EAAE,CAAC;QACnB,MAAM,OAAO,GAAG,iEAAsB,CAAC,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC;QAElG,IAAI,aAAgC,CAAC;QACrC,IAAI,aAAgC,CAAC;QAErC,IAAI,IAAI,CAAC,gBAAgB,CAAC,OAAO,IAAI,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAyB,KAAK,wDAAiB,CAAC,KAAK;YACtK,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAyB,KAAK,wDAAiB,CAAC,KAAK,CAAC,EAAE;YACzF,aAAa,GAAG,wDAAiB,CAAC,KAAK,CAAC;YACxC,aAAa,GAAG,wDAAiB,CAAC,KAAK,CAAC;SACzC;aAAM;YACL,aAAa,GAAG,wDAAiB,CAAC,IAAI,CAAC;YACvC,aAAa,GAAG,wDAAiB,CAAC,IAAI,CAAC;SACxC;QAED,IAAI,CAAC,mBAAmB,GAAG,wDAAiB,CAAC,aAAa,CAAC,CAAC;QAC5D,IAAI,CAAC,oBAAoB,GAAG,wDAAiB,CAAC,aAAa,CAAC,CAAC;QAE7D,MAAM,KAAK,GAAG;YACZ,2DAAgB,CAAC,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;YAC9E,2DAAgB,CAAC,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC,aAAa,CAAC;YAC1F,2DAAgB,CAAC,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC,aAAa,CAAC;SAC3F,CAAC;QAEF,MAAM,iBAAiB,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAsB,KAAK,wDAAiB,CAAC,IAAI,CAAC,CAAC;QAClH,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC;aACjC,MAAM,CAAC,CAAC,CAAC,IAAI,EAAE,eAAe,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,eAAe,CAAC;aACtD,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,eAAe,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,CAAsB,EAAE,eAAe,EAAE,eAAyB,EAAE,CAAC,CAAC;aAC3H,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,eAAe,EAAE,SAAS,EAAE,EAAE,EAAE;YAC5C,MAAM,OAAO,GAAG,IAAI,CAAC,gBAAgB,CAAC,OAAO;iBAC1C,GAAG,CAAC,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE,CAAC,mBAAM,MAAM,IAAE,KAAK,EAAE,KAAK,GAAG,CAAC,IAAG,CAAC;iBACzD,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,IAAI,KAAK,IAAI,IAAI,MAAM,CAAC,IAAI,KAAK,IAAI,GAAG,CAAC,IAAI,CAAC,iBAAiB,IAAI,MAAM,CAAC,IAAI,KAAK,wDAAiB,CAAC,IAAI,CAAC,CAAC;iBACnI,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;gBACd,QAAQ,EAAE,MAAM,CAAC,EAAE;gBACnB,UAAU,EAAE,MAAM,CAAC,IAAI;gBACvB,cAAc,EAAE,MAAM,CAAC,QAAQ;gBAC/B,eAAe,EAAE,+DAAoB,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,KAAK,GAAG,2DAAgB,CAAC,MAAM,CAAC,IAAI,CAAC;gBAC9F,eAAe,EAAE,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,EAAE,CAAC;gBAC/C,gBAAgB,EAAE,2DAAgB,CAAC,MAAM,CAAC,IAAI,CAAC;gBAC/C,iBAAiB,EAAE,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,EAAE,CAAC;gBACjD,SAAS,EAAE,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC;gBAC7D,OAAO,EAAE,MAAM,CAAC,KAAK,GAAG,KAAK,GAAG,+DAAoB,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,IAAI,GAAG,2DAAgB,CAAC,MAAM,CAAC,IAAI,CAAC;aAC7G,CAAC,CAAC;iBACF,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;YACxC,OAAO;gBACL,SAAS;gBACT,OAAO;aACR,CAAC;QACJ,CAAC,CAAC,CAAC;QAEL,IAAI,IAAI,CAAC,iBAAiB,IAAI,IAAI,CAAC,iBAAiB,CAAC,MAAM,GAAG,CAAC,EAAE;YAC/D,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,SAAS,GAAG,IAAI,CAAC,CAAC;YAClE,IAAI,CAAC,mBAAmB,GAAG,2BAA2B,GAAG,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;SACvF;QAED,IAAI,CAAC,gBAAgB,GAAG,EAAE,CAAC;QAE3B,IAAI,IAAI,CAAC,gBAAgB,IAAI,IAAI,CAAC,gBAAgB,CAAC,OAAO,KAAK,2DAAoB,CAAC,IAAI,EAAE;YACxF,IAAI,gBAAgB,GAAG,KAAK,CAAC;YAAA,CAAC;YAC9B,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;gBACvB,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;oBACpB,IAAI,CAAC,IAAI,CAAC,iCAAiC,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC,cAAc,CAAC,EAAE;wBAC3E,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,eAAe,EAAE,KAAK,EAAE,CAAC,CAAC,eAAe,EAAE,WAAW,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,CAAC,CAAC,iBAAiB,EAAE,CAAC;qBAC1J;gBACH,CAAC,CAAC,EAAE,gBAAgB,GAAG,IAAI;YAC7B,CAAC,CAAC,CAAC;YAEH,IAAI,CAAC,wCAAwC,GAAG,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC;YAClI,IAAI,CAAC,yCAAyC,GAAG,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC;YAEpI,IAAI,CAAC,uCAAuC,GAAG,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC;YACnI,IAAI,CAAC,wCAAwC,GAAG,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC;YAEpI,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,OAAO,GAAG,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,iCAAiC,CAAC,EAAE,CAAC,UAAU,EAAE,EAAE,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC;SAE5I;IACH,CAAC;IAEO,iCAAiC,CAAC,UAA0B,EAAE,cAAkC;QACtG,IAAI,iCAAiC,GAAG,CAAC,UAAU,IAAI,qDAAc,CAAC,kBAAkB,IAAI,cAAc,IAAI,yDAAkB,CAAC,IAAI,CAAC;YACpI,CAAC,UAAU,IAAI,qDAAc,CAAC,mBAAmB,IAAI,cAAc,IAAI,yDAAkB,CAAC,IAAI,CAAC;YAC/F,CAAC,UAAU,IAAI,qDAAc,CAAC,kBAAkB,IAAI,cAAc,IAAI,yDAAkB,CAAC,QAAQ,CAAC;YAClG,CAAC,UAAU,IAAI,qDAAc,CAAC,mBAAmB,IAAI,cAAc,IAAI,yDAAkB,CAAC,QAAQ,CAAC;YACnG,CAAC,UAAU,IAAI,qDAAc,CAAC,kBAAkB,IAAI,cAAc,IAAI,yDAAkB,CAAC,IAAI,CAAC;YAC9F,CAAC,UAAU,IAAI,qDAAc,CAAC,mBAAmB,IAAI,cAAc,IAAI,yDAAkB,CAAC,IAAI,CAAC;YAC/F,CAAC,UAAU,IAAI,qDAAc,CAAC,kBAAkB,IAAI,cAAc,IAAI,yDAAkB,CAAC,QAAQ,CAAC;YAClG,CAAC,UAAU,IAAI,qDAAc,CAAC,mBAAmB,IAAI,cAAc,IAAI,yDAAkB,CAAC,QAAQ,CAAC;QAErG,OAAO,iCAAiC,CAAC;IAC3C,CAAC;IAEO,eAAe,CAAC,OAAgB;QACtC,MAAM,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,aAAa,CAAC,aAAa,CAAC,kBAAkB,CAAC,CAAC;QACpE,IAAI,CAAC,mBAAmB,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC;IACxC,CAAC;IAEO,cAAc,CAAC,QAAgB;QACrC,IAAI,MAAM,GAAG,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,QAAQ,CAAC,CAAC;QAChE,IAAI,MAAM,EAAE;YACV,OAAO,MAAM,CAAC,KAAK,CAAC,QAAQ,EAAE;SAC/B;aAAM;YACL,OAAO,IAAI;SACZ;IACH,CAAC;IAEO,cAAc,CAAC,QAAgB;QACrC,IAAI,MAAM,GAAG,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,QAAQ,CAAC,CAAC;QAChE,IAAI,MAAM,EAAE;YACV,IAAI,MAAM,CAAC,MAAM,KAAK,6DAAsB,CAAC,IAAI,EAAE;gBAAE,OAAO,OAAO,CAAC;aAAE;YACtE,IAAI,MAAM,CAAC,MAAM,KAAK,6DAAsB,CAAC,KAAK,EAAE;gBAAE,OAAO,KAAK,CAAC;aAAE;YACrE,IAAI,MAAM,CAAC,MAAM,KAAK,6DAAsB,CAAC,OAAO,EAAE;gBAAE,OAAO,QAAQ,CAAC;aAAE;YAC1E,IAAI,MAAM,CAAC,MAAM,KAAK,6DAAsB,CAAC,KAAK,EAAE;gBAAE,OAAO,MAAM,CAAC;aAAE;SACvE;aAAM;YACL,OAAO,OAAO,CAAC;SAChB;IACH,CAAC;IAEO,WAAW;QACjB,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE;YAC1B,OAAO;SACR;QAED,MAAM,cAAc,GAAG,CAAC,CAAkB,EAAE,CAAkB,EAAE,EAAE;YAChE,MAAM,OAAO,GAAG,GAAG,2DAAgB,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,+DAAoB,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,8DAAmB,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC;YAC/G,MAAM,OAAO,GAAG,GAAG,2DAAgB,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,+DAAoB,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,8DAAmB,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC;YAC/G,IAAI,OAAO,GAAG,OAAO,EAAE;gBACrB,OAAO,CAAC,CAAC,CAAC;aACX;YACD,IAAI,OAAO,GAAG,OAAO,EAAE;gBACrB,OAAO,CAAC,CAAC;aACV;YACD,OAAO,CAAC,CAAC;QACX,CAAC,CAAC;QACF,IAAI,CAAC,gBAAgB,CAAC,OAAO,GAAG,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;IACrF,CAAC;IAEa,uBAAuB;;YACnC,IAAI,CAAC,iBAAiB,GAAG,EAAE,CAAC;YAC5B,IAAI,kBAAkB,GAAG,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;YACtE,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,mBAAmB,CAAC,WAAW,CAAC,IAAI,CAAC,kBAAkB,EAAE,IAAI,CAAC,gBAAgB,CAAC,EAAE,EAAE,kBAAkB,CAAC,CAAC;YACjI,IAAI,MAAM,YAAY,kDAAU,EAAE;aACjC;iBAAM;gBACL,IAAI,CAAC,iBAAiB,GAAG,MAAM,CAAC;aACjC;YAED,IAAI,CAAC,WAAW,EAAE,CAAC;QACrB,CAAC;KAAA;CACF;;YA1LgB,wDAAU;YACM,uEAA6B;;AA7BjD,qCAAqC;IALjD,+DAAS,CAAC;QACT,QAAQ,EAAE,yCAAyC;QACnD,0RAA0D;KAE3D,CAAC;qCA6Be,wDAAU;QACM,uEAA6B;GA7BjD,qCAAqC,CAsNjD;AAtNiD;;;;;;;;;;;;;;;;;;;;ACjBD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACAuB;AAOxE,IAAa,2BAA2B,GAAxC,MAAa,2BAA2B;IAQtC;QANA,YAAO,GAAG,IAAI,0DAAY,EAAQ,CAAC;QAEnC,cAAS,GAAG,IAAI,CAAC;QACjB,eAAU,GAAG,KAAK,CAAC;IAIf,CAAC;IAEL,QAAQ;IACR,CAAC;IAEM,IAAI;QACT,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;IACzB,CAAC;IAEK,QAAQ;;YACZ,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;YACnB,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;YACtB,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;QACtB,CAAC;KAAA;CACF;AArBC;IADC,4DAAM,EAAE;;4DAC0B;AAFxB,2BAA2B;IALvC,+DAAS,CAAC;QACT,QAAQ,EAAE,mCAAmC;QAC7C,wQAAoD;KAErD,CAAC;;GACW,2BAA2B,CAuBvC;AAvBuC;;;;;;;;;;;;;;;;;;;;ACPkB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACAsB;AACxB;AACkG;AAC/F;AACd;AAEC;AACI;AAC8C;AAC7B;AAOnE,IAAa,mCAAmC,GAAhD,MAAa,mCAAoC,SAAQ,yDAAiB;IAyBxE,YACU,+BAA+D,EAC/D,KAAwB,EACxB,WAAwB,EACxB,eAA+B;QACrC,KAAK,EAAE,CAAC;QAJF,oCAA+B,GAA/B,+BAA+B,CAAgC;QAC/D,UAAK,GAAL,KAAK,CAAmB;QACxB,gBAAW,GAAX,WAAW,CAAa;QACxB,oBAAe,GAAf,eAAe,CAAgB;QAzBzC,cAAS,GAAG,IAAI,CAAC;QAEjB,iBAAY,GAAW,IAAI,CAAC;QAC5B,kBAAa,GAAW,IAAI,CAAC;QAC7B,kBAAa,GAAW,IAAI,CAAC;QAC7B,eAAU,GAAG,KAAK,CAAC;QAEnB,eAAU,GAAG,KAAK,CAAC;QACnB,oBAAe,GAAG,KAAK,CAAC;QACxB,aAAQ,GAAG,KAAK,CAAC;IAiBJ,CAAC;IAfd,IAAI,SAAS;QACX,OAAO,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;IACzD,CAAC;IAED,IAAI,iBAAiB;QACnB,OAAO,IAAI,CAAC,UAAU,CAAC;IACzB,CAAC;IAWD,QAAQ;QACN,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IAC/C,CAAC;IAED,MAAM,CAAC,YAAiC;QACtC,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;QACvB,IAAI,CAAC,cAAc,GAAG,YAAY,CAAC;QACnC,IAAI,CAAC,aAAa,GAAG,YAAY,CAAC,YAAY,CAAC;QAC/C,IAAI,CAAC,YAAY,GAAG,kDAAW,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;QACtD,IAAI,CAAC,KAAK,CAAC,aAAa,EAAE,CAAC;IAC7B,CAAC;IAED,YAAY;QACV,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;QACtB,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;QAC3B,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;QACxB,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;QACtB,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;QAC1B,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;QACzB,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;IAC1B,CAAC;IAEK,QAAQ;;YACZ,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;YAEvB,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE;gBACtB,IAAI,CAAC,aAAa,GAAG,kBAAkB,CAAC;gBACxC,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;gBACxB,OAAO;aACR;YACD,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;YACvB,MAAM,uBAAuB,GAAG;gBAC9B,OAAO,EAAE,IAAI,CAAC,cAAc,CAAC,OAAO;gBACpC,eAAe,EAAE,IAAI,CAAC,cAAc,CAAC,eAAe;aAC5B,CAAC;YAE3B,IAAI,WAAW,GAAG,MAAM,IAAI,CAAC,+BAA+B,CAAC,sCAAsC,CAAC,uBAAuB,CAAoC,CAAC;YAChK,IAAI,WAAW,CAAC,MAAM,IAAI,8DAAuB,CAAC,OAAO,EAAE;gBACzD,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,iDAAiD,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;gBAC1I,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;gBACxB,OAAO;aACR;YAED,IAAI,WAAW,CAAC,WAAW,EAAE;gBAC3B,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,mDAAmD,WAAW,CAAC,OAAO,GAAG,EAAE,6BAA6B,EAAE,QAAQ,CAAC,CAAC;aACjJ;iBAAM;gBACL,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;aAC5B;QACH,CAAC;KAAA;IAEK,QAAQ,CAAC,aAAkB;;YAC/B,MAAM,UAAU,GAAG,aAAa,CAAC,YAAY,CAAC,CAAC,CAAS,CAAC;YAEzD,IAAI,UAAU,CAAC,IAAI,IAAI,CAAC,EAAE;gBACxB,IAAI,CAAC,aAAa,GAAG,kCAAkC,CAAC;aACzD;iBAAM,IAAI,UAAU,CAAC,IAAI,IAAI,QAAQ,EAAE;gBACtC,IAAI,CAAC,YAAY,GAAG,UAAU,CAAC;gBAC/B,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;gBACrB,IAAI,CAAC,aAAa,GAAG,sCAAsC,CAAC;aAC7D;iBAAM;gBACL,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;gBAC1B,IAAI,CAAC,YAAY,GAAG,UAAU,CAAC;gBAC/B,IAAI,CAAC,eAAe,GAAG,KAAK,CAAC;gBAC7B,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;aACvB;QACH,CAAC;KAAA;IAED,kBAAkB,CAAC,kBAA0C;QAC3D,IAAI,kBAAkB,IAAI,6DAAsB,CAAC,YAAY,EAAE;YAC7D,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;SAC3B;aAAM;YACL,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;SACzB;IACH,CAAC;IAEa,cAAc,CAAC,eAAwB;;YACnD,MAAM,OAAO,GAAG,kBACX,IAAI,CAAC,cAAc,IACtB,IAAI,EAAE,IAAI,CAAC,YAAY,EACvB,eAAe,EAAE,eAAe,GACN,CAAC;YAC7B,IAAI,MAAM,GAAG,MAAM,IAAI,CAAC,+BAA+B,CAAC,sBAAsB,CAAC,OAAO,CAAC,CAAC;YACxF,IAAI,MAAM,YAAY,kDAAU,EAAE;gBAChC,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;aACzG;iBACI,IAAI,MAAM,YAAY,iEAAyB,IAAI,CAAC,MAAM,CAAC,cAAc,EAAE;gBAC9E,IAAI,QAAQ,GAAG,IAAI,CAAC,+BAA+B,CAAC,kBAAkB,CAAC,QAAQ,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC;gBACpI,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,GAAG,QAAQ,CAAC,IAAI,yBAAyB,EAAE,MAAM,EAAE,GAAG,MAAM,CAAC,cAAc,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;aACtJ;iBACI;gBACH,IAAI,CAAC,YAAY,EAAE,CAAC;aAErB;QACH,CAAC;KAAA;CACF;;YApG4C,wEAA8B;YACxD,+DAAiB;YACX,0DAAW;YACP,0DAAc;;AA3BzC;IADC,+DAAS,CAAC,8EAA0B,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;8BAC3C,8EAA0B;8EAAC;AAF3C,mCAAmC;IAL/C,+DAAS,CAAC;QACT,QAAQ,EAAE,4CAA4C;QACtD,4QAA6D;QAC7D,SAAS,EAAE,CAAC,0DAAc,CAAC;KAC5B,CAAC;qCA2B2C,wEAA8B;QACxD,+DAAiB;QACX,0DAAW;QACP,0DAAc;GA7B9B,mCAAmC,CA8H/C;AA9H+C;;;;;;;;;;;;;;;;;;;;AChBC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACA+B;AAClC;AACU;AACG;AACA;AAC0B;AAQrF,IAAa,4BAA4B,GAAzC,MAAa,4BAA6B,SAAQ,yDAAiB;IAgCjE,YACU,+BAA+D,EAC/D,KAAwB,EACxB,WAAwB;QAEhC,KAAK,EAAE,CAAC;QAJA,oCAA+B,GAA/B,+BAA+B,CAAgC;QAC/D,UAAK,GAAL,KAAK,CAAmB;QACxB,gBAAW,GAAX,WAAW,CAAa;QA7BlC,cAAS,GAAG,IAAI,CAAC;QACjB,0BAAqB,GAAG,IAAI,CAAC;QAC7B,eAAU,GAAG,KAAK,CAAC;QACnB,eAAU,GAAG,KAAK,CAAC;QACnB,mBAAc,GAAW,IAAI,CAAC;QAC9B,cAAS,GAAG,IAAI,CAAC;QACjB,eAAU,GAAG,KAAK,CAAC;QACnB,oBAAe,GAAG,KAAK,CAAC;QACxB,qBAAgB,GAAG,KAAK,CAAC;QAEzB,kBAAa,GAAW,IAAI,CAAC;QAarB,4BAAuB,GAAG,KAAK,CAAC;IASxC,CAAC;IAlBD,IAAI,SAAS;QACX,OAAO,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;IACzD,CAAC;IAED,IAAI,iBAAiB;QACnB,OAAO,IAAI,CAAC,UAAU,CAAC;IACzB,CAAC;IAcD,QAAQ;QACN,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IAC/C,CAAC;IAED,kBAAkB;QAChB,IAAI,IAAI,CAAC,eAAe,IAAI,IAAI,CAAC,uBAAuB,EAAE;YACxD,IAAI,CAAC,uBAAuB,GAAG,KAAK,CAAC;SACtC;IACH,CAAC;IAEK,QAAQ;;YACZ,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;YAEvB,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE;gBACtB,IAAI,CAAC,aAAa,GAAG,kBAAkB,CAAC;gBACxC,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;gBACxB,OAAO;aACR;YAED,IAAI,kBAAkB,GAAG,KAAK,CAAC;YAE/B,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;gBACtB,IAAI,CAAC,CAAC,IAAI,IAAI,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE;oBACpC,kBAAkB,GAAG,IAAI,CAAC;iBAC3B;YACH,CAAC,CAAC,CAAC;YAEH,IAAI,kBAAkB,EAAE;gBACtB,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,IAAI,CAAC,cAAc,EAAE,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;aAC1E;iBAAM;gBACL,MAAM,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,CAAC;aAC1C;QACH,CAAC;KAAA;IAED,YAAY;QACV,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;QACvB,IAAI,CAAC,UAAU,EAAE,CAAC;IACpB,CAAC;IAEK,QAAQ,CAAC,aAAkB;;YAC/B,MAAM,UAAU,GAAG,aAAa,CAAC,YAAY,CAAC,CAAC,CAAS,CAAC;YAEzD,IAAI,UAAU,CAAC,IAAI,IAAI,CAAC,EAAE;gBACxB,IAAI,CAAC,aAAa,GAAG,kCAAkC,CAAC;aACzD;iBAAM,IAAI,UAAU,CAAC,IAAI,IAAI,QAAQ,EAAE;gBACtC,IAAI,CAAC,YAAY,GAAG,UAAU,CAAC;gBAC/B,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;gBACvB,IAAI,CAAC,aAAa,GAAG,sCAAsC,CAAC;aAC7D;iBAAM;gBACL,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;gBAC1B,IAAI,CAAC,YAAY,GAAG,UAAU,CAAC;gBAC/B,IAAI,CAAC,eAAe,GAAG,KAAK,CAAC;gBAC7B,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;gBACxB,IAAI,CAAC,gBAAgB,GAAG,KAAK,CAAC;aAC/B;QACH,CAAC;KAAA;IAEM,IAAI,CAAC,aAAqB,EAAE,KAAiC;QAClE,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;QACxB,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;QACxB,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;QACvB,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;QACpB,IAAI,CAAC,cAAc,GAAG,aAAa,CAAC;QACpC,IAAI,CAAC,KAAK,CAAC,aAAa,EAAE,CAAC;IAC7B,CAAC;IAEO,UAAU;QAChB,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;QACxB,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;QACtB,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;QACzB,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;QAC1B,IAAI,CAAC,eAAe,GAAG,KAAK,CAAC;QAC7B,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;QACxB,IAAI,CAAC,gBAAgB,GAAG,KAAK,CAAC;QAC9B,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IAC/C,CAAC;IAEK,uBAAuB,CAAC,KAAc;;YAC1C,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;YACvB,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE;gBACnB,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;aAC1B;YAED,IAAI,IAAI,CAAC,SAAS,EAAE;gBAClB,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;gBACvB,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,+BAA+B,CAAC,cAAc,CAAC,EAAE,aAAa,EAAE,IAAI,CAAC,cAAc,EAAE,UAAU,EAAE,IAAI,CAAC,YAAY,EAAE,CAAC,CAAC;gBAChJ,IAAI,MAAM,EAAE;oBACV,IAAI,MAAM,YAAY,yDAAU,EAAE;wBAChC,IAAI,MAAM,CAAC,IAAI,IAAI,4DAAa,CAAC,iBAAiB,EAAE;4BAClD,IAAI,CAAC,aAAa,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;yBACvC;6BAAM;4BACL,IAAI,CAAC,aAAa,GAAG,MAAM,CAAC,OAAO,CAAC;yBACrC;qBACF;yBAAM;wBACL,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC;wBAC5B,IAAI,CAAC,uBAAuB,GAAG,IAAI,CAAC;qBACrC;oBACD,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;iBACzB;gBAED,IAAI,CAAC,YAAY,EAAE,CAAC;aACrB;QACH,CAAC;KAAA;CACF;;YA9G4C,wEAA8B;YACxD,+DAAiB;YACX,0DAAW;;AAjClC;IADC,+DAAS,CAAC,gGAAkC,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;8BACrD,gGAAkC;qEAAC;AAFjD,4BAA4B;IALxC,+DAAS,CAAC;QACT,QAAQ,EAAE,oCAAoC;QAC9C,oPAAqD;KAEtD,CAAC;qCAkC2C,wEAA8B;QACxD,+DAAiB;QACX,0DAAW;GAnCvB,4BAA4B,CA+IxC;AA/IwC;;;;;;;;;;;;;;;;;;;;ACbgB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACAe;AAC1B;AAO9C,IAAa,kCAAkC,GAA/C,MAAa,kCAAmC,SAAQ,yDAAiB;IAQvE;QACE,KAAK,EAAE,CAAC;QARA,iBAAY,GAAG,IAAI,0DAAY,EAAW,CAAC;QAErD,cAAS,GAAG,IAAI,CAAC;QACjB,eAAU,GAAG,KAAK,CAAC;IAMnB,CAAC;IAED,MAAM,CAAC,oBAA4B,EAAE,WAAmB;QACtD,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;QACvB,IAAI,CAAC,qBAAqB,GAAG,oBAAoB,CAAC;QAClD,IAAI,CAAC,YAAY,GAAG,WAAW,CAAC;IAClC,CAAC;IAED,QAAQ;IACR,CAAC;IAED,QAAQ;QACN,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;QACvB,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC7B,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;QACxB,IAAI,CAAC,qBAAqB,GAAG,IAAI,CAAC;QAClC,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;IACxB,CAAC;IAED,aAAa;QACX,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC9B,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;QACtB,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;QACxB,IAAI,CAAC,qBAAqB,GAAG,IAAI,CAAC;IACpC,CAAC;CACF;AAlCW;IAAT,4DAAM,EAAE;;wEAA4C;AAD1C,kCAAkC;IAL9C,+DAAS,CAAC;QACT,QAAQ,EAAE,2CAA2C;QACrD,yQAA4D;KAE7D,CAAC;;GACW,kCAAkC,CAmC9C;AAnC8C;;;;;;;;;;;;;;;;;;;;ACRA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACAG;AACkB;AAC3B;AAEY;AACoB;AAQzE,IAAa,yBAAyB,GAAtC,MAAa,yBAAyB;IAYpC,YAAoB,YAAyB,EACnC,oBAAyC,EACzC,cAAwC,EACxC,OAAe;QAHL,iBAAY,GAAZ,YAAY,CAAa;QACnC,yBAAoB,GAApB,oBAAoB,CAAqB;QACzC,mBAAc,GAAd,cAAc,CAA0B;QACxC,YAAO,GAAP,OAAO,CAAQ;QAdzB,cAAS,GAAG,IAAI,CAAC;QAGjB,cAAS,GAAG,oDAAY,CAAC;QACzB,eAAU,GAAG,KAAK,CAAC;IAWf,CAAC;IARL,IAAI,gBAAgB;QAClB,OAAO,IAAI,CAAC,KAAK,IAAI,oDAAY,CAAC,WAAW,IAAI,IAAI,CAAC,KAAK,IAAI,oDAAY,CAAC,SAAS,CAAC;IACxF,CAAC;IAQD,QAAQ;QACN,IAAI,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,EAAE;YAC/C,IAAI,CAAC,KAAK,GAAG,oDAAY,CAAC,MAAM,CAAC;YACjC,OAAO;SACR;QACD,MAAM,IAAI,GAAG,IAAI,CAAC,oBAAoB,CAAC,YAAY,EAAE,CAAC;QACtD,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;IACvC,CAAC;IAEY,IAAI;;YACf,IAAI,OAAO,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,UAAU,EAAyB,CAAC;YAC5E,IAAI,OAAO,EAAE;gBACX,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;gBACvB,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;gBACvB,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;aAC9B;YACD,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;QAC1B,CAAC;KAAA;IAED,QAAQ;QACN,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;IACxB,CAAC;IAEK,QAAQ;;YACZ,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;YACvB,IAAI,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE;gBACjC,OAAO;aACR;YACD,IAAI,OAAO,GAAG,kBAAK,IAAI,CAAC,gBAAgB,CAAC,KAAK,IAAE,MAAM,EAAE,IAAI,CAAC,MAAM,GAAyB,CAAC;YAC7F,MAAM,IAAI,CAAC,cAAc,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;YAC/C,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;YACvB,IAAI,CAAC,QAAQ,EAAE,CAAC;QAClB,CAAC;KAAA;IAEO,QAAQ,CAAC,OAA4B;QAC3C,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC;YAC9C,WAAW,EAAE;gBACX,EAAE,KAAK,EAAE,OAAO,CAAC,WAAW,EAAE,QAAQ,EAAE,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE;aAC9E;YACD,SAAS,EAAE;gBACT,OAAO,CAAC,SAAS;gBACjB,yDAAU,CAAC,OAAO,CAAC;oBACjB,yDAAU,CAAC,QAAQ;oBACnB,yDAAU,CAAC,SAAS,CAAC,CAAC,CAAC;oBACvB,yDAAU,CAAC,SAAS,CAAC,EAAE,CAAC;iBACzB,CAAC;aACH;YACD,QAAQ,EAAE;gBACR,OAAO,CAAC,QAAQ;gBAChB,yDAAU,CAAC,OAAO,CAAC;oBACjB,yDAAU,CAAC,QAAQ;oBACnB,yDAAU,CAAC,SAAS,CAAC,CAAC,CAAC;oBACvB,yDAAU,CAAC,SAAS,CAAC,EAAE,CAAC;iBACzB,CAAC;aACH;SACF,CAAC,CAAC;QACH,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,SAAS,CAAC,WAAW,EAAE;YAC5C,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,WAAW,CAAC,aAAa,CACtD,yDAAU,CAAC,OAAO,CAAC;gBACjB,yDAAU,CAAC,QAAQ;gBACnB,yDAAU,CAAC,SAAS,CAAC,CAAC,CAAC;gBACvB,yDAAU,CAAC,SAAS,CAAC,EAAE,CAAC;aACzB,CAAC,CAAC,CAAC;SACP;IACH,CAAC;CACF;;YAvEmC,0DAAW;YACb,2DAAmB;YACzB,kEAAwB;YAC/B,sDAAM;;AAfd,yBAAyB;IALrC,+DAAS,CAAC;QACT,QAAQ,EAAE,iCAAiC;QAC3C,2OAAkD;KAEnD,CAAC;qCAakC,0DAAW;QACb,2DAAmB;QACzB,kEAAwB;QAC/B,sDAAM;GAfd,yBAAyB,CAmFrC;AAnFqC;;;;;;;;;;;;;;;;;;;;ACbM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACEiB;AACO;AAC3B;AAE8B;AAC2C;AACvB;AAO3F,IAAa,uBAAuB,GAApC,MAAa,uBAAuB;IAgBlC,YAAoB,YAAyB,EACnC,oBAAyC,EACzC,gBAA+C,EAC/C,iBAA0C,EAC1C,OAAe;QAJL,iBAAY,GAAZ,YAAY,CAAa;QACnC,yBAAoB,GAApB,oBAAoB,CAAqB;QACzC,qBAAgB,GAAhB,gBAAgB,CAA+B;QAC/C,sBAAiB,GAAjB,iBAAiB,CAAyB;QAC1C,YAAO,GAAP,OAAO,CAAQ;QAnBzB,cAAS,GAAG,IAAI,CAAC;QACjB,eAAU,GAAG,KAAK,CAAC;QAGnB,kBAAa,GAAG,KAAK,CAAC;QACtB,kBAAa,GAAe,EAAE,CAAC;QAC/B,kBAAa,GAAe,EAAE,CAAC;QAC/B,mBAAc,GAAG,KAAK,CAAC;QACvB,mBAAc,GAAG,KAAK,CAAC;IAavB,CAAC;IAVD,IAAI,eAAe;QACjB,OAAO,IAAI,CAAC,KAAK,KAAK,oDAAY,CAAC,YAAY,CAAC;IAClD,CAAC;IAUD,QAAQ;QACN,MAAM,SAAS,GAAG,IAAI,CAAC,oBAAoB,CAAC,YAAY,EAAE,CAAC;QAC3D,IAAI,CAAC,KAAK,GAAG,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;QAC/C,IAAI,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,EAAE;YAC/C,IAAI,CAAC,KAAK,GAAG,oDAAY,CAAC,YAAY,CAAC;SACxC;QACD,IAAI,IAAI,CAAC,eAAe,EAAE;YACxB,IAAI,CAAC,gBAAgB,CAAC,8BAA8B,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YAC1F,IAAI,CAAC,sBAAsB,GAAG,IAAI,CAAC,gBAAgB,CAAC,aAAa,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE;gBACjF,IAAI,IAAI,EAAE;oBACR,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,YAAY,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC,YAAY,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;iBACnO;YACH,CAAC,CAAC,CAAC;SACJ;QAED,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC;YACzC,KAAK,EAAE;gBACL,EAAE;gBACF,yDAAU,CAAC,OAAO,CAAC;oBACjB,yDAAU,CAAC,QAAQ;oBACnB,yDAAU,CAAC,KAAK;oBAChB,8DAAc,EAAE;oBAChB,yDAAU,CAAC,SAAS,CAAC,CAAC,CAAC;oBACvB,yDAAU,CAAC,SAAS,CAAC,EAAE,CAAC;iBACzB,CAAC;aACH;SACF,CAAC,CAAC;QAEH,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,SAAS,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC,CAAC;IAC5E,CAAC;IAED,WAAW;QACT,IAAI,CAAC,sBAAsB,IAAI,IAAI,CAAC,sBAAsB,CAAC,WAAW,EAAE,CAAC;QACzE,IAAI,CAAC,sBAAsB,GAAG,IAAI,CAAC;IACrC,CAAC;IAEM,IAAI;QACT,IAAI,CAAC,SAAS,EAAE,CAAC;QACjB,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;IACzB,CAAC;IAED,UAAU,CAAC,KAAK;QACd,IAAI,IAAI,CAAC,UAAU,EAAE;YACnB,IAAI,CAAC,cAAc,GAAG,KAAK,CAAC;SAC7B;QAED,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE;YACtB,KAAK,CAAC,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;SAC5B;IACH,CAAC;IAED,QAAQ;QACN,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;QACvB,IAAI,CAAC,cAAc,GAAG,KAAK,CAAC;QAC5B,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;QAC3B,IAAI,IAAI,CAAC,WAAW,CAAC,OAAO,IAAI,IAAI,CAAC,aAAa,EAAE;YAClD,IAAI,CAAC,IAAI,CAAC,aAAa,IAAI,IAAI,CAAC,aAAa,CAAC,MAAM,KAAK,CAAC,EAAE;gBAC1D,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;gBAC3B,IAAI,CAAC,YAAY,EAAE,CAAC;aACrB;YACD,IAAI,CAAC,cAAc,GAAG,KAAK,CAAC;YAC5B,OAAO;SACR;QACD,IAAI,CAAC,IAAI,CAAC,aAAa,IAAI,IAAI,CAAC,aAAa,CAAC,MAAM,KAAK,CAAC,EAAE;YAC1D,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;YAC3B,IAAI,CAAC,YAAY,EAAE,CAAC;YACpB,IAAI,CAAC,cAAc,GAAG,KAAK,CAAC;YAC5B,OAAO;SACR;QACD,MAAM,WAAW,GAAG,IAAI,yDAAiB,CAAC;QAC1C,WAAW,CAAC,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,KAAK,CAAC;QACjD,WAAW,CAAC,aAAa,GAAG,EAAE,CAAC;QAC/B,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;YAC7B,IAAI,CAAC,CAAC,MAAM,EAAE;gBACZ,WAAW,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;aACxC;QACH,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,CAAC,QAAyB,EAAE,EAAE;YAC5E,IAAI,QAAQ,YAAY,kDAAU,IAAI,QAAQ,CAAC,IAAI,KAAK,qDAAa,CAAC,gBAAgB,EAAE;gBACtF,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;gBAC1B,IAAI,CAAC,cAAc,GAAG,KAAK,CAAC;aAC7B;iBAAM,IAAI,QAAQ,EAAE;gBACnB,MAAM,SAAS,GAAG,IAAI,CAAC,oBAAoB,CAAC,YAAY,EAAE,CAAC;gBAC3D,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;gBAChD,IAAI,CAAC,SAAS,EAAE,CAAC;aAClB;QACH,CAAC,CAAC,CAAC;IACL,CAAC;IAEO,SAAS;QACf,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;QACxB,IAAI,CAAC,cAAc,GAAG,KAAK,CAAC;QAC5B,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,CAAC;QACzB,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,eAAe,GAAG,KAAK,EAAC,CAAC,CAAC,CAAC;QAC/D,IAAI,CAAC,aAAa,GAAG,EAAE,CAAC;QACxB,IAAI,CAAC,YAAY,EAAE;QACnB,IAAI,CAAC,cAAc,GAAG,KAAK,CAAC;IAC9B,CAAC;IAEO,YAAY;QAClB,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,GAAG,KAAK,CAAC,CAAC;IACtD,CAAC;IAEO,SAAS;QACf,IAAI,CAAC,SAAS,EAAE,CAAC;QACjB,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;IACxB,CAAC;CACF;;YAnHmC,0DAAW;YACb,2DAAmB;YACvB,uEAA6B;YAC5B,iEAAuB;YACjC,sDAAM;;AApBd,uBAAuB;IALnC,+DAAS,CAAC;QACT,QAAQ,EAAE,+BAA+B;QACzC,qOAAgD;KAEjD,CAAC;qCAiBkC,0DAAW;QACb,2DAAmB;QACvB,uEAA6B;QAC5B,iEAAuB;QACjC,sDAAM;GApBd,uBAAuB,CAmInC;AAnImC;;;;;;;;;;;;;;;;;;;;ACfW;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACAG;AAEU;AAQ5D,IAAa,0BAA0B,GAAvC,MAAa,0BAA0B;IAIrC,YACU,wBAAiD;QAAjD,6BAAwB,GAAxB,wBAAwB,CAAyB;QAJ3D,cAAS,GAAG,IAAI,CAAC;IAKb,CAAC;IAEL,QAAQ;IACR,CAAC;IAEK,QAAQ;;YACZ,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,wBAAwB,CAAC,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,EAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YACjG,IAAI,MAAM,IAAI,IAAI,EAAE;gBAClB,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;gBACtB,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;aACrB;QACH,CAAC;KAAA;IAED,QAAQ;QACN,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;QACtB,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;IACtB,CAAC;IAEM,IAAI,CAAC,MAAuB,EAAE,SAAiB;QACpD,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;QACvB,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;QACtB,IAAI,CAAC,UAAU,GAAC,SAAS,CAAC;IAC5B,CAAC;CAEF;;YAzBqC,iEAAuB;;AALhD,0BAA0B;IALtC,+DAAS,CAAC;QACT,QAAQ,EAAE,kCAAkC;QAC5C,8OAAmD;KAEpD,CAAC;qCAMoC,iEAAuB;GALhD,0BAA0B,CA8BtC;AA9BsC;;;;;;;;;;;;;;;;;;;;ACVQ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACAc;AAIX;AAC4C;AACrB;AACJ;AAOrE,IAAa,wBAAwB,GAArC,MAAa,wBAAwB;IAenC,YAAoB,oBAAyC,EACnD,gBAA+C,EAC/C,iBAA0C;QAFhC,yBAAoB,GAApB,oBAAoB,CAAqB;QACnD,qBAAgB,GAAhB,gBAAgB,CAA+B;QAC/C,sBAAiB,GAAjB,iBAAiB,CAAyB;QAhBpD,cAAS,GAAG,IAAI,CAAC;QAEjB,eAAU,GAAG,KAAK,CAAC;QACnB,kBAAa,GAAe,EAAE,CAAC;QAE/B,mBAAc,GAAG,KAAK,CAAC;QACvB,mBAAc,GAAG,KAAK,CAAC;IAUiC,CAAC;IALzD,IAAI,eAAe;QACjB,OAAO,IAAI,CAAC,KAAK,KAAK,oDAAY,CAAC,YAAY,CAAC;IAClD,CAAC;IAKD,QAAQ;QACN,MAAM,SAAS,GAAG,IAAI,CAAC,oBAAoB,CAAC,YAAY,EAAE,CAAC;QAC3D,IAAI,CAAC,KAAK,GAAG,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;QAC/C,IAAI,IAAI,CAAC,eAAe,EAAE;YACxB,IAAI,CAAC,gBAAgB,CAAC,8BAA8B,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YAC1F,IAAI,CAAC,sBAAsB,GAAG,IAAI,CAAC,gBAAgB,CAAC,aAAa,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE;gBACjF,IAAI,IAAI,EAAE;oBACR,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,YAAY,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC,YAAY,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,eAAe,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;iBAC3P;YACH,CAAC,CAAC,CAAC;SACJ;IACH,CAAC;IAEM,IAAI,CAAC,MAAuB;QACjC,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;QACtB,IAAI,CAAC,eAAe,GAAG,qDAAc,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QACrD,IAAI,CAAC,SAAS,EAAE,CAAC;QACjB,IAAI,CAAC,eAAe,EAAE,CAAC;QACvB,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;QACvB,IAAI,CAAC,cAAc,GAAG,KAAK,CAAC;IAC9B,CAAC;IAED,WAAW;QACT,IAAI,CAAC,sBAAsB,IAAI,IAAI,CAAC,sBAAsB,CAAC,WAAW,EAAE,CAAC;QACzE,IAAI,CAAC,sBAAsB,GAAG,IAAI,CAAC;IACrC,CAAC;IAED,QAAQ;QACN,IAAI,CAAC,iBAAiB,CAAC,iCAAiC,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;QAC9E,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;QACtB,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;IAC1B,CAAC;IAED,UAAU,CAAC,KAAK;QACd,IAAI,IAAI,CAAC,UAAU,EAAE;YACnB,IAAI,CAAC,cAAc,GAAG,KAAK,CAAC;SAC7B;QACD,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE;YACtB,KAAK,CAAC,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;SAC5B;IACH,CAAC;IAEK,QAAQ;;YACZ,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;YACvB,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;YAC3B,IAAI,CAAC,cAAc,GAAG,KAAK,CAAC;YAC5B,IAAI,CAAC,IAAI,CAAC,aAAa,IAAI,IAAI,CAAC,aAAa,CAAC,MAAM,IAAI,CAAC,EAAE;gBACzD,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;gBAC3B,IAAI,CAAC,cAAc,GAAG,KAAK,CAAC;gBAC5B,IAAI,CAAC,YAAY,EAAE,CAAC;gBACpB,OAAO;aACR;YAED,MAAM,SAAS,GAAG,IAAI,uDAAe,EAAE,CAAC;YACxC,SAAS,CAAC,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;YAC/B,SAAS,CAAC,MAAM,GAAG,MAAM,CAAC,qDAAc,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC;YAChE,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;gBAC7B,IAAI,CAAC,CAAC,MAAM,EAAE;oBACZ,SAAS,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;iBACtC;YACH,CAAC,CAAC,CAAC;YACH,IAAI;gBACF,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,iBAAiB,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC;gBACtE,IAAI,MAAM,EAAE;oBACV,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;oBACtB,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;oBACxB,IAAI,CAAC,SAAS,EAAE,CAAC;iBAClB;aACF;YAAC,OAAO,KAAK,EAAE;gBACd,IAAI,CAAC,cAAc,GAAG,KAAK,CAAC;gBAC5B,OAAO,CAAC,GAAG,CAAC,OAAO,EAAE,KAAK,CAAC;aAC5B;QAEH,CAAC;KAAA;IAEO,eAAe;QACrB,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;YAChC,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;gBACxC,IAAI,IAAI,CAAC,IAAI,IAAI,KAAK,CAAC,EAAE,EAAE;oBACzB,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;oBACrB,IAAI,UAAU,GAAG,EAAE,KAAK,EAAE,KAAK,CAAC,IAAI,EAAE,GAAG,EAAE,KAAK,CAAC,EAAE,CAAC,QAAQ,EAAE,GAAG,KAAK,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,CAAC,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,eAAe,EAAE,IAAI,EAAE,CAAC;oBAC7K,IAAI,YAAY,GAAG,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,eAAe,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;oBACnJ,UAAU,CAAC,QAAQ,GAAG,YAAY,CAAC;oBACnC,IAAI,KAAK,CAAC,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE;wBAC7C,UAAU,CAAC,eAAe,GAAG,KAAK,CAAC;wBACnC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;qBACrC;oBACD,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,GAAG,YAAY,CAAC,CAAC;oBACzC,IAAI,CAAC,eAAe,GAAG,UAAU,CAAC,eAAe,CAAC;iBACnD;YACH,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC;IAEO,YAAY;QAClB,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,GAAG,KAAK,CAAC,CAAC;IACtD,CAAC;IAEO,SAAS;QACf,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;QACxB,IAAI,CAAC,cAAc,GAAG,KAAK,CAAC;QAC5B,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,eAAe,GAAG,KAAK,EAAC,CAAC,CAAC,CAAC;QAC/D,IAAI,CAAC,aAAa,GAAG,EAAE,CAAC;QACxB,IAAI,CAAC,YAAY,EAAE;QACnB,IAAI,CAAC,cAAc,GAAG,KAAK,CAAC;IAC9B,CAAC;CACF;;YA9G2C,2DAAmB;YACjC,uEAA6B;YAC5B,iEAAuB;;AAjBzC,wBAAwB;IALpC,+DAAS,CAAC;QACT,QAAQ,EAAE,gCAAgC;QAC1C,wOAAiD;KAElD,CAAC;qCAgB0C,2DAAmB;QACjC,uEAA6B;QAC5B,iEAAuB;GAjBzC,wBAAwB,CA6HpC;AA7HoC;;;;;;;;;;;;;;;;;;;;ACdO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACA4B;AAGJ;AACP;AAC4D;AAE1D;AAO/D,IAAa,sBAAsB,GAAnC,MAAa,sBAAsB;IA6BjC,YACU,0BAAuD,EACvD,oBAAyC;QADzC,+BAA0B,GAA1B,0BAA0B,CAA6B;QACvD,yBAAoB,GAApB,oBAAoB,CAAqB;QAnBnD,oBAAe,GAAG,qDAAc,CAAC;QACjC,gBAAW,GAAG,qDAAc,CAAC;IAmBzB,CAAC;IAfL,IAAI,QAAQ;QACV,OAAO;YACL,EAAE,MAAM,EAAE,YAAY,EAAE,UAAU,EAAE,qDAAc,CAAC,aAAa,EAAE,SAAS,EAAE,WAAW,EAAE;YAC1F,EAAE,MAAM,EAAE,WAAW,EAAE,UAAU,EAAE,qDAAc,CAAC,YAAY,EAAE,SAAS,EAAE,UAAU,EAAE;YACvF,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE;YACvC,EAAE,MAAM,EAAE,iBAAiB,EAAE,UAAU,EAAE,qDAAc,CAAC,IAAI,EAAE,SAAS,EAAE,eAAe,EAAE;YAC1F,EAAE,MAAM,EAAE,QAAQ,EAAE,UAAU,EAAE,qDAAc,CAAC,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,KAAK,EAAE,IAAI,EAAE;YACzF,EAAE,MAAM,EAAE,EAAE,EAAE,UAAU,EAAE,qDAAc,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE;YAC5D,EAAE,MAAM,EAAE,EAAE,EAAE,UAAU,EAAE,qDAAc,CAAC,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE;SAChF,CAAC;IACJ,CAAC;IAOD,QAAQ;QACN,MAAM,IAAI,GAAG,IAAI,CAAC,oBAAoB,CAAC,YAAY,EAAE,CAAC;QACtD,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;QAErC,IAAI,CAAC,sBAAsB,GAAG,IAAI,CAAC,0BAA0B,CAAC,WAAW,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,CAAC;QACnH,IAAI,CAAC,0BAA0B,CAAC,MAAM,EAAE,CAAC;IAC3C,CAAC;IAED,WAAW;QACT,IAAI,CAAC,sBAAsB,IAAI,IAAI,CAAC,sBAAsB,CAAC,WAAW,EAAE,CAAC;QACzE,IAAI,CAAC,sBAAsB,GAAG,IAAI,CAAC;IACrC,CAAC;IAED,WAAW,CAAC,SAA6B;QACvC,IAAI,CAAC,SAAS,CAAC,iBAAiB,CAAC,SAAS,CAAC,CAAC;IAC9C,CAAC;IAED,UAAU;QACR,IAAI,CAAC,QAAQ,CAAC,gBAAgB,EAAE,CAAC;IACnC,CAAC;IAED,aAAa,CAAC,SAA6B;QACzC,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;IAC/C,CAAC;CAEF;;YA7BuC,qEAA2B;YACjC,2DAAmB;;AA7BnD;IADC,+DAAS,CAAC,qEAA6B,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;8BACtD,qEAA6B;yDAAC;AAGjD;IADC,+DAAS,CAAC,oEAA4B,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;8BACtD,oEAA4B;wDAAC;AAG/C;IADC,+DAAS,CAAC,uEAA+B,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;8BACtD,uEAA+B;2DAAC;AAR1C,sBAAsB;IALlC,+DAAS,CAAC;QACT,QAAQ,EAAE,8BAA8B;QACxC,2NAA+C;KAEhD,CAAC;qCA+BsC,qEAA2B;QACjC,2DAAmB;GA/BxC,sBAAsB,CA2DlC;AA3DkC;;;;;;;;;;;;;;;;;;;;;;;ACdE;AACS;;;;;;;;;;;;;;;;;;;;ACDC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACAyB;AAER;AAEE;AACK;AAEuB;AAO9F,IAAa,yBAAyB,iCAAtC,MAAa,yBAAyB;IAsCpC,YACU,oBAAmD,EACnD,oBAAyC;QADzC,yBAAoB,GAApB,oBAAoB,CAA+B;QACnD,yBAAoB,GAApB,oBAAoB,CAAqB;QA9BnD,oBAAe,GAAG,qDAAc,CAAC;QACjC,gBAAW,GAAG,qDAAc,CAAC;QAC7B,eAAU,GAAG,2BAAyB,CAAC,mBAAmB,CAAC;QAC3D,eAAU,GAAG,2BAAyB,CAAC,kBAAkB,CAAC;QAE1D,qBAAgB,GAAG,2BAAyB,CAAC,mBAAmB,CAAC;QAGjE,kBAAa,GAAW,EAAE,CAAC;IAwB3B,CAAC;IAnBD,IAAI,cAAc;QAChB,OAAO,IAAI,CAAC,KAAK,KAAK,oDAAY,CAAC,WAAW,CAAC;IACjD,CAAC;IAED,IAAI,QAAQ;QACV,OAAO;YACL,EAAE,MAAM,EAAE,YAAY,EAAE,UAAU,EAAE,qDAAc,CAAC,aAAa,EAAE,SAAS,EAAE,WAAW,EAAE;YAC1F,EAAE,MAAM,EAAE,WAAW,EAAE,UAAU,EAAE,qDAAc,CAAC,YAAY,EAAE,SAAS,EAAE,UAAU,EAAE;YACvF,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE;YACvC,EAAE,MAAM,EAAE,iBAAiB,EAAE,UAAU,EAAE,qDAAc,CAAC,IAAI,EAAE,SAAS,EAAE,eAAe,EAAE;YAC1F,EAAE,MAAM,EAAE,EAAE,EAAE,UAAU,EAAE,qDAAc,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE;YAC5D,EAAE,MAAM,EAAE,EAAE,EAAE,UAAU,EAAE,qDAAc,CAAC,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE;SAChF,CAAC;IACJ,CAAC;IAQD,QAAQ;QACN,MAAM,IAAI,GAAG,IAAI,CAAC,oBAAoB,CAAC,YAAY,EAAE,CAAC;QACtD,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;QACrC,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,EAAE,CAAC;QAE9B,IAAI,CAAC,oBAAoB,CAAC,GAAG,EAAE,CAAC;QAChC,IAAI,CAAC,yBAAyB,GAAG,IAAI,CAAC,oBAAoB,CAAC,aAAa;aACrE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,CAAC;IAC9C,CAAC;IAED,WAAW;QACT,IAAI,CAAC,yBAAyB,IAAI,IAAI,CAAC,yBAAyB,CAAC,WAAW,EAAE,CAAC;QAC/E,IAAI,CAAC,yBAAyB,GAAG,IAAI,CAAC;IACxC,CAAC;IAED,WAAW,CAAC,WAAiC;QAC3C,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IACpC,CAAC;IAED,aAAa,CAAC,WAAiC;QAC7C,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IACtC,CAAC;CACF;AAjEQ,6CAAmB,GAAG,IAAI,CAAC;AAC3B,4CAAkB,GAAG,CAAC,CAAC,CAAC;;YAqCC,uEAA6B;YAC7B,2DAAmB;;AAnCnD;IADC,+DAAS,CAAC,qEAA6B,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;8BAC7D,qEAA6B;6DAAC;AAG1C;IADC,+DAAS,CAAC,uEAA+B,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;8BAC7D,uEAA+B;+DAAC;AARnC,yBAAyB;IALrC,+DAAS,CAAC;QACT,QAAQ,EAAE,iCAAiC;QAC3C,sPAAkD;KACnD,CAAC;qCAyCgC,uEAA6B;QAC7B,2DAAmB;GAxCxC,yBAAyB,CAkErC;AAlEqC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACde;AACI;AACW;AAMpE,IAAa,wBAAwB,GAArC,MAAa,wBAAwB;IAKnC,YACU,oBAAyC;QAAzC,yBAAoB,GAApB,oBAAoB,CAAqB;IAChD,CAAC;IAEJ,QAAQ;QACN,MAAM,IAAI,GAAG,IAAI,CAAC,oBAAoB,CAAC,YAAY,EAAE,CAAC;QACtD,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;IACvC,CAAC;IAED,UAAU;QACR,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC;IACxB,CAAC;CACF;;YAXiC,2DAAmB;;AAJnD;IADC,+DAAS,CAAC,oEAA4B,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;8BAC7D,oEAA4B;2DAAC;AAF7B,wBAAwB;IAJpC,+DAAS,CAAC;QACT,QAAQ,EAAE,gCAAgC;QAC1C,iOAAiD;KAClD,CAAC;qCAOgC,2DAAmB;GANxC,wBAAwB,CAiBpC;AAjBoC;;;;;;;;;;;;;;;;;;;;;;;ACRE;AACT;;;;;;;;;;;;;;;;;;;;ACDU;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACAqB;AACL;AAE8B;AAG1B;AACW;AACP;AAOhE,IAAa,oBAAoB,4BAAjC,MAAa,oBAAoB;IAwC/B,YACU,cAAuC,EACvC,oBAAyC,EACjD,WAAwB;QAFhB,mBAAc,GAAd,cAAc,CAAyB;QACvC,yBAAoB,GAApB,oBAAoB,CAAqB;QA/BnD,kBAAa,GAAW,EAAE,CAAC;QAI3B,oBAAe,GAAG,qDAAc,CAAC;QACjC,gBAAW,GAAG,qDAAc,CAAC;QAE7B,eAAU,GAAG,sBAAoB,CAAC,iBAAiB,CAAC;QACpD,eAAU,GAAG,sBAAoB,CAAC,kBAAkB,CAAC;QAyBnD,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC,KAAK,CAAC;YACnC,YAAY,EAAE,CAAC,EAAE,CAAC;SACnB,CAAC,CAAC;IACL,CAAC;IA1BD,IAAI,eAAe;QACjB,OAAO,IAAI,CAAC,KAAK,KAAK,oDAAY,CAAC,YAAY,CAAC;IAClD,CAAC;IAED,IAAI,QAAQ;QACV,OAAO;YACL,EAAE,MAAM,EAAE,SAAS,EAAE,UAAU,EAAE,qDAAc,CAAC,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE;YACnF,EAAE,MAAM,EAAE,YAAY,EAAE,UAAU,EAAE,qDAAc,CAAC,aAAa,EAAE,SAAS,EAAE,WAAW,EAAE;YAC1F,EAAE,MAAM,EAAE,WAAW,EAAE,UAAU,EAAE,qDAAc,CAAC,YAAY,EAAE,SAAS,EAAE,UAAU,EAAE;YACvF,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE;YACvC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,OAAO,EAAE,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,EAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,eAAe,EAAE,UAAU,EAAE,qDAAc,CAAC,iBAAiB,EAAE,SAAS,EAAE,mBAAmB,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YAChM,EAAE,MAAM,EAAE,UAAU,EAAE,UAAU,EAAE,qDAAc,CAAC,IAAI,EAAE,SAAS,EAAE,aAAa,EAAE;YACjF,EAAE,MAAM,EAAE,iBAAiB,EAAE,UAAU,EAAE,qDAAc,CAAC,IAAI,EAAE,SAAS,EAAE,eAAe,EAAE;YAC1F,EAAE,MAAM,EAAE,QAAQ,EAAE,UAAU,EAAE,qDAAc,CAAC,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE;YAC5E,EAAE,MAAM,EAAE,EAAE,EAAE,UAAU,EAAE,qDAAc,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE;YAC5D,EAAE,MAAM,EAAE,EAAE,EAAE,UAAU,EAAE,qDAAc,CAAC,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE;SAC/D,CAAC;IACJ,CAAC;IAWD,QAAQ;QACN,MAAM,IAAI,GAAG,IAAI,CAAC,oBAAoB,CAAC,YAAY,EAAE,CAAC;QACtD,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;QACrC,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACnD,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC,cAAc,CAAC,eAAe,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,CAAC;IAC1G,CAAC;IAED,WAAW;QACT,IAAI,CAAC,mBAAmB,IAAI,IAAI,CAAC,mBAAmB,CAAC,WAAW,EAAE,CAAC;QACnE,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC;IAClC,CAAC;IAEK,WAAW,CAAC,MAAuB;;YACvC,MAAM,IAAI,CAAC,cAAc,CAAC,kCAAkC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;YACxE,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAC/B,CAAC;KAAA;IAED,aAAa,CAAC,MAAuB;QACnC,MAAM,IAAI,GAAG,IAAI,CAAC,oBAAoB,CAAC,YAAY,EAAE,CAAC;QACtD,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC3D,CAAC;IAED,aAAa,CAAC,aAAqB;QACjC,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC,cAAc,CAAC,eAAe,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,CAAC;QAExG,IAAI,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE;YAC5B,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CACpC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,aAAa,CAAC,WAAW,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;SAC/G;IACH,CAAC;CAEF;AA/EQ,sCAAiB,GAAG,WAAW,CAAC;AAChC,uCAAkB,GAAG,CAAC,CAAC,CAAC;;YAuCL,iEAAuB;YACjB,2DAAmB;YACpC,0DAAW;;AAtC1B;IADC,+DAAS,CAAC,kEAA0B,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;8BACzD,kEAA0B;yDAAC;AAGxC;IADC,+DAAS,CAAC,gEAAwB,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;8BACxD,gEAAwB;wDAAC;AAR1B,oBAAoB;IALhC,+DAAS,CAAC;QACT,QAAQ,EAAE,2BAA2B;QACrC,8NAA4C;KAE7C,CAAC;qCA0C0B,iEAAuB;QACjB,2DAAmB;QACpC,0DAAW;GA3Cf,oBAAoB,CAgFhC;AAhFgC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACf4B;AAGL;AACoB;AACb;AACO;AAOtE,IAAa,mBAAmB,GAAhC,MAAa,mBAAmB;IAU9B,YACU,oBAAyC,EACzC,oBAAmD;QADnD,yBAAoB,GAApB,oBAAoB,CAAqB;QACzC,yBAAoB,GAApB,oBAAoB,CAA+B;QAVrD,mBAAc,GAAmB,EAAE,CAAC;IAWxC,CAAC;IAEL,QAAQ;QACN,MAAM,IAAI,GAAG,IAAI,CAAC,oBAAoB,CAAC,YAAY,EAAE,CAAC;QACtD,IAAI,uBAAuB,GAAG,IAAI,CAAC,oBAAoB,CAAC,aAAa,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE;YACrF,IAAI,IAAI,EAAE;gBACR,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;aACvD;QACH,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC;QAClD,IAAI,CAAC,oBAAoB,CAAC,8BAA8B,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACtF,CAAC;IAED,UAAU;QACR,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC;IACxB,CAAC;IAED,YAAY;QACV,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,uDAAgB,CAAC,cAAc,EAAE,4DAAqB,CAAC,SAAS,CAAC,CAAC;IACjG,CAAC;CACF;;YAvBiC,2DAAmB;YACnB,uEAA6B;;AAP7D;IADC,+DAAS,CAAC,+DAAuB,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;8BACxD,+DAAuB;sDAAC;AAGnC;IADC,+DAAS,CAAC,8DAAsB,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;8BAC3C,8DAAsB;0DAAC;AARnC,mBAAmB;IAL/B,+DAAS,CAAC;QACT,QAAQ,EAAE,0BAA0B;QACpC,+MAA2C;KAE5C,CAAC;qCAYgC,2DAAmB;QACnB,uEAA6B;GAZlD,mBAAmB,CAkC/B;AAlC+B;;;;;;;;;;;;;;;;;;;ACbzB,MAAM,SAAS;;AACM,yBAAe,GAAW,WAAW,CAAC;AACtC,4BAAkB,GAAG,cAAc,CAAC;AACpC,4BAAkB,GAAG,cAAc,CAAC;AACpC,4BAAkB,GAAG,cAAc,CAAC;AACpC,wBAAc,GAAW,UAAU,CAAC;AACpC,0BAAgB,GAAW,YAAY,CAAC;AACzC,aAAG,GAAW,SAAS,CAAC;AACvB,0BAAgB,GAAW,oBAAoB,CAAC;AAChD,oBAAU,GAAW,OAAO,CAAC;AAC7B,mBAAS,GAAW,YAAY,CAAC;AACjC,2BAAiB,GAAW,oBAAoB,CAAC;AACjD,uBAAa,GAAW,UAAU,CAAC;AACnC,0BAAgB,GAAW,eAAe,CAAC;AAC3C,mBAAS,GAAW,SAAS,CAAC;AAC9B,0BAAgB,GAAW,YAAY,CAAC;AACxC,sBAAY,GAAW,YAAY,CAAC;AACpC,wBAAc,GAAW,aAAa,CAAC;AACvC,yBAAe,GAAW,kBAAkB,CAAC;AAC7C,kBAAQ,GAAW,YAAY,CAAC;AAChC,uBAAa,GAAW,gBAAgB,CAAC;AAE1D,kBAAQ,SAAG;KAOjB;IAN0B,SAAM,GAAW,GAAG,SAAS,CAAC,eAAe,SAAU;IACvD,mBAAgB,GAAW,GAAG,SAAS,CAAC,eAAe,mBAAoB;IAC3E,kCAA+B,GAAW,GAAG,SAAS,CAAC,eAAe,kCAAmC;IACzG,MAAG,GAAW,GAAG,SAAS,CAAC,eAAe,MAAO;IACjD,OAAI,GAAW,GAAG,SAAS,CAAC,eAAe,OAAQ;IACnD,SAAM,GAAG,GAAG,SAAS,CAAC,eAAe,SAAU;QACzE;AAEM,qBAAW,SAAG;KAWpB;IAV0B,iCAA8B,GAAW,GAAG,SAAS,CAAC,kBAAkB,iCAAkC;IAC1G,SAAM,GAAW,GAAG,SAAS,CAAC,kBAAkB,SAAU;IAC1D,OAAI,GAAW,GAAG,SAAS,CAAC,kBAAkB,OAAQ;IACtD,MAAG,GAAW,GAAG,SAAS,CAAC,kBAAkB,MAAO;IACpD,SAAM,GAAW,GAAG,SAAS,CAAC,kBAAkB,SAAU;IAC1D,oBAAiB,GAAW,GAAG,SAAS,CAAC,kBAAkB,oBAAqB;IAChF,oBAAiB,GAAW,GAAG,SAAS,CAAC,kBAAkB,oBAAqB;IAChF,gCAA6B,GAAW,GAAG,SAAS,CAAC,kBAAkB,6BAA8B;IACrG,yBAAsB,GAAW,GAAG,SAAS,CAAC,kBAAkB,oBAAqB;IACrF,2CAAwC,GAAW,GAAG,SAAS,CAAC,kBAAkB,2CAA4C;QACxJ;AAEM,qBAAW,SAAG;KAWpB;IAV0B,SAAM,GAAW,GAAG,SAAS,CAAC,kBAAkB,SAAU;IAC1D,MAAG,GAAW,GAAG,SAAS,CAAC,kBAAkB,MAAO;IACpD,OAAI,GAAW,GAAG,SAAS,CAAC,kBAAkB,OAAQ;IACtD,SAAM,GAAW,GAAG,SAAS,CAAC,kBAAkB,SAAU;IAC1D,yBAAsB,GAAW,GAAG,SAAS,CAAC,kBAAkB,oBAAqB;IACrF,gCAA6B,GAAW,GAAG,SAAS,CAAC,kBAAkB,6BAA8B;IACrG,4BAAyB,GAAW,GAAG,SAAS,CAAC,kBAAkB,4BAA6B;IAChG,uBAAoB,GAAW,GAAG,SAAS,CAAC,kBAAkB,uBAAwB;IACtF,6BAA0B,GAAW,GAAG,SAAS,CAAC,kBAAkB,gCAAiC;IACrG,iCAA8B,GAAW,GAAG,SAAS,CAAC,kBAAkB,iCAAkC;QACpI;AAEM,qBAAW,SAAG;KAUpB;IAT0B,SAAM,GAAW,GAAG,SAAS,CAAC,kBAAkB,SAAU;IAC1D,MAAG,GAAW,GAAG,SAAS,CAAC,kBAAkB,MAAO;IACpD,OAAI,GAAW,GAAG,SAAS,CAAC,kBAAkB,OAAQ;IACtD,SAAM,GAAW,GAAG,SAAS,CAAC,kBAAkB,SAAU;IAC1D,yBAAsB,GAAW,GAAG,SAAS,CAAC,kBAAkB,oBAAqB;IACrF,gCAA6B,GAAW,GAAG,SAAS,CAAC,kBAAkB,6BAA8B;IACrG,uBAAoB,GAAW,GAAG,SAAS,CAAC,kBAAkB,uBAAwB;IACtF,uBAAoB,GAAW,GAAG,SAAS,CAAC,kBAAkB,uBAAwB;IACtF,4BAAyB,GAAW,GAAG,SAAS,CAAC,kBAAkB,4BAA6B;QAC1H;AAEM,iBAAO,SAAG;KAMhB;IAL0B,SAAM,GAAW,GAAG,SAAS,CAAC,cAAc,SAAU;IACtD,MAAG,GAAW,GAAG,SAAS,CAAC,cAAc,aAAc;IACvD,SAAM,GAAW,GAAG,SAAS,CAAC,cAAc,gBAAiB;IAC7D,OAAI,GAAW,GAAG,SAAS,CAAC,cAAc,cAAe;IACzD,+BAA4B,GAAW,GAAG,SAAS,CAAC,cAAc,+BAAgC;QAC5H;AAEM,mBAAS,SAAG;KAKlB;IAJ0B,MAAG,GAAW,GAAG,SAAS,CAAC,gBAAgB,uBAAwB;IACnE,0BAAuB,GAAW,GAAG,SAAS,CAAC,gBAAgB,0BAA2B;IAC1F,OAAI,GAAW,GAAG,SAAS,CAAC,gBAAgB,qBAAsB;IAClE,4BAAyB,GAAW,GAAG,SAAS,CAAC,gBAAgB,4BAA6B;QACxH;AAEM,aAAG,SAAG;KAMZ;IAL0B,YAAS,GAAW,WAAY;IAChC,wBAAqB,GAAW,uBAAwB;IACxD,wCAAqC,GAAW,uCAAwC;IACxF,sBAAmB,GAAW,qBAAsB;IACpD,iCAA8B,GAAW,gCAAiC;QACpG;AAEM,aAAG,SAAG;KAYZ;IAX0B,cAAW,GAAW,GAAG,SAAS,CAAC,UAAU,cAAe;IAC5D,cAAW,GAAW,GAAG,SAAS,CAAC,UAAU,cAAe;IAC5D,sBAAmB,GAAW,GAAG,SAAS,CAAC,gBAAgB,sBAAuB;IAClF,0BAAuB,GAAW,GAAG,SAAS,CAAC,gBAAgB,0BAA2B;IAC1F,0BAAuB,GAAW,GAAG,SAAS,CAAC,UAAU,0BAA2B;IACpF,eAAY,GAAW,GAAG,SAAS,CAAC,gBAAgB,eAAgB;IACpE,YAAS,GAAW,GAAG,SAAS,CAAC,UAAU,YAAa;IACxD,wBAAqB,GAAW,GAAG,SAAS,CAAC,UAAU,wBAAyB;IAChF,uCAAoC,GAAW,GAAG,SAAS,CAAC,UAAU,iCAAkC;IACxG,sBAAmB,GAAW,GAAG,SAAS,CAAC,UAAU,sBAAuB;IAC5E,eAAY,GAAW,GAAG,SAAS,CAAC,UAAU,eAAgB;QACxF;AAEM,mBAAS,SAAG;KAGlB;IAF0B,cAAW,GAAW,GAAG,SAAS,CAAC,SAAS,cAAe;IAC3D,gCAA6B,GAAW,GAAG,SAAS,CAAC,SAAS,gCAAiC;QACzH;AAEM,2BAAiB,SAAG;KAE1B;IAD0B,wCAAqC,GAAW,GAAG,SAAS,CAAC,iBAAiB,wCAAyC;QACjJ;AAEM,gBAAM,SAAG;KAef;IAd0B,yBAAsB,GAAW,GAAG,SAAS,CAAC,aAAa,yBAA0B;IACrF,MAAG,GAAW,GAAG,SAAS,CAAC,aAAa,MAAO;IAC/C,OAAI,GAAW,GAAG,SAAS,CAAC,aAAa,OAAQ;IACjD,SAAM,GAAW,GAAG,SAAS,CAAC,aAAa,SAAU;IACrD,WAAQ,GAAW,GAAG,SAAS,CAAC,aAAa,WAAY;IACzD,YAAS,GAAW,GAAG,SAAS,CAAC,aAAa,YAAa;IAC3D,cAAW,GAAW,GAAG,SAAS,CAAC,aAAa,cAAe;IAC/D,uBAAoB,GAAW,GAAG,SAAS,CAAC,aAAa,yBAA0B;IACnF,qBAAkB,GAAW,GAAG,SAAS,CAAC,aAAa,qBAAsB;IAC7E,6BAA0B,GAAW,GAAG,SAAS,CAAC,aAAa,4BAA6B;IAC5F,qBAAkB,GAAW,GAAG,SAAS,CAAC,aAAa,qBAAsB;IAC7E,WAAQ,GAAW,GAAG,SAAS,CAAC,aAAa,mBAAoB;IACjE,2BAAwB,GAAW,GAAG,SAAS,CAAC,aAAa,8BAA+B;IAC5F,uCAAoC,GAAW,GAAG,SAAS,CAAC,aAAa,uCAAwC;QAC3I;AAEM,gBAAM,SAAG;KASf;IAR0B,qCAAkC,GAAW,GAAG,SAAS,CAAC,SAAS,qCAAqC;IACxG,mBAAgB,GAAW,GAAG,SAAS,CAAC,SAAS,mBAAoB;IACrE,+BAA4B,GAAW,GAAG,SAAS,CAAC,SAAS,+BAAgC;IAC7F,0CAAuC,GAAW,GAAG,SAAS,CAAC,SAAS,0CAA2C;IACnH,kCAA+B,GAAW,GAAG,SAAS,CAAC,SAAS,kCAAmC;IACnG,+BAA4B,GAAW,GAAG,SAAS,CAAC,SAAS,+BAAgC;IAC7F,qCAAkC,GAAW,GAAG,SAAS,CAAC,SAAS,qCAAsC;IACzG,wBAAqB,GAAW,GAAG,SAAS,CAAC,SAAS,wBAAyB;QACzG;AAEM,mBAAS,SAAG;KASlB;IAR0B,4BAAyB,GAAW,GAAG,SAAS,CAAC,YAAY,4BAA6B;IAC1F,kCAA+B,GAAW,GAAG,SAAS,CAAC,YAAY,kCAAmC;IACtG,sBAAmB,GAAW,GAAG,SAAS,CAAC,YAAY,sBAAuB;IAC9E,8BAA2B,GAAW,GAAG,SAAS,CAAC,YAAY,8BAA+B;IAC9F,qBAAkB,GAAW,GAAG,SAAS,CAAC,YAAY,qBAAsB;IAC5E,6BAA0B,GAAW,GAAG,SAAS,CAAC,YAAY,6BAA8B;IAC5F,uBAAoB,GAAW,GAAG,SAAS,CAAC,YAAY,iBAAkB;IAC1E,6BAA0B,GAAW,GAAG,SAAS,CAAC,YAAY,6BAA8B;QACtH;AAEM,sBAAY,SAAG;KAIrB;IAH0B,4BAAyB,GAAW,GAAG,SAAS,CAAC,gBAAgB,eAAgB;IACjF,4BAAyB,GAAW,GAAG,SAAS,CAAC,gBAAgB,eAAgB;IACjF,4BAAyB,GAAW,GAAG,SAAS,CAAC,gBAAgB,eAAgB;QAC3G;AAEM,mBAAS,SAAG;KAElB;IAD0B,SAAM,GAAW,GAAG,SAAS,CAAC,gBAAgB,SAAU;QAClF;AAEM,iBAAO,SAAG;KAEhB;IAD0B,yBAAsB,GAAW,GAAG,SAAS,CAAC,cAAc,yBAA0B;QAChH;AAEM,sBAAY,SAAG;KAkBrB;IAjBG,MAAM;IACiB,sBAAmB,GAAW,GAAG,SAAS,CAAC,eAAe,sBAAuB;IACjF,sBAAmB,GAAW,GAAG,SAAS,CAAC,eAAe,sBAAuB;IACjF,uBAAoB,GAAW,GAAG,SAAS,CAAC,eAAe,uBAAwB;IAC1G,OAAO;IACgB,uBAAoB,GAAW,GAAG,SAAS,CAAC,eAAe,uBAAwB;IACnF,uBAAoB,GAAW,GAAG,SAAS,CAAC,eAAe,uBAAwB;IACnF,wBAAqB,GAAW,GAAG,SAAS,CAAC,eAAe,wBAAyB;IAErF,qBAAkB,GAAW,GAAG,SAAS,CAAC,eAAe,qBAAsB;IACtG,aAAa;IACU,sBAAmB,GAAW,GAAG,SAAS,CAAC,eAAe,sBAAuB;IACjF,uBAAoB,GAAW,GAAG,SAAS,CAAC,eAAe,uBAAwB;IACnF,0BAAuB,GAAW,GAAG,SAAS,CAAC,eAAe,0BAA2B;IACzF,4CAAyC,GAAW,GAAG,SAAS,CAAC,eAAe,yCAA0C;IACjJ,QAAQ;IACe,oBAAiB,GAAW,GAAG,SAAS,CAAC,eAAe,4BAA6B;QAC/G;AAEM,mBAAS,SAAG;KAKlB;IAJ0B,uBAAoB,GAAW,GAAG,SAAS,CAAC,QAAQ,uBAAwB;IAC5E,kBAAe,GAAW,GAAG,SAAS,CAAC,QAAQ,kBAAmB;IAClE,mBAAgB,GAAW,GAAG,SAAS,CAAC,QAAQ,mBAAoB;IACpE,yBAAsB,GAAW,GAAG,SAAS,CAAC,QAAQ,gBAAiB;QACjG;AAEM,uBAAa,SAAG;KAoBtB;IAnB0B,cAAW,GAAW,GAAG,SAAS,CAAC,aAAa,cAAe;IAC/D,mBAAgB,GAAW,GAAG,SAAS,CAAC,aAAa,SAAU;IAC/D,gCAA6B,GAAW,GAAG,SAAS,CAAC,aAAa,6BAA8B;IAChG,oBAAiB,GAAW,GAAG,SAAS,CAAC,aAAa,SAAU;IAChE,sBAAmB,GAAW,GAAG,SAAS,CAAC,aAAa,SAAU;IAClE,yBAAsB,GAAW,GAAG,SAAS,CAAC,aAAa,oBAAqB;IAChF,uBAAoB,GAAW,GAAG,SAAS,CAAC,aAAa,uBAAwB;IACjF,uBAAoB,GAAW,GAAG,SAAS,CAAC,aAAa,uBAAwB;IACjF,wBAAqB,GAAW,GAAG,SAAS,CAAC,aAAa,wBAAyB;IACnF,0BAAuB,GAAW,GAAG,SAAS,CAAC,aAAa,0BAA2B;IACvF,iBAAc,GAAW,GAAG,SAAS,CAAC,aAAa,iBAAkB;IACrE,uBAAoB,GAAW,GAAG,SAAS,CAAC,aAAa,uBAAwB;IACjF,wBAAqB,GAAW,GAAG,SAAS,CAAC,aAAa,wBAAyB;IACnF,6BAA0B,GAAW,GAAG,SAAS,CAAC,aAAa,6BAA8B;IAC7F,2BAAwB,GAAW,GAAG,SAAS,CAAC,aAAa,+BAAgC;IAC7F,kBAAe,GAAW,GAAG,SAAS,CAAC,aAAa,kBAAmB;IACvE,4BAAyB,GAAW,GAAG,SAAS,CAAC,aAAa,4BAA6B;IAC3F,yBAAsB,GAAW,GAAG,SAAS,CAAC,aAAa,yBAA0B;IACrF,8BAA2B,GAAW,GAAG,SAAS,CAAC,aAAa,8BAA+B;QACzH;;;;;;;;;;;;;;;;;;;;ACvNiE;AAE/D,MAAM,oBAAoB,GAAG;IAChC,CAAC,0DAAmB,CAAC,MAAM,CAAC,EAAE,QAAQ;IACtC,CAAC,0DAAmB,CAAC,QAAQ,CAAC,EAAE,WAAW;IAC3C,CAAC,0DAAmB,CAAC,MAAM,CAAC,EAAE,QAAQ;IACtC,CAAC,0DAAmB,CAAC,QAAQ,CAAC,EAAE,WAAW;CAC9C;AAEM,MAAM,mBAAmB,GAAG;IAC/B,CAAC,4DAAqB,CAAC,KAAK,CAAC,EAAE,EAAE,QAAQ,EAAE,iBAAiB,EAAE,SAAS,EAAE,oBAAoB,EAAE;IAC/F,CAAC,4DAAqB,CAAC,eAAe,CAAC,EAAE,EAAE,QAAQ,EAAE,4BAA4B,EAAE,SAAS,EAAE,4BAA4B,EAAE;IAC5H,CAAC,4DAAqB,CAAC,iBAAiB,CAAC,EAAE,EAAE,QAAQ,EAAE,qCAAqC,EAAE,SAAS,EAAE,EAAE,EAAE;IAC7G,CAAC,4DAAqB,CAAC,eAAe,CAAC,EAAE,EAAE,QAAQ,EAAE,4BAA4B,EAAE,SAAS,EAAE,4BAA4B,EAAE;CAC/H;;;;;;;;;;;;;;;;;;;ACdgD;AAE1C,MAAM,eAAe,GAAG;IAC7B,CAAC,4DAAqB,CAAC,KAAK,CAAC,EAAE,OAAO;IACtC,CAAC,4DAAqB,CAAC,QAAQ,CAAC,EAAE,UAAU;CAC7C;;;;;;;;;;;;;;;;;;;ACLsD;AAEhD,MAAM,4BAA4B,GAAG;IAC1C,CAAC,kEAA2B,CAAC,SAAS,CAAC,EAAE,iBAAiB;IAC1D,CAAC,kEAA2B,CAAC,SAAS,CAAC,EAAE,iBAAiB;CAC3D;;;;;;;;;;;;;;;;;;;ACLkD;AAG5C,MAAM,gBAAgB,GAAG;IAC9B,CAAC,8DAAuB,CAAC,IAAI,CAAC,EAAE,MAAM;IACtC,CAAC,8DAAuB,CAAC,MAAM,CAAC,EAAE,QAAQ;IAC1C,CAAC,8DAAuB,CAAC,MAAM,CAAC,EAAE,kBAAkB;IACpD,CAAC,8DAAuB,CAAC,SAAS,CAAC,EAAE,gBAAgB;CACtD;;;;;;;;;;;;;;;;;;;;;;ACRwD;AAElD,MAAM,wCAAwC,GAAG;IACpD,CAAC,oEAA6B,CAAC,OAAO,CAAC,EAAE,UAAU;IACnD,CAAC,oEAA6B,CAAC,OAAO,CAAC,EAAE,UAAU;IACnD,CAAC,oEAA6B,CAAC,cAAc,CAAC,EAAE,kBAAkB;IAClE,CAAC,oEAA6B,CAAC,OAAO,CAAC,EAAE,UAAU;CACtD;AAEM,MAAM,yCAAyC,GAAG;IACrD,CAAC,oEAA6B,CAAC,eAAe,CAAC,EAAE,gBAAgB;IACjE,CAAC,oEAA6B,CAAC,qBAAqB,CAAC,EAAE,yBAAyB;CACnF;AAEM,MAAM,wCAAwC,GAAG;IACpD,CAAC,oEAA6B,CAAC,cAAc,CAAC,EAAE,gBAAgB;CACnE;AAEM,MAAM,2CAA2C,GAAG;IACvD,UAAU,EAAE,OAAO;IACnB,iBAAiB,EAAE,iCAAiC;IACpD,oBAAoB,EAAE,yBAAyB;CAClD;;;;;;;;;;;;;;;;;;;ACtBuC;AAEjC,MAAM,YAAY,GAAG;IACxB,CAAC,mDAAY,CAAC,UAAU,CAAC,EAAE,aAAa;IACxC,CAAC,mDAAY,CAAC,yBAAyB,CAAC,EAAE,eAAe;IACzD,CAAC,mDAAY,CAAC,wBAAwB,CAAC,EAAE,cAAc;IACvD,CAAC,mDAAY,CAAC,sBAAsB,CAAC,EAAE,SAAS;IAChD,CAAC,mDAAY,CAAC,wBAAwB,CAAC,EAAE,WAAW;IACpD,CAAC,mDAAY,CAAC,gBAAgB,CAAC,EAAE,cAAc;IAC/C,CAAC,mDAAY,CAAC,UAAU,CAAC,EAAE,aAAa;CAC3C;;;;;;;;;;;;;;;;;;;ACV2C;AAErC,MAAM,wBAAwB,GAAG;IACpC,CAAC,uDAAgB,CAAC,GAAG,CAAC,EAAE,KAAK;IAC7B,CAAC,uDAAgB,CAAC,GAAG,CAAC,EAAE,KAAK;CAChC;;;;;;;;;;;;;;;;;;;;ACLyE;AAEnE,MAAM,wBAAwB,GAAG;IACpC,CAAC,oEAA6B,CAAC,OAAO,CAAC,EAAE,SAAS;IAClD,CAAC,oEAA6B,CAAC,QAAQ,CAAC,EAAE,WAAW;CACxD;AAEM,MAAM,qBAAqB,GAAG;IACjC,CAAC,sDAAe,CAAC,aAAa,CAAC,EAAE,iBAAiB;IAClD,CAAC,sDAAe,CAAC,aAAa,CAAC,EAAE,iBAAiB;CACrD;;;;;;;;;;;;;;;;;;;;ACVkE;AAE5D,MAAM,uBAAuB,GAAG;IACrC,CAAC,yDAAkB,CAAC,oBAAoB,CAAC,EAAE,mCAAmC;IAC9E,CAAC,yDAAkB,CAAC,eAAe,CAAC,EAAE,8BAA8B;IACpE,CAAC,yDAAkB,CAAC,gBAAgB,CAAC,EAAE,+BAA+B;CACvE;AAEM,MAAM,gCAAgC,GAAG;IAC9C,CAAC,yDAAkB,CAAC,gBAAgB,CAAC,EAAE;QACrC,KAAK,EAAE,qBAAqB;QAC5B,GAAG,EAAE,cAAc;QACnB,IAAI,EAAE,yDAAkB,CAAC,gBAAgB;QACzC,QAAQ,EAAE,IAAI;QACd,QAAQ,EAAE;YACR,EAAC,KAAK,EAAE,SAAS,EAAE,GAAG,EAAE,SAAS,EAAE,QAAQ,EAAE,KAAK,EAAE,IAAI,EAAE,yDAAkB,CAAC,OAAO,GAAE;YACtF,EAAC,KAAK,EAAE,WAAW,EAAE,GAAG,EAAE,UAAU,EAAE,QAAQ,EAAE,KAAK,EAAE,IAAI,EAAE,yDAAkB,CAAC,QAAQ,GAAE;SAC7F;KAAC;IACF,CAAC,yDAAkB,CAAC,eAAe,CAAC,EAAE;QACpC,KAAK,EAAE,oBAAoB;QACzB,GAAG,EAAE,aAAa;QAClB,IAAI,EAAE,yDAAkB,CAAC,eAAe;QACxC,QAAQ,EAAE,IAAI;QACd,QAAQ,EAAE;YACR,EAAC,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,IAAI,EAAE,yDAAkB,CAAC,IAAI,GAAE;YAC7E,EAAC,KAAK,EAAE,QAAQ,EAAE,GAAG,EAAE,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE,IAAI,EAAE,yDAAkB,CAAC,MAAM,GAAE;YACnF,EAAC,KAAK,EAAE,eAAe,EAAE,GAAG,EAAE,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE,IAAI,EAAE,yDAAkB,CAAC,UAAU,GAAE;YAC9F,EAAC,KAAK,EAAE,gBAAgB,EAAE,GAAG,EAAE,WAAW,EAAE,QAAQ,EAAE,KAAK,EAAE,IAAI,EAAE,yDAAkB,CAAC,aAAa,GAAE;SACtG;KACJ;IACD,CAAC,yDAAkB,CAAC,oBAAoB,CAAC,EAAE;QACzC,KAAK,EAAE,mBAAmB;QACxB,GAAG,EAAE,aAAa;QAClB,IAAI,EAAE,yDAAkB,CAAC,IAAI;QAC7B,QAAQ,EAAE,KAAK;KAClB;CACF;;;;;;;;;;;;;;;;;;;;ACpCyD;AACnD,MAAM,oBAAoB;IAGtB,MAAM,CAAC,YAAY,CAAC,UAAyB;QAChD,QAAQ,UAAU,EAAE;YAChB,KAAK,mEAAa,CAAC,OAAO;gBACtB,OAAO,oBAAoB,CAAC,cAAc,CAAC;YAC/C,KAAK,mEAAa,CAAC,SAAS;gBACxB,OAAO,oBAAoB,CAAC,gBAAgB,CAAC;SACpD;IACL,CAAC;;AATsB,mCAAc,GAAG,uBAAuB,CAAC;AACzC,qCAAgB,GAAG,yBAAyB,CAAC;AAYjE,MAAM,iBAAiB,GAAG;IAC7B,CAAC,mEAAa,CAAC,OAAO,CAAC,EAAE,MAAM;IAC/B,CAAC,mEAAa,CAAC,SAAS,CAAC,EAAE,QAAQ;CACtC;;;;;;;;;;;;;;;;;;;AClB4E;AAEtE,MAAM,wBAAwB,GAAG;IACpC,CAAC,wFAAsB,CAAC,IAAI,CAAC,EAAE,QAAQ;IACvC,CAAC,wFAAsB,CAAC,KAAK,CAAC,EAAE,OAAO;IACvC,CAAC,wFAAsB,CAAC,OAAO,CAAC,EAAE,SAAS;IAC3C,CAAC,wFAAsB,CAAC,mBAAmB,CAAC,EAAE,wBAAwB;IACtE,CAAC,wFAAsB,CAAC,iBAAiB,CAAC,EAAE,sBAAsB;IAClE,CAAC,wFAAsB,CAAC,KAAK,CAAC,EAAE,qBAAqB;CACxD;;;;;;;;;;;;;;;;;;;;;ACTiD;AAElD,MAAM,UAAU;CASf;AAEM,MAAM,iBAAkB,SAAQ,UAAU;IAC7C;QACI,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,cAAc,GAAG,CAAC,CAAC;QACxB,IAAI,CAAC,QAAQ,GAAG,CAAC,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAE,WAAW,EAAE,UAAU,EAAE,QAAQ,EAAE,UAAU,CAAC,CAAC;QAC/F,IAAI,CAAC,aAAa,GAAG,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;QACvE,IAAI,CAAC,WAAW,GAAG,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;QAC9D,IAAI,CAAC,UAAU,GAAG,CAAC,SAAS,EAAE,UAAU,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,WAAW,EAAE,SAAS,EAAE,UAAU,EAAE,UAAU,CAAC,CAAC;QAC7I,IAAI,CAAC,eAAe,GAAG,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;QAC5G,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;IACjC,CAAC;CACJ;AAEM,MAAM,qBAAqB,GAAG;IACjC,CAAC,2DAAoB,CAAC,GAAG,CAAC,EAAE,KAAK;IACjC,CAAC,2DAAoB,CAAC,IAAI,CAAC,EAAE,MAAM;IACnC,CAAC,2DAAoB,CAAC,KAAK,CAAC,EAAE,OAAO;CACxC;AAGM,MAAM,qBAAqB;;AACP,yCAAmB,GAAW,EAAE,CAAC;AACjC,wCAAkB,GAAW,CAAC,CAAC;AAC/B,kDAA4B,GAAW,IAAI,CAAC;;;;;;;;;;;;;;;;;;;ACpChC;AAEhC,MAAM,kBAAkB,GAAG;IAC9B,CAAC,kDAAW,CAAC,GAAG,CAAC,EAAE,KAAK;IACxB,CAAC,kDAAW,CAAC,GAAG,CAAC,EAAE,KAAK;IACxB,CAAC,kDAAW,CAAC,GAAG,CAAC,EAAE,KAAK;CAC3B;;;;;;;;;;;;;;;;;;;ACNmD;AAE7C,MAAM,yBAAyB,GAAG;IACrC,CAAC,+DAAwB,CAAC,KAAK,CAAC,EAAE,OAAO;IACzC,CAAC,+DAAwB,CAAC,MAAM,CAAC,EAAE,QAAQ;IAC3C,CAAC,+DAAwB,CAAC,OAAO,CAAC,EAAE,SAAS;CAChD;;;;;;;;;;;;;;;;;;;ACNM,MAAM,UAAU,GAA4C,KAAK,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,EAAE,EAAE,KAAK,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;AAE9I,MAAM,kBAAkB,GAA4C,CAAC,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;;;;;;;;;;;;;;;;;;;ACFtC;AAE5D,MAAM,8BAA8B,GAAG;IAC5C,CAAC,wDAAiB,CAAC,GAAG,CAAC,EAAE;QACvB,CAAC,2DAAoB,CAAC,eAAe,CAAC,EAAE,mCAAmC;QAC3E,CAAC,2DAAoB,CAAC,kBAAkB,CAAC,EAAE,sCAAsC;KAClF;IACD,CAAC,wDAAiB,CAAC,QAAQ,CAAC,EAAE;QAC5B,CAAC,2DAAoB,CAAC,IAAI,CAAC,EAAE,2BAA2B;QACxD,CAAC,2DAAoB,CAAC,WAAW,CAAC,EAAE,mCAAmC;QACvE,CAAC,2DAAoB,CAAC,IAAI,CAAC,EAAE,2BAA2B;QACxD,CAAC,2DAAoB,CAAC,KAAK,CAAC,EAAE,4BAA4B;KAC3D;IACD,CAAC,wDAAiB,CAAC,IAAI,CAAC,EAAE;QACxB,CAAC,2DAAoB,CAAC,KAAK,CAAC,EAAE,kBAAkB;QAChD,CAAC,2DAAoB,CAAC,MAAM,CAAC,EAAE,kBAAkB;QACjD,CAAC,2DAAoB,CAAC,KAAK,CAAC,EAAE,kBAAkB;KACjD;IACD,CAAC,wDAAiB,CAAC,OAAO,CAAC,EAAE;QAC3B,CAAC,2DAAoB,CAAC,IAAI,CAAC,EAAE,qBAAqB;KACnD;IACD,CAAC,wDAAiB,CAAC,GAAG,CAAC,EAAE;QACvB,CAAC,2DAAoB,CAAC,SAAS,CAAC,EAAE,4BAA4B;QAC9D,CAAC,2DAAoB,CAAC,WAAW,CAAC,EAAE,8BAA8B;KACnE;CACF,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;ACzBuH;AAElH,MAAM,mBAAmB,GAAG;IAC/B,CAAC,wDAAiB,CAAC,IAAI,CAAC,EAAE,MAAM;IAChC,CAAC,wDAAiB,CAAC,QAAQ,CAAC,EAAE,UAAU;IACxC,CAAC,wDAAiB,CAAC,GAAG,CAAC,EAAE,KAAK;IAC9B,CAAC,wDAAiB,CAAC,OAAO,CAAC,EAAE,SAAS;IACtC,CAAC,wDAAiB,CAAC,GAAG,CAAC,EAAE,KAAK;CACjC;AAEM,MAAM,mBAAmB,GAAG;IAC/B,CAAC,wDAAiB,CAAC,IAAI,CAAC,EAAE,GAAG;IAC7B,CAAC,wDAAiB,CAAC,IAAI,CAAC,EAAE,MAAM;IAChC,CAAC,wDAAiB,CAAC,IAAI,CAAC,EAAE,MAAM;IAChC,CAAC,wDAAiB,CAAC,KAAK,CAAC,EAAE,OAAO;IAClC,CAAC,wDAAiB,CAAC,KAAK,CAAC,EAAE,OAAO;CACrC;AAEM,MAAM,6BAA6B,GAAG;IACzC,CAAC,wDAAiB,CAAC,IAAI,CAAC,EAAE,GAAG;IAC7B,CAAC,wDAAiB,CAAC,KAAK,CAAC,EAAE,OAAO;IAClC,CAAC,wDAAiB,CAAC,KAAK,CAAC,EAAE,OAAO;CACrC;AAEM,MAAM,2BAA2B,GAAG;IACvC,CAAC,wDAAiB,CAAC,IAAI,CAAC,EAAE,GAAG;IAC7B,CAAC,wDAAiB,CAAC,IAAI,CAAC,EAAE,MAAM;IAChC,CAAC,wDAAiB,CAAC,IAAI,CAAC,EAAE,MAAM;CACnC;AAEM,MAAM,sBAAsB,GAAG;IAClC,CAAC,2DAAoB,CAAC,KAAK,CAAC,EAAE,OAAO;IACrC,CAAC,2DAAoB,CAAC,MAAM,CAAC,EAAE,QAAQ;IACvC,CAAC,2DAAoB,CAAC,KAAK,CAAC,EAAE,OAAO;IACrC,CAAC,2DAAoB,CAAC,eAAe,CAAC,EAAE,mBAAmB;IAC3D,CAAC,2DAAoB,CAAC,kBAAkB,CAAC,EAAE,sBAAsB;IACjE,CAAC,2DAAoB,CAAC,IAAI,CAAC,EAAE,MAAM;IACnC,CAAC,2DAAoB,CAAC,IAAI,CAAC,EAAE,MAAM;IACnC,CAAC,2DAAoB,CAAC,KAAK,CAAC,EAAE,OAAO;IACrC,CAAC,2DAAoB,CAAC,WAAW,CAAC,EAAE,cAAc;IAClD,CAAC,2DAAoB,CAAC,IAAI,CAAC,EAAE,GAAG;IAChC,CAAC,2DAAoB,CAAC,SAAS,CAAC,EAAE,YAAY;IAC9C,CAAC,2DAAoB,CAAC,WAAW,CAAC,EAAE,cAAc;CACrD;AAEM,MAAM,gBAAgB,GAAG;IAC5B,CAAC,qDAAc,CAAC,UAAU,CAAC,EAAE,aAAa;IAC1C,CAAC,qDAAc,CAAC,kBAAkB,CAAC,EAAE,qBAAqB;IAC1D,CAAC,qDAAc,CAAC,mBAAmB,CAAC,EAAE,uBAAuB;IAC7D,CAAC,qDAAc,CAAC,KAAK,CAAC,EAAE,OAAO;IAC/B,CAAC,qDAAc,CAAC,uBAAuB,CAAC,EAAE,2BAA2B;IACrE,CAAC,qDAAc,CAAC,kBAAkB,CAAC,EAAE,sBAAsB;IAC3D,CAAC,qDAAc,CAAC,oBAAoB,CAAC,EAAE,wBAAwB;IAC/D,CAAC,qDAAc,CAAC,cAAc,CAAC,EAAE,kBAAkB;IACnD,CAAC,qDAAc,CAAC,iBAAiB,CAAC,EAAE,uBAAuB;IAC3D,CAAC,qDAAc,CAAC,SAAS,CAAC,EAAE,WAAW;CAC1C;AAEM,MAAM,oBAAoB,GAAG;IAChC,CAAC,yDAAkB,CAAC,0BAA0B,CAAC,EAAE,gCAAgC;IACjF,CAAC,yDAAkB,CAAC,IAAI,CAAC,EAAE,MAAM;IACjC,CAAC,yDAAkB,CAAC,IAAI,CAAC,EAAE,MAAM;IACjC,CAAC,yDAAkB,CAAC,IAAI,CAAC,EAAE,MAAM;IACjC,CAAC,yDAAkB,CAAC,eAAe,CAAC,EAAE,mBAAmB;IACzD,CAAC,yDAAkB,CAAC,IAAI,CAAC,EAAE,MAAM;IACjC,CAAC,yDAAkB,CAAC,QAAQ,CAAC,EAAE,WAAW;IAC1C,CAAC,yDAAkB,CAAC,QAAQ,CAAC,EAAE,WAAW;IAC1C,CAAC,yDAAkB,CAAC,QAAQ,CAAC,EAAE,WAAW;IAC1C,CAAC,yDAAkB,CAAC,QAAQ,CAAC,EAAE,WAAW;IAC1C,CAAC,yDAAkB,CAAC,QAAQ,CAAC,EAAE,WAAW;IAC1C,CAAC,yDAAkB,CAAC,QAAQ,CAAC,EAAE,WAAW;IAC1C,CAAC,yDAAkB,CAAC,gBAAgB,CAAC,EAAE,oBAAoB;IAC3D,CAAC,yDAAkB,CAAC,gBAAgB,CAAC,EAAE,oBAAoB;IAC3D,CAAC,yDAAkB,CAAC,gBAAgB,CAAC,EAAE,oBAAoB;IAC3D,CAAC,yDAAkB,CAAC,gBAAgB,CAAC,EAAE,oBAAoB;IAC3D,CAAC,yDAAkB,CAAC,KAAK,CAAC,EAAE,OAAO;IACnC,CAAC,yDAAkB,CAAC,KAAK,CAAC,EAAE,OAAO;IACnC,CAAC,yDAAkB,CAAC,GAAG,CAAC,EAAE,KAAK;IAC/B,CAAC,yDAAkB,CAAC,KAAK,CAAC,EAAE,OAAO;IACnC,CAAC,yDAAkB,CAAC,KAAK,CAAC,EAAE,OAAO;IACnC,CAAC,yDAAkB,CAAC,UAAU,CAAC,EAAE,aAAa;IAC9C,CAAC,yDAAkB,CAAC,UAAU,CAAC,EAAE,aAAa;IAC9C,CAAC,yDAAkB,CAAC,UAAU,CAAC,EAAE,aAAa;IAC9C,CAAC,yDAAkB,CAAC,UAAU,CAAC,EAAE,aAAa;IAC9C,CAAC,yDAAkB,CAAC,KAAK,CAAC,EAAE,OAAO;CACtC;;;;;;;;;;;;;;;;;;;;;AC/EiB;AAEX,MAAM,sBAAsB,GAAG;IAClC,CAAC,wDAAiB,CAAC,IAAI,CAAC,EAAE;QACtB,CAAC,2DAAoB,CAAC,KAAK,CAAC,EAAE;YAC1B,CAAC,qDAAc,CAAC,UAAU,CAAC,EAAE;gBACzB,CAAC,yDAAkB,CAAC,0BAA0B,CAAC,EAAE;oBAC7C,CAAC,wDAAiB,CAAC,IAAI,CAAC,EAAE,aAAa;iBAC1C;aACJ;SACJ;QACD,CAAC,2DAAoB,CAAC,MAAM,CAAC,EAAE;YAC3B,CAAC,qDAAc,CAAC,UAAU,CAAC,EAAE;gBACzB,CAAC,yDAAkB,CAAC,0BAA0B,CAAC,EAAE;oBAC7C,CAAC,wDAAiB,CAAC,IAAI,CAAC,EAAE,aAAa;iBAC1C;aACJ;SACJ;QACD,CAAC,2DAAoB,CAAC,KAAK,CAAC,EAAE;YAC1B,CAAC,qDAAc,CAAC,UAAU,CAAC,EAAE;gBACzB,CAAC,yDAAkB,CAAC,0BAA0B,CAAC,EAAE;oBAC7C,CAAC,wDAAiB,CAAC,IAAI,CAAC,EAAE,aAAa;iBAC1C;aACJ;SACJ;KACJ;IACD,CAAC,wDAAiB,CAAC,GAAG,CAAC,EAAE;QACrB,CAAC,2DAAoB,CAAC,eAAe,CAAC,EAAE;YACpC,CAAC,qDAAc,CAAC,kBAAkB,CAAC,EAAE;gBACjC,CAAC,yDAAkB,CAAC,IAAI,CAAC,EAAE;oBACvB,CAAC,wDAAiB,CAAC,KAAK,CAAC,EAAE,CAAC,qBAAqB,EAAE,MAAM,EAAE,MAAM,CAAC;oBAClE,CAAC,wDAAiB,CAAC,KAAK,CAAC,EAAE,CAAC,qBAAqB,EAAE,MAAM,EAAE,OAAO,CAAC;oBACnE,CAAC,wDAAiB,CAAC,IAAI,CAAC,EAAE,CAAC,qBAAqB,EAAE,MAAM,EAAE,OAAO,CAAC;oBAClE,CAAC,wDAAiB,CAAC,IAAI,CAAC,EAAE,CAAC,qBAAqB,EAAE,MAAM,EAAE,MAAM,CAAC;iBACpE;gBACD,CAAC,yDAAkB,CAAC,IAAI,CAAC,EAAE;oBACvB,CAAC,wDAAiB,CAAC,KAAK,CAAC,EAAE,CAAC,qBAAqB,EAAE,MAAM,EAAE,MAAM,CAAC;oBAClE,CAAC,wDAAiB,CAAC,KAAK,CAAC,EAAE,CAAC,qBAAqB,EAAE,MAAM,EAAE,OAAO,CAAC;oBACnE,CAAC,wDAAiB,CAAC,IAAI,CAAC,EAAE,CAAC,qBAAqB,EAAE,MAAM,EAAE,OAAO,CAAC;oBAClE,CAAC,wDAAiB,CAAC,IAAI,CAAC,EAAE,CAAC,qBAAqB,EAAE,MAAM,EAAE,MAAM,CAAC;iBACpE;gBACD,CAAC,yDAAkB,CAAC,IAAI,CAAC,EAAE;oBACvB,CAAC,wDAAiB,CAAC,KAAK,CAAC,EAAE,CAAC,qBAAqB,EAAE,MAAM,EAAE,MAAM,CAAC;oBAClE,CAAC,wDAAiB,CAAC,KAAK,CAAC,EAAE,CAAC,qBAAqB,EAAE,MAAM,EAAE,OAAO,CAAC;oBACnE,CAAC,wDAAiB,CAAC,IAAI,CAAC,EAAE,CAAC,qBAAqB,EAAE,MAAM,EAAE,OAAO,CAAC;oBAClE,CAAC,wDAAiB,CAAC,IAAI,CAAC,EAAE,CAAC,qBAAqB,EAAE,MAAM,EAAE,MAAM,CAAC;iBACpE;aACJ;YACD,CAAC,qDAAc,CAAC,mBAAmB,CAAC,EAAE;gBAClC,CAAC,yDAAkB,CAAC,IAAI,CAAC,EAAE;oBACvB,CAAC,wDAAiB,CAAC,KAAK,CAAC,EAAE,CAAC,uBAAuB,EAAE,MAAM,EAAE,MAAM,CAAC;oBACpE,CAAC,wDAAiB,CAAC,KAAK,CAAC,EAAE,CAAC,uBAAuB,EAAE,MAAM,EAAE,OAAO,CAAC;oBACrE,CAAC,wDAAiB,CAAC,IAAI,CAAC,EAAE,CAAC,uBAAuB,EAAE,MAAM,EAAE,OAAO,CAAC;oBACpE,CAAC,wDAAiB,CAAC,IAAI,CAAC,EAAE,CAAC,uBAAuB,EAAE,MAAM,EAAE,MAAM,CAAC;iBACtE;gBACD,CAAC,yDAAkB,CAAC,IAAI,CAAC,EAAE;oBACvB,CAAC,wDAAiB,CAAC,KAAK,CAAC,EAAE,CAAC,uBAAuB,EAAE,MAAM,EAAE,MAAM,CAAC;oBACpE,CAAC,wDAAiB,CAAC,KAAK,CAAC,EAAE,CAAC,uBAAuB,EAAE,MAAM,EAAE,OAAO,CAAC;oBACrE,CAAC,wDAAiB,CAAC,IAAI,CAAC,EAAE,CAAC,uBAAuB,EAAE,MAAM,EAAE,OAAO,CAAC;oBACpE,CAAC,wDAAiB,CAAC,IAAI,CAAC,EAAE,CAAC,uBAAuB,EAAE,MAAM,EAAE,MAAM,CAAC;iBACtE;aACJ;YACD,CAAC,qDAAc,CAAC,KAAK,CAAC,EAAE;gBACpB,CAAC,yDAAkB,CAAC,eAAe,CAAC,EAAE;oBAClC,CAAC,wDAAiB,CAAC,IAAI,CAAC,EAAE,OAAO;iBACpC;aACJ;YACD,CAAC,qDAAc,CAAC,uBAAuB,CAAC,EAAE;gBACtC,CAAC,yDAAkB,CAAC,IAAI,CAAC,EAAE;oBACvB,CAAC,wDAAiB,CAAC,KAAK,CAAC,EAAE,CAAC,2BAA2B,EAAE,MAAM,EAAE,MAAM,CAAC;oBACxE,CAAC,wDAAiB,CAAC,KAAK,CAAC,EAAE,CAAC,2BAA2B,EAAE,MAAM,EAAE,OAAO,CAAC;oBACzE,CAAC,wDAAiB,CAAC,IAAI,CAAC,EAAE,CAAC,2BAA2B,EAAE,MAAM,EAAE,OAAO,CAAC;oBACxE,CAAC,wDAAiB,CAAC,IAAI,CAAC,EAAE,CAAC,2BAA2B,EAAE,MAAM,EAAE,MAAM,CAAC;iBAC1E;aACJ;YACD,CAAC,qDAAc,CAAC,kBAAkB,CAAC,EAAE;gBACjC,CAAC,yDAAkB,CAAC,IAAI,CAAC,EAAE;oBACvB,CAAC,wDAAiB,CAAC,KAAK,CAAC,EAAE,CAAC,sBAAsB,EAAE,MAAM,EAAE,MAAM,CAAC;oBACnE,CAAC,wDAAiB,CAAC,KAAK,CAAC,EAAE,CAAC,sBAAsB,EAAE,MAAM,EAAE,OAAO,CAAC;oBACpE,CAAC,wDAAiB,CAAC,IAAI,CAAC,EAAE,CAAC,sBAAsB,EAAE,MAAM,EAAE,OAAO,CAAC;oBACnE,CAAC,wDAAiB,CAAC,IAAI,CAAC,EAAE,CAAC,sBAAsB,EAAE,MAAM,EAAE,MAAM,CAAC;iBACrE;aACJ;YACD,CAAC,qDAAc,CAAC,iBAAiB,CAAC,EAAE;gBAChC,CAAC,yDAAkB,CAAC,eAAe,CAAC,EAAE;oBAClC,CAAC,wDAAiB,CAAC,IAAI,CAAC,EAAE,qBAAqB;iBAClD;aACJ;YACD,CAAC,qDAAc,CAAC,cAAc,CAAC,EAAE;gBAC7B,CAAC,yDAAkB,CAAC,eAAe,CAAC,EAAE;oBAClC,CAAC,wDAAiB,CAAC,IAAI,CAAC,EAAE,kBAAkB;iBAC/C;aACJ;YACD,CAAC,qDAAc,CAAC,SAAS,CAAC,EAAE;gBACxB,CAAC,yDAAkB,CAAC,KAAK,CAAC,EAAE;oBACxB,CAAC,wDAAiB,CAAC,IAAI,CAAC,EAAE,CAAC,WAAW,EAAE,OAAO,CAAC;iBACnD;gBACD,CAAC,yDAAkB,CAAC,KAAK,CAAC,EAAE;oBACxB,CAAC,wDAAiB,CAAC,IAAI,CAAC,EAAE,CAAC,WAAW,EAAE,OAAO,CAAC;iBACnD;aACJ;SACJ;QACD,CAAC,2DAAoB,CAAC,kBAAkB,CAAC,EAAE;YACvC,CAAC,qDAAc,CAAC,kBAAkB,CAAC,EAAE;gBACjC,CAAC,yDAAkB,CAAC,IAAI,CAAC,EAAE;oBACvB,CAAC,wDAAiB,CAAC,KAAK,CAAC,EAAE,CAAC,qBAAqB,EAAE,MAAM,EAAE,MAAM,CAAC;oBAClE,CAAC,wDAAiB,CAAC,KAAK,CAAC,EAAE,CAAC,qBAAqB,EAAE,MAAM,EAAE,OAAO,CAAC;oBACnE,CAAC,wDAAiB,CAAC,IAAI,CAAC,EAAE,CAAC,qBAAqB,EAAE,MAAM,EAAE,OAAO,CAAC;oBAClE,CAAC,wDAAiB,CAAC,IAAI,CAAC,EAAE,CAAC,qBAAqB,EAAE,MAAM,EAAE,MAAM,CAAC;iBACpE;gBACD,CAAC,yDAAkB,CAAC,IAAI,CAAC,EAAE;oBACvB,CAAC,wDAAiB,CAAC,KAAK,CAAC,EAAE,CAAC,qBAAqB,EAAE,MAAM,EAAE,MAAM,CAAC;oBAClE,CAAC,wDAAiB,CAAC,KAAK,CAAC,EAAE,CAAC,qBAAqB,EAAE,MAAM,EAAE,OAAO,CAAC;oBACnE,CAAC,wDAAiB,CAAC,IAAI,CAAC,EAAE,CAAC,qBAAqB,EAAE,MAAM,EAAE,OAAO,CAAC;oBAClE,CAAC,wDAAiB,CAAC,IAAI,CAAC,EAAE,CAAC,qBAAqB,EAAE,MAAM,EAAE,MAAM,CAAC;iBACpE;aACJ;YACD,CAAC,qDAAc,CAAC,mBAAmB,CAAC,EAAE;gBAClC,CAAC,yDAAkB,CAAC,IAAI,CAAC,EAAE;oBACvB,CAAC,wDAAiB,CAAC,KAAK,CAAC,EAAE,CAAC,uBAAuB,EAAE,MAAM,EAAE,MAAM,CAAC;oBACpE,CAAC,wDAAiB,CAAC,KAAK,CAAC,EAAE,CAAC,uBAAuB,EAAE,MAAM,EAAE,OAAO,CAAC;oBACrE,CAAC,wDAAiB,CAAC,IAAI,CAAC,EAAE,CAAC,uBAAuB,EAAE,MAAM,EAAE,OAAO,CAAC;oBACpE,CAAC,wDAAiB,CAAC,IAAI,CAAC,EAAE,CAAC,uBAAuB,EAAE,MAAM,EAAE,MAAM,CAAC;iBACtE;gBACD,CAAC,yDAAkB,CAAC,IAAI,CAAC,EAAE;oBACvB,CAAC,wDAAiB,CAAC,KAAK,CAAC,EAAE,CAAC,uBAAuB,EAAE,MAAM,EAAE,MAAM,CAAC;oBACpE,CAAC,wDAAiB,CAAC,KAAK,CAAC,EAAE,CAAC,uBAAuB,EAAE,MAAM,EAAE,OAAO,CAAC;oBACrE,CAAC,wDAAiB,CAAC,IAAI,CAAC,EAAE,CAAC,uBAAuB,EAAE,MAAM,EAAE,OAAO,CAAC;oBACpE,CAAC,wDAAiB,CAAC,IAAI,CAAC,EAAE,CAAC,uBAAuB,EAAE,MAAM,EAAE,MAAM,CAAC;iBACtE;aACJ;YACD,CAAC,qDAAc,CAAC,KAAK,CAAC,EAAE;gBACpB,CAAC,yDAAkB,CAAC,eAAe,CAAC,EAAE;oBAClC,CAAC,wDAAiB,CAAC,IAAI,CAAC,EAAE,OAAO;iBACpC;aACJ;YACD,CAAC,qDAAc,CAAC,uBAAuB,CAAC,EAAE;gBACtC,CAAC,yDAAkB,CAAC,IAAI,CAAC,EAAE;oBACvB,CAAC,wDAAiB,CAAC,KAAK,CAAC,EAAE,CAAC,2BAA2B,EAAE,MAAM,EAAE,MAAM,CAAC;oBACxE,CAAC,wDAAiB,CAAC,KAAK,CAAC,EAAE,CAAC,2BAA2B,EAAE,MAAM,EAAE,OAAO,CAAC;oBACzE,CAAC,wDAAiB,CAAC,IAAI,CAAC,EAAE,CAAC,2BAA2B,EAAE,MAAM,EAAE,OAAO,CAAC;oBACxE,CAAC,wDAAiB,CAAC,IAAI,CAAC,EAAE,CAAC,2BAA2B,EAAE,MAAM,EAAE,MAAM,CAAC;iBAC1E;aACJ;YACD,CAAC,qDAAc,CAAC,kBAAkB,CAAC,EAAE;gBACjC,CAAC,yDAAkB,CAAC,IAAI,CAAC,EAAE;oBACvB,CAAC,wDAAiB,CAAC,KAAK,CAAC,EAAE,CAAC,sBAAsB,EAAE,MAAM,EAAE,MAAM,CAAC;oBACnE,CAAC,wDAAiB,CAAC,KAAK,CAAC,EAAE,CAAC,sBAAsB,EAAE,MAAM,EAAE,OAAO,CAAC;oBACpE,CAAC,wDAAiB,CAAC,IAAI,CAAC,EAAE,CAAC,sBAAsB,EAAE,MAAM,EAAE,OAAO,CAAC;oBACnE,CAAC,wDAAiB,CAAC,IAAI,CAAC,EAAE,CAAC,sBAAsB,EAAE,MAAM,EAAE,MAAM,CAAC;iBACrE;aACJ;YACD,CAAC,qDAAc,CAAC,iBAAiB,CAAC,EAAE;gBAChC,CAAC,yDAAkB,CAAC,eAAe,CAAC,EAAE;oBAClC,CAAC,wDAAiB,CAAC,IAAI,CAAC,EAAE,qBAAqB;iBAClD;aACJ;YACD,CAAC,qDAAc,CAAC,cAAc,CAAC,EAAE;gBAC7B,CAAC,yDAAkB,CAAC,eAAe,CAAC,EAAE;oBAClC,CAAC,wDAAiB,CAAC,IAAI,CAAC,EAAE,kBAAkB;iBAC/C;aACJ;YACD,CAAC,qDAAc,CAAC,SAAS,CAAC,EAAE;gBACxB,CAAC,yDAAkB,CAAC,KAAK,CAAC,EAAE;oBACxB,CAAC,wDAAiB,CAAC,IAAI,CAAC,EAAE,CAAC,WAAW,EAAE,OAAO,CAAC;iBACnD;gBACD,CAAC,yDAAkB,CAAC,KAAK,CAAC,EAAE;oBACxB,CAAC,wDAAiB,CAAC,IAAI,CAAC,EAAE,CAAC,WAAW,EAAE,OAAO,CAAC;iBACnD;aACJ;SACJ;KACJ;IACD,CAAC,wDAAiB,CAAC,QAAQ,CAAC,EAAE;QAC1B,CAAC,2DAAoB,CAAC,IAAI,CAAC,EAAE;YACzB,CAAC,qDAAc,CAAC,kBAAkB,CAAC,EAAE;gBACjC,CAAC,yDAAkB,CAAC,IAAI,CAAC,EAAE;oBACvB,CAAC,wDAAiB,CAAC,KAAK,CAAC,EAAE,CAAC,qBAAqB,EAAE,MAAM,EAAE,MAAM,CAAC;oBAClE,CAAC,wDAAiB,CAAC,KAAK,CAAC,EAAE,CAAC,qBAAqB,EAAE,MAAM,EAAE,OAAO,CAAC;oBACnE,CAAC,wDAAiB,CAAC,IAAI,CAAC,EAAE,CAAC,qBAAqB,EAAE,MAAM,EAAE,OAAO,CAAC;oBAClE,CAAC,wDAAiB,CAAC,IAAI,CAAC,EAAE,CAAC,qBAAqB,EAAE,MAAM,EAAE,MAAM,CAAC;iBACpE;gBACD,CAAC,yDAAkB,CAAC,IAAI,CAAC,EAAE;oBACvB,CAAC,wDAAiB,CAAC,KAAK,CAAC,EAAE,CAAC,qBAAqB,EAAE,MAAM,EAAE,MAAM,CAAC;oBAClE,CAAC,wDAAiB,CAAC,KAAK,CAAC,EAAE,CAAC,qBAAqB,EAAE,MAAM,EAAE,OAAO,CAAC;oBACnE,CAAC,wDAAiB,CAAC,IAAI,CAAC,EAAE,CAAC,qBAAqB,EAAE,MAAM,EAAE,OAAO,CAAC;oBAClE,CAAC,wDAAiB,CAAC,IAAI,CAAC,EAAE,CAAC,qBAAqB,EAAE,MAAM,EAAE,MAAM,CAAC;iBACpE;aACJ;YACD,CAAC,qDAAc,CAAC,KAAK,CAAC,EAAE;gBACpB,CAAC,yDAAkB,CAAC,eAAe,CAAC,EAAE;oBAClC,CAAC,wDAAiB,CAAC,IAAI,CAAC,EAAE,OAAO;iBACpC;aACJ;YACD,CAAC,qDAAc,CAAC,iBAAiB,CAAC,EAAE;gBAChC,CAAC,yDAAkB,CAAC,eAAe,CAAC,EAAE;oBAClC,CAAC,wDAAiB,CAAC,IAAI,CAAC,EAAE,qBAAqB;iBAClD;aACJ;YACD,CAAC,qDAAc,CAAC,cAAc,CAAC,EAAE;gBAC7B,CAAC,yDAAkB,CAAC,eAAe,CAAC,EAAE;oBAClC,CAAC,wDAAiB,CAAC,IAAI,CAAC,EAAE,kBAAkB;iBAC/C;aACJ;YACD,CAAC,qDAAc,CAAC,SAAS,CAAC,EAAE;gBACxB,CAAC,yDAAkB,CAAC,KAAK,CAAC,EAAE;oBACxB,CAAC,wDAAiB,CAAC,IAAI,CAAC,EAAE,CAAC,WAAW,EAAE,OAAO,CAAC;iBACnD;gBACD,CAAC,yDAAkB,CAAC,KAAK,CAAC,EAAE;oBACxB,CAAC,wDAAiB,CAAC,IAAI,CAAC,EAAE,CAAC,WAAW,EAAE,OAAO,CAAC;iBACnD;aACJ;SACJ;QACD,CAAC,2DAAoB,CAAC,IAAI,CAAC,EAAE;YACzB,CAAC,qDAAc,CAAC,kBAAkB,CAAC,EAAE;gBACjC,CAAC,yDAAkB,CAAC,IAAI,CAAC,EAAE;oBACvB,CAAC,wDAAiB,CAAC,KAAK,CAAC,EAAE,CAAC,qBAAqB,EAAE,MAAM,EAAE,MAAM,CAAC;oBAClE,CAAC,wDAAiB,CAAC,KAAK,CAAC,EAAE,CAAC,qBAAqB,EAAE,MAAM,EAAE,OAAO,CAAC;oBACnE,CAAC,wDAAiB,CAAC,IAAI,CAAC,EAAE,CAAC,qBAAqB,EAAE,MAAM,EAAE,OAAO,CAAC;oBAClE,CAAC,wDAAiB,CAAC,IAAI,CAAC,EAAE,CAAC,qBAAqB,EAAE,MAAM,EAAE,MAAM,CAAC;iBACpE;gBACD,CAAC,yDAAkB,CAAC,IAAI,CAAC,EAAE;oBACvB,CAAC,wDAAiB,CAAC,KAAK,CAAC,EAAE,CAAC,qBAAqB,EAAE,MAAM,EAAE,MAAM,CAAC;oBAClE,CAAC,wDAAiB,CAAC,KAAK,CAAC,EAAE,CAAC,qBAAqB,EAAE,MAAM,EAAE,OAAO,CAAC;oBACnE,CAAC,wDAAiB,CAAC,IAAI,CAAC,EAAE,CAAC,qBAAqB,EAAE,MAAM,EAAE,OAAO,CAAC;oBAClE,CAAC,wDAAiB,CAAC,IAAI,CAAC,EAAE,CAAC,qBAAqB,EAAE,MAAM,EAAE,MAAM,CAAC;iBACpE;gBACD,CAAC,yDAAkB,CAAC,QAAQ,CAAC,EAAE;oBAC3B,CAAC,wDAAiB,CAAC,KAAK,CAAC,EAAE,CAAC,qBAAqB,EAAE,WAAW,EAAE,MAAM,CAAC;oBACvE,CAAC,wDAAiB,CAAC,KAAK,CAAC,EAAE,CAAC,qBAAqB,EAAE,WAAW,EAAE,OAAO,CAAC;oBACxE,CAAC,wDAAiB,CAAC,IAAI,CAAC,EAAE,CAAC,qBAAqB,EAAE,WAAW,EAAE,OAAO,CAAC;oBACvE,CAAC,wDAAiB,CAAC,IAAI,CAAC,EAAE,CAAC,qBAAqB,EAAE,WAAW,EAAE,MAAM,CAAC;iBACzE;gBACD,CAAC,yDAAkB,CAAC,QAAQ,CAAC,EAAE;oBAC3B,CAAC,wDAAiB,CAAC,KAAK,CAAC,EAAE,CAAC,qBAAqB,EAAE,WAAW,EAAE,MAAM,CAAC;oBACvE,CAAC,wDAAiB,CAAC,KAAK,CAAC,EAAE,CAAC,qBAAqB,EAAE,WAAW,EAAE,OAAO,CAAC;oBACxE,CAAC,wDAAiB,CAAC,IAAI,CAAC,EAAE,CAAC,qBAAqB,EAAE,WAAW,EAAE,OAAO,CAAC;oBACvE,CAAC,wDAAiB,CAAC,IAAI,CAAC,EAAE,CAAC,qBAAqB,EAAE,WAAW,EAAE,MAAM,CAAC;iBACzE;gBACD,CAAC,yDAAkB,CAAC,QAAQ,CAAC,EAAE;oBAC3B,CAAC,wDAAiB,CAAC,KAAK,CAAC,EAAE,CAAC,qBAAqB,EAAE,WAAW,EAAE,MAAM,CAAC;oBACvE,CAAC,wDAAiB,CAAC,KAAK,CAAC,EAAE,CAAC,qBAAqB,EAAE,WAAW,EAAE,OAAO,CAAC;oBACxE,CAAC,wDAAiB,CAAC,IAAI,CAAC,EAAE,CAAC,qBAAqB,EAAE,WAAW,EAAE,OAAO,CAAC;oBACvE,CAAC,wDAAiB,CAAC,IAAI,CAAC,EAAE,CAAC,qBAAqB,EAAE,WAAW,EAAE,MAAM,CAAC;iBACzE;gBACD,CAAC,yDAAkB,CAAC,QAAQ,CAAC,EAAE;oBAC3B,CAAC,wDAAiB,CAAC,KAAK,CAAC,EAAE,CAAC,qBAAqB,EAAE,WAAW,EAAE,MAAM,CAAC;oBACvE,CAAC,wDAAiB,CAAC,KAAK,CAAC,EAAE,CAAC,qBAAqB,EAAE,WAAW,EAAE,OAAO,CAAC;oBACxE,CAAC,wDAAiB,CAAC,IAAI,CAAC,EAAE,CAAC,qBAAqB,EAAE,WAAW,EAAE,OAAO,CAAC;oBACvE,CAAC,wDAAiB,CAAC,IAAI,CAAC,EAAE,CAAC,qBAAqB,EAAE,WAAW,EAAE,MAAM,CAAC;iBACzE;gBACD,CAAC,yDAAkB,CAAC,QAAQ,CAAC,EAAE;oBAC3B,CAAC,wDAAiB,CAAC,KAAK,CAAC,EAAE,CAAC,qBAAqB,EAAE,WAAW,EAAE,MAAM,CAAC;oBACvE,CAAC,wDAAiB,CAAC,KAAK,CAAC,EAAE,CAAC,qBAAqB,EAAE,WAAW,EAAE,OAAO,CAAC;oBACxE,CAAC,wDAAiB,CAAC,IAAI,CAAC,EAAE,CAAC,qBAAqB,EAAE,WAAW,EAAE,OAAO,CAAC;oBACvE,CAAC,wDAAiB,CAAC,IAAI,CAAC,EAAE,CAAC,qBAAqB,EAAE,WAAW,EAAE,MAAM,CAAC;iBACzE;gBACD,CAAC,yDAAkB,CAAC,QAAQ,CAAC,EAAE;oBAC3B,CAAC,wDAAiB,CAAC,KAAK,CAAC,EAAE,CAAC,qBAAqB,EAAE,WAAW,EAAE,MAAM,CAAC;oBACvE,CAAC,wDAAiB,CAAC,KAAK,CAAC,EAAE,CAAC,qBAAqB,EAAE,WAAW,EAAE,OAAO,CAAC;oBACxE,CAAC,wDAAiB,CAAC,IAAI,CAAC,EAAE,CAAC,qBAAqB,EAAE,WAAW,EAAE,OAAO,CAAC;oBACvE,CAAC,wDAAiB,CAAC,IAAI,CAAC,EAAE,CAAC,qBAAqB,EAAE,WAAW,EAAE,MAAM,CAAC;iBACzE;gBACD,CAAC,yDAAkB,CAAC,gBAAgB,CAAC,EAAE;oBACnC,CAAC,wDAAiB,CAAC,KAAK,CAAC,EAAE,CAAC,qBAAqB,EAAE,oBAAoB,EAAE,MAAM,CAAC;oBAChF,CAAC,wDAAiB,CAAC,KAAK,CAAC,EAAE,CAAC,qBAAqB,EAAE,oBAAoB,EAAE,OAAO,CAAC;oBACjF,CAAC,wDAAiB,CAAC,IAAI,CAAC,EAAE,CAAC,qBAAqB,EAAE,oBAAoB,EAAE,OAAO,CAAC;oBAChF,CAAC,wDAAiB,CAAC,IAAI,CAAC,EAAE,CAAC,qBAAqB,EAAE,oBAAoB,EAAE,MAAM,CAAC;iBAClF;gBACD,CAAC,yDAAkB,CAAC,gBAAgB,CAAC,EAAE;oBACnC,CAAC,wDAAiB,CAAC,KAAK,CAAC,EAAE,CAAC,qBAAqB,EAAE,oBAAoB,EAAE,MAAM,CAAC;oBAChF,CAAC,wDAAiB,CAAC,KAAK,CAAC,EAAE,CAAC,qBAAqB,EAAE,oBAAoB,EAAE,OAAO,CAAC;oBACjF,CAAC,wDAAiB,CAAC,IAAI,CAAC,EAAE,CAAC,qBAAqB,EAAE,oBAAoB,EAAE,OAAO,CAAC;oBAChF,CAAC,wDAAiB,CAAC,IAAI,CAAC,EAAE,CAAC,qBAAqB,EAAE,oBAAoB,EAAE,MAAM,CAAC;iBAClF;gBACD,CAAC,yDAAkB,CAAC,gBAAgB,CAAC,EAAE;oBACnC,CAAC,wDAAiB,CAAC,KAAK,CAAC,EAAE,CAAC,qBAAqB,EAAE,oBAAoB,EAAE,MAAM,CAAC;oBAChF,CAAC,wDAAiB,CAAC,KAAK,CAAC,EAAE,CAAC,qBAAqB,EAAE,oBAAoB,EAAE,OAAO,CAAC;oBACjF,CAAC,wDAAiB,CAAC,IAAI,CAAC,EAAE,CAAC,qBAAqB,EAAE,oBAAoB,EAAE,OAAO,CAAC;oBAChF,CAAC,wDAAiB,CAAC,IAAI,CAAC,EAAE,CAAC,qBAAqB,EAAE,oBAAoB,EAAE,MAAM,CAAC;iBAClF;gBACD,CAAC,yDAAkB,CAAC,gBAAgB,CAAC,EAAE;oBACnC,CAAC,wDAAiB,CAAC,KAAK,CAAC,EAAE,CAAC,qBAAqB,EAAE,oBAAoB,EAAE,MAAM,CAAC;oBAChF,CAAC,wDAAiB,CAAC,KAAK,CAAC,EAAE,CAAC,qBAAqB,EAAE,oBAAoB,EAAE,OAAO,CAAC;oBACjF,CAAC,wDAAiB,CAAC,IAAI,CAAC,EAAE,CAAC,qBAAqB,EAAE,oBAAoB,EAAE,OAAO,CAAC;oBAChF,CAAC,wDAAiB,CAAC,IAAI,CAAC,EAAE,CAAC,qBAAqB,EAAE,oBAAoB,EAAE,MAAM,CAAC;iBAClF;aACJ;YACD,CAAC,qDAAc,CAAC,mBAAmB,CAAC,EAAE;gBAClC,CAAC,yDAAkB,CAAC,IAAI,CAAC,EAAE;oBACvB,CAAC,wDAAiB,CAAC,KAAK,CAAC,EAAE,CAAC,uBAAuB,EAAE,MAAM,EAAE,MAAM,CAAC;oBACpE,CAAC,wDAAiB,CAAC,KAAK,CAAC,EAAE,CAAC,uBAAuB,EAAE,MAAM,EAAE,OAAO,CAAC;oBACrE,CAAC,wDAAiB,CAAC,IAAI,CAAC,EAAE,CAAC,uBAAuB,EAAE,MAAM,EAAE,OAAO,CAAC;oBACpE,CAAC,wDAAiB,CAAC,IAAI,CAAC,EAAE,CAAC,uBAAuB,EAAE,MAAM,EAAE,MAAM,CAAC;iBACtE;gBACD,CAAC,yDAAkB,CAAC,IAAI,CAAC,EAAE;oBACvB,CAAC,wDAAiB,CAAC,KAAK,CAAC,EAAE,CAAC,uBAAuB,EAAE,MAAM,EAAE,MAAM,CAAC;oBACpE,CAAC,wDAAiB,CAAC,KAAK,CAAC,EAAE,CAAC,uBAAuB,EAAE,MAAM,EAAE,OAAO,CAAC;oBACrE,CAAC,wDAAiB,CAAC,IAAI,CAAC,EAAE,CAAC,uBAAuB,EAAE,MAAM,EAAE,OAAO,CAAC;oBACpE,CAAC,wDAAiB,CAAC,IAAI,CAAC,EAAE,CAAC,uBAAuB,EAAE,MAAM,EAAE,MAAM,CAAC;iBACtE;gBACD,CAAC,yDAAkB,CAAC,QAAQ,CAAC,EAAE;oBAC3B,CAAC,wDAAiB,CAAC,KAAK,CAAC,EAAE,CAAC,uBAAuB,EAAE,WAAW,EAAE,MAAM,CAAC;oBACzE,CAAC,wDAAiB,CAAC,KAAK,CAAC,EAAE,CAAC,uBAAuB,EAAE,WAAW,EAAE,OAAO,CAAC;oBAC1E,CAAC,wDAAiB,CAAC,IAAI,CAAC,EAAE,CAAC,uBAAuB,EAAE,WAAW,EAAE,OAAO,CAAC;oBACzE,CAAC,wDAAiB,CAAC,IAAI,CAAC,EAAE,CAAC,uBAAuB,EAAE,WAAW,EAAE,MAAM,CAAC;iBAC3E;gBACD,CAAC,yDAAkB,CAAC,QAAQ,CAAC,EAAE;oBAC3B,CAAC,wDAAiB,CAAC,KAAK,CAAC,EAAE,CAAC,uBAAuB,EAAE,WAAW,EAAE,MAAM,CAAC;oBACzE,CAAC,wDAAiB,CAAC,KAAK,CAAC,EAAE,CAAC,uBAAuB,EAAE,WAAW,EAAE,OAAO,CAAC;oBAC1E,CAAC,wDAAiB,CAAC,IAAI,CAAC,EAAE,CAAC,uBAAuB,EAAE,WAAW,EAAE,OAAO,CAAC;oBACzE,CAAC,wDAAiB,CAAC,IAAI,CAAC,EAAE,CAAC,uBAAuB,EAAE,WAAW,EAAE,MAAM,CAAC;iBAC3E;gBACD,CAAC,yDAAkB,CAAC,QAAQ,CAAC,EAAE;oBAC3B,CAAC,wDAAiB,CAAC,KAAK,CAAC,EAAE,CAAC,uBAAuB,EAAE,WAAW,EAAE,MAAM,CAAC;oBACzE,CAAC,wDAAiB,CAAC,KAAK,CAAC,EAAE,CAAC,uBAAuB,EAAE,WAAW,EAAE,OAAO,CAAC;oBAC1E,CAAC,wDAAiB,CAAC,IAAI,CAAC,EAAE,CAAC,uBAAuB,EAAE,WAAW,EAAE,OAAO,CAAC;oBACzE,CAAC,wDAAiB,CAAC,IAAI,CAAC,EAAE,CAAC,uBAAuB,EAAE,WAAW,EAAE,MAAM,CAAC;iBAC3E;gBACD,CAAC,yDAAkB,CAAC,QAAQ,CAAC,EAAE;oBAC3B,CAAC,wDAAiB,CAAC,KAAK,CAAC,EAAE,CAAC,uBAAuB,EAAE,WAAW,EAAE,MAAM,CAAC;oBACzE,CAAC,wDAAiB,CAAC,KAAK,CAAC,EAAE,CAAC,uBAAuB,EAAE,WAAW,EAAE,OAAO,CAAC;oBAC1E,CAAC,wDAAiB,CAAC,IAAI,CAAC,EAAE,CAAC,uBAAuB,EAAE,WAAW,EAAE,OAAO,CAAC;oBACzE,CAAC,wDAAiB,CAAC,IAAI,CAAC,EAAE,CAAC,uBAAuB,EAAE,WAAW,EAAE,MAAM,CAAC;iBAC3E;gBACD,CAAC,yDAAkB,CAAC,QAAQ,CAAC,EAAE;oBAC3B,CAAC,wDAAiB,CAAC,KAAK,CAAC,EAAE,CAAC,uBAAuB,EAAE,WAAW,EAAE,MAAM,CAAC;oBACzE,CAAC,wDAAiB,CAAC,KAAK,CAAC,EAAE,CAAC,uBAAuB,EAAE,WAAW,EAAE,OAAO,CAAC;oBAC1E,CAAC,wDAAiB,CAAC,IAAI,CAAC,EAAE,CAAC,uBAAuB,EAAE,WAAW,EAAE,OAAO,CAAC;oBACzE,CAAC,wDAAiB,CAAC,IAAI,CAAC,EAAE,CAAC,uBAAuB,EAAE,WAAW,EAAE,MAAM,CAAC;iBAC3E;gBACD,CAAC,yDAAkB,CAAC,QAAQ,CAAC,EAAE;oBAC3B,CAAC,wDAAiB,CAAC,KAAK,CAAC,EAAE,CAAC,uBAAuB,EAAE,WAAW,EAAE,MAAM,CAAC;oBACzE,CAAC,wDAAiB,CAAC,KAAK,CAAC,EAAE,CAAC,uBAAuB,EAAE,WAAW,EAAE,OAAO,CAAC;oBAC1E,CAAC,wDAAiB,CAAC,IAAI,CAAC,EAAE,CAAC,uBAAuB,EAAE,WAAW,EAAE,OAAO,CAAC;oBACzE,CAAC,wDAAiB,CAAC,IAAI,CAAC,EAAE,CAAC,uBAAuB,EAAE,WAAW,EAAE,MAAM,CAAC;iBAC3E;aACJ;YACD,CAAC,qDAAc,CAAC,KAAK,CAAC,EAAE;gBACpB,CAAC,yDAAkB,CAAC,eAAe,CAAC,EAAE;oBAClC,CAAC,wDAAiB,CAAC,IAAI,CAAC,EAAE,OAAO;iBACpC;aACJ;YACD,CAAC,qDAAc,CAAC,iBAAiB,CAAC,EAAE;gBAChC,CAAC,yDAAkB,CAAC,eAAe,CAAC,EAAE;oBAClC,CAAC,wDAAiB,CAAC,IAAI,CAAC,EAAE,qBAAqB;iBAClD;aACJ;YACD,CAAC,qDAAc,CAAC,cAAc,CAAC,EAAE;gBAC7B,CAAC,yDAAkB,CAAC,eAAe,CAAC,EAAE;oBAClC,CAAC,wDAAiB,CAAC,IAAI,CAAC,EAAE,kBAAkB;iBAC/C;aACJ;YACD,CAAC,qDAAc,CAAC,SAAS,CAAC,EAAE;gBACxB,CAAC,yDAAkB,CAAC,KAAK,CAAC,EAAE;oBACxB,CAAC,wDAAiB,CAAC,IAAI,CAAC,EAAE,CAAC,WAAW,EAAE,OAAO,CAAC;iBACnD;gBACD,CAAC,yDAAkB,CAAC,KAAK,CAAC,EAAE;oBACxB,CAAC,wDAAiB,CAAC,IAAI,CAAC,EAAE,CAAC,WAAW,EAAE,OAAO,CAAC;iBACnD;aACJ;SACJ;QACD,CAAC,2DAAoB,CAAC,KAAK,CAAC,EAAE;YAC1B,CAAC,qDAAc,CAAC,kBAAkB,CAAC,EAAE;gBACjC,CAAC,yDAAkB,CAAC,IAAI,CAAC,EAAE;oBACvB,CAAC,wDAAiB,CAAC,IAAI,CAAC,EAAE,CAAC,qBAAqB,EAAE,MAAM,CAAC;iBAC5D;gBACD,CAAC,yDAAkB,CAAC,IAAI,CAAC,EAAE;oBACvB,CAAC,wDAAiB,CAAC,IAAI,CAAC,EAAE,CAAC,qBAAqB,EAAE,MAAM,CAAC;iBAC5D;aACJ;YACD,CAAC,qDAAc,CAAC,KAAK,CAAC,EAAE;gBACpB,CAAC,yDAAkB,CAAC,eAAe,CAAC,EAAE;oBAClC,CAAC,wDAAiB,CAAC,IAAI,CAAC,EAAE,OAAO;iBACpC;aACJ;YACD,CAAC,qDAAc,CAAC,iBAAiB,CAAC,EAAE;gBAChC,CAAC,yDAAkB,CAAC,eAAe,CAAC,EAAE;oBAClC,CAAC,wDAAiB,CAAC,IAAI,CAAC,EAAE,CAAC,qBAAqB,CAAC;iBACpD;aACJ;YACD,CAAC,qDAAc,CAAC,cAAc,CAAC,EAAE;gBAC7B,CAAC,yDAAkB,CAAC,eAAe,CAAC,EAAE;oBAClC,CAAC,wDAAiB,CAAC,IAAI,CAAC,EAAE,CAAC,kBAAkB,CAAC;iBACjD;aACJ;YACD,CAAC,qDAAc,CAAC,SAAS,CAAC,EAAE;gBACxB,CAAC,yDAAkB,CAAC,KAAK,CAAC,EAAE;oBACxB,CAAC,wDAAiB,CAAC,IAAI,CAAC,EAAE,CAAC,WAAW,EAAE,OAAO,CAAC;iBACnD;gBACD,CAAC,yDAAkB,CAAC,KAAK,CAAC,EAAE;oBACxB,CAAC,wDAAiB,CAAC,IAAI,CAAC,EAAE,CAAC,WAAW,EAAE,OAAO,CAAC;iBACnD;aACJ;SACJ;QACD,CAAC,2DAAoB,CAAC,WAAW,CAAC,EAAE;YAChC,CAAC,qDAAc,CAAC,kBAAkB,CAAC,EAAE;gBACjC,CAAC,yDAAkB,CAAC,IAAI,CAAC,EAAE;oBACvB,CAAC,wDAAiB,CAAC,KAAK,CAAC,EAAE,CAAC,qBAAqB,EAAE,MAAM,EAAE,MAAM,CAAC;oBAClE,CAAC,wDAAiB,CAAC,KAAK,CAAC,EAAE,CAAC,qBAAqB,EAAE,MAAM,EAAE,OAAO,CAAC;oBACnE,CAAC,wDAAiB,CAAC,IAAI,CAAC,EAAE,CAAC,qBAAqB,EAAE,MAAM,EAAE,OAAO,CAAC;oBAClE,CAAC,wDAAiB,CAAC,IAAI,CAAC,EAAE,CAAC,qBAAqB,EAAE,MAAM,EAAE,MAAM,CAAC;iBACpE;gBACD,CAAC,yDAAkB,CAAC,IAAI,CAAC,EAAE;oBACvB,CAAC,wDAAiB,CAAC,KAAK,CAAC,EAAE,CAAC,qBAAqB,EAAE,MAAM,EAAE,MAAM,CAAC;oBAClE,CAAC,wDAAiB,CAAC,KAAK,CAAC,EAAE,CAAC,qBAAqB,EAAE,MAAM,EAAE,OAAO,CAAC;oBACnE,CAAC,wDAAiB,CAAC,IAAI,CAAC,EAAE,CAAC,qBAAqB,EAAE,MAAM,EAAE,OAAO,CAAC;oBAClE,CAAC,wDAAiB,CAAC,IAAI,CAAC,EAAE,CAAC,qBAAqB,EAAE,MAAM,EAAE,MAAM,CAAC;iBACpE;aACJ;YACD,CAAC,qDAAc,CAAC,oBAAoB,CAAC,EAAE;gBACnC,CAAC,yDAAkB,CAAC,IAAI,CAAC,EAAE;oBACvB,CAAC,wDAAiB,CAAC,KAAK,CAAC,EAAE,CAAC,wBAAwB,EAAE,MAAM,EAAE,MAAM,CAAC;oBACrE,CAAC,wDAAiB,CAAC,KAAK,CAAC,EAAE,CAAC,wBAAwB,EAAE,MAAM,EAAE,OAAO,CAAC;oBACtE,CAAC,wDAAiB,CAAC,IAAI,CAAC,EAAE,CAAC,wBAAwB,EAAE,MAAM,EAAE,OAAO,CAAC;oBACrE,CAAC,wDAAiB,CAAC,IAAI,CAAC,EAAE,CAAC,wBAAwB,EAAE,MAAM,EAAE,MAAM,CAAC;iBACvE;gBACD,CAAC,yDAAkB,CAAC,IAAI,CAAC,EAAE;oBACvB,CAAC,wDAAiB,CAAC,KAAK,CAAC,EAAE,CAAC,wBAAwB,EAAE,MAAM,EAAE,MAAM,CAAC;oBACrE,CAAC,wDAAiB,CAAC,KAAK,CAAC,EAAE,CAAC,wBAAwB,EAAE,MAAM,EAAE,OAAO,CAAC;oBACtE,CAAC,wDAAiB,CAAC,IAAI,CAAC,EAAE,CAAC,wBAAwB,EAAE,MAAM,EAAE,OAAO,CAAC;oBACrE,CAAC,wDAAiB,CAAC,IAAI,CAAC,EAAE,CAAC,wBAAwB,EAAE,MAAM,EAAE,MAAM,CAAC;iBACvE;aACJ;YACD,CAAC,qDAAc,CAAC,mBAAmB,CAAC,EAAE;gBAClC,CAAC,yDAAkB,CAAC,IAAI,CAAC,EAAE;oBACvB,CAAC,wDAAiB,CAAC,KAAK,CAAC,EAAE,CAAC,uBAAuB,EAAE,MAAM,EAAE,MAAM,CAAC;oBACpE,CAAC,wDAAiB,CAAC,KAAK,CAAC,EAAE,CAAC,uBAAuB,EAAE,MAAM,EAAE,OAAO,CAAC;oBACrE,CAAC,wDAAiB,CAAC,IAAI,CAAC,EAAE,CAAC,uBAAuB,EAAE,MAAM,EAAE,OAAO,CAAC;oBACpE,CAAC,wDAAiB,CAAC,IAAI,CAAC,EAAE,CAAC,uBAAuB,EAAE,MAAM,EAAE,MAAM,CAAC;iBACtE;gBACD,CAAC,yDAAkB,CAAC,IAAI,CAAC,EAAE;oBACvB,CAAC,wDAAiB,CAAC,KAAK,CAAC,EAAE,CAAC,uBAAuB,EAAE,MAAM,EAAE,MAAM,CAAC;oBACpE,CAAC,wDAAiB,CAAC,KAAK,CAAC,EAAE,CAAC,uBAAuB,EAAE,MAAM,EAAE,OAAO,CAAC;oBACrE,CAAC,wDAAiB,CAAC,IAAI,CAAC,EAAE,CAAC,uBAAuB,EAAE,MAAM,EAAE,OAAO,CAAC;oBACpE,CAAC,wDAAiB,CAAC,IAAI,CAAC,EAAE,CAAC,uBAAuB,EAAE,MAAM,EAAE,MAAM,CAAC;iBACtE;aACJ;YACD,CAAC,qDAAc,CAAC,KAAK,CAAC,EAAE;gBACpB,CAAC,yDAAkB,CAAC,eAAe,CAAC,EAAE;oBAClC,CAAC,wDAAiB,CAAC,IAAI,CAAC,EAAE,OAAO;iBACpC;aACJ;YACD,CAAC,qDAAc,CAAC,iBAAiB,CAAC,EAAE;gBAChC,CAAC,yDAAkB,CAAC,eAAe,CAAC,EAAE;oBAClC,CAAC,wDAAiB,CAAC,IAAI,CAAC,EAAE,qBAAqB;iBAClD;aACJ;YACD,CAAC,qDAAc,CAAC,cAAc,CAAC,EAAE;gBAC7B,CAAC,yDAAkB,CAAC,eAAe,CAAC,EAAE;oBAClC,CAAC,wDAAiB,CAAC,IAAI,CAAC,EAAE,kBAAkB;iBAC/C;aACJ;YACD,CAAC,qDAAc,CAAC,SAAS,CAAC,EAAE;gBACxB,CAAC,yDAAkB,CAAC,KAAK,CAAC,EAAE;oBACxB,CAAC,wDAAiB,CAAC,IAAI,CAAC,EAAE,CAAC,WAAW,EAAE,OAAO,CAAC;iBACnD;gBACD,CAAC,yDAAkB,CAAC,KAAK,CAAC,EAAE;oBACxB,CAAC,wDAAiB,CAAC,IAAI,CAAC,EAAE,CAAC,WAAW,EAAE,OAAO,CAAC;iBACnD;aACJ;SACJ;KACJ;IACD,CAAC,wDAAiB,CAAC,OAAO,CAAC,EAAE;QACzB,CAAC,2DAAoB,CAAC,IAAI,CAAC,EAAE;YACzB,CAAC,qDAAc,CAAC,kBAAkB,CAAC,EAAE;gBACjC,CAAC,yDAAkB,CAAC,KAAK,CAAC,EAAE;oBACxB,CAAC,wDAAiB,CAAC,KAAK,CAAC,EAAE,CAAC,qBAAqB,EAAE,OAAO,EAAE,MAAM,CAAC;oBACnE,CAAC,wDAAiB,CAAC,KAAK,CAAC,EAAE,CAAC,qBAAqB,EAAE,OAAO,EAAE,OAAO,CAAC;oBACpE,CAAC,wDAAiB,CAAC,IAAI,CAAC,EAAE,CAAC,qBAAqB,EAAE,OAAO,EAAE,OAAO,CAAC;oBACnE,CAAC,wDAAiB,CAAC,IAAI,CAAC,EAAE,CAAC,qBAAqB,EAAE,OAAO,EAAE,MAAM,CAAC;iBACrE;gBACD,CAAC,yDAAkB,CAAC,KAAK,CAAC,EAAE;oBACxB,CAAC,wDAAiB,CAAC,KAAK,CAAC,EAAE,CAAC,qBAAqB,EAAE,OAAO,EAAE,MAAM,CAAC;oBACnE,CAAC,wDAAiB,CAAC,KAAK,CAAC,EAAE,CAAC,qBAAqB,EAAE,OAAO,EAAE,OAAO,CAAC;oBACpE,CAAC,wDAAiB,CAAC,IAAI,CAAC,EAAE,CAAC,qBAAqB,EAAE,OAAO,EAAE,OAAO,CAAC;oBACnE,CAAC,wDAAiB,CAAC,IAAI,CAAC,EAAE,CAAC,qBAAqB,EAAE,OAAO,EAAE,MAAM,CAAC;iBACrE;aACJ;YACD,CAAC,qDAAc,CAAC,mBAAmB,CAAC,EAAE;gBAClC,CAAC,yDAAkB,CAAC,GAAG,CAAC,EAAE;oBACtB,CAAC,wDAAiB,CAAC,KAAK,CAAC,EAAE,CAAC,uBAAuB,EAAE,KAAK,EAAE,MAAM,CAAC;oBACnE,CAAC,wDAAiB,CAAC,KAAK,CAAC,EAAE,CAAC,uBAAuB,EAAE,KAAK,EAAE,OAAO,CAAC;oBACpE,CAAC,wDAAiB,CAAC,IAAI,CAAC,EAAE,CAAC,uBAAuB,EAAE,KAAK,EAAE,OAAO,CAAC;oBACnE,CAAC,wDAAiB,CAAC,IAAI,CAAC,EAAE,CAAC,uBAAuB,EAAE,KAAK,EAAE,MAAM,CAAC;iBACrE;aACJ;SACJ;KACJ;IACD,CAAC,wDAAiB,CAAC,GAAG,CAAC,EAAE;QACrB,CAAC,2DAAoB,CAAC,SAAS,CAAC,EAAE;YAC9B,CAAC,qDAAc,CAAC,kBAAkB,CAAC,EAAE;gBACjC,CAAC,yDAAkB,CAAC,UAAU,CAAC,EAAE;oBAC7B,CAAC,wDAAiB,CAAC,IAAI,CAAC,EAAE,CAAC,qBAAqB,EAAE,aAAa,CAAC;iBACnE;gBACD,CAAC,yDAAkB,CAAC,UAAU,CAAC,EAAE;oBAC7B,CAAC,wDAAiB,CAAC,IAAI,CAAC,EAAE,CAAC,qBAAqB,EAAE,aAAa,CAAC;iBACnE;gBACD,CAAC,yDAAkB,CAAC,UAAU,CAAC,EAAE;oBAC7B,CAAC,wDAAiB,CAAC,IAAI,CAAC,EAAE,CAAC,qBAAqB,EAAE,aAAa,CAAC;iBACnE;gBACD,CAAC,yDAAkB,CAAC,UAAU,CAAC,EAAE;oBAC7B,CAAC,wDAAiB,CAAC,IAAI,CAAC,EAAE,CAAC,qBAAqB,EAAE,aAAa,CAAC;iBACnE;aACJ;YACD,CAAC,qDAAc,CAAC,iBAAiB,CAAC,EAAE;gBAChC,CAAC,yDAAkB,CAAC,eAAe,CAAC,EAAE;oBAClC,CAAC,wDAAiB,CAAC,IAAI,CAAC,EAAE,qBAAqB;iBAClD;aACJ;YACD,CAAC,qDAAc,CAAC,cAAc,CAAC,EAAE;gBAC7B,CAAC,yDAAkB,CAAC,eAAe,CAAC,EAAE;oBAClC,CAAC,wDAAiB,CAAC,IAAI,CAAC,EAAE,kBAAkB;iBAC/C;aACJ;YACD,CAAC,qDAAc,CAAC,KAAK,CAAC,EAAE;gBACpB,CAAC,yDAAkB,CAAC,eAAe,CAAC,EAAE;oBAClC,CAAC,wDAAiB,CAAC,IAAI,CAAC,EAAE,OAAO;iBACpC;aACJ;YACD,CAAC,qDAAc,CAAC,SAAS,CAAC,EAAE;gBACxB,CAAC,yDAAkB,CAAC,KAAK,CAAC,EAAE;oBACxB,CAAC,wDAAiB,CAAC,IAAI,CAAC,EAAE,CAAC,WAAW,EAAE,OAAO,CAAC;iBACnD;gBACD,CAAC,yDAAkB,CAAC,KAAK,CAAC,EAAE;oBACxB,CAAC,wDAAiB,CAAC,IAAI,CAAC,EAAE,CAAC,WAAW,EAAE,OAAO,CAAC;iBACnD;aACJ;SACJ;QACD,CAAC,2DAAoB,CAAC,WAAW,CAAC,EAAE;YAChC,CAAC,qDAAc,CAAC,kBAAkB,CAAC,EAAE;gBACjC,CAAC,yDAAkB,CAAC,KAAK,CAAC,EAAE;oBACxB,CAAC,wDAAiB,CAAC,IAAI,CAAC,EAAE,CAAC,qBAAqB,EAAE,OAAO,CAAC;iBAC7D;gBACD,CAAC,yDAAkB,CAAC,KAAK,CAAC,EAAE;oBACxB,CAAC,wDAAiB,CAAC,IAAI,CAAC,EAAE,CAAC,qBAAqB,EAAE,OAAO,CAAC;iBAC7D;aACJ;YACD,CAAC,qDAAc,CAAC,iBAAiB,CAAC,EAAE;gBAChC,CAAC,yDAAkB,CAAC,eAAe,CAAC,EAAE;oBAClC,CAAC,wDAAiB,CAAC,IAAI,CAAC,EAAE,qBAAqB;iBAClD;aACJ;YACD,CAAC,qDAAc,CAAC,cAAc,CAAC,EAAE;gBAC7B,CAAC,yDAAkB,CAAC,eAAe,CAAC,EAAE;oBAClC,CAAC,wDAAiB,CAAC,IAAI,CAAC,EAAE,kBAAkB;iBAC/C;aACJ;YACD,CAAC,qDAAc,CAAC,KAAK,CAAC,EAAE;gBACpB,CAAC,yDAAkB,CAAC,eAAe,CAAC,EAAE;oBAClC,CAAC,wDAAiB,CAAC,IAAI,CAAC,EAAE,OAAO;iBACpC;aACJ;YACD,CAAC,qDAAc,CAAC,SAAS,CAAC,EAAE;gBACxB,CAAC,yDAAkB,CAAC,KAAK,CAAC,EAAE;oBACxB,CAAC,wDAAiB,CAAC,IAAI,CAAC,EAAE,CAAC,WAAW,EAAE,OAAO,CAAC;iBACnD;gBACD,CAAC,yDAAkB,CAAC,KAAK,CAAC,EAAE;oBACxB,CAAC,wDAAiB,CAAC,IAAI,CAAC,EAAE,CAAC,WAAW,EAAE,OAAO,CAAC;iBACnD;aACJ;SACJ;KACJ;CACJ;AAEM,MAAM,gBAAgB,GAAG;IAC5B,CAAC,wDAAiB,CAAC,IAAI,CAAC,EAAE;QACtB,CAAC,2DAAoB,CAAC,KAAK,CAAC,EAAE;YAC1B,CAAC,wDAAiB,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,EAAE,OAAO,CAAC;YAC3C,CAAC,wDAAiB,CAAC,KAAK,CAAC,EAAE,EAAE;YAC7B,CAAC,wDAAiB,CAAC,KAAK,CAAC,EAAE,EAAE;YAC7B,CAAC,wDAAiB,CAAC,IAAI,CAAC,EAAE,EAAE;YAC5B,CAAC,wDAAiB,CAAC,IAAI,CAAC,EAAE,EAAE;SAC/B;QACD,CAAC,2DAAoB,CAAC,MAAM,CAAC,EAAE;YAC3B,CAAC,wDAAiB,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,EAAE,QAAQ,CAAC;YAC5C,CAAC,wDAAiB,CAAC,KAAK,CAAC,EAAE,EAAE;YAC7B,CAAC,wDAAiB,CAAC,KAAK,CAAC,EAAE,EAAE;YAC7B,CAAC,wDAAiB,CAAC,IAAI,CAAC,EAAE,EAAE;YAC5B,CAAC,wDAAiB,CAAC,IAAI,CAAC,EAAE,EAAE;SAC/B;QACD,CAAC,2DAAoB,CAAC,KAAK,CAAC,EAAE;YAC1B,CAAC,wDAAiB,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,EAAE,OAAO,CAAC;YAC3C,CAAC,wDAAiB,CAAC,KAAK,CAAC,EAAE,EAAE;YAC7B,CAAC,wDAAiB,CAAC,KAAK,CAAC,EAAE,EAAE;YAC7B,CAAC,wDAAiB,CAAC,IAAI,CAAC,EAAE,EAAE;YAC5B,CAAC,wDAAiB,CAAC,IAAI,CAAC,EAAE,EAAE;SAC/B;KACJ;IACD,CAAC,wDAAiB,CAAC,GAAG,CAAC,EAAE;QACrB,CAAC,2DAAoB,CAAC,eAAe,CAAC,EAAE;YACpC,CAAC,wDAAiB,CAAC,IAAI,CAAC,EAAE,EAAE;YAC5B,CAAC,wDAAiB,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,EAAE,mBAAmB,EAAE,MAAM,CAAC;YAC/D,CAAC,wDAAiB,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,EAAE,mBAAmB,EAAE,OAAO,CAAC;YAChE,CAAC,wDAAiB,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,EAAE,mBAAmB,EAAE,OAAO,CAAC;YAC/D,CAAC,wDAAiB,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,EAAE,mBAAmB,EAAE,MAAM,CAAC;SACjE;QACD,CAAC,2DAAoB,CAAC,kBAAkB,CAAC,EAAE;YACvC,CAAC,wDAAiB,CAAC,IAAI,CAAC,EAAE,EAAE;YAC5B,CAAC,wDAAiB,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,EAAE,sBAAsB,EAAE,MAAM,CAAC;YAClE,CAAC,wDAAiB,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,EAAE,sBAAsB,EAAE,OAAO,CAAC;YACnE,CAAC,wDAAiB,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,EAAE,sBAAsB,EAAE,OAAO,CAAC;YAClE,CAAC,wDAAiB,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,EAAE,sBAAsB,EAAE,MAAM,CAAC;SACpE;KACJ;IACD,CAAC,wDAAiB,CAAC,QAAQ,CAAC,EAAE;QAC1B,CAAC,2DAAoB,CAAC,IAAI,CAAC,EAAE;YACzB,CAAC,wDAAiB,CAAC,IAAI,CAAC,EAAE,EAAE;YAC5B,CAAC,wDAAiB,CAAC,KAAK,CAAC,EAAE,CAAC,UAAU,EAAE,MAAM,EAAE,MAAM,CAAC;YACvD,CAAC,wDAAiB,CAAC,KAAK,CAAC,EAAE,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,YAAY,CAAC;YACtE,CAAC,wDAAiB,CAAC,IAAI,CAAC,EAAE,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,CAAC;YACvD,CAAC,wDAAiB,CAAC,IAAI,CAAC,EAAE,CAAC,UAAU,EAAE,MAAM,EAAE,MAAM,CAAC;SACzD;QACD,CAAC,2DAAoB,CAAC,IAAI,CAAC,EAAE;YACzB,CAAC,wDAAiB,CAAC,IAAI,CAAC,EAAE,EAAE;YAC5B,CAAC,wDAAiB,CAAC,KAAK,CAAC,EAAE,CAAC,UAAU,EAAE,MAAM,EAAE,MAAM,CAAC;YACvD,CAAC,wDAAiB,CAAC,KAAK,CAAC,EAAE,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,CAAC;YACxD,CAAC,wDAAiB,CAAC,IAAI,CAAC,EAAE,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,CAAC;YACvD,CAAC,wDAAiB,CAAC,IAAI,CAAC,EAAE,CAAC,UAAU,EAAE,MAAM,EAAE,MAAM,CAAC;SACzD;QACD,CAAC,2DAAoB,CAAC,KAAK,CAAC,EAAE;YAC1B,CAAC,wDAAiB,CAAC,IAAI,CAAC,EAAE,CAAC,UAAU,EAAE,OAAO,CAAC;YAC/C,CAAC,wDAAiB,CAAC,KAAK,CAAC,EAAE,EAAE;YAC7B,CAAC,wDAAiB,CAAC,KAAK,CAAC,EAAE,EAAE;YAC7B,CAAC,wDAAiB,CAAC,IAAI,CAAC,EAAE,EAAE;YAC5B,CAAC,wDAAiB,CAAC,IAAI,CAAC,EAAE,EAAE;SAC/B;QACD,CAAC,2DAAoB,CAAC,WAAW,CAAC,EAAE;YAChC,CAAC,wDAAiB,CAAC,IAAI,CAAC,EAAE,EAAE;YAC5B,CAAC,wDAAiB,CAAC,KAAK,CAAC,EAAE,CAAC,UAAU,EAAE,cAAc,EAAE,MAAM,CAAC;YAC/D,CAAC,wDAAiB,CAAC,KAAK,CAAC,EAAE,CAAC,UAAU,EAAE,cAAc,EAAE,OAAO,CAAC;YAChE,CAAC,wDAAiB,CAAC,IAAI,CAAC,EAAE,CAAC,UAAU,EAAE,cAAc,EAAE,OAAO,CAAC;YAC/D,CAAC,wDAAiB,CAAC,IAAI,CAAC,EAAE,CAAC,UAAU,EAAE,cAAc,EAAE,MAAM,CAAC;SACjE;KACJ;IACD,CAAC,wDAAiB,CAAC,OAAO,CAAC,EAAE;QACzB,CAAC,2DAAoB,CAAC,IAAI,CAAC,EAAE;YACzB,CAAC,wDAAiB,CAAC,IAAI,CAAC,EAAE,EAAE;YAC5B,CAAC,wDAAiB,CAAC,KAAK,CAAC,EAAE,CAAC,SAAS,EAAE,EAAE,EAAE,MAAM,CAAC;YAClD,CAAC,wDAAiB,CAAC,KAAK,CAAC,EAAE,CAAC,SAAS,EAAE,EAAE,EAAE,OAAO,CAAC;YACnD,CAAC,wDAAiB,CAAC,IAAI,CAAC,EAAE,CAAC,SAAS,EAAE,EAAE,EAAE,OAAO,CAAC;YAClD,CAAC,wDAAiB,CAAC,IAAI,CAAC,EAAE,CAAC,SAAS,EAAE,EAAE,EAAE,MAAM,CAAC;SACpD;KACJ;IACD,CAAC,wDAAiB,CAAC,GAAG,CAAC,EAAE;QACrB,CAAC,2DAAoB,CAAC,SAAS,CAAC,EAAE;YAC9B,CAAC,wDAAiB,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,EAAE,YAAY,EAAE,EAAE,CAAC;YACnD,CAAC,wDAAiB,CAAC,KAAK,CAAC,EAAE,EAAE;YAC7B,CAAC,wDAAiB,CAAC,KAAK,CAAC,EAAE,EAAE;YAC7B,CAAC,wDAAiB,CAAC,IAAI,CAAC,EAAE,EAAE;YAC5B,CAAC,wDAAiB,CAAC,IAAI,CAAC,EAAE,EAAE;SAC/B;QACD,CAAC,2DAAoB,CAAC,WAAW,CAAC,EAAE;YAChC,CAAC,wDAAiB,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,EAAE,cAAc,EAAE,EAAE,CAAC;YACrD,CAAC,wDAAiB,CAAC,KAAK,CAAC,EAAE,EAAE;YAC7B,CAAC,wDAAiB,CAAC,KAAK,CAAC,EAAE,EAAE;YAC7B,CAAC,wDAAiB,CAAC,IAAI,CAAC,EAAE,EAAE;YAC5B,CAAC,wDAAiB,CAAC,IAAI,CAAC,EAAE,EAAE;SAC/B;KACJ;CACJ;AAEM,MAAM,MAAM,GAAG;IAClB,CAAC,wDAAiB,CAAC,IAAI,CAAC,EAAC,wDAAiB,CAAC,KAAK;IAChD,CAAC,wDAAiB,CAAC,IAAI,CAAC,EAAE,wDAAiB,CAAC,KAAK;IACjD,CAAC,wDAAiB,CAAC,KAAK,CAAC,EAAE,wDAAiB,CAAC,IAAI;IACjD,CAAC,wDAAiB,CAAC,KAAK,CAAC,EAAE,wDAAiB,CAAC,IAAI;CACpD;;;;;;;;;;;;;;;;;;;;;;;;AChqB+E;AAEhF,MAAM,UAAU,GAAG,OAAO,CAAC;AAC3B,MAAM,YAAY,GAAG,SAAS,CAAC;AAC/B,MAAM,SAAS,GAAG,MAAM,CAAC;AACzB,MAAM,UAAU,GAAG,OAAO,CAAC;AAE3B,MAAM,SAAS,GAAG,kBAAkB,CAAC;AACrC,MAAM,WAAW,GAAG,oBAAoB,CAAC;AACzC,MAAM,QAAQ,GAAG,iBAAiB,CAAC;AACnC,MAAM,SAAS,GAAG,kBAAkB,CAAC;AAE9B,MAAM,kBAAkB,GAAG;IAC9B,CAAC,uDAAgB,CAAC,KAAK,CAAC,EAAE,UAAU;IACpC,CAAC,uDAAgB,CAAC,OAAO,CAAC,EAAE,YAAY;IACxC,CAAC,uDAAgB,CAAC,KAAK,CAAC,EAAE,UAAU;CACvC;AAEM,MAAM,sBAAsB,GAAG;IAClC,CAAC,uDAAgB,CAAC,KAAK,CAAC,EAAE,SAAS;IACnC,CAAC,uDAAgB,CAAC,OAAO,CAAC,EAAE,WAAW;IACvC,CAAC,uDAAgB,CAAC,KAAK,CAAC,EAAE,SAAS;CACtC;AAEM,MAAM,kBAAkB,GAAG;IAC9B,CAAC,uDAAgB,CAAC,KAAK,CAAC,EAAE,UAAU;IACpC,CAAC,uDAAgB,CAAC,IAAI,CAAC,EAAE,SAAS;CACrC;AAEM,MAAM,sBAAsB,GAAG;IAClC,CAAC,uDAAgB,CAAC,KAAK,CAAC,EAAE,SAAS;IACnC,CAAC,uDAAgB,CAAC,IAAI,CAAC,EAAE,QAAQ;CACpC;AAEM,MAAM,kBAAkB,GAAG;IAC9B,CAAC,uDAAgB,CAAC,KAAK,CAAC,EAAE,UAAU;IACpC,CAAC,uDAAgB,CAAC,OAAO,CAAC,EAAE,YAAY;CAC3C;AAEM,MAAM,sBAAsB,GAAG;IAClC,CAAC,uDAAgB,CAAC,KAAK,CAAC,EAAE,SAAS;IACnC,CAAC,uDAAgB,CAAC,OAAO,CAAC,EAAE,WAAW;CAC1C;;;;;;;;;;;;;;;;;;;AC1CM,MAAM,UAAU;;AACZ,mBAAQ,SAAG;KASjB;IAR0B,gBAAa,GAAW,eAAgB;IACxC,kBAAe,GAAW,iBAAkB;IAC5C,mBAAgB,GAAW,kBAAmB;IAC9C,kBAAe,GAAW,iBAAkB;IAC5C,6BAA0B,GAAW,4BAA6B;IAClE,4BAAyB,GAAW,2BAA4B;IAChE,iCAA8B,GAAW,gCAAiC;IAC1E,4BAAyB,GAAW,2BAA4B;QAC1F;AAEM,sBAAW,SAAG;KASpB;IAR0B,mBAAgB,GAAW,kBAAmB;IAC9C,qBAAkB,GAAW,oBAAqB;IAClD,sBAAmB,GAAW,qBAAsB;IACpD,qBAAkB,GAAW,oBAAqB;IAClD,gCAA6B,GAAW,+BAAgC;IACxE,+BAA4B,GAAW,8BAA+B;IACtE,oCAAiC,GAAW,mCAAoC;IAChF,+BAA4B,GAAW,8BAA+B;QAChG;AAEM,kBAAO,SAAG;KAKhB;IAJ0B,eAAY,GAAW,cAAe;IACtC,iBAAc,GAAW,gBAAiB;IAC1C,kBAAe,GAAW,iBAAkB;IAC5C,iBAAc,GAAW,gBAAiB;QACpE;AAEM,sBAAW,SAAG;KAKpB;IAJ0B,mBAAgB,GAAW,kBAAmB;IAC9C,qBAAkB,GAAW,oBAAqB;IAClD,sBAAmB,GAAW,qBAAsB;IACpD,qBAAkB,GAAW,oBAAqB;QAC5E;AAEM,oBAAS,SAAG;KAKlB;IAJ0B,iBAAc,GAAW,gBAAiB;IAC1C,mBAAgB,GAAW,kBAAmB;IAC9C,oBAAiB,GAAW,mBAAoB;IAChD,mBAAgB,GAAW,kBAAmB;QACxE;AAEM,uBAAY,SAAG;KAKrB;IAJ0B,oBAAiB,GAAW,mBAAoB;IAChD,sBAAmB,GAAW,qBAAsB;IACpD,uBAAoB,GAAW,sBAAuB;IACtD,sBAAmB,GAAW,qBAAsB;QAC9E;AAEM,sBAAW,SAAG;KAKpB;IAJ0B,mBAAgB,GAAW,kBAAmB;IAC9C,qBAAkB,GAAW,oBAAqB;IAClD,sBAAmB,GAAW,qBAAsB;IACpD,qBAAkB,GAAW,oBAAqB;QAC5E;AAEM,iBAAM,SAAG;KAKf;IAJ0B,cAAW,GAAW,aAAc;IACpC,gBAAa,GAAW,eAAgB;IACxC,iBAAc,GAAW,gBAAiB;IAC1C,gBAAa,GAAW,eAAgB;QAClE;AAEM,sBAAW,SAAG;KAUpB;IAT0B,mBAAgB,GAAW,kBAAmB;IAC9C,sBAAmB,GAAW,qBAAsB;IACpD,qBAAkB,GAAW,oBAAqB;IAClD,qBAAkB,GAAW,oBAAqB;IAClD,0BAAuB,GAAW,yBAA0B;IAC5D,yBAAsB,GAAW,wBAAyB;IAC1D,oCAAiC,GAAW,mCAAoC;IAChF,+BAA4B,GAAW,8BAA+B;IACtE,qCAAkC,GAAW,oCAAqC;QAC5G;AAEM,sBAAW,SAAG;KASpB;IAR0B,mBAAgB,GAAW,kBAAmB;IAC9C,sBAAmB,GAAW,qBAAsB;IACpD,qBAAkB,GAAW,oBAAqB;IAClD,qBAAkB,GAAW,oBAAqB;IAClD,2BAAwB,GAAW,0BAA2B;IAC9D,kCAA+B,GAAW,iCAAkC;IAC5E,oCAAiC,GAAW,mCAAoC;IAChF,+BAA4B,GAAW,8BAA+B;QAChG;AAEM,iBAAM,SAAG;KASf;IAR0B,cAAW,GAAW,aAAc;IACpC,iBAAc,GAAW,gBAAiB;IAC1C,gBAAa,GAAW,eAAgB;IACxC,gBAAa,GAAW,eAAgB;IACxC,mBAAgB,GAAW,kBAAmB;IAC9C,sBAAmB,GAAW,qBAAsB;IACpD,qBAAkB,GAAW,oBAAqB;IAClD,qBAAkB,GAAW,oBAAqB;QAC5E;AAEM,kBAAO,SAAG;KAEhB;IAD0B,+BAA4B,GAAW,8BAA+B;QAChG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACrGwC;AACN;AACc;AACD;AACtB;AACW;AACL;AACQ;AACV;AACG;AACE;AACD;AACa;AACb;AACC;AACF;AACY;AACT;AACY;AACR;AACD;AACJ;AACY;AACK;AACd;AACN;AACC;AACK;AACH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC5BqF;AAErH,MAAM,eAAe;IAajB,MAAM,CAAC,YAAY,CAAC,OAAuB;QAC9C,QAAQ,OAAO,EAAE;YACb,KAAK,qDAAc,CAAC,OAAO;gBACvB,OAAO,eAAe,CAAC,QAAQ,CAAC;YACpC,KAAK,qDAAc,CAAC,UAAU;gBAC1B,OAAO,eAAe,CAAC,WAAW,CAAC;YACvC,KAAK,qDAAc,CAAC,SAAS;gBACzB,OAAO,eAAe,CAAC,UAAU,CAAC;YACtC,KAAK,qDAAc,CAAC,QAAQ;gBACxB,OAAO,eAAe,CAAC,SAAS,CAAC;YACrC,KAAK,qDAAc,CAAC,WAAW;gBAC3B,OAAO,eAAe,CAAC,YAAY,CAAC;YACxC,KAAK,qDAAc,CAAC,UAAU;gBAC1B,OAAO,eAAe,CAAC,WAAW,CAAC;YACvC,KAAK,qDAAc,CAAC,iBAAiB;gBACjC,OAAO,eAAe,CAAC,WAAW,CAAC;YACvC,KAAK,qDAAc,CAAC,oBAAoB;gBACpC,OAAO,eAAe,CAAC,cAAc,CAAC;YAC1C,KAAK,qDAAc,CAAC,mBAAmB;gBACnC,OAAO,eAAe,CAAC,aAAa,CAAC;YACzC,KAAK,qDAAc,CAAC,gBAAgB;gBAChC,OAAO,eAAe,CAAC,YAAY,CAAC;YACxC,KAAK,qDAAc,CAAC,kBAAkB;gBAClC,OAAO,eAAe,CAAC,eAAe,CAAC;YAC3C,KAAK,qDAAc,CAAC,iBAAiB;gBACjC,OAAO,eAAe,CAAC,cAAc,CAAC;SAC7C;IACL,CAAC;;AAvCsB,2BAAW,GAAG,kBAAkB,CAAC;AACjC,0BAAU,GAAG,iBAAiB,CAAC;AAC/B,wBAAQ,GAAG,eAAe,CAAC;AAC3B,yBAAS,GAAG,gBAAgB,CAAC;AAC7B,4BAAY,GAAG,mBAAmB,CAAC;AACnC,2BAAW,GAAG,kBAAkB,CAAC;AACjC,2BAAW,GAAG,0BAA0B,CAAC;AACzC,8BAAc,GAAG,6BAA6B,CAAC;AAC/C,6BAAa,GAAG,4BAA4B,CAAC;AAC7C,4BAAY,GAAG,yBAAyB,CAAC;AACzC,+BAAe,GAAG,2BAA2B,CAAC;AAC9C,8BAAc,GAAG,0BAA0B,CAAC;AA+BhE,MAAM,eAAe,GAAG;IAC3B,CAAC,qDAAc,CAAC,OAAO,CAAC,EAAE,UAAU;IACpC,CAAC,qDAAc,CAAC,UAAU,CAAC,EAAE,aAAa;IAC1C,CAAC,qDAAc,CAAC,SAAS,CAAC,EAAE,YAAY;IACxC,CAAC,qDAAc,CAAC,QAAQ,CAAC,EAAE,WAAW;IACtC,CAAC,qDAAc,CAAC,WAAW,CAAC,EAAE,cAAc;IAC5C,CAAC,qDAAc,CAAC,UAAU,CAAC,EAAE,aAAa;IAC1C,CAAC,qDAAc,CAAC,gBAAgB,CAAC,EAAE,qBAAqB;IACxD,CAAC,qDAAc,CAAC,kBAAkB,CAAC,EAAE,sBAAsB;IAC3D,CAAC,qDAAc,CAAC,iBAAiB,CAAC,EAAE,qBAAqB;IACzD,CAAC,qDAAc,CAAC,iBAAiB,CAAC,EAAE,qBAAqB;IACzD,CAAC,qDAAc,CAAC,oBAAoB,CAAC,EAAE,wBAAwB;IAC/D,CAAC,qDAAc,CAAC,mBAAmB,CAAC,EAAE,uBAAuB;CAChE;AAEM,MAAM,iBAAiB,GAAG;IAC7B,CAAC,uDAAgB,CAAC,IAAI,CAAC,EAAE,KAAK;IAC9B,CAAC,uDAAgB,CAAC,GAAG,CAAC,EAAE,IAAI;IAC5B,CAAC,uDAAgB,CAAC,GAAG,CAAC,EAAE,KAAK;IAC7B,CAAC,uDAAgB,CAAC,CAAC,CAAC,EAAE,GAAG;IACzB,CAAC,uDAAgB,CAAC,EAAE,CAAC,EAAE,IAAI;IAC3B,CAAC,uDAAgB,CAAC,EAAE,CAAC,EAAE,IAAI;IAC3B,CAAC,uDAAgB,CAAC,GAAG,CAAC,EAAE,KAAK;IAC7B,CAAC,uDAAgB,CAAC,GAAG,CAAC,EAAE,KAAK;CAChC;AAEM,MAAM,uBAAuB,GAAG;IACnC,CAAC,uDAAgB,CAAC,CAAC,CAAC,EAAE,GAAG;IACzB,CAAC,uDAAgB,CAAC,EAAE,CAAC,EAAE,IAAI;IAC3B,CAAC,uDAAgB,CAAC,EAAE,CAAC,EAAE,IAAI;IAC3B,CAAC,uDAAgB,CAAC,GAAG,CAAC,EAAE,KAAK;IAC7B,CAAC,uDAAgB,CAAC,GAAG,CAAC,EAAE,KAAK;CAChC;AAEM,MAAM,qBAAqB,GAAG;IACjC,CAAC,uDAAgB,CAAC,IAAI,CAAC,EAAE,KAAK;IAC9B,CAAC,uDAAgB,CAAC,GAAG,CAAC,EAAE,IAAI;IAC5B,CAAC,uDAAgB,CAAC,GAAG,CAAC,EAAE,KAAK;CAChC;AAEM,MAAM,gBAAgB,GAAG;IAC5B,CAAC,sDAAe,CAAC,EAAE,CAAC,EAAE,IAAI;IAC1B,CAAC,sDAAe,CAAC,CAAC,CAAC,EAAE,GAAG;IACxB,CAAC,sDAAe,CAAC,EAAE,CAAC,EAAE,IAAI;CAC7B;AAEM,MAAM,uBAAuB,GAAG;IACnC,CAAC,6DAAsB,CAAC,UAAU,CAAC,EAAE,IAAI;IACzC,CAAC,6DAAsB,CAAC,OAAO,CAAC,EAAE,IAAI;CACzC;AAEM,MAAM,mBAAmB,GAAG;IAC/B,CAAC,4DAAqB,CAAC,cAAc,CAAC,EAAE,oBAAoB;IAC5D,CAAC,4DAAqB,CAAC,kBAAkB,CAAC,EAAE,oBAAoB;IAChE,CAAC,4DAAqB,CAAC,UAAU,CAAC,EAAE,mCAAmC;IACvE,CAAC,4DAAqB,CAAC,cAAc,CAAC,EAAE,mCAAmC;IAC3E,CAAC,4DAAqB,CAAC,QAAQ,CAAC,EAAE,iCAAiC;IACnE,CAAC,4DAAqB,CAAC,YAAY,CAAC,EAAE,iCAAiC;IACvE,CAAC,4DAAqB,CAAC,QAAQ,CAAC,EAAE,oBAAoB;CACzD;AAEM,MAAM,oBAAoB,GAAG;IAChC,CAAC,qDAAc,CAAC,OAAO,CAAC,EAAE,4+BAA4+B;IACtgC,CAAC,qDAAc,CAAC,UAAU,CAAC,EAAE,qgCAAqgC;IACliC,CAAC,qDAAc,CAAC,SAAS,CAAC,EAAE,ylCAAylC;IAErnC,CAAC,qDAAc,CAAC,QAAQ,CAAC,EAAE,2lCAA2lC;IACtnC,CAAC,qDAAc,CAAC,WAAW,CAAC,EAAE,+qCAA+qC;IAC7sC,CAAC,qDAAc,CAAC,UAAU,CAAC,EAAE,kmCAAkmC;IAE/nC,CAAC,qDAAc,CAAC,gBAAgB,CAAC,EAAE,imCAAimC;IACpoC,CAAC,qDAAc,CAAC,kBAAkB,CAAC,EAAE,ysCAAysC;IAC9uC,CAAC,qDAAc,CAAC,iBAAiB,CAAC,EAAE,ymCAAymC;IAE7oC,CAAC,qDAAc,CAAC,iBAAiB,CAAC,EAAE,unCAAunC;IAC3pC,CAAC,qDAAc,CAAC,oBAAoB,CAAC,EAAE,+sCAA+sC;IACtvC,CAAC,qDAAc,CAAC,mBAAmB,CAAC,EAAE,0nCAA0nC;CACjqC;AAEI,MAAM,kBAAkB,GAAG,CAAC,qDAAc,CAAC,iBAAiB,EAAE,qDAAc,CAAC,oBAAoB,EAAE,qDAAc,CAAC,mBAAmB,CAAC,CAAC;AACvI,MAAM,gBAAgB,GAAG,CAAC,qDAAc,CAAC,gBAAgB,EAAE,qDAAc,CAAC,kBAAkB,EAAE,qDAAc,CAAC,iBAAiB,CAAC,CAAC;AAChI,MAAM,kBAAkB,GAAG,CAAC,uDAAgB,CAAC,CAAC,EAAE,uDAAgB,CAAC,EAAE,EAAE,uDAAgB,CAAC,EAAE,EAAE,uDAAgB,CAAC,GAAG,EAAE,uDAAgB,CAAC,GAAG,CAAC,CAAC;;;;;;;;;;;;;;;;;;;AC9H7F;AAEzC,MAAM,qBAAqB,GAAC;IAC/B,CAAC,2DAAoB,CAAC,IAAI,CAAC,EAAC,MAAM;IAClC,CAAC,2DAAoB,CAAC,MAAM,CAAC,EAAC,QAAQ;IACtC,CAAC,2DAAoB,CAAC,IAAI,CAAC,EAAC,MAAM;CACrC;;;;;;;;;;;;;;;;;;;;;;;;ACNqF;AAE/E,MAAM,oBAAoB;CAUhC;AAEM,MAAM,sBAAsB,GAAG;IACpC,CAAC,qDAAc,CAAC,OAAO,CAAC,EAAE,UAAU;IACpC,CAAC,qDAAc,CAAC,UAAU,CAAC,EAAE,aAAa;IAC1C,CAAC,qDAAc,CAAC,SAAS,CAAC,EAAE,YAAY;IAExC,CAAC,qDAAc,CAAC,QAAQ,CAAC,EAAE,WAAW;IACtC,CAAC,qDAAc,CAAC,WAAW,CAAC,EAAE,cAAc;IAC5C,CAAC,qDAAc,CAAC,UAAU,CAAC,EAAE,aAAa;IAE1C,CAAC,qDAAc,CAAC,gBAAgB,CAAC,EAAE,cAAc;IACjD,CAAC,qDAAc,CAAC,kBAAkB,CAAC,EAAE,cAAc;IACnD,CAAC,qDAAc,CAAC,iBAAiB,CAAC,EAAE,aAAa;IAEjD,CAAC,qDAAc,CAAC,iBAAiB,CAAC,EAAE,aAAa;IACjD,CAAC,qDAAc,CAAC,oBAAoB,CAAC,EAAE,gBAAgB;IACvD,CAAC,qDAAc,CAAC,mBAAmB,CAAC,EAAE,eAAe;CACtD;AAEM,MAAM,yBAAyB,GAAG;IACvC,CAAC,gEAAyB,CAAC,iBAAiB,CAAC,EAAE,oBAAoB;IACnE,CAAC,gEAAyB,CAAC,YAAY,CAAC,EAAE,eAAe;IACzD,CAAC,gEAAyB,CAAC,SAAS,CAAC,EAAE,YAAY;IACnD,CAAC,gEAAyB,CAAC,WAAW,CAAC,EAAE,cAAc;IACvD,CAAC,gEAAyB,CAAC,WAAW,CAAC,EAAE,gCAAgC;IACzE,CAAC,gEAAyB,CAAC,UAAU,CAAC,EAAE,oCAAoC;IAC5E,CAAC,gEAAyB,CAAC,gBAAgB,CAAC,EAAE,iBAAiB;IAC/D,CAAC,gEAAyB,CAAC,qBAAqB,CAAC,EAAE,sBAAsB;CAC1E;AAEM,MAAM,8BAA8B,GAAG;IAC5C,CAAC,gEAAyB,CAAC,YAAY,CAAC,EAAE,eAAe;IACzD,CAAC,gEAAyB,CAAC,SAAS,CAAC,EAAE,YAAY;IACnD,CAAC,gEAAyB,CAAC,WAAW,CAAC,EAAE,cAAc;IACvD,CAAC,gEAAyB,CAAC,WAAW,CAAC,EAAE,gCAAgC;CAC1E;AAEM,MAAM,eAAe,GAA2B;IACrD;QACE,EAAE,EAAE,CAAC;QACL,IAAI,EAAE,WAAW;QACjB,aAAa,EAAE,MAAM;QACrB,QAAQ,EAAE,MAAM;QAChB,SAAS,EAAE,EAAE;QACb,WAAW,EAAE,EAAE;QACf,OAAO,EAAE,SAAS;QAClB,WAAW,EAAE,EAAE;QACf,UAAU,EAAE,SAAS;KACtB;IACD;QACE,EAAE,EAAE,CAAC;QACL,IAAI,EAAE,WAAW;QACjB,aAAa,EAAE,OAAO;QACtB,QAAQ,EAAE,MAAM;QAChB,SAAS,EAAE,EAAE;QACb,WAAW,EAAE,EAAE;QACf,OAAO,EAAE,YAAY;QACrB,WAAW,EAAE,EAAE;QACf,UAAU,EAAE,SAAS;KACtB;IACD;QACE,EAAE,EAAE,CAAC;QACL,IAAI,EAAE,WAAW;QACjB,aAAa,EAAE,OAAO;QACtB,QAAQ,EAAE,MAAM;QAChB,SAAS,EAAE,EAAE;QACb,WAAW,EAAE,EAAE;QACf,OAAO,EAAE,WAAW;QACpB,WAAW,EAAE,EAAE;QACf,UAAU,EAAE,SAAS;KACtB;IACD;QACE,EAAE,EAAE,CAAC;QACL,IAAI,EAAE,WAAW;QACjB,aAAa,EAAE,MAAM;QACrB,QAAQ,EAAE,MAAM;QAChB,SAAS,EAAE,EAAE;QACb,WAAW,EAAE,EAAE;QACf,OAAO,EAAE,UAAU;QACnB,WAAW,EAAE,EAAE;QACf,UAAU,EAAE,SAAS;KACtB;IACD;QACE,EAAE,EAAE,CAAC;QACL,IAAI,EAAE,WAAW;QACjB,aAAa,EAAE,MAAM;QACrB,QAAQ,EAAE,MAAM;QAChB,SAAS,EAAE,EAAE;QACb,WAAW,EAAE,EAAE;QACf,OAAO,EAAE,aAAa;QACtB,WAAW,EAAE,EAAE;QACf,UAAU,EAAE,SAAS;KACtB;IACD;QACE,EAAE,EAAE,CAAC;QACL,IAAI,EAAE,WAAW;QACjB,aAAa,EAAE,MAAM;QACrB,QAAQ,EAAE,MAAM;QAChB,SAAS,EAAE,EAAE;QACb,WAAW,EAAE,EAAE;QACf,OAAO,EAAE,YAAY;QACrB,WAAW,EAAE,EAAE;QACf,UAAU,EAAE,SAAS;KACtB;IACD;QACE,EAAE,EAAE,CAAC;QACL,IAAI,EAAE,WAAW;QACjB,aAAa,EAAE,OAAO;QACtB,QAAQ,EAAE,MAAM;QAChB,SAAS,EAAE,EAAE;QACb,WAAW,EAAE,EAAE;QACf,OAAO,EAAE,kBAAkB;QAC3B,WAAW,EAAE,EAAE;QACf,UAAU,EAAE,SAAS;KACtB;IACD;QACE,EAAE,EAAE,CAAC;QACL,IAAI,EAAE,WAAW;QACjB,aAAa,EAAE,OAAO;QACtB,QAAQ,EAAE,MAAM;QAChB,SAAS,EAAE,EAAE;QACb,WAAW,EAAE,EAAE;QACf,OAAO,EAAE,oBAAoB;QAC7B,WAAW,EAAE,EAAE;QACf,UAAU,EAAE,SAAS;KACtB;IACD;QACE,EAAE,EAAE,CAAC;QACL,IAAI,EAAE,WAAW;QACjB,aAAa,EAAE,OAAO;QACtB,QAAQ,EAAE,MAAM;QAChB,SAAS,EAAE,EAAE;QACb,WAAW,EAAE,EAAE;QACf,OAAO,EAAE,mBAAmB;QAC5B,WAAW,EAAE,EAAE;QACf,UAAU,EAAE,SAAS;KACtB;IACD;QACE,EAAE,EAAE,EAAE;QACN,IAAI,EAAE,YAAY;QAClB,aAAa,EAAE,OAAO;QACtB,QAAQ,EAAE,MAAM;QAChB,SAAS,EAAE,EAAE;QACb,WAAW,EAAE,EAAE;QACf,OAAO,EAAE,mBAAmB;QAC5B,WAAW,EAAE,EAAE;QACf,UAAU,EAAE,SAAS;KACtB;IACD;QACE,EAAE,EAAE,EAAE;QACN,IAAI,EAAE,YAAY;QAClB,aAAa,EAAE,MAAM;QACrB,QAAQ,EAAE,MAAM;QAChB,SAAS,EAAE,EAAE;QACb,WAAW,EAAE,EAAE;QACf,OAAO,EAAE,sBAAsB;QAC/B,WAAW,EAAE,EAAE;QACf,UAAU,EAAE,SAAS;KACtB;IACD;QACE,EAAE,EAAE,EAAE;QACN,IAAI,EAAE,YAAY;QAClB,aAAa,EAAE,MAAM;QACrB,QAAQ,EAAE,MAAM;QAChB,SAAS,EAAE,EAAE;QACb,WAAW,EAAE,EAAE;QACf,OAAO,EAAE,qBAAqB;QAC9B,WAAW,EAAE,EAAE;QACf,UAAU,EAAE,SAAS;KACtB;CACF;AACM,MAAM,qBAAqB,GAAG;IACnC,CAAC,uDAAgB,CAAC,GAAG,CAAC,EAAE,KAAK;IAC7B,CAAC,uDAAgB,CAAC,GAAG,CAAC,EAAE,KAAK;IAC7B,CAAC,uDAAgB,CAAC,GAAG,CAAC,EAAE,KAAK;CAC9B;;;;;;;;;;;;;;;;;;AC5LM,MAAM,iBAAiB;;AACH,wBAAM,GAAW,IAAI,CAAC;AACtB,4BAAU,GAAW,IAAI,CAAC;AAC1B,yBAAO,GAAW,IAAI,CAAC;AACvB,2BAAS,GAAW,IAAI,CAAC;AACzB,yBAAO,GAAW,KAAK,CAAC;;;;;;;;;;;;;;;;;;;;;;;;ACLP;AAML;AAEhC,MAAM,cAAc,GAAG;IAC5B,SAAS,EAAE,WAAW;IACtB,SAAS,EAAE,WAAW;IACtB,cAAc,EAAE,gBAAgB;IAChC,aAAa,EAAE,eAAe;IAC9B,aAAa,EAAE,eAAe;IAC9B,cAAc,EAAE,gBAAgB;IAChC,aAAa,EAAE,eAAe;IAC9B,4BAA4B,EAAE,8BAA8B;IAC5D,mBAAmB,EAAE,qBAAqB;IAC1C,iBAAiB,EAAE,mBAAmB;IACtC,cAAc,EAAE,gBAAgB;IAChC,oBAAoB,EAAE,sBAAsB;IAC5C,eAAe,EAAE,iBAAiB;IAClC,iBAAiB,EAAE,mBAAmB;IACtC,mBAAmB,EAAE,qBAAqB;IAC1C,iBAAiB,EAAE,mBAAmB;IACtC,IAAI,EAAE,MAAM;IACZ,cAAc,EAAE,gBAAgB;IAChC,SAAS,EAAE,mBAAmB;IAC9B,uBAAuB,EAAE,yBAAyB;IAClD,WAAW,EAAE,aAAa;IAC1B,SAAS,EAAE,YAAY;IACvB,OAAO,EAAE,SAAS;IAClB,WAAW,EAAE,aAAa;IAC1B,iBAAiB,EAAE,eAAe;IAClC,gBAAgB,EAAE,cAAc;IAChC,qBAAqB,EAAE,mBAAmB;IAC1C,UAAU,EAAE,QAAQ;IACpB,gBAAgB,EAAE,kBAAkB;IACpC,mBAAmB,EAAE,qBAAqB;CAC3C,CAAC;AAEK,MAAM,mBAAmB,GAAiC;IAC/D,CAAC,cAAc,CAAC,SAAS,CAAC,EAAE;QAC1B,KAAK,EAAE,WAAW;QAClB,IAAI,EAAE,0BAA0B;KACjC;IACD,CAAC,cAAc,CAAC,cAAc,CAAC,EAAE;QAC/B,KAAK,EAAE,gBAAgB;QACvB,IAAI,EAAE,uBAAuB;KAC9B;IACD,CAAC,cAAc,CAAC,SAAS,CAAC,EAAE;QAC1B,KAAK,EAAE,WAAW;QAClB,IAAI,EAAE,yBAAyB;KAChC;IACD,CAAC,cAAc,CAAC,WAAW,CAAC,EAAE;QAC5B,KAAK,EAAE,aAAa;QACpB,IAAI,EAAE,sBAAsB;KAC7B;IACD,CAAC,cAAc,CAAC,IAAI,CAAC,EAAE;QACrB,KAAK,EAAE,MAAM;QACb,IAAI,EAAE,sBAAsB;KAC7B;IACD,CAAC,cAAc,CAAC,aAAa,CAAC,EAAE;QAC9B,KAAK,EAAE,eAAe;QACtB,IAAI,EAAE,sBAAsB;KAC7B;IACD,CAAC,cAAc,CAAC,aAAa,CAAC,EAAE;QAC9B,KAAK,EAAE,eAAe;QACtB,IAAI,EAAE,yBAAyB;KAChC;IACD,CAAC,cAAc,CAAC,OAAO,CAAC,EAAE;QACxB,KAAK,EAAE,SAAS;QAChB,IAAI,EAAE,wBAAwB;KAC/B;IACD,CAAC,cAAc,CAAC,iBAAiB,CAAC,EAAE;QAClC,KAAK,EAAE,qBAAqB;QAC5B,IAAI,EAAE,+BAA+B;KACtC;IACD,CAAC,cAAc,CAAC,gBAAgB,CAAC,EAAE;QACjC,KAAK,EAAE,oBAAoB;QAC3B,IAAI,EAAE,8BAA8B;KACrC;IACD,CAAC,cAAc,CAAC,qBAAqB,CAAC,EAAE;QACtC,KAAK,EAAE,mBAAmB;QAC1B,IAAI,EAAE,mCAAmC;KAC1C;IACD,CAAC,cAAc,CAAC,UAAU,CAAC,EAAE;QAC3B,KAAK,EAAE,cAAc;QACrB,IAAI,EAAE,8BAA8B;KACrC;IACD,CAAC,cAAc,CAAC,cAAc,CAAC,EAAE;QAC/B,KAAK,EAAE,gBAAgB;QACvB,IAAI,EAAE,8BAA8B;QACpC,cAAc,EAAE;YACd,cAAc,CAAC,aAAa;YAC5B,cAAc,CAAC,mBAAmB;YAClC,cAAc,CAAC,iBAAiB;SACjC;KACF;IACD,CAAC,cAAc,CAAC,aAAa,CAAC,EAAE;QAC9B,KAAK,EAAE,WAAW;QAClB,IAAI,EAAE,mCAAmC;QACzC,eAAe,EAAE,CAAC,cAAc,CAAC,4BAA4B,CAAC;KAC/D;IACD,CAAC,cAAc,CAAC,mBAAmB,CAAC,EAAE;QACpC,KAAK,EAAE,iBAAiB;QACxB,IAAI,EAAE,4BAA4B;KACnC;IACD,CAAC,cAAc,CAAC,iBAAiB,CAAC,EAAE;QAClC,KAAK,EAAE,eAAe;QACtB,IAAI,EAAE,uBAAuB;KAC9B;IACD,CAAC,cAAc,CAAC,cAAc,CAAC,EAAE;QAC/B,KAAK,EAAE,gBAAgB;QACvB,IAAI,EAAE,8BAA8B;QACpC,cAAc,EAAE;YACd,cAAc,CAAC,iBAAiB;YAChC,cAAc,CAAC,mBAAmB;YAClC,cAAc,CAAC,iBAAiB;SACjC;KACF;IACD,CAAC,cAAc,CAAC,iBAAiB,CAAC,EAAE;QAClC,KAAK,EAAE,cAAc;QACrB,IAAI,EAAE,mCAAmC;QACzC,eAAe,EAAE;YACf,cAAc,CAAC,oBAAoB;YACnC,cAAc,CAAC,eAAe;SAC/B;KACF;IACD,CAAC,cAAc,CAAC,mBAAmB,CAAC,EAAE;QACpC,KAAK,EAAE,iBAAiB;QACxB,IAAI,EAAE,4BAA4B;KACnC;IACD,CAAC,cAAc,CAAC,iBAAiB,CAAC,EAAE;QAClC,KAAK,EAAE,eAAe;QACtB,IAAI,EAAE,uBAAuB;KAC9B;IACD,CAAC,cAAc,CAAC,cAAc,CAAC,EAAE;QAC/B,KAAK,EAAE,gBAAgB;QACvB,IAAI,EAAE,8BAA8B;QACpC,cAAc,EAAE;YACd,cAAc,CAAC,SAAS;YACxB,cAAc,CAAC,SAAS;YACxB,cAAc,CAAC,WAAW;SAC3B;QACD,eAAe,EAAE,CAAC,cAAc,CAAC,uBAAuB,CAAC;KAC1D;IACD,CAAC,cAAc,CAAC,SAAS,CAAC,EAAE;QAC1B,KAAK,EAAE,WAAW;QAClB,IAAI,EAAE,mCAAmC;KAC1C;IACD,CAAC,cAAc,CAAC,SAAS,CAAC,EAAE;QAC1B,KAAK,EAAE,QAAQ;QACf,IAAI,EAAE,uBAAuB;KAC9B;IACD,CAAC,cAAc,CAAC,WAAW,CAAC,EAAE;QAC5B,KAAK,EAAE,SAAS;QAChB,IAAI,EAAE,yBAAyB;KAChC;IACD,CAAC,cAAc,CAAC,gBAAgB,CAAC,EAAE;QACjC,KAAK,EAAE,mBAAmB;QAC1B,IAAI,EAAE,uBAAuB;KAC9B;IACD,CAAC,cAAc,CAAC,mBAAmB,CAAC,EAAE;QACpC,KAAK,EAAE,qBAAqB;QAC5B,IAAI,EAAE,0BAA0B;KACjC;CACF,CAAC;AAEK,MAAM,cAAc,GAA4B;IACrD,CAAC,oDAAY,CAAC,YAAY,CAAC,EAAE;QAC3B,EAAE,KAAK,EAAE,cAAc,CAAC,cAAc,EAAE;QACxC,EAAE,KAAK,EAAE,cAAc,CAAC,aAAa,EAAE;QACvC,EAAE,KAAK,EAAE,cAAc,CAAC,OAAO,EAAE,OAAO,EAAE,kDAAW,CAAC,GAAG,EAAE;QAC3D,EAAE,KAAK,EAAE,cAAc,CAAC,gBAAgB,EAAE;QAC1C,EAAE,KAAK,EAAE,cAAc,CAAC,SAAS,EAAE;QACnC;YACE,KAAK,EAAE,cAAc,CAAC,cAAc;YACpC,UAAU,EAAE,IAAI;YAChB,OAAO,EAAE,kDAAW,CAAC,GAAG;SACzB;QACD;YACE,KAAK,EAAE,cAAc,CAAC,cAAc;YACpC,UAAU,EAAE,IAAI;YAChB,OAAO,EAAE,kDAAW,CAAC,GAAG;SACzB;QACD;YACE,KAAK,EAAE,cAAc,CAAC,cAAc;YACpC,UAAU,EAAE,IAAI;YAChB,OAAO,EAAE,kDAAW,CAAC,GAAG;SACzB;KACF;IACD,CAAC,oDAAY,CAAC,WAAW,CAAC,EAAE;QAC1B,EAAE,KAAK,EAAE,cAAc,CAAC,mBAAmB,EAAE;QAC7C,EAAE,KAAK,EAAE,cAAc,CAAC,aAAa,EAAE;QACvC,EAAE,KAAK,EAAE,cAAc,CAAC,WAAW,EAAE;QACrC,EAAE,KAAK,EAAE,cAAc,CAAC,SAAS,EAAE;QACnC,EAAE,KAAK,EAAE,cAAc,CAAC,cAAc,EAAE;QACxC,EAAE,KAAK,EAAE,cAAc,CAAC,SAAS,EAAE;QACnC,EAAE,KAAK,EAAE,cAAc,CAAC,cAAc,EAAE;QACxC,EAAE,KAAK,EAAE,cAAc,CAAC,cAAc,EAAE;QACxC,EAAE,KAAK,EAAE,cAAc,CAAC,cAAc,EAAE;KACzC;IACD,CAAC,oDAAY,CAAC,MAAM,CAAC,EAAE;QACrB,EAAE,KAAK,EAAE,cAAc,CAAC,SAAS,EAAE;QACnC,EAAE,KAAK,EAAE,cAAc,CAAC,WAAW,EAAE;KACtC;IACD,CAAC,oDAAY,CAAC,WAAW,CAAC,EAAE;QAC1B;YACE,KAAK,EAAE,cAAc,CAAC,cAAc;YACpC,UAAU,EAAE,IAAI;YAChB,OAAO,EAAE,kDAAW,CAAC,GAAG;SACzB;QACD;YACE,KAAK,EAAE,cAAc,CAAC,cAAc;YACpC,UAAU,EAAE,IAAI;YAChB,OAAO,EAAE,kDAAW,CAAC,GAAG;SACzB;QACD;YACE,KAAK,EAAE,cAAc,CAAC,cAAc;YACpC,UAAU,EAAE,IAAI;YAChB,OAAO,EAAE,kDAAW,CAAC,GAAG;SACzB;KACF;IACD,CAAC,oDAAY,CAAC,SAAS,CAAC,EAAE;QACxB,EAAE,KAAK,EAAE,cAAc,CAAC,UAAU,EAAE;QACpC,EAAE,KAAK,EAAE,cAAc,CAAC,iBAAiB,EAAE;QAC3C,EAAE,KAAK,EAAE,cAAc,CAAC,gBAAgB,EAAE;QAC1C,EAAE,KAAK,EAAE,cAAc,CAAC,qBAAqB,EAAE;KAChD;CACF,CAAC;AAEK,MAAM,SAAS,GAAG,YAAY,CAAC;AAE/B,MAAM,sBAAsB,GAA4B;IAC7D,kBAAkB,EAAE,oDAAY,CAAC,YAAY;IAC7C,yBAAyB,EAAE,oDAAY,CAAC,WAAW;IACnD,mBAAmB,EAAE,oDAAY,CAAC,MAAM;IACxC,gBAAgB,EAAE,oDAAY,CAAC,SAAS;CACzC,CAAC;;;;;;;;;;;;;;;;;;AC/OK,MAAM,WAAW;;AACG,6BAAiB,GAAW,mBAAmB,CAAC;AAChD,gCAAoB,GAAW,sBAAsB,CAAC;AACtD,gCAAoB,GAAW,sBAAsB,CAAC;AACtD,gCAAoB,GAAW,sBAAsB,CAAC;AACtD,2BAAe,GAAW,iBAAiB,CAAC;AAC5C,8BAAkB,GAAW,oBAAoB,CAAC;AAClD,sCAA0B,GAAW,4BAA4B,CAAC;;;;;;;;;;;;;;;;;;;ACPtC;AAEhD,MAAM,cAAc,GAAG;IAC1B,CAAC,gEAAS,CAAC,OAAO,CAAC,EAAE,SAAS;IAC9B,CAAC,gEAAS,CAAC,IAAI,CAAC,EAAE,MAAM;IACxB,CAAC,gEAAS,CAAC,MAAM,CAAC,EAAE,SAAS;IAC7B,CAAC,gEAAS,CAAC,MAAM,CAAC,EAAE,SAAS;IAC7B,CAAC,gEAAS,CAAC,YAAY,CAAC,EAAE,eAAe;CAC5C;;;;;;;;;;;;;;;;;;;;;;ACR6C;AACkC;AAEzE,MAAM,kBAAkB,GAAG;IAC9B,CAAC,uDAAgB,CAAC,cAAc,CAAC,EAAE,iBAAiB;IACpD,CAAC,uDAAgB,CAAC,eAAe,CAAC,EAAE,kBAAkB;IACtD,CAAC,uDAAgB,CAAC,SAAS,CAAC,EAAE,WAAW;IACzC,CAAC,uDAAgB,CAAC,WAAW,CAAC,EAAE,eAAe;IAC/C,CAAC,uDAAgB,CAAC,iBAAiB,CAAC,EAAE,qBAAqB;IAC3D,CAAC,uDAAgB,CAAC,gBAAgB,CAAC,EAAE,mBAAmB;IACxD,CAAC,uDAAgB,CAAC,cAAc,CAAC,EAAE,kBAAkB;IACrD,CAAC,uDAAgB,CAAC,gBAAgB,CAAC,EAAE,mBAAmB;IACxD,CAAC,uDAAgB,CAAC,iBAAiB,CAAC,EAAE,qBAAqB;IAC3D,CAAC,uDAAgB,CAAC,WAAW,CAAC,EAAE,eAAe;IAC/C,CAAC,uDAAgB,CAAC,UAAU,CAAC,EAAE,aAAa;IAC5C,CAAC,uDAAgB,CAAC,SAAS,CAAC,EAAE,YAAY;CAC7C;AAEM,MAAM,iBAAiB,GAAG;IAC7B,CAAC,2DAAY,CAAC,YAAY,CAAC,EAAE;QACzB,CAAC,kDAAW,CAAC,IAAI,CAAC,EAAE;YAChB,CAAC,uDAAgB,CAAC,cAAc,CAAC,EAAE,kBAAkB,CAAC,uDAAgB,CAAC,cAAc,CAAC;YACtF,CAAC,uDAAgB,CAAC,eAAe,CAAC,EAAE,kBAAkB,CAAC,uDAAgB,CAAC,eAAe,CAAC;YACxF,CAAC,uDAAgB,CAAC,SAAS,CAAC,EAAE,kBAAkB,CAAC,uDAAgB,CAAC,SAAS,CAAC;SAC/E;QACD,CAAC,kDAAW,CAAC,GAAG,CAAC,EAAE;YACf,CAAC,uDAAgB,CAAC,WAAW,CAAC,EAAE,kBAAkB,CAAC,uDAAgB,CAAC,WAAW,CAAC;YAChF,CAAC,uDAAgB,CAAC,iBAAiB,CAAC,EAAE,kBAAkB,CAAC,uDAAgB,CAAC,iBAAiB,CAAC;YAC5F,CAAC,uDAAgB,CAAC,gBAAgB,CAAC,EAAE,kBAAkB,CAAC,uDAAgB,CAAC,gBAAgB,CAAC;SAC7F;QACD,CAAC,kDAAW,CAAC,GAAG,CAAC,EAAE;YACf,CAAC,uDAAgB,CAAC,cAAc,CAAC,EAAE,kBAAkB,CAAC,uDAAgB,CAAC,cAAc,CAAC;YACtF,CAAC,uDAAgB,CAAC,iBAAiB,CAAC,EAAE,kBAAkB,CAAC,uDAAgB,CAAC,iBAAiB,CAAC;YAC5F,CAAC,uDAAgB,CAAC,gBAAgB,CAAC,EAAE,kBAAkB,CAAC,uDAAgB,CAAC,gBAAgB,CAAC;SAC7F;QACD,CAAC,kDAAW,CAAC,GAAG,CAAC,EAAE;YACf,CAAC,uDAAgB,CAAC,WAAW,CAAC,EAAE,kBAAkB,CAAC,uDAAgB,CAAC,WAAW,CAAC;YAChF,CAAC,uDAAgB,CAAC,SAAS,CAAC,EAAE,kBAAkB,CAAC,uDAAgB,CAAC,SAAS,CAAC;YAC5E,CAAC,uDAAgB,CAAC,UAAU,CAAC,EAAE,kBAAkB,CAAC,uDAAgB,CAAC,UAAU,CAAC;SACjF;KACJ;IACD,CAAC,2DAAY,CAAC,WAAW,CAAC,EAAE;QACxB,CAAC,kDAAW,CAAC,GAAG,CAAC,EAAE;YACf,CAAC,uDAAgB,CAAC,WAAW,CAAC,EAAE,kBAAkB,CAAC,uDAAgB,CAAC,WAAW,CAAC;YAChF,CAAC,uDAAgB,CAAC,iBAAiB,CAAC,EAAE,kBAAkB,CAAC,uDAAgB,CAAC,iBAAiB,CAAC;YAC5F,CAAC,uDAAgB,CAAC,gBAAgB,CAAC,EAAE,kBAAkB,CAAC,uDAAgB,CAAC,gBAAgB,CAAC;SAC7F;QACD,CAAC,kDAAW,CAAC,GAAG,CAAC,EAAE;YACf,CAAC,uDAAgB,CAAC,cAAc,CAAC,EAAE,kBAAkB,CAAC,uDAAgB,CAAC,cAAc,CAAC;YACtF,CAAC,uDAAgB,CAAC,iBAAiB,CAAC,EAAE,kBAAkB,CAAC,uDAAgB,CAAC,iBAAiB,CAAC;YAC5F,CAAC,uDAAgB,CAAC,gBAAgB,CAAC,EAAE,kBAAkB,CAAC,uDAAgB,CAAC,gBAAgB,CAAC;SAC7F;QACD,CAAC,kDAAW,CAAC,GAAG,CAAC,EAAE;YACf,CAAC,uDAAgB,CAAC,WAAW,CAAC,EAAE,kBAAkB,CAAC,uDAAgB,CAAC,WAAW,CAAC;YAChF,CAAC,uDAAgB,CAAC,SAAS,CAAC,EAAE,kBAAkB,CAAC,uDAAgB,CAAC,SAAS,CAAC;YAC5E,CAAC,uDAAgB,CAAC,UAAU,CAAC,EAAE,kBAAkB,CAAC,uDAAgB,CAAC,UAAU,CAAC;SACjF;KACJ;IACD,CAAC,2DAAY,CAAC,MAAM,CAAC,EAAE;QACnB,CAAC,kDAAW,CAAC,GAAG,CAAC,EAAE;YACf,CAAC,uDAAgB,CAAC,WAAW,CAAC,EAAE,kBAAkB,CAAC,uDAAgB,CAAC,WAAW,CAAC;YAChF,CAAC,uDAAgB,CAAC,UAAU,CAAC,EAAE,kBAAkB,CAAC,uDAAgB,CAAC,UAAU,CAAC;SACjF;KACJ;CACJ;AAEM,MAAM,uBAAuB,GAAC;IACjC,CAAC,4DAAqB,CAAC,eAAe,CAAC,EAAC,yBAAyB;IACjE,CAAC,4DAAqB,CAAC,cAAc,CAAC,EAAC,wBAAwB;IAC/D,CAAC,4DAAqB,CAAC,SAAS,CAAC,EAAC,kBAAkB;IACpD,CAAC,4DAAqB,CAAC,gBAAgB,CAAC,EAAC,oBAAoB;CAChE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC1DsB;AAC6B;AAGpD,IAAa,qBAAqB,GAAlC,MAAa,qBAAqB;IAoBhC,YACY,GAAe,EACf,OAAe,EACM,UAAkB;QAFvC,QAAG,GAAH,GAAG,CAAY;QACf,YAAO,GAAP,OAAO,CAAQ;QACM,eAAU,GAAV,UAAU,CAAQ;QArB1C,wBAAmB,GAAY,IAAI,CAAC;QAEpC,yBAAoB,GAAY,KAAK,CAAC;QACtC,0BAAqB,GAAY,KAAK,CAAC;QACvC,eAAU,GAAY,KAAK,CAAC;QAE5B,YAAO,GAAW,EAAE,CAAC;QACrB,uBAAkB,GAAY,KAAK,CAAC;QAEpC,YAAO,GAAY,KAAK,CAAC;QAEzB,uBAAkB,GAAW,EAAE,CAAC;QAE/B,6BAAwB,GAAwB,IAAI,0DAAY,EAAS,CAAC;QAE5E,mBAAc,GAAuB,EAAE,CAAC;QACxC,YAAO,GAAkB,CAAC,OAAO,CAAC,CAAC;QAMzC,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACzD,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACjD,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACrD,CAAC;IAED,QAAQ;QACN,IAAI,CAAC,yEAAiB,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE;YAAE,OAAO;SAAE;QAEpD,IAAI,CAAC,KAAK,EAAE,CAAC;IACf,CAAC;IAED,WAAW;QACT,IAAI,CAAC,yEAAiB,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE;YAAE,OAAO;SAAE;QAEpD,IAAI,CAAC,2BAA2B,EAAE,CAAC;QACnC,IAAI,CAAC,mCAAmC,EAAE,CAAC;QAC3C,IAAI,CAAC,yBAAyB,EAAE,CAAC;IACnC,CAAC;IAED,WAAW,CAAC,OAAsB;QAChC,IAAI,CAAC,yEAAiB,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE;YAAE,OAAO;SAAE;QAEpD,IAAI,OAAO,CAAC,sBAAsB,CAAC,IAAI,OAAO,CAAC,SAAS,CAAC,IAAI,OAAO,CAAC,YAAY,CAAC,EAAE;YAClF,IAAI,CAAC,KAAK,EAAE,CAAC;SACd;IACH,CAAC;IAEO,KAAK;QACX,IAAI,IAAI,CAAC,kBAAkB,KAAK,EAAE,EAAE;YAClC,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;SACtE;QAED,IAAI,CAAC,aAAa,EAAE,CAAC;QAErB,IAAI,IAAI,CAAC,oBAAoB,EAAE;YAC7B,IAAI,CAAC,iCAAiC,EAAE,CAAC;SAC1C;aAAM;YACL,IAAI,CAAC,gBAAgB,EAAE,CAAC;SACzB;QAED,IAAI,IAAI,CAAC,UAAU,EAAE;YACnB,IAAI,CAAC,uBAAuB,EAAE,CAAC;SAChC;IACH,CAAC;IAEO,gBAAgB;QACtB,IAAI,IAAI,CAAC,qBAAqB,EAAE;YAC9B,UAAU,CAAC,IAAI,CAAC,yBAAyB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;SACvD;aAAM;YACL,IAAI,CAAC,yBAAyB,EAAE,CAAC;SAClC;IACH,CAAC;IAEO,aAAa;QACnB,IAAI,IAAI,CAAC,OAAO,EAAE;YAChB,IAAI;gBACF,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,gBAAgB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAuB,CAAC;gBACxF,IAAI,KAAK,EAAE;oBACT,IAAI,CAAC,cAAc,GAAG,KAAK,CAAC;iBAC7B;aACF;YAAC,OAAO,GAAG,EAAE;gBACZ,OAAO,CAAC,KAAK,CAAC,wDAAwD,EAAE,GAAG,CAAC,CAAC;aAC9E;SACF;IACH,CAAC;IAEO,YAAY,CAAC,EAAS;QAC5B,IAAI,CAAC,IAAI,CAAC,mBAAmB,EAAE;YAAE,OAAO;SAAE;QAE1C,IAAI,IAAI,CAAC,kBAAkB,EAAE;YAC3B,IAAI,CAAC,aAAa,EAAE,CAAC;SACtB;QAED,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,aAAa,CAAC,QAAQ,CAAC,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,EAAE,CAAC,MAAM,CAAC,EAAE;YAClF,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;YAEf,IAAI,IAAI,CAAC,oBAAoB,EAAE;gBAC7B,IAAI,CAAC,2BAA2B,EAAE,CAAC;aACpC;SACF;IACH,CAAC;IAED;;;OAGG;IACK,aAAa,CAAC,EAAS;QAC7B,UAAU,CAAC,GAAG,EAAE;YACd,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE;gBACpB,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;aAChB;QACH,CAAC,CAAC,CAAC;IACL,CAAC;IAEO,KAAK,CAAC,EAAS;QACrB,IAAI,CAAC,IAAI,CAAC,mBAAmB,EAAE;YAAE,OAAO;SAAE;QAE1C,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,wBAAwB,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;IACjE,CAAC;IAEO,cAAc,CAAC,MAAM;QAC3B,KAAK,IAAI,YAAY,IAAI,IAAI,CAAC,cAAc,EAAE;YAC5C,IAAI,YAAY,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE;gBACjC,OAAO,IAAI,CAAC;aACb;SACF;QAED,OAAO,KAAK,CAAC;IACf,CAAC;IAEO,yBAAyB;QAC/B,IAAI,CAAC,OAAO,CAAC,iBAAiB,CAAC,GAAG,EAAE;YAClC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,QAAQ,CAAC,gBAAgB,CAAC,CAAC,EAAE,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;QAC3F,CAAC,CAAC,CAAC;IACL,CAAC;IAEO,2BAA2B;QACjC,IAAI,CAAC,OAAO,CAAC,iBAAiB,CAAC,GAAG,EAAE;YAClC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,QAAQ,CAAC,mBAAmB,CAAC,CAAC,EAAE,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;QAC9F,CAAC,CAAC,CAAC;IACL,CAAC;IAEO,iCAAiC;QACvC,IAAI,CAAC,OAAO,CAAC,iBAAiB,CAAC,GAAG,EAAE;YAClC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,aAAa,CAAC,gBAAgB,CAAC,CAAC,EAAE,IAAI,CAAC,gBAAgB,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;QAC7G,CAAC,CAAC,CAAC;IACL,CAAC;IAEO,mCAAmC;QACzC,IAAI,CAAC,OAAO,CAAC,iBAAiB,CAAC,GAAG,EAAE;YAClC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,aAAa,CAAC,mBAAmB,CAAC,CAAC,EAAE,IAAI,CAAC,gBAAgB,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;QAChH,CAAC,CAAC,CAAC;IACL,CAAC;IAEO,uBAAuB;QAC7B,IAAI,CAAC,OAAO,CAAC,iBAAiB,CAAC,GAAG,EAAE;YAClC,MAAM,CAAC,gBAAgB,CAAC,MAAM,EAAE,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;QACpE,CAAC,CAAC,CAAC;IACL,CAAC;IAEO,yBAAyB;QAC/B,IAAI,CAAC,OAAO,CAAC,iBAAiB,CAAC,GAAG,EAAE;YAClC,MAAM,CAAC,mBAAmB,CAAC,MAAM,EAAE,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;QACvE,CAAC,CAAC,CAAC;IACL,CAAC;CAEF;;YArJkB,wDAAU;YACN,oDAAM;YACkB,MAAM,uBAA9C,oDAAM,SAAC,yDAAW;;AArBd;IAAR,2DAAK,EAAE;;kEAAqC;AAEpC;IAAR,2DAAK,EAAE;;mEAAuC;AACtC;IAAR,2DAAK,EAAE;;oEAAwC;AACvC;IAAR,2DAAK,EAAE;;yDAA6B;AAE5B;IAAR,2DAAK,EAAE;;sDAAsB;AACrB;IAAR,2DAAK,EAAE;;iEAAqC;AAEpC;IAAR,2DAAK,EAAE;;sDAA0B;AAEzB;IAAR,2DAAK,EAAE;;iEAAiC;AAE/B;IAAT,4DAAM,EAAE;8BAA2B,0DAAY;uEAAoC;AAfzE,qBAAqB;IADjC,+DAAS,CAAC,EAAE,QAAQ,EAAE,4BAA4B,EAAE,CAAC;IAwB/C,uEAAM,CAAC,yDAAW,CAAC;qCAFP,wDAAU;QACN,oDAAM;QACkB,MAAM;GAvBxC,qBAAqB,CA0KjC;AA1KiC;;;;;;;;;;;;;;;;;;;;ACjBQ;;;;;;;;;;;;;;;;;;;;;;;;;;ACAT;AACD;AACF;;;;;;;;;;;;;;;;;;;;ACFU;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACIjB;AACuC;AAG9D,IAAa,kBAAkB,GAA/B,MAAa,kBAAkB;IAC7B,YACkB,cAA6B;QAA7B,mBAAc,GAAd,cAAc,CAAe;IAC3C,CAAC;IAGL,OAAO,CAAC,CAAsB;QAC5B,MAAM,EAAE,GAAqB,CAAC,CAAC,MAA0B,CAAC;QAC1D,MAAM,KAAK,GAAG,EAAE,CAAC,KAAK,CAAC;QACvB,IAAI,KAAK,EAAE;YACT,IAAI,MAAM,GAAW,CAAC,CAAC;YACvB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;gBACrC,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE;oBACzB,MAAM,EAAE,CAAC;iBACV;aACF;YAED,IAAI,CAAC,MAAM,EAAE;gBACX,EAAE,CAAC,KAAK,GAAG,EAAE,CAAC;aACf;SACF;QAED,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;IACjC,CAAC;CACF;;YAtBmC,sDAAa,uBAA5C,kDAAI;;AAIP;IADC,kEAAY,CAAC,OAAO,EAAE,CAAC,QAAQ,CAAC,CAAC;;;;iDAkBjC;AAvBU,kBAAkB;IAD9B,+DAAS,CAAC,EAAE,QAAQ,EAAE,mCAAmC,EAAE,CAAC;IAGxD,qEAAI,EAAE;qCAAyB,sDAAa;GAFpC,kBAAkB,CAwB9B;AAxB8B;;;;;;;;;;;;;;;;;;;;ACRY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACAa;AACb;AAK3C,IAAa,qBAAqB,GAAlC,MAAa,qBAAqB;IAC9B,YACY,QAAmB;QAAnB,aAAQ,GAAR,QAAQ,CAAW;IAC5B,CAAC;IAGJ,OAAO;QACH,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,aAAa,EAAE,CAAC;IAC1C,CAAC;IAGD,MAAM;QACF,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,eAAe,EAAE,CAAC;IAC5C,CAAC;CACJ;;YAZyB,wDAAS;;AAI/B;IADC,kEAAY,CAAC,OAAO,CAAC;;;;oDAGrB;AAGD;IADC,kEAAY,CAAC,MAAM,CAAC;;;;mDAGpB;AAbQ,qBAAqB;IAHjC,+DAAS,CAAC;QACP,QAAQ,EAAE,+BAA+B;KAC5C,CAAC;qCAGwB,wDAAS;GAFtB,qBAAqB,CAcjC;AAdiC;;;;;;;;;;;;;;;;;;ACNlC,IAAY,mBAMX;AAND,WAAY,mBAAmB;IAC3B,0EAAe;IACf,gFAAkB;IAClB,wEAAc;IACd,+EAAkB;IAClB,6EAAiB;AACrB,CAAC,EANW,mBAAmB,KAAnB,mBAAmB,QAM9B;;;;;;;;;;;;;;;;;;;;ACND,IAAY,mBAKX;AALD,WAAY,mBAAmB;IAC3B,iEAAU;IACV,qEAAY;IACZ,iEAAU;IACV,qEAAY;AAChB,CAAC,EALW,mBAAmB,KAAnB,mBAAmB,QAK9B;AAED,IAAY,qBAKX;AALD,WAAY,qBAAqB;IAC7B,mEAAS;IACT,uFAAmB;IACnB,2FAAqB;IACrB,uFAAmB;AACvB,CAAC,EALW,qBAAqB,KAArB,qBAAqB,QAKhC;AAED,IAAY,sBAIX;AAJD,WAAY,sBAAsB;IAC9B,mEAAQ;IACR,mEAAQ;IACR,+EAAc;AAClB,CAAC,EAJW,sBAAsB,KAAtB,sBAAsB,QAIjC;;;;;;;;;;;;;;;;;;AClBD,IAAY,qBAGX;AAHD,WAAY,qBAAqB;IAC/B,mEAAS;IACT,yEAAY;AACd,CAAC,EAHW,qBAAqB,KAArB,qBAAqB,QAGhC;;;;;;;;;;;;;;;;;;ACHD,IAAY,eAGX;AAHD,WAAY,eAAe;IACvB,uEAAiB;IACjB,uEAAiB;AACrB,CAAC,EAHW,eAAe,KAAf,eAAe,QAG1B;;;;;;;;;;;;;;;;;;;;ACHD,IAAY,2BAGX;AAHD,WAAY,2BAA2B;IACrC,uFAAa;IACb,uFAAa;AACf,CAAC,EAHW,2BAA2B,KAA3B,2BAA2B,QAGtC;AAGD,IAAY,kCAOX;AAPD,WAAY,kCAAkC;IAC5C,iHAAmB;IACnB,2GAAgB;IAChB,uGAAc;IACd,iGAAW;IACX,mGAAY;IACZ,+FAAU;AACZ,CAAC,EAPW,kCAAkC,KAAlC,kCAAkC,QAO7C;AAED,IAAY,iBAKX;AALD,WAAY,iBAAiB;IAC3B,yDAAQ;IACR,uDAAO;IACP,2DAAS;IACT,yDAAQ;AACV,CAAC,EALW,iBAAiB,KAAjB,iBAAiB,QAK5B;;;;;;;;;;;;;;;;;;ACpBD,IAAY,6BAQX;AARD,WAAY,6BAA6B;IACrC,uFAAW;IACX,uFAAW;IACX,qGAAkB;IAClB,uFAAW;IACX,uGAAmB;IACnB,mHAAyB;IACzB,qGAAkB;AACtB,CAAC,EARW,6BAA6B,KAA7B,6BAA6B,QAQxC;;;;;;;;;;;;;;;;;;ACRD,IAAY,YAQX;AARD,WAAY,YAAY;IACpB,2DAAc;IACd,yFAA6B;IAC7B,uFAA4B;IAC5B,mFAA0B;IAC1B,uFAA4B;IAC5B,uEAAoB;IACpB,2DAAc;AAClB,CAAC,EARW,YAAY,KAAZ,YAAY,QAQvB;;;;;;;;;;;;;;;;;;ACRD,IAAY,sBAKX;AALD,WAAY,sBAAsB;IAC9B,6EAAS;IACT,mFAAY;IACZ,+FAAkB;IAClB,iGAAmB;AACvB,CAAC,EALW,sBAAsB,KAAtB,sBAAsB,QAKjC;;;;;;;;;;;;;;;;;;ACLD,IAAY,6BAGX;AAHD,WAAY,6BAA6B;IACrC,uFAAW;IACX,yFAAY;AAChB,CAAC,EAHW,6BAA6B,KAA7B,6BAA6B,QAGxC;;;;;;;;;;;;;;;;;;ACHD,IAAY,kBAIX;AAJD,WAAY,kBAAkB;IAC1B,mFAAoB;IACpB,iFAAmB;IACnB,2FAAwB;AAC5B,CAAC,EAJW,kBAAkB,KAAlB,kBAAkB,QAI7B;;;;;;;;;;;;;;;;;;;ACJD,IAAY,kBAQX;AARD,WAAY,kBAAkB;IAC1B,iEAAW;IACX,mEAAY;IACZ,2DAAQ;IACR,+DAAU;IACV,uEAAc;IACd,6EAAiB;IACjB,2DAAQ;AACZ,CAAC,EARW,kBAAkB,KAAlB,kBAAkB,QAQ7B;AAED,IAAY,wBAQX;AARD,WAAY,wBAAwB;IAClC,+CAAmB;IACnB,kDAAsB;IACtB,yCAAa;IACb,6CAAiB;IACjB,2DAA+B;IAC/B,4DAAgC;IAChC,yCAAa;AACf,CAAC,EARW,wBAAwB,KAAxB,wBAAwB,QAQnC;;;;;;;;;;;;;;;;;;AClBD,IAAY,WAIX;AAJD,WAAY,WAAW;IACnB,qDAAY;IACZ,2DAAe;IACf,6CAAQ;AACZ,CAAC,EAJW,WAAW,KAAX,WAAW,QAItB;;;;;;;;;;;;;;;;;;ACJD,IAAY,gBAGX;AAHD,WAAY,gBAAgB;IACxB,yDAAS;IACT,6DAAW;AACf,CAAC,EAHW,gBAAgB,KAAhB,gBAAgB,QAG3B;;;;;;;;;;;;;;;;;;ACHD,IAAY,iCAIX;AAJD,WAAY,iCAAiC;IACzC,+FAAW;IACX,iGAAY;IACZ,mGAAa;AACjB,CAAC,EAJW,iCAAiC,KAAjC,iCAAiC,QAI5C;;;;;;;;;;;;;;;;;;ACJD,IAAY,sBAOX;AAPD,WAAY,sBAAsB;IAC9B,mEAAQ;IACR,qEAAS;IACT,yEAAW;IACX,6FAAqB;IACrB,iGAAuB;IACvB,qEAAS;AACb,CAAC,EAPW,sBAAsB,KAAtB,sBAAsB,QAOjC;;;;;;;;;;;;;;;;;;ACPD,IAAY,oBAIX;AAJD,WAAY,oBAAoB;IAC5B,6DAAO;IACP,+DAAQ;IACR,iEAAS;AACb,CAAC,EAJW,oBAAoB,KAApB,oBAAoB,QAI/B;;;;;;;;;;;;;;;;;;ACJD,IAAY,cA8FX;AA9FD,WAAY,cAAc;IACtB,mEAAY;IACZ,6DAAS;IACT,mDAAI;IACJ,yDAAO;IACP,mEAAY;IACZ,mEAAY;IACZ,uEAAc;IACd,6DAAS;IACT,6DAAS;IACT,6DAAS;IACT,wFAAsB;IACtB,4EAAgB;IAChB,oDAAI;IACJ,0DAAO;IACP,0DAAO;IACP,kDAAG;IACH,wDAAM;IACN,oDAAI;IACJ,wDAAM;IACN,sEAAa;IACb,oEAAY;IACZ,8EAAiB;IACjB,0EAAe;IACf,0DAAO;IACP,0EAAe;IACf,0DAAO;IACP,wDAAM;IACN,oDAAI;IACJ,0DAAO;IACP,wDAAM;IACN,sDAAK;IACL,sDAAK;IACL,oDAAI;IACJ,0DAAO;IACP,sDAAK;IACL,oDAAI;IACJ,oDAAI;IACJ,gDAAE;IACF,8DAAS;IACT,0DAAO;IACP,sDAAK;IACL,wDAAM;IACN,sEAAa;IACb,kEAAW;IACX,wDAAM;IACN,oDAAI;IACJ,gDAAE;IACF,sDAAK;IACL,8EAAiB;IACjB,4EAAgB;IAChB,8EAAiB;IACjB,kEAAW;IACX,kEAAW;IACX,kEAAW;IACX,4DAAQ;IACR,oEAAY;IACZ,wEAAc;IACd,wEAAc;IACd,8DAAS;IACT,sDAAK;IACL,gEAAU;IACV,8DAAS;IACT,8DAAS;IACT,4DAAQ;IACR,sEAAa;IACb,sEAAa;IACb,8DAAS;IACT,0DAAO;IACP,oEAAY;IACZ,wEAAc;IACd,sEAAa;IACb,oDAAI;IACJ,sEAAa;IACb,8DAAS;IACT,4EAAgB;IAChB,4EAAgB;IAChB,oEAAY;IACZ,kEAAW;IACX,8DAAS;IACT,4DAAQ;IACR,gDAAE;IACF,kDAAG;IACH,kEAAW;IACX,wEAAc;IACd,gEAAU;IACV,kEAAW;IACX,4DAAQ;IACR,wDAAM;IACN,4DAAQ;IACR,kEAAW;IACX,wEAAc;IACd,wDAAM;IACN,0DAAO;AACX,CAAC,EA9FW,cAAc,KAAd,cAAc,QA8FzB;;;;;;;;;;;;;;;;;;AC9FD,IAAY,sBAGX;AAHD,WAAY,sBAAsB;IAC9B,uEAAU;IACV,mFAAgB;AACpB,CAAC,EAHW,sBAAsB,KAAtB,sBAAsB,QAGjC;;;;;;;;;;;;;;;;;;ACHD,IAAa,wBAIZ;AAJD,WAAa,wBAAwB;IACjC,yEAAS;IACT,2EAAU;IACV,6EAAW;AACf,CAAC,EAJY,wBAAwB,KAAxB,wBAAwB,QAIpC;;;;;;;;;;;;;;;;;;;;;;;;;;ACJD,IAAY,iBAMX;AAND,WAAY,iBAAiB;IACzB,uDAAO;IACP,iEAAY;IACZ,yDAAQ;IACR,+DAAW;IACX,uDAAO;AACX,CAAC,EANW,iBAAiB,KAAjB,iBAAiB,QAM5B;AAED,IAAY,iBAMX;AAND,WAAY,iBAAiB;IACzB,yDAAQ;IACR,yDAAQ;IACR,yDAAQ;IACR,2DAAS;IACT,2DAAS;AACb,CAAC,EANW,iBAAiB,KAAjB,iBAAiB,QAM5B;AAED,IAAY,oBAaX;AAbD,WAAY,oBAAoB;IAC5B,iEAAS;IACT,mEAAU;IACV,iEAAS;IACT,qFAAmB;IACnB,2FAAsB;IACtB,+DAAQ;IACR,+DAAQ;IACR,iEAAS;IACT,6EAAe;IACf,+DAAQ;IACR,0EAAc;IACd,8EAAgB;AACpB,CAAC,EAbW,oBAAoB,KAApB,oBAAoB,QAa/B;AAED,IAAY,cAWX;AAXD,WAAY,cAAc;IACtB,+DAAc;IACd,+EAAsB;IACtB,iFAAuB;IACvB,qDAAS;IACT,+EAAsB;IACtB,yFAA2B;IAC3B,mFAAwB;IACxB,uEAAkB;IAClB,6EAAqB;IACrB,6DAAa;AACjB,CAAC,EAXW,cAAc,KAAd,cAAc,QAWzB;AAED,IAAY,WAGX;AAHD,WAAY,WAAW;IACnB,2DAAe;IACf,yDAAc;AAClB,CAAC,EAHW,WAAW,KAAX,WAAW,QAGtB;AAED,IAAY,kBA2BX;AA3BD,WAAY,kBAAkB;IAC1B,uGAA8B;IAC9B,2DAAQ;IACR,2DAAQ;IACR,2DAAQ;IACR,iFAAmB;IACnB,2DAAQ;IACR,mEAAY;IACZ,mEAAY;IACZ,mEAAY;IACZ,mEAAY;IACZ,oEAAa;IACb,oEAAa;IACb,oFAAqB;IACrB,oFAAqB;IACrB,oFAAqB;IACrB,oFAAqB;IACrB,8DAAU;IACV,8DAAU;IACV,0DAAQ;IACR,8DAAU;IACV,8DAAU;IACV,8DAAU;IACV,wEAAe;IACf,wEAAe;IACf,wEAAe;IACf,wEAAe;AACnB,CAAC,EA3BW,kBAAkB,KAAlB,kBAAkB,QA2B7B;AAED,IAAY,sBAKX;AALD,WAAY,sBAAsB;IAC9B,mEAAQ;IACR,yEAAW;IACX,qEAAS;IACT,qEAAS;AACb,CAAC,EALW,sBAAsB,KAAtB,sBAAsB,QAKjC;AACD,IAAY,aAGX;AAHD,WAAY,aAAa;IACrB,uDAAW;IACX,2DAAa;AACjB,CAAC,EAHW,aAAa,KAAb,aAAa,QAGxB;AAED,IAAY,cAMX;AAND,WAAY,cAAc;IACtB,mDAAQ;IACR,mDAAQ;IACR,mDAAQ;IACR,qDAAS;IACT,qDAAS;AACb,CAAC,EANW,cAAc,KAAd,cAAc,QAMzB;;;;;;;;;;;;;;;;;;AC/FD,IAAY,uBAKX;AALD,WAAY,uBAAuB;IACjC,qEAAQ;IACR,yEAAU;IACV,yEAAU;IACV,+EAAa;AACf,CAAC,EALW,uBAAuB,KAAvB,uBAAuB,QAKlC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACLkC;AACK;AACP;AACE;AACH;AACG;AACU;AACR;AACN;AACO;AACN;AACe;AACN;AACR;AACG;AACH;AACC;AACD;AACU;AACP;AACA;AACC;AACa;AACZ;AACE;AACA;AACN;AACH;AACU;AACH;AACA;AACc;AACA;AACP;AACP;AACN;AACM;AACC;AACI;;;;;;;;;;;;;;;;;;;;;;ACtC3C,IAAY,cAgBX;AAhBD,WAAY,cAAc;IACtB,yDAAW;IACX,+DAAc;IACd,6DAAa;IAEb,2DAAY;IACZ,iEAAe;IACf,+DAAc;IAEd,2EAAoB;IACpB,+EAAsB;IACtB,6EAAqB;IAErB,6EAAqB;IACrB,oFAAyB;IACzB,kFAAwB;AAC5B,CAAC,EAhBW,cAAc,KAAd,cAAc,QAgBzB;AAED,IAAY,eAIX;AAJD,WAAY,eAAe;IACvB,iDAAM;IACN,+CAAK;IACL,iDAAM;AACV,CAAC,EAJW,eAAe,KAAf,eAAe,QAI1B;AAGD,IAAY,gBASX;AATD,WAAY,gBAAgB;IACxB,uDAAQ;IACR,qDAAO;IACP,qDAAO;IACP,iDAAK;IACL,mDAAM;IACN,mDAAM;IACN,qDAAO;IACP,qDAAO;AACX,CAAC,EATW,gBAAgB,KAAhB,gBAAgB,QAS3B;AAED,IAAY,sBAGX;AAHD,WAAY,sBAAsB;IAC9B,yEAAW;IACX,+EAAc;AAClB,CAAC,EAHW,sBAAsB,KAAtB,sBAAsB,QAGjC;AAED,IAAY,qBAQX;AARD,WAAY,qBAAqB;IAC7B,qFAAkB;IAClB,6FAAsB;IACtB,6EAAc;IACd,qFAAkB;IAClB,yEAAY;IACZ,iFAAgB;IAChB,yEAAY;AAChB,CAAC,EARW,qBAAqB,KAArB,qBAAqB,QAQhC;;;;;;;;;;;;;;;;;;ACjDD,IAAY,gBAIX;AAJD,WAAY,gBAAgB;IACxB,yDAAS;IACT,6DAAW;IACX,yDAAS;AACb,CAAC,EAJW,gBAAgB,KAAhB,gBAAgB,QAI3B;;;;;;;;;;;;;;;;;;ACJD,IAAY,gBAIX;AAJD,WAAY,gBAAgB;IACxB,6DAAW;IACX,+DAAY;IACZ,qDAAO;AACX,CAAC,EAJW,gBAAgB,KAAhB,gBAAgB,QAI3B;;;;;;;;;;;;;;;;;;ACJD,IAAY,oBAIX;AAJD,WAAY,oBAAoB;IAC5B,+DAAQ;IACR,mEAAU;IACV,+DAAQ;AACZ,CAAC,EAJW,oBAAoB,KAApB,oBAAoB,QAI/B;;;;;;;;;;;;;;;;;;ACJD,IAAY,gBAIX;AAJD,WAAY,gBAAgB;IACxB,qDAAO;IACP,qDAAO;IACP,qDAAO;AACX,CAAC,EAJW,gBAAgB,KAAhB,gBAAgB,QAI3B;;;;;;;;;;;;;;;;;;ACJD,IAAY,yBASX;AATD,WAAY,yBAAyB;IAClC,yFAAgB;IAChB,mGAAqB;IACrB,mFAAa;IACb,uFAAe;IACf,uFAAe;IACf,qFAAc;IACd,iGAAoB;IACpB,2GAAyB;AAC5B,CAAC,EATW,yBAAyB,KAAzB,yBAAyB,QASpC;;;;;;;;;;;;;;;;;;ACTD,IAAY,gBAGX;AAHD,WAAY,gBAAgB;IAC1B,yDAAS;IACT,uDAAQ;AACV,CAAC,EAHW,gBAAgB,KAAhB,gBAAgB,QAG3B;;;;;;;;;;;;;;;;;;ACHD,IAAY,iCAKX;AALD,WAAY,iCAAiC;IACzC,+FAAW;IACX,iGAAY;IACZ,yFAAQ;IACR,uFAAO;AACX,CAAC,EALW,iCAAiC,KAAjC,iCAAiC,QAK5C;;;;;;;;;;;;;;;;;;ACLD,IAAY,mBAEX;AAFD,WAAY,mBAAmB;IAC7B,2DAAO;AACT,CAAC,EAFW,mBAAmB,KAAnB,mBAAmB,QAE9B;;;;;;;;;;;;;;;;;;ACFD,IAAY,YAKX;AALD,WAAY,YAAY;IACpB,+CAAI;IACJ,+CAAI;IACJ,uDAAQ;IACR,mFAAsB;AAC1B,CAAC,EALW,YAAY,KAAZ,YAAY,QAKvB;;;;;;;;;;;;;;;;;;ACLD,IAAY,SAMX;AAND,WAAY,SAAS;IACjB,+CAAW;IACX,yCAAQ;IACR,6CAAU;IACV,6CAAU;IACV,yDAAgB;AACpB,CAAC,EANW,SAAS,KAAT,SAAS,QAMpB;;;;;;;;;;;;;;;;;;ACND,IAAY,WAOX;AAPD,WAAY,WAAW;IACnB,6CAAQ;IACR,2CAAO;IACP,2CAAO;IACP,2CAAO;IACP,6CAAS;IACT,qDAAa;AACjB,CAAC,EAPW,WAAW,KAAX,WAAW,QAOtB;;;;;;;;;;;;;;;;;;ACPD,IAAY,mBASX;AATD,WAAY,mBAAmB;IAC7B,6DAAQ;IACR,2DAAO;IACP,2DAAO;IACP,2DAAO;IACP,2DAAO;IACP,4DAAQ;IACR,4DAAQ;IACR,4DAAQ;AACV,CAAC,EATW,mBAAmB,KAAnB,mBAAmB,QAS9B;;;;;;;;;;;;;;;;;;ACTD,IAAY,gBAMX;AAND,WAAY,gBAAgB;IACxB,6DAAW;IACX,2DAAU;IACV,mEAAc;IACd,6DAAW;IACX,iEAAa;AACjB,CAAC,EANW,gBAAgB,KAAhB,gBAAgB,QAM3B;;;;;;;;;;;;;;;;;;ACND,IAAY,cAaX;AAbD,WAAY,cAAc;IACtB,mDAAQ;IACR,iDAAG;IACH,qDAAK;IACL,uDAAM;IACN,yDAAO;IACP,uDAAM;IACN,yDAAO;IACP,2DAAQ;IACR,2DAAQ;IACR,2DAAQ;IACR,wDAAM;IACN,gEAAU;AACd,CAAC,EAbW,cAAc,KAAd,cAAc,QAazB;;;;;;;;;;;;;;;;;;;ACbD,IAAY,gBAeX;AAfD,WAAY,gBAAgB;IACxB,2EAAkB;IAClB,6EAAmB;IACnB,iEAAa;IACb,qEAAe;IACf,iFAAqB;IACrB,+EAAoB;IACpB,2EAAkB;IAClB,iFAAqB;IACrB,+EAAoB;IACpB,qEAAe;IACf,kEAAc;IACd,oEAAe;IAEf,yDAAU;AACd,CAAC,EAfW,gBAAgB,KAAhB,gBAAgB,QAe3B;AAED,IAAY,qBAqCX;AArCD,WAAY,qBAAqB;IAC7B,kEAAS;IACT,uFAAe;IACf,qFAAc;IACd,2EAAS;IACT,iGAAoB;IACpB,6FAAkB;IAClB,yFAAgB;IAChB,uGAAuB;IACvB,6GAA0B;IAC1B,+GAA2B;IAC3B,uGAAuB;IACvB,8GAA0B;IAC1B,oHAA6B;IAC7B,wHAA+B;IAC/B,0HAAgC;IAChC,oGAAqB;IACrB,8FAAkB;IAClB,4GAAyB;IACzB,kHAA4B;IAC5B,kGAAoB;IACpB,oGAAqB;IACrB,wGAAuB;IACvB,wHAA+B;IAC/B,8HAAkC;IAClC,oGAAqB;IACrB,sGAAsB;IACtB,4FAAiB;IACjB,8FAAkB;IAClB,sGAAsB;IACtB,kGAAoB;IACpB,4FAAiB;IACjB,wHAA+B;IAC/B,gIAAmC;IACnC,oGAAqB;IACrB,8FAAkB;IAClB,wFAAe;AACnB,CAAC,EArCW,qBAAqB,KAArB,qBAAqB,QAqChC;;;;;;;;;;;;;;;;;;;ACtDD,IAAY,uBAUX;AAVD,WAAY,uBAAuB;IAC/B,+EAAc;IACd,mEAAQ;IACR,qFAAiB;IACjB,iFAAe;IACf,yFAAmB;IACnB,+EAAc;IACd,yFAAmB;IACnB,mGAAwB;IACxB,6EAAa;AACjB,CAAC,EAVW,uBAAuB,KAAvB,uBAAuB,QAUlC;AAED,IAAY,sBAMX;AAND,WAAY,sBAAsB;IAC9B,yEAAW;IACX,+DAAM;IACN,2EAAY;IACZ,uEAAU;IACV,2EAAY;AAChB,CAAC,EANW,sBAAsB,KAAtB,sBAAsB,QAMjC;;;;;;;;;;;;;;;;;;AClBD,IAAY,cAGX;AAHD,WAAY,cAAc;IACxB,2DAAY;IACZ,uDAAU;AACZ,CAAC,EAHW,cAAc,KAAd,cAAc,QAGzB;;;;;;;;;;;;;;;;;;;;ACH6B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACAoB;AACX;AACC;AAMxC,IAAa,aAAa,GAA1B,MAAa,aAAa;IAIxB,YACU,WAAuB;QAAvB,gBAAW,GAAX,WAAW,CAAY;QAJjC,iBAAY,GAAG,kDAAU,CAAC,OAAO,CAAC;QAClC,yBAAoB,GAAY,KAAK,CAAC;IAIlC,CAAC;IAEL,QAAQ;QACN,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,CAAC;IAC7B,CAAC;IAED,WAAW;QACT,IAAI,CAAC,WAAW,CAAC,SAAS,EAAE,CAAC;IAC/B,CAAC;IAED,qBAAqB,CAAC,MAAM;QAC1B,IAAI,CAAC,oBAAoB,GAAG,MAAM,CAAC;IACrC,CAAC;CACF;;YAdwB,oDAAU;;AALtB,aAAa;IAJzB,+DAAS,CAAC;QACT,QAAQ,EAAE,wBAAwB;QAClC,0KAAoC;KACrC,CAAC;qCAMuB,oDAAU;GALtB,aAAa,CAmBzB;AAnByB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACRe;AAC6B;AACJ;AACnB;AACgC;AACnC;AACY;AACN;AACF;AACN;AACc;AACd;AACQ;AACQ;AACN;AACI;AACf;AACe;AACR;AACM;AACU;AACd;AACN;AACM;AACF;AACY;AACJ;AACH;AACJ;AACR;AACmB;AACQ;AACxB;AAyJtB;AA6CF;AAKE;AACa;AAOZ;AA4UvB,IAAa,UAAU,GAAvB,MAAa,UAAU;CAAI;AAAd,UAAU;IA1UtB,8DAAQ,CAAC;QACR,YAAY,EAAE;YACZ,8DAAa;YACb,kEAAqB;YACrB,mEAAsB;YACtB,mEAAsB;YACtB,4DAAe;YACf,mEAAsB;YACtB,kEAAqB;YACrB,uEAA0B;YAC1B,sEAAyB;YACzB,sEAAyB;YACzB,qEAAwB;YACxB,qEAAwB;YACxB,sEAAyB;YACzB,+DAAkB;YAClB,yEAA4B;YAC5B,uEAA0B;YAC1B,0EAA6B;YAC7B,2EAA8B;YAC9B,0EAA6B;YAC7B,6EAAgC;YAChC,2EAA8B;YAC9B,0EAA6B;YAC7B,0EAA6B;YAC7B,4EAA+B;YAC/B,yEAA4B;YAC5B,yEAA4B;YAC5B,0EAA6B;YAC7B,4EAA+B;YAC/B,sFAAyC;YACzC,wEAA2B;YAC3B,oEAAuB;YACvB,2EAA8B;YAC9B,qEAAwB;YACxB,4EAA+B;YAC/B,qEAAwB;YACxB,2EAA8B;YAC9B,iFAAoC;YACpC,gFAAmC;YACnC,mEAAsB;YACtB,0EAA6B;YAC7B,iFAAoC;YACpC,kFAAqC;YACrC,sFAAyC;YACzC,6EAAgC;YAChC,yEAA4B;YAC5B,kEAAqB;YACrB,kEAAqB;YACrB,+DAAkB;YAClB,0EAA6B;YAC7B,6DAAgB;YAChB,4DAAe;YACf,4DAAe;YACf,6DAAgB;YAChB,6EAAgC;YAChC,+EAAkC;YAClC,gDAAQ;YACR,0EAA6B;YAC7B,wEAA2B;YAC3B,wEAA2B;YAC3B,+EAAkC;YAClC,kFAAqC;YACrC,6FAAgD;YAChD,+FAAkD;YAClD,2EAA8B;YAC9B,yEAA4B;YAC5B,yEAA4B;YAC5B,4DAAe;YACf,gEAAmB;YACnB,6DAAgB;YAChB,gEAAmB;YACnB,mEAAsB;YACtB,iEAAoB;YACpB,iEAAoB;YACpB,uEAA0B;YAC1B,qEAAwB;YACxB,gEAAmB;YACnB,oEAAuB;YACvB,qEAAwB;YACxB,oEAAuB;YACvB,yEAA4B;YAC5B,yEAA4B;YAC5B,wEAA2B;YAC3B,uEAA0B;YAC1B,0EAA6B;YAC7B,uEAA0B;YAC1B,yEAA4B;YAC5B,0EAA6B;YAC7B,oEAAuB;YACvB,6EAAgC;YAChC,2EAA8B;YAC9B,sEAAyB;YACzB,uEAA0B;YAC1B,wEAA2B;YAC3B,uEAA0B;YAC1B,4EAA+B;YAC/B,mEAAsB;YACtB,2EAA8B;YAC9B,8EAAiC;YACjC,qEAAwB;YACxB,qEAAwB;YACxB,0EAA6B;YAC7B,oEAAuB;YACvB,iFAAoC;YACpC,oEAAuB;YACvB,sFAAyC;YACzC,qFAAwC;YACxC,mEAAsB;YACtB,sEAAyB;YACzB,wEAA2B;YAC3B,iFAAoC;YACpC,oFAAuC;YACvC,+EAAkC;YAClC,uEAA0B;YAC1B,4EAA+B;YAC/B,gFAAmC;YACnC,sFAAyC;YACzC,gFAAmC;YACnC,wFAA2C;YAC3C,uFAA0C;YAC1C,uFAA0C;YAC1C,wEAA2B;YAC3B,kEAAqB;YACrB,sEAAyB;YACzB,wEAA2B;YAC3B,8EAAiC;YACjC,uEAA0B;YAC1B,oEAAuB;YACvB,0EAA6B;YAC7B,yEAA4B;YAC5B,0EAA6B;YAC7B,yEAA4B;YAC5B,wEAA2B;YAC3B,sEAAyB;YACzB,4EAA+B;YAC/B,0EAA6B;YAC7B,qFAAwC;YACxC,iFAAoC;YACpC,6EAAgC;YAChC,wEAA2B;YAC3B,8EAAiC;YACjC,6EAAgC;YAChC,kFAAqC;YACrC,mEAAsB;YACtB,8DAAiB;YACjB,6EAAgC;YAChC,8EAAiC;YACjC,+EAAkC;YAClC,wEAA2B;YAC3B,yEAA4B;YAC5B,6EAAgC;YAChC,yEAA4B;YAC5B,+EAAkC;YAClC,yEAA4B;YAC5B,wEAA2B;YAC3B,yEAA4B;YAC5B,+EAAkC;YAClC,mFAAsC;YACtC,uEAA0B;YAC1B,gFAAmC;YACnC,2EAA8B;SAC/B;QACD,OAAO,EAAE;YACP,0DAAW;YACX,4DAAmB;YACnB,kEAAmB;YACnB,4FAAuB;YACvB,yDAAW;YACX,qEAAiB;YACjB,+DAAc;YACd,sEAAiB;YACjB,6DAAa;YACb,uDAAU;YACV,gEAAc;YACd,0DAAW;YACX,sEAAiB;YACjB,wDAAU;YACV,gEAAc;YACd,wEAAkB;YAClB,kEAAe;YACf,8DAAa;YACb,gEAAc;YACd,0EAAmB;YACnB,sEAAiB;YACjB,8DAAa;YACb,sEAAiB;YACjB,sEAAiB;YACjB,8EAAqB;YACrB,oEAAgB;YAChB,kFAAsB;YACtB,0DAAW;YACX,uDAAa,CAAC,OAAO,EAAE;YACvB,4DAAY,CAAC,QAAQ,CAAC;gBACpB;oBACE,IAAI,EAAE,mDAAU,CAAC,UAAU;oBAC3B,SAAS,EAAE,8DAAa;oBACxB,WAAW,EAAE,CAAC,sDAAS,CAAC;oBACxB,IAAI,EAAE,EAAE,YAAY,EAAE,qDAAY,CAAC,YAAY,EAAE;oBACjD,QAAQ,EAAE,gEAAkB;iBAC7B;aACF,CAAC;YACF,4DAAY,CAAC,QAAQ,CAAC;gBACpB;oBACE,IAAI,EAAE,mDAAU,CAAC,SAAS;oBAC1B,SAAS,EAAE,8DAAa;oBACxB,WAAW,EAAE,CAAC,sDAAS,CAAC;oBACxB,IAAI,EAAE,EAAE,YAAY,EAAE,qDAAY,CAAC,WAAW,EAAE;oBAChD,QAAQ,EAAE,+DAAiB;iBAC5B;aACF,CAAC;YACF,4DAAY,CAAC,QAAQ,CAAC;gBACpB;oBACE,IAAI,EAAE,mDAAU,CAAC,MAAM;oBACvB,SAAS,EAAE,8DAAa;oBACxB,WAAW,EAAE,CAAC,sDAAS,CAAC;oBACxB,IAAI,EAAE,EAAE,YAAY,EAAE,qDAAY,CAAC,MAAM,EAAE;oBAC3C,QAAQ,EAAE,0DAAY;iBACvB;aACF,CAAC;YACF,4DAAY,CAAC,QAAQ,CAAC;gBACpB;oBACE,IAAI,EAAE,mDAAU,CAAC,YAAY;oBAC7B,SAAS,EAAE,8DAAa;oBACxB,WAAW,EAAE,CAAC,sDAAS,CAAC;oBACxB,IAAI,EAAE,EAAE,YAAY,EAAE,qDAAY,CAAC,WAAW,EAAE;oBAChD,QAAQ,EAAE,+DAAiB;iBAC5B;aACF,CAAC;YACF,4DAAY,CAAC,QAAQ,CAAC;gBACpB;oBACE,IAAI,EAAE,mDAAU,CAAC,UAAU;oBAC3B,SAAS,EAAE,8DAAa;oBACxB,WAAW,EAAE,CAAC,sDAAS,CAAC;oBACxB,IAAI,EAAE,EAAE,YAAY,EAAE,qDAAY,CAAC,SAAS,EAAE;oBAC9C,QAAQ,EAAE,6DAAe;iBAC1B;aACF,CAAC;YACF,4DAAY,CAAC,QAAQ,CAAC;gBACpB;oBACE,IAAI,EAAE,WAAW;oBACjB,SAAS,EAAE,8DAAa;oBACxB,QAAQ,EAAE,+DAAiB;iBAC5B;aACF,CAAC;YACF,4DAAY,CAAC,QAAQ,CAAC;gBACpB;oBACE,IAAI,EAAE,iBAAiB;oBACvB,SAAS,EAAE,8DAAa;oBACxB,QAAQ,EAAE,gEAAkB;iBAC7B;aACF,CAAC;YACF,4DAAY,CAAC,QAAQ,CAAC;gBACpB;oBACE,IAAI,EAAE,wBAAwB;oBAC9B,SAAS,EAAE,8DAAa;oBACxB,QAAQ,EAAE,+DAAiB;iBAC5B;aACF,CAAC;YACF,4DAAY,CAAC,QAAQ,CAAC;gBACpB;oBACE,IAAI,EAAE,gBAAgB;oBACtB,SAAS,EAAE,8DAAa;oBACxB,QAAQ,EAAE,+DAAiB;iBAC5B;aACF,CAAC;YACF,4DAAY,CAAC,QAAQ,CAAC;gBACpB;oBACE,IAAI,EAAE,kBAAkB;oBACxB,SAAS,EAAE,8DAAa;oBACxB,QAAQ,EAAE,0DAAY;iBACvB;aACF,CAAC;YACF,4DAAY,CAAC,QAAQ,CAAC;gBACpB;oBACE,IAAI,EAAE,eAAe;oBACrB,SAAS,EAAE,8DAAa;oBACxB,QAAQ,EAAE,6DAAe;iBAC1B;aACF,CAAC;SACH;QAED,SAAS,EAAE;YACT,sDAAS;YACT,qEAA0B;YAC1B,wEAA6B;YAC7B,iEAAsB;YACtB,wEAA6B;YAC7B,iEAAsB;YACtB,8DAAmB;YACnB,8DAAmB;YACnB,qEAA0B;YAC1B,kEAAuB;YACvB,yEAA8B;YAC9B,iEAAsB;YACtB,wEAA6B;YAC7B,iEAAsB;YACtB,wEAA6B;YAC7B,8DAAmB;YACnB,qDAAU;YACV,yEAAkB;YAClB,2DAAgB;YAChB,kEAAuB;YACvB,wEAA6B;YAC7B,iEAAsB;YACtB,2DAAgB;YAChB,kEAAuB;YACvB,wDAAa;YACb,iEAAsB;YACtB,0DAAe;YACf,4DAAiB;YACjB,+DAAoB;YACpB,sEAA2B;YAC3B,mEAAwB;YACxB,0EAA+B;YAC/B,mEAAwB;YACxB,qEAA0B;YAC1B,8DAAmB;YACnB,sEAA2B;YAC3B,+DAAoB;YACpB,oEAAyB;YACzB,2EAAgC;YAChC,8DAAmB;YACnB,qEAA0B;YAC1B,iEAAsB;YACtB,wEAA6B;YAC7B,sDAAW;YACX,qEAA0B;SAC3B;KACF,CAAC;GACW,UAAU,CAAI;AAAJ;;;;;;;;;;;;;;;;;;;;;;;;AC9jBsB;AA+BvB;AAEf,MAAM,iBAAiB,GAAW;IACvC;QACE,IAAI,EAAE,EAAE;QACR,UAAU,EAAE,yDAAc,CAAC,SAAS;QACpC,SAAS,EAAE,MAAM;KAClB;IACD;QACE,IAAI,EAAE,yDAAc,CAAC,SAAS;QAC9B,SAAS,EAAE,iEAAqB;KACjC;IACD;QACE,IAAI,EAAE,yDAAc,CAAC,SAAS;QAC9B,SAAS,EAAE,iEAAqB;KACjC;IACD;QACE,IAAI,EAAE,yDAAc,CAAC,mBAAmB;QACxC,SAAS,EAAE,8EAAkC;KAC9C;IACD;QACE,IAAI,EAAE,yDAAc,CAAC,cAAc;QACnC,SAAS,EAAE,2DAAe;KAC3B;IACD;QACE,IAAI,EAAE,yDAAc,CAAC,aAAa;QAClC,SAAS,EAAE,mEAAuB;KACnC;IACD;QACE,IAAI,EAAE,yDAAc,CAAC,4BAA4B;QACjD,SAAS,EAAE,gFAAoC;KAChD;IACD;QACE,IAAI,EAAE,yDAAc,CAAC,mBAAmB;QACxC,SAAS,EAAE,yEAA6B;KACzC;IACD;QACE,IAAI,EAAE,yDAAc,CAAC,iBAAiB;QACtC,SAAS,EAAE,wEAA4B;KACxC;IACD;QACE,IAAI,EAAE,yDAAc,CAAC,cAAc;QACnC,SAAS,EAAE,2DAAe;KAC3B;IACD;QACE,IAAI,EAAE,yDAAc,CAAC,iBAAiB;QACtC,SAAS,EAAE,sEAA0B;KACtC;IACD;QACE,IAAI,EAAE,yDAAc,CAAC,oBAAoB;QACzC,SAAS,EAAE,0EAA8B;KAC1C;IACD;QACE,IAAI,EAAE,GAAG,yDAAc,CAAC,eAAe,MAAM;QAC7C,SAAS,EAAE,qEAAyB;KACrC;IACD;QACE,IAAI,EAAE,yDAAc,CAAC,mBAAmB;QACxC,SAAS,EAAE,yEAA6B;KACzC;IACD;QACE,IAAI,EAAE,yDAAc,CAAC,iBAAiB;QACtC,SAAS,EAAE,wEAA4B;KACxC;IACD;QACE,IAAI,EAAE,yDAAc,CAAC,cAAc;QACnC,SAAS,EAAE,qEAAyB;KACrC;IACD;QACE,IAAI,EAAE,yDAAc,CAAC,aAAa;QAClC,SAAS,EAAE,oEAAwB;KACpC;IACD;QACE,IAAI,EAAE,yDAAc,CAAC,WAAW;QAChC,SAAS,EAAE,kEAAsB;KAClC;IACD;QACE,IAAI,EAAE,yDAAc,CAAC,cAAc;QACnC,SAAS,EAAE,2DAAe;KAC3B;IACD;QACE,IAAI,EAAE,GAAG,yDAAc,CAAC,uBAAuB,MAAM;QACrD,SAAS,EAAE,+DAAmB;KAC/B;IACD;QACE,IAAI,EAAE,yDAAc,CAAC,SAAS;QAC9B,SAAS,EAAE,mEAAuB;KACnC;IACD;QACE,IAAI,EAAE,yDAAc,CAAC,WAAW;QAChC,SAAS,EAAE,kEAAsB;KAClC;IACD;QACE,IAAI,EAAE,yDAAc,CAAC,SAAS;QAC9B,SAAS,EAAE,gEAAoB;KAChC;CACF,CAAC;AAEK,MAAM,kBAAkB,GAAW;IACxC;QACE,IAAI,EAAE,EAAE;QACR,UAAU,EAAE,yDAAc,CAAC,cAAc;QACzC,SAAS,EAAE,MAAM;KAClB;IACD;QACE,IAAI,EAAE,yDAAc,CAAC,aAAa;QAClC,SAAS,EAAE,oEAAwB;KACpC;IACD;QACE,IAAI,EAAE,yDAAc,CAAC,cAAc;QACnC,SAAS,EAAE,qEAAyB;KACrC;IACD;QACE,IAAI,EAAE,yDAAc,CAAC,aAAa;QAClC,SAAS,EAAE,oEAAwB;KACpC;IACD;QACE,IAAI,EAAE,yDAAc,CAAC,OAAO;QAC5B,SAAS,EAAE,+DAAmB;KAC/B;IACD;QACE,IAAI,EAAE,yDAAc,CAAC,gBAAgB;QACrC,SAAS,EAAE,uEAA2B;KACvC;IACD;QACE,IAAI,EAAE,yDAAc,CAAC,SAAS;QAC9B,SAAS,EAAE,iEAAqB;KACjC;IACD;QACE,IAAI,EAAE,yDAAc,CAAC,aAAa;QAClC,SAAS,EAAE,mEAAuB;KACnC;IACD;QACE,IAAI,EAAE,yDAAc,CAAC,4BAA4B;QACjD,SAAS,EAAE,gFAAoC;KAChD;IACD;QACE,IAAI,EAAE,yDAAc,CAAC,mBAAmB;QACxC,SAAS,EAAE,yEAA6B;KACzC;IACD;QACE,IAAI,EAAE,yDAAc,CAAC,iBAAiB;QACtC,SAAS,EAAE,wEAA4B;KACxC;IACD;QACE,IAAI,EAAE,yDAAc,CAAC,iBAAiB;QACtC,SAAS,EAAE,sEAA0B;KACtC;IACD;QACE,IAAI,EAAE,yDAAc,CAAC,oBAAoB;QACzC,SAAS,EAAE,0EAA8B;KAC1C;IACD;QACE,IAAI,EAAE,GAAG,yDAAc,CAAC,eAAe,MAAM;QAC7C,SAAS,EAAE,qEAAyB;KACrC;IACD;QACE,IAAI,EAAE,yDAAc,CAAC,mBAAmB;QACxC,SAAS,EAAE,yEAA6B;KACzC;IACD;QACE,IAAI,EAAE,yDAAc,CAAC,iBAAiB;QACtC,SAAS,EAAE,wEAA4B;KACxC;IACD;QACE,IAAI,EAAE,yDAAc,CAAC,SAAS;QAC9B,SAAS,EAAE,mEAAuB;KACnC;IACD;QACE,IAAI,EAAE,yDAAc,CAAC,WAAW;QAChC,SAAS,EAAE,kEAAsB;KAClC;IACD;QACE,IAAI,EAAE,yDAAc,CAAC,SAAS;QAC9B,SAAS,EAAE,gEAAoB;KAChC;CACF,CAAC;AAEK,MAAM,iBAAiB,GAAW;IACvC;QACE,IAAI,EAAE,yDAAc,CAAC,aAAa;QAClC,SAAS,EAAE,mEAAuB;KACnC;IACD;QACE,IAAI,EAAE,yDAAc,CAAC,4BAA4B;QACjD,SAAS,EAAE,gFAAoC;KAChD;IACD;QACE,IAAI,EAAE,yDAAc,CAAC,mBAAmB;QACxC,SAAS,EAAE,yEAA6B;KACzC;IACD;QACE,IAAI,EAAE,yDAAc,CAAC,iBAAiB;QACtC,SAAS,EAAE,wEAA4B;KACxC;IACD;QACE,IAAI,EAAE,yDAAc,CAAC,iBAAiB;QACtC,SAAS,EAAE,sEAA0B;KACtC;IACD;QACE,IAAI,EAAE,yDAAc,CAAC,oBAAoB;QACzC,SAAS,EAAE,0EAA8B;KAC1C;IACD;QACE,IAAI,EAAE,GAAG,yDAAc,CAAC,eAAe,MAAM;QAC7C,SAAS,EAAE,qEAAyB;KACrC;IACD;QACE,IAAI,EAAE,yDAAc,CAAC,mBAAmB;QACxC,SAAS,EAAE,yEAA6B;KACzC;IACD;QACE,IAAI,EAAE,yDAAc,CAAC,iBAAiB;QACtC,SAAS,EAAE,wEAA4B;KACxC;IACD;QACE,IAAI,EAAE,yDAAc,CAAC,SAAS;QAC9B,SAAS,EAAE,mEAAuB;KACnC;IACD;QACE,IAAI,EAAE,yDAAc,CAAC,WAAW;QAChC,SAAS,EAAE,kEAAsB;KAClC;IACD;QACE,IAAI,EAAE,yDAAc,CAAC,SAAS;QAC9B,SAAS,EAAE,gEAAoB;KAChC;CACF,CAAC;AACK,MAAM,YAAY,GAAW;IAClC;QACE,IAAI,EAAE,EAAE;QACR,UAAU,EAAE,yDAAc,CAAC,SAAS;QACpC,SAAS,EAAE,MAAM;KAClB;IACD;QACE,IAAI,EAAE,yDAAc,CAAC,SAAS;QAC9B,SAAS,EAAE,mEAAuB;KACnC;IACD;QACE,IAAI,EAAE,yDAAc,CAAC,WAAW;QAChC,SAAS,EAAE,kEAAsB;KAClC;CACF,CAAC;AAEK,MAAM,eAAe,GAAW;IACrC;QACE,IAAI,EAAE,EAAE;QACR,UAAU,EAAE,yDAAc,CAAC,UAAU;QACrC,SAAS,EAAE,MAAM;KAClB;IACD;QACE,IAAI,EAAE,yDAAc,CAAC,UAAU;QAC/B,SAAS,EAAE,iEAAqB;KACjC;IACD;QACE,IAAI,EAAE,yDAAc,CAAC,iBAAiB;QACtC,SAAS,EAAE,uEAA2B;KACvC;IACD;QACE,IAAI,EAAE,yDAAc,CAAC,gBAAgB;QACrC,SAAS,EAAE,sEAA0B;KACtC;IACD;QACE,IAAI,EAAE,yDAAc,CAAC,qBAAqB;QAC1C,SAAS,EAAE,2EAA+B;KAC3C;CACF,CAAC;;;;;;;;;;;;;;;;;;AC1SK,MAAM,mBAAmB;CAK/B;;;;;;;;;;;;;;;;;;;;;ACL0C;AAGpC,MAAM,8BAA8B;IAiBvC;QACI,IAAI,CAAC,QAAQ,GAAG,sDAAe,CAAC,aAAa,CAAC;IAClD,CAAC;CACJ;AAEM,MAAM,kCAAkC;IAoD3C;QA3BA,4BAAuB,GAAW,IAAI,CAAC;QAGvC,6BAAwB,GAAW,IAAI,CAAC;QAyBpC,IAAI,CAAC,aAAa,GAAG,IAAI,UAAU,EAAE,CAAC;QACtC,IAAI,CAAC,aAAa,GAAG,IAAI,UAAU,EAAE,CAAC;QACtC,IAAI,CAAC,QAAQ,GAAG,sDAAe,CAAC,aAAa,CAAC;IAClD,CAAC;CACJ;AAEM,MAAM,UAAU;CAGtB;;;;;;;;;;;;;;;;;;;;;;;;ACrFM,MAAM,mBAAmB;IAU5B;QACI,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC;QACZ,IAAI,CAAC,WAAW,GAAG,EAAE,CAAC;QACtB,IAAI,CAAC,WAAW,GAAG,IAAI,mBAAmB,EAAE,CAAC;IACjD,CAAC;IAED,UAAU;QACN,IAAI,CAAC,WAAW,GAAG,EAAE,CAAC;QACtB,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;QAClB,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;QAC1B,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;QACvB,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC;QACpB,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;QACpB,IAAI,CAAC,WAAW,CAAC,KAAK,GAAG,IAAI,CAAC;QAC9B,IAAI,CAAC,WAAW,CAAC,OAAO,GAAG,IAAI,CAAC;IACpC,CAAC;CACJ;AAEM,MAAM,mBAAmB;IAK5B,UAAU;QACN,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;QAClB,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;QACpB,IAAI,CAAC,SAAS,GAAC,IAAI,CAAC;IACxB,CAAC;CACJ;AAEM,MAAM,uBAAuB;CAOnC;AAEM,MAAM,0BAA0B;CAKtC;AAEM,MAAM,sBAAsB;CAKlC;AAEM,MAAM,uBAAuB;CAGnC;AAEM,MAAM,iBAAiB;IAI1B;QACI,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC;IAChB,CAAC;CACJ;;;;;;;;;;;;;;;;;;AC7EM,MAAM,uBAAuB;CAKnC;;;;;;;;;;;;;;;;;;ACHM,MAAM,kBAAkB;IAa7B;QACE,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC;QACZ,IAAI,CAAC,aAAa,GAAG,CAAC,CAAC;IACzB,CAAC;CACF;;;;;;;;;;;;;;;;;;;;;;ACnBM,MAAM,qBAAqB;IAKhC,UAAU;QACR,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC;QACd,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC;IACf,CAAC;CACF;AAEM,MAAM,oBAAoB;IAW/B,gBAAe,CAAC;CACjB;AAEM,MAAM,4BAA4B;CAGxC;AAEM,MAAM,iBAAiB;IAK5B;QACI,2CAA2C;QAC7C,6CAA6C;QAC7C,6CAA6C;QAC7C,2CAA2C;QAC3C,4CAA4C;QAC5C,8CAA8C;QAC9C,6CAA6C;QAC7C,8CAA8C;QAC/C,2CAA2C;QAC1C,4CAA4C;QAC5C,8CAA8C;QAC9C,2CAA2C;IAC7C,CAAC;CACF;AAEM,MAAM,4BAA4B;IAOvC,gBAAe,CAAC;CACjB;;;;;;;;;;;;;;;;;;ACzDM,MAAM,kBAAkB;CAS9B;;;;;;;;;;;;;;;;;;;;ACTM,MAAM,aAAa;CAWzB;AAEM,MAAM,oBAAoB;CAWhC;AAEM,MAAM,qBAAqB;CAUjC;;;;;;;;;;;;;;;;;;;;;;;;;ACnCM,MAAM,qBAAqB;CA2BjC;AAEM,MAAM,4BAA4B;CAiBxC;AAEM,MAAM,6BAA6B;CAiBzC;AAEM,MAAM,2BAA2B;CA2BvC;AAEM,MAAM,eAAe;CAK3B;AAEM,MAAM,uBAAuB;CAKnC;AAEM,MAAM,2BAA2B;CAGvC;AAEM,MAAM,wBAAwB;CAGpC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACzHyC;AACD;;;;;;;;;;;;;;;;;;;;ACDoB;AAEtD,MAAM,gBAAgB;IAU3B;QACE,IAAI,CAAC,QAAQ,GAAG,kEAA2B,CAAC,SAAS,CAAC;QACtD,IAAI,CAAC,IAAI,GAAG,IAAI,0BAA0B,EAAE,CAAC;QAC7C,IAAI,CAAC,IAAI,CAAC,IAAI,GAAG,MAAM,CAAC;QACxB,IAAI,CAAC,GAAG,GAAG,IAAI,0BAA0B,EAAE,CAAC;QAC5C,IAAI,CAAC,GAAG,CAAC,IAAI,GAAG,KAAK,CAAC;QACtB,IAAI,CAAC,KAAK,GAAG,IAAI,0BAA0B,EAAE,CAAC;QAC9C,IAAI,CAAC,KAAK,CAAC,IAAI,GAAG,OAAO,CAAC;QAC1B,IAAI,CAAC,IAAI,GAAG,IAAI,0BAA0B,EAAE,CAAC;QAC7C,IAAI,CAAC,IAAI,CAAC,IAAI,GAAG,MAAM,CAAC;QACxB,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC;IACd,CAAC;IAED,UAAU;QACR,IAAI,CAAC,QAAQ,GAAG,kEAA2B,CAAC,SAAS,CAAC;QACtD,IAAI,CAAC,IAAI,GAAG,IAAI,0BAA0B,EAAE,CAAC;QAC7C,IAAI,CAAC,IAAI,CAAC,IAAI,GAAG,MAAM,CAAC;QACxB,IAAI,CAAC,GAAG,GAAG,IAAI,0BAA0B,EAAE,CAAC;QAC5C,IAAI,CAAC,GAAG,CAAC,IAAI,GAAG,KAAK,CAAC;QACtB,IAAI,CAAC,KAAK,GAAG,IAAI,0BAA0B,EAAE,CAAC;QAC9C,IAAI,CAAC,KAAK,CAAC,IAAI,GAAG,OAAO,CAAC;QAC1B,IAAI,CAAC,IAAI,GAAG,IAAI,0BAA0B,EAAE,CAAC;QAC7C,IAAI,CAAC,IAAI,CAAC,IAAI,GAAG,MAAM,CAAC;IAC1B,CAAC;CACF;AAEM,MAAM,0BAA0B;CAUtC;;;;;;;;;;;;;;;;;;;;;AC5CgG;AAG1F,MAAM,yBAAyB;IAapC;QACE,IAAI,CAAC,sBAAsB,GAAG,IAAI,CAAC;IACrC,CAAC;CACF;AAEM,MAAM,2BAA2B;CAWvC;AAEM,MAAM,iBAAiB;IA0B5B;QACE,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC;QACZ,IAAI,CAAC,WAAW,GAAG,8DAAuB,CAAC,IAAI,CAAC;QAEhD,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC;QAChB,IAAI,CAAC,MAAM,GAAG,GAAG,CAAC;QAClB,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC;QAEjB,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;QAChB,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC;QAEd,IAAI,CAAC,UAAU,GAAG,EAAE,CAAC;QAErB,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;QACzB,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,YAAY,CAAC;QACrC,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC;QACd,IAAI,CAAC,WAAW,GAAG,EAAE,CAAC;QAEtB,IAAI,CAAC,oBAAoB,EAAE,CAAC;IAC9B,CAAC;IAED,mBAAmB;QACjB,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC;QAChB,IAAI,CAAC,MAAM,GAAG,GAAG,CAAC;QAClB,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC;QAEjB,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;QACzB,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,YAAY,CAAC;QACrC,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC;QACf,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC;QAC1C,IAAI,CAAC,kBAAkB,EAAE,CAAC;QAC1B,IAAI,CAAC,oBAAoB,EAAE,CAAC;IAC9B,CAAC;IAED,sBAAsB;QACpB,IAAI,CAAC,oBAAoB,EAAE,CAAC;QAC5B,IAAI,CAAC,sBAAsB,EAAE,CAAC;IAChC,CAAC;IAEO,sBAAsB;QAC5B,IAAI,CAAC,IAAI,GAAG,CAAC,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC;QAChD,IAAI,CAAC,MAAM;YACT,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC,GAAG,GAAG,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC;IAChD,CAAC;IAED,qGAAqG;IACrG,aAAa;QACX,IAAI,IAAI,CAAC,WAAW,KAAK,8DAAuB,CAAC,IAAI,EAAE;YACrD,IAAI,IAAI,CAAC,WAAW,IAAI,8DAAuB,CAAC,MAAM,IAAI,IAAI,CAAC,WAAW,IAAI,8DAAuB,CAAC,MAAM,EAAE;gBAC5G,IAAI,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,WAAW,IAAI,8DAAuB,CAAC,MAAM,EAAE;oBAClF,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,IAAI,GAAG,CAAC,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,MAAM;iBAClE;qBAAM;oBACL,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,IAAI,GAAG,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC;iBACpE;aACF;iBACI;gBACH,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC;gBAClC,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,WAAW,CAAC;gBACrC,IAAI,IAAI,CAAC,YAAY,GAAG,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE;oBACvC,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;oBACpC,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,YAAY,CAAC;iBACtC;gBAED,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC;gBAClE,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC;aAC3C;SACF;IACH,CAAC;IAED,sGAAsG;IACtG,cAAc;QACZ,IAAI,IAAI,CAAC,WAAW,KAAK,8DAAuB,CAAC,MAAM,EAAE;YACvD,IAAI,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,KAAK,EAAE;gBAC5B,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,IAAI,GAAG,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC;aACpE;iBAAM;gBACL,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,IAAI,GAAG,CAAC,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC;aACnE;SACF;QAED,IAAI,IAAI,CAAC,WAAW,KAAK,8DAAuB,CAAC,SAAS,EAAE;YAC1D,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC;YAClC,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,WAAW,CAAC;YAErC,IAAI,IAAI,CAAC,YAAY,GAAG,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE;gBACvC,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;gBACpC,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,YAAY,CAAC;aACtC;YAED,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC;YAClE,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC;SAC3C;IACH,CAAC;IAED,yGAAyG;IACzG,kBAAkB;QAChB,IAAI,IAAI,CAAC,WAAW,IAAI,8DAAuB,CAAC,IAAI,EAAE;YACpD,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC;SACf;aAAM;YACL,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC;YAE1C,IAAI,IAAI,CAAC,WAAW,IAAI,8DAAuB,CAAC,MAAM,EAAE;gBACtD,IAAI,CAAC,YAAY,GAAG,CAAC,CAAC;gBACtB,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC;aACnC;iBACI,IAAI,IAAI,CAAC,WAAW,IAAI,8DAAuB,CAAC,MAAM,EAAE;gBAC3D,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC;gBAClC,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,WAAW,CAAC;aACtC;iBACI;gBACH,IAAI,MAAM,GAAG,IAAI,CAAC,IAAI,GAAG,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC;gBACxC,IAAI,MAAM,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,GAAG,CAAC,IAAI,MAAM,GAAG,CAAC,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE;oBAC/D,IAAI,CAAC,YAAY,GAAG,MAAM,CAAC;oBAC3B,IAAI,CAAC,WAAW,GAAG,MAAM,CAAC;iBAC3B;aACF;SACF;QAED,IAAI,KAAK,GAAG,CAAC,CAAC;QACd,IAAI,CAAC,IAAI,GAAG,CAAC,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC;QAChD,IAAI,CAAC,MAAM;YACT,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC,GAAG,GAAG,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC;QAG9C,IAAI,IAAI,CAAC,WAAW,KAAK,8DAAuB,CAAC,SAAS,EAAE;YAC1D,IAAI,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,MAAM,EAAE;gBAC5B,KAAK,GAAG,CAAC,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;aAC5D;iBAAM;gBACL,KAAK,GAAG,CAAC,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;aAC7D;YAED,IAAI,KAAK,GAAG,EAAE,GAAG,EAAE,IAAI,KAAK,GAAG,IAAI,CAAC,IAAI,GAAG,EAAE,EAAE;gBAC7C,IAAI,CAAC,IAAI,GAAG,KAAK,GAAG,EAAE,GAAG,CAAC,CAAC;gBAC3B,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC,GAAG,GAAG,GAAG,IAAI,CAAC,EAAE,CAAC;aACzD;SAEF;aAAM;YACL,IAAI,IAAI,CAAC,WAAW,KAAK,8DAAuB,CAAC,MAAM;gBACrD,CAAC,IAAI,CAAC,WAAW,KAAK,8DAAuB,CAAC,MAAM,IAAI,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,EAAE;gBACnF,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;aACvE;iBAAM;gBACL,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;aACxE;YAED,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC,GAAG,GAAG,GAAG,IAAI,CAAC,EAAE,CAAC;SACzD;IACH,CAAC;IAED,iGAAiG;IACjG,YAAY;QACV,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC,GAAG,GAAG,GAAG,IAAI,CAAC,EAAE,CAAC;QACxD,iCAAiC;QAEjC,IAAI,IAAI,CAAC,WAAW,KAAK,8DAAuB,CAAC,SAAS,EAAE;YAC1D,IACE,IAAI,CAAC,WAAW,KAAK,8DAAuB,CAAC,MAAM;gBACnD,CAAC,IAAI,CAAC,WAAW,KAAK,8DAAuB,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,EACjF;gBACA,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,KAAK,GAAG,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC;aAC7D;iBAAM;gBACL,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,MAAM,GAAG,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC;aAC9D;SACF;QACD,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC;IAC5C,CAAC;IAED,iGAAiG;IACjG,cAAc;QACZ,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,EAAE,GAAG,GAAG,CAAC,GAAG,EAAE,CAAC;QAEvD,IAAI,IAAI,CAAC,WAAW,KAAK,8DAAuB,CAAC,SAAS,EAAE;YAC1D,IACE,IAAI,CAAC,WAAW,KAAK,8DAAuB,CAAC,MAAM;gBACnD,CAAC,IAAI,CAAC,WAAW,KAAK,8DAAuB,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,EACjF;gBACA,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,KAAK,GAAG,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC;aAC7D;iBAAM;gBACL,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,MAAM,GAAG,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC;aAC9D;SACF;IACH,CAAC;IAED,oBAAoB;QAClB,IAAI,CAAC,oBAAoB,EAAE,CAAC;QAC5B,IACE,IAAI,CAAC,KAAK,GAAG,CAAC;YACd,IAAI,CAAC,MAAM,GAAG,CAAC;YACf,IAAI,CAAC,MAAM,GAAG,CAAC,EACf;YACA,IAAI,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;YACvB,IAAI,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;YACzB,IAAI,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;YACzB,IAAI,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC;YACrC,IAAI,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC;YACnC,IAAI,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;YAErB,oCAAoC;YACpC,IAAI,QAAQ,GAAG,KAAK,GAAG,MAAM,GAAG,MAAM,CAAC;YACvC,yBAAyB;YACzB,QAAQ,IAAI,CAAC,MAAM,GAAG,CAAC,GAAG,YAAY,CAAC,GAAG,CAAC,KAAK,GAAG,CAAC,GAAG,WAAW,CAAC,GAAG,IAAI,CAAC;YAC3E,0CAA0C;YAC1C,QAAQ,IAAI,CAAC,WAAW,GAAG,CAAC,GAAG,YAAY,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;YAC5D,gCAAgC;YAChC,QAAQ,IAAI,WAAW,GAAG,CAAC,MAAM,GAAG,YAAY,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC;YAC7D,+BAA+B;YAC/B,QAAQ,IAAI,CAAC,KAAK,GAAG,WAAW,GAAG,CAAC,CAAC,GAAG,YAAY,GAAG,IAAI,CAAC;YAE5D,IAAI,CAAC,cAAc,GAAG,QAAQ,GAAG,CAAC,MAAM,GAAG,KAAK,CAAC,CAAC;YAClD,IAAI,CAAC,cAAc,GAAG,QAAQ,GAAG,MAAM,CAAC;SACzC;IACH,CAAC;IAEO,oBAAoB;QAC1B,QAAQ,IAAI,CAAC,WAAW,EAAE;YACxB,KAAK,CAAC,CAAC,CAAC;gBACN,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC;gBACd,MAAM;aACP;YACD,KAAK,CAAC,CAAC,CAAC;gBACN,IAAI,CAAC,YAAY,GAAG,CAAC,CAAC;gBACtB,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC;gBAClC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC;gBAC1C,MAAM;aACP;YACD,KAAK,CAAC,CAAC,CAAC;gBACN,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC;gBAClC,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,WAAW,CAAC;gBACrC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC;gBAC1C,MAAM;aACP;YACD,KAAK,CAAC,CAAC,CAAC;gBACN,IAAI,MAAM,GAAG,IAAI,CAAC,IAAI,GAAG,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC;gBACxC,IAAI,MAAM,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,GAAG,CAAC,IAAI,MAAM,GAAG,CAAC,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE;oBAC/D,IAAI,CAAC,YAAY,GAAG,MAAM,CAAC;oBAC3B,IAAI,CAAC,WAAW,GAAG,MAAM,CAAC;iBAC3B;gBACD,MAAM;aACP;SACF;IACH,CAAC;CACF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC/SqC;AACK;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACDP;AACJ;AACQ;AACH;AACE;AACR;AACW;AACF;;;;;;;;;;;;;;;;;;;ACLjC,MAAM,sBAAsB;IA0B/B;QACI,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC;QACZ,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC;QACf,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC;QACf,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC;QACf,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC;QACf,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC;QACf,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC;QACf,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC;QACf,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC;QACf,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC;QACf,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC;QACf,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;QAC3B,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;QAC3B,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;QAC3B,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;QACzB,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC;QAChC,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC;QAChC,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC;QAChC,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC;QAChC,IAAI,CAAC,uBAAuB,GAAG,IAAI,CAAC;QACpC,IAAI,CAAC,uBAAuB,GAAG,IAAI,CAAC;QACpC,IAAI,CAAC,uBAAuB,GAAG,IAAI,CAAC;QACpC,IAAI,CAAC,uBAAuB,GAAG,IAAI,CAAC;IACxC,CAAC;CACJ;AAEM,MAAM,6BAA6B;IAA1C;QAOI,YAAO,GAAW,CAAC,CAAC;QACpB,mBAAc,GAAW,GAAG,CAAC;QAC7B,uBAAkB,GAAW,GAAG,CAAC;QACjC,YAAO,GAA0B;YAC7B,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG;SACrF;QAED,mBAAc,GAA0B,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IA+C1D,CAAC;IA9CG,wFAAwF;IACxF,sDAAsD;IACtD,8FAA8F;IAC9F,gGAAgG;IAEzF,mBAAmB,CAAC,GAAW;QAClC,IAAI,CAAC,GAAG,CAAC,CAAC;QACV,IAAI,CAAC,GAAG,CAAC,CAAC;QACV,IAAI,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QACzC,IAAI,QAAQ,IAAI,CAAC,CAAC;YAAE,OAAO;QAC3B,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YAC7C,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,QAAQ,EAAE,CAAC,EAAE,EAAE;gBAC5B,IAAI,QAAQ,GAAG,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC;gBACpE,IAAI,QAAQ,IAAI,IAAI,CAAC,GAAG,EAAE;oBACtB,OAAO,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;iBACpD;aACJ;SACJ;QAED,OAAO,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC;IAC5D,CAAC;IAEM,oBAAoB,CAAC,KAAa,EAAE,iBAAyB,GAAG;QACnE,IAAI,IAAY,CAAC;QACjB,KAAK,IAAI,IAAI,IAAI,CAAC,OAAO,EAAE;YACvB,IAAI,IAAI,IAAI,KAAK;gBAAE,MAAM;SAC5B;QACD,IAAI,IAAI,GAAG,cAAc;YAAE,IAAI,GAAG,cAAc,CAAC;QACjD,OAAO,IAAI,CAAC;IAChB,CAAC;IAGM,oBAAoB,CAAC,KAAa,EAAE,GAAW;QAClD,IAAI,CAAS,CAAC;QACd,IAAI,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QACzC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,QAAQ,EAAE,CAAC,EAAE,EAAE;YAC5B,IAAI,KAAK,IAAI,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;gBAAE,MAAM;SACvC;QACD,IAAI,CAAC,GAAG,QAAQ;YAAE,CAAC,GAAG,QAAQ,CAAC;QAC/B,OAAO,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;IAC3B,CAAC;IAEM,kBAAkB,CAAC,OAAe,EAAE,MAAc,EAAE,aAAqB,CAAC;QAC7E,IAAI,YAAY,GAAG,MAAM,GAAG,CAAC,CAAC;QAC9B,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,GAAG,CAAC,OAAO,GAAG,YAAY,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC;IAC3F,CAAC;CACJ;;;;;;;;;;;;;;;;;;;;;ACpHsG;AAMhG,MAAM,0BAA0B;IAanC;QACI,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC;QACZ,IAAI,CAAC,sBAAsB,GAAG,IAAI,CAAC;IACvC,CAAC;CACJ;AAEM,MAAM,4BAA4B;CAYxC;AAEM,MAAM,wBAAwB;IAgBjC;QACI,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC;QACZ,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC;QACnB,IAAI,CAAC,UAAU,GAAG,EAAE,CAAC;QACrB,IAAI,CAAC,WAAW,GAAG,CAAC,CAAC;QACrB,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC;QACnB,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC;QACf,IAAI,CAAC,SAAS,GAAG,EAAE,CAAC;QACpB,IAAI,CAAC,WAAW,GAAG,CAAC,CAAC;QACrB,IAAI,CAAC,cAAc,GAAG,CAAC,CAAC;QACxB,IAAI,CAAC,wBAAwB,EAAE,CAAC;QAChC,wEAAwE;QACxE,IAAI,CAAC,WAAW,GAAG,EAAE,CAAC;QACtB,IAAI,CAAC,UAAU,GAAG,oEAA6B,CAAC,OAAO,CAAC;QACxD,IAAI,CAAC,+BAA+B,EAAE,CAAC;IAC3C,CAAC;IAEM,wBAAwB;QAC3B,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,EAAE,GAAG,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,GAAG,CAAC,GAAG,IAAI,CAAC,WAAW,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,EAAE,CAAC,GAAG,EAAE,CAAC;QACnJ,yEAAyE;IAC7E,CAAC;IAEM,uBAAuB;QAC1B,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,GAAG,CAAC,GAAG,IAAI,CAAC,WAAW,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC,GAAG,EAAE;QACjJ,4EAA4E;QAC5E,IAAI,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,WAAW,GAAG,CAAC,EAAE;YAC3D,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,SAAS,CAAC;SACrC;IACL,CAAC;IAEM,+BAA+B;QAClC,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,QAAQ,CAAC,GAAG,IAAI,CAAC,4BAA4B,EAAE,CAAC;IACzE,CAAC;IAEM,4BAA4B;QAC/B,IAAI,QAAgB,CAAC;QACrB,IAAI,QAAgB,CAAC;QACrB,IAAI,IAAI,CAAC,UAAU,IAAI,oEAA6B,CAAC,OAAO,EAAE;YAC1D,QAAQ,GAAG,KAAK,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,KAAK,GAAG,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,EAAE,GAAG,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;YACrJ,iGAAiG;YACjG,QAAQ,GAAG,QAAQ,GAAG,CAAC,KAAK,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,EAAE,GAAG,GAAG,CAAC,GAAG,IAAI,CAAC,cAAc,GAAG,CAAC,CAAC,CAAC,CAAC;YAC9I,0FAA0F;YAE1F,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,EAAE,GAAG,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,cAAc,GAAG,CAAC,CAAC,CAAC;YACnH,wEAAwE;YACxE,QAAQ,GAAG,QAAQ,GAAG,CAAC,CAAC,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,QAAQ,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;YAC/I,mFAAmF;SACtF;aACI;YACD,QAAQ,GAAG,KAAK,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,KAAK,GAAG,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,EAAE,GAAG,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC;YACrJ,kGAAkG;YAClG,QAAQ,GAAG,QAAQ,GAAG,CAAC,KAAK,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,EAAE,GAAG,GAAG,CAAC,GAAG,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC;YAC1I,sFAAsF;YAEtF,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,EAAE,GAAG,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,cAAc,CAAC,CAAC;YAC/G,oEAAoE;YACpE,QAAQ,GAAG,QAAQ,GAAG,CAAC,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC,IAAI,CAAC,QAAQ,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;YAC7I,mFAAmF;SACtF;QACD,QAAQ,GAAG,QAAQ,GAAG,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,UAAU,GAAG,CAAC,KAAK,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,EAAE,GAAG,GAAG,CAAC,GAAG,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,EAAE,GAAG,GAAG,CAAC,GAAG,IAAI,CAAC,WAAW,GAAG,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,CAAC;QAC7S,4KAA4K;QAC5K,QAAQ,GAAG,QAAQ,GAAG,CAAC,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC;QAC5E,8CAA8C;QAC9C,IAAI,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,EAAE,GAAG,GAAG,CAAC,GAAG,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC;QAC3E,2CAA2C;QAC3C,IAAI,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,EAAE,GAAG,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;QAC9F,oDAAoD;QACpD,IAAI,IAAI,GAAG,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,EAAE,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACtG,+FAA+F;QAC/F,IAAI,IAAI,GAAG,IAAI,CAAC,WAAW;YAAE,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC;QACrD,+BAA+B;QAC/B,IAAI,IAAI,IAAI,CAAC;YAAE,QAAQ,GAAG,QAAQ,GAAG,CAAC,KAAK,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC;QACzH,uGAAuG;QACvG,QAAQ,GAAG,QAAQ,GAAG,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC;QACvD,oCAAoC;QACpC,QAAQ,GAAG,QAAQ,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,EAAE,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QAC9K,oHAAoH;QACpH,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,GAAG,EAAE,CAAC,GAAG,EAAE,CAAC;QAC1C,0CAA0C;QAC1C,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,GAAG,EAAE,CAAC,GAAG,EAAE,CAAC;QAC1C,0CAA0C;QAC1C,IAAI,KAAK,CAAC,QAAQ,CAAC;YAAE,QAAQ,GAAG,CAAC,CAAC;QAClC,IAAI,KAAK,CAAC,QAAQ,CAAC;YAAE,QAAQ,GAAG,CAAC,CAAC;QAClC,OAAO,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;IAChC,CAAC;CACJ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC5IkC;AACY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACEkE;AAClB;AAEhD;AAExC,MAAM,kBAAkB;CAyB9B;AAEM,MAAM,iBAAiB;IAkBnB,MAAM,CAAC,UAAU,CAAC,QAA2B;QAChD,MAAM,SAAS,GAAG,IAAI,kBAAkB,EAAE,CAAC;QAC3C,SAAS,CAAC,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC;QACjC,SAAS,CAAC,OAAO,GAAG,QAAQ,CAAC,OAAO,CAAC;QACrC,SAAS,CAAC,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAC;QACnC,SAAS,CAAC,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAC;QAC/B,SAAS,CAAC,UAAU,GAAG,QAAQ,CAAC,UAAU,CAAC;QAC3C,SAAS,CAAC,EAAE,GAAG,QAAQ,CAAC,EAAE,CAAC;QAC3B,SAAS,CAAC,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAC;QACnC,SAAS,CAAC,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAC;QACnC,SAAS,CAAC,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC;QACjC,SAAS,CAAC,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC;QACjC,SAAS,CAAC,cAAc,GAAG,QAAQ,CAAC,cAAc,CAAC;QACnD,SAAS,CAAC,SAAS,GAAG,QAAQ,CAAC,SAAS,CAAC;QACzC,SAAS,CAAC,SAAS,GAAG,QAAQ,CAAC,SAAS;QACxC,SAAS,CAAC,iBAAiB,GAAG,QAAQ,CAAC,iBAAiB,CAAC;QACzD,SAAS,CAAC,oBAAoB,GAAG,QAAQ,CAAC,oBAAoB,CAAC;QAC/D,SAAS,CAAC,mBAAmB,GAAG,QAAQ,CAAC,mBAAmB,CAAC;QAC7D,OAAO,SAAS,CAAC;IACrB,CAAC;CACJ;AAEM,MAAM,YAAY;IA4Bd,MAAM,CAAC,iBAAiB,CAAC,SAAuB;QACnD,MAAM,eAAe,GAAG,IAAI,kBAAkB,EAAE,CAAC;QAEjD,eAAe,CAAC,UAAU,GAAG,SAAS,CAAC,UAAU,CAAC;QAClD,eAAe,CAAC,EAAE,GAAG,SAAS,CAAC,EAAE,CAAC;QAClC,eAAe,CAAC,IAAI,GAAG,SAAS,CAAC,IAAI,CAAC;QACtC,eAAe,CAAC,iBAAiB,GAAG,SAAS,CAAC,iBAAiB,CAAC;QAChE,eAAe,CAAC,OAAO,GAAG,SAAS,CAAC,OAAO,CAAC;QAC5C,eAAe,CAAC,cAAc,GAAG,SAAS,CAAC,cAAc,CAAC;QAC1D,eAAe,CAAC,MAAM,GAAG,SAAS,CAAC,MAAM,CAAC;QAC1C,eAAe,CAAC,KAAK,GAAG,SAAS,CAAC,KAAK,CAAC;QACxC,eAAe,CAAC,KAAK,GAAG,SAAS,CAAC,KAAK,CAAC;QACxC,eAAe,CAAC,MAAM,GAAG,SAAS,CAAC,MAAM,CAAC;QAC1C,eAAe,CAAC,SAAS,GAAG,SAAS,CAAC,SAAS,CAAC;QAChD,eAAe,CAAC,SAAS,GAAG,SAAS,CAAC,SAAS,CAAC;QAChD,eAAe,CAAC,oBAAoB,GAAG,SAAS,CAAC,oBAAoB,CAAC;QACtE,eAAe,CAAC,mBAAmB,GAAG,SAAS,CAAC,mBAAmB,CAAC;QACpE,eAAe,CAAC,UAAU,GAAG,SAAS,CAAC,UAAU,CAAC;QAClD,eAAe,CAAC,UAAU,GAAG,SAAS,CAAC,UAAU,CAAC;QAClD,eAAe,CAAC,QAAQ,GAAG,SAAS,CAAC,QAAQ,CAAC;QAC9C,eAAe,CAAC,qBAAqB,GAAG,SAAS,CAAC,qBAAqB,CAAC;QACxE,eAAe,CAAC,kBAAkB,GAAG,SAAS,CAAC,kBAAkB,CAAC;QAElE,IAAI,SAAS,CAAC,MAAM,EAAE;YAClB,eAAe,CAAC,MAAM,GAAG,SAAS,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,2DAAc,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC;SAC3F;QAED,IAAI,SAAS,CAAC,IAAI,EAAE;YAChB,eAAe,CAAC,IAAI,GAAG,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,YAAY,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC;SACrF;QAED,OAAO,eAAe,CAAC;IAC3B,CAAC;CACJ;AAEM,MAAM,WAAW;IAyBb,MAAM,CAAC,WAAW,CAAC,QAAqB;QAC3C,MAAM,SAAS,GAAG,IAAI,YAAY,EAAE,CAAC;QAErC,SAAS,CAAC,UAAU,GAAG,QAAQ,CAAC,UAAU,CAAC;QAC3C,SAAS,CAAC,EAAE,GAAG,QAAQ,CAAC,EAAE,CAAC;QAC3B,SAAS,CAAC,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAC;QAC/B,SAAS,CAAC,iBAAiB,GAAG,QAAQ,CAAC,iBAAiB,CAAC;QACzD,SAAS,CAAC,OAAO,GAAG,QAAQ,CAAC,OAAO,CAAC;QACrC,SAAS,CAAC,cAAc,GAAG,QAAQ,CAAC,cAAc,CAAC;QACnD,SAAS,CAAC,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAC;QACnC,SAAS,CAAC,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC;QACjC,SAAS,CAAC,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC;QACjC,SAAS,CAAC,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAC;QACnC,SAAS,CAAC,SAAS,GAAG,QAAQ,CAAC,SAAS,CAAC;QACzC,SAAS,CAAC,SAAS,GAAG,QAAQ,CAAC,SAAS,CAAC;QACzC,SAAS,CAAC,oBAAoB,GAAG,QAAQ,CAAC,oBAAoB,CAAC;QAC/D,SAAS,CAAC,mBAAmB,GAAG,QAAQ,CAAC,mBAAmB,CAAC;QAC7D,SAAS,CAAC,aAAa,GAAG,QAAQ,CAAC,aAAa,CAAC;QACjD,SAAS,CAAC,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC;QACjC,SAAS,CAAC,SAAS,GAAG,QAAQ,CAAC,SAAS,CAAC;QACzC,SAAS,CAAC,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAC;QAC/B,SAAS,CAAC,UAAU,GAAG,QAAQ,CAAC,UAAU,CAAC;QAC3C,SAAS,CAAC,UAAU,GAAG,QAAQ,CAAC,UAAU,CAAC;QAC3C,SAAS,CAAC,UAAU,GAAG,QAAQ,CAAC,UAAU,CAAC;QAE3C,IAAI,QAAQ,CAAC,MAAM,EAAE;YACjB,SAAS,CAAC,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,0DAAa,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC;SAC7E;QAED,IAAI,QAAQ,CAAC,IAAI,EAAE;YACf,SAAS,CAAC,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC;SACvE;QAED,OAAO,SAAS,CAAC;IACrB,CAAC;CACJ;AAEM,MAAM,yBAAyB;IAkBlC,YAAY,SAAuB;QAC/B,IAAI,CAAC,IAAI,GAAG,SAAS,CAAC,IAAI,CAAC;QAC3B,IAAI,CAAC,OAAO,GAAG,SAAS,CAAC,OAAO,CAAC;QACjC,IAAI,CAAC,MAAM,GAAG,SAAS,CAAC,MAAM,CAAC;QAC/B,IAAI,CAAC,KAAK,GAAG,SAAS,CAAC,KAAK,CAAC;QAC7B,IAAI,CAAC,KAAK,GAAG,SAAS,CAAC,KAAK,CAAC;QAC7B,IAAI,CAAC,MAAM,GAAG,SAAS,CAAC,MAAM,CAAC;QAC/B,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC,SAAS,CAAC;QACrC,IAAI,CAAC,IAAI,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC;QAC5B,IAAI,CAAC,UAAU,GAAG,CAAC,SAAS,CAAC,UAAU,CAAC;QACxC,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC,UAAU,CAAC;QACvC,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC,SAAS,CAAC;QACrC,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC,SAAS,CAAC;QACrC,IAAI,CAAC,MAAM,GAAG,SAAS,CAAC,MAAM,CAAC;QAC/B,IAAI,CAAC,KAAK,GAAG,SAAS,CAAC,KAAK,CAAC;QAC7B,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC,UAAU,CAAC;QAEvC,IAAI,SAAS,CAAC,IAAI,EAAE;YAChB,IAAI,CAAC,IAAI,GAAG,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,yBAAyB,CAAC,CAAC,CAAC,CAAC,CAAC;SACzE;QAED,IAAI,SAAS,CAAC,MAAM,EAAE;YAClB,IAAI,CAAC,MAAM,GAAG,SAAS,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,wEAA2B,CAAC,CAAC,CAAC,CAAC,CAAC;SAC/E;IACL,CAAC;CACJ;AAEM,MAAM,sBAAsB;CAMlC;AAEM,MAAM,sBAAuB,SAAQ,sBAAsB;CAGjE;AAEM,MAAM,0BAA0B;IAGnC,YAAY,UAAkB,EAAE,aAAuC;QACnE,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;QAC7B,IAAI,CAAC,cAAc,GAAG,aAAa,CAAC;IACxC,CAAC;CACJ;AAEM,MAAM,gBAAgB;IAKzB,MAAM,CAAC,aAAa,CAAC,GAAqB,EAAE,UAAkB;QAC1D,MAAM,OAAO,GAAG,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC;QAC3B,MAAM,IAAI,GAAsE;YAC5E,EAAE,EAAE,GAAG,CAAC,EAAE;YACV,QAAQ,EAAE,OAAO,CAAC,CAAC,CAAC,0GAAiC,CAAC,IAAI,CAAC,CAAC,CAAC,0GAAiC,CAAC,GAAG;YAClG,UAAU,EAAE,UAAU;SACzB,CAAC;QAEF,MAAM,QAAQ,GAAa;YACvB,KAAK,EAAE,GAAG,CAAC,IAAI;YACf,IAAI;YACJ,UAAU,EAAE,IAAI;YAChB,GAAG,EAAE,IAAI,CAAC,QAAQ,GAAG,GAAG,GAAG,GAAG,CAAC,EAAE;YACjC,QAAQ,EAAE,OAAO,IAAI,GAAG,CAAC,IAAI;iBACxB,GAAG,CAAW,CAAC,CAAC,EAAE,CAAC,gBAAgB,CAAC,aAAa,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC;iBACjE,IAAI,CAAC,uDAAe,CAAC,qBAAqB,CAAC;SACnD,CAAC;QAEF,OAAO,QAAQ,CAAC;IACpB,CAAC;CACJ;AAEM,MAAM,eAAe;IAKjB,MAAM,CAAC,WAAW,CAAC,QAAyB;QAC/C,MAAM,SAAS,GAAG,IAAI,gBAAgB,EAAE,CAAC;QAEzC,SAAS,CAAC,EAAE,GAAG,QAAQ,CAAC,EAAE,CAAC;QAC3B,SAAS,CAAC,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAC;QAE/B,IAAI,QAAQ,CAAC,IAAI,EAAE;YACf,SAAS,CAAC,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,eAAe,CAAC,WAAW,CAAC,CAAC;SACnE;QAED,OAAO,SAAS,CAAC;IACrB,CAAC;CACJ;;;;;;;;;;;;;;;;;;;;;;;;ACvToD;AACT;AAErC,MAAM,iBAAiB;CAU7B;AAEM,MAAM,gBAAgB;IAUpB,MAAM,CAAC,WAAW,CAAC,QAA0B;QAClD,MAAM,SAAS,GAAG,IAAI,iBAAiB,EAAE,CAAC;QAC1C,SAAS,CAAC,OAAO,GAAG,QAAQ,CAAC,OAAO,CAAC;QACrC,SAAS,CAAC,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC;QACjC,SAAS,CAAC,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAC;QAC/B,SAAS,CAAC,0BAA0B;YAClC,QAAQ,CAAC,0BAA0B;gBACnC,gEAAqB,CAAC,4BAA4B,CAAC;QACrD,SAAS,CAAC,yBAAyB;YACjC,QAAQ,CAAC,yBAAyB;gBAClC,gEAAqB,CAAC,4BAA4B,CAAC;QACrD,SAAS,CAAC,YAAY,GAAG,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,uDAAgB,CAAC,KAAK,CAAC,CAAC,CAAC,uDAAgB,CAAC,OAAO,CAAC;QAC9F,SAAS,CAAC,UAAU,GAAG,QAAQ,CAAC,UAAU,CAAC;QAC3C,IAAI,QAAQ,CAAC,UAAU,EAAE;YACvB,SAAS,CAAC,WAAW,GAAG,QAAQ,CAAC,UAAU,CAAC,WAAW,CAAC;YACxD,SAAS,CAAC,aAAa,GAAG,QAAQ,CAAC,UAAU,CAAC,aAAa,CAAC;SAC7D;QACD,OAAO,SAAS,CAAC;IACnB,CAAC;CACF;AAEM,MAAM,UAAU;CAGtB;AAEM,MAAM,qBAAqB;CAIjC;AAEM,MAAM,yBAAyB;IAiBpC,YAAmB,aAAqB;QAArB,kBAAa,GAAb,aAAa,CAAQ;QAVjC,UAAK,GAAY,IAAI,CAAC;QAW3B,IAAI,CAAC,WAAW,GAAG,EAAE,CAAC;QACtB,IAAI,CAAC,YAAY,GAAG,EAAE,CAAC;QACvB,IAAI,CAAC,UAAU,GAAG,EAAE,CAAC;QACrB,IAAI,CAAC,WAAW,GAAG,CAAC,CAAC;IACvB,CAAC;IAbD,IAAW,mBAAmB;QAC5B,IAAI,KAAK,GAAG,CAAC,CAAC;QACd,KAAK,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC;QAChC,KAAK,IAAI,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC;QACjC,KAAK,IAAI,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC;QAClC,OAAO,KAAK,CAAC;IACf,CAAC;CAQF;;;;;;;;;;;;;;;;;;;AChFM,MAAM,uBAAuB;CAGnC;AAEM,MAAM,oCAAoC;CAMhD;;;;;;;;;;;;;;;;;;;;;;;ACX2F;AAErF,MAAM,oBAAoB;CAahC;AAEM,MAAM,4BAA4B;CAIxC;AAEM,MAAM,cAAc;IAchB,MAAM,CAAC,iBAAiB,CAAC,SAAyB;QACrD,MAAM,eAAe,GAAG,IAAI,oBAAoB,EAAE,CAAC;QAEnD,eAAe,CAAC,EAAE,GAAG,SAAS,CAAC,EAAE,CAAC;QAClC,eAAe,CAAC,YAAY,GAAG,SAAS,CAAC,YAAY,CAAC;QACtD,eAAe,CAAC,mBAAmB,GAAG,SAAS,CAAC,mBAAmB,CAAC;QACpE,eAAe,CAAC,iBAAiB,GAAG,SAAS,CAAC,iBAAiB,CAAC;QAChE,eAAe,CAAC,MAAM,GAAG,SAAS,CAAC,MAAM,CAAC;QAC1C,eAAe,CAAC,KAAK,GAAG,SAAS,CAAC,KAAK,CAAC;QACxC,eAAe,CAAC,MAAM,GAAG,SAAS,CAAC,MAAM,CAAC;QAC1C,eAAe,CAAC,SAAS,GAAG,SAAS,CAAC,SAAS,CAAC;QAChD,eAAe,CAAC,SAAS,GAAG,SAAS,CAAC,SAAS,CAAC;QAChD,eAAe,CAAC,IAAI,GAAG,SAAS,CAAC,IAAI,CAAC;QACtC,eAAe,CAAC,aAAa,GAAG,SAAS,CAAC,aAAa,CAAC;QAExD,IAAI,SAAS,CAAC,OAAO,EAAE;YACnB,eAAe,CAAC,OAAO,GAAG,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,2DAAkB,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC;SACjG;QAED,OAAO,eAAe,CAAC;IAC3B,CAAC;CACJ;AAEM,MAAM,aAAa;IAcf,MAAM,CAAC,WAAW,CAAC,QAAuB;QAC7C,MAAM,SAAS,GAAG,IAAI,cAAc,EAAE,CAAC;QAEvC,SAAS,CAAC,EAAE,GAAG,QAAQ,CAAC,EAAE,CAAC;QAC3B,SAAS,CAAC,YAAY,GAAG,QAAQ,CAAC,YAAY,CAAC;QAC/C,SAAS,CAAC,mBAAmB,GAAG,QAAQ,CAAC,mBAAmB,CAAC;QAC7D,SAAS,CAAC,iBAAiB,GAAG,QAAQ,CAAC,iBAAiB,CAAC;QACzD,SAAS,CAAC,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAC;QACnC,SAAS,CAAC,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC;QACjC,SAAS,CAAC,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAC;QACnC,SAAS,CAAC,SAAS,GAAG,QAAQ,CAAC,SAAS,CAAC;QACzC,SAAS,CAAC,SAAS,GAAG,QAAQ,CAAC,SAAS,CAAC;QACzC,SAAS,CAAC,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAC;QAC/B,SAAS,CAAC,aAAa,GAAG,QAAQ,CAAC,aAAa,CAAC;QAEjD,IAAI,QAAQ,CAAC,OAAO,EAAE;YAClB,SAAS,CAAC,OAAO,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,0DAAiB,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC;SACnF;QAED,OAAO,SAAS,CAAC;IACrB,CAAC;CACJ;AAEM,MAAM,2BAA2B;IAYpC,YAAY,SAAyB;QACjC,IAAI,CAAC,YAAY,GAAG,SAAS,CAAC,YAAY,CAAC;QAC3C,IAAI,CAAC,mBAAmB,GAAG,SAAS,CAAC,mBAAmB,CAAC;QACzD,IAAI,CAAC,iBAAiB,GAAG,SAAS,CAAC,iBAAiB,CAAC;QACrD,IAAI,CAAC,MAAM,GAAG,SAAS,CAAC,MAAM,CAAC;QAC/B,IAAI,CAAC,KAAK,GAAG,SAAS,CAAC,KAAK,CAAC;QAC7B,IAAI,CAAC,MAAM,GAAG,SAAS,CAAC,MAAM,CAAC;QAC/B,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC,SAAS,CAAC;QACrC,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC,SAAS,CAAC;QACrC,IAAI,CAAC,IAAI,GAAG,SAAS,CAAC,IAAI,CAAC;QAC3B,IAAI,CAAC,aAAa,GAAG,SAAS,CAAC,aAAa,CAAC;IACjD,CAAC;CACJ;;;;;;;;;;;;;;;;;;ACzHM,MAAM,aAAa;CAGzB;;;;;;;;;;;;;;;;;;;;;;;;ACFwF;AACM;AAElC;AACd;AAExC,MAAM,gBAAgB;IAQzB,MAAM,CAAC,aAAa,CAAC,OAAyB;QAC1C,MAAM,IAAI,GAAsE;YAC5E,EAAE,EAAE,OAAO,CAAC,EAAE;YACd,QAAQ,EAAE,0GAAiC,CAAC,OAAO;YACnD,UAAU,EAAE,IAAI;SACnB,CAAC;QAEF,MAAM,wBAAwB,GAAa;YACvC,KAAK,EAAE,OAAO,CAAC,IAAI;YACnB,IAAI;YACJ,UAAU,EAAE,IAAI;YAChB,GAAG,EAAE,IAAI,CAAC,QAAQ,GAAG,GAAG,GAAG,OAAO,CAAC,EAAE;YACrC,QAAQ,EAAE,OAAO,CAAC,SAAS,IAAI,OAAO,CAAC,SAAS;iBAC3C,GAAG,CAAW,+EAAqB,CAAC,aAAa,CAAC;iBAClD,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,IAAI,CAAC,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC;iBAChD,IAAI,CAAC,uDAAe,CAAC,qBAAqB,CAAC;SACnD,CAAC;QAEF,OAAO,wBAAwB,CAAC;IACpC,CAAC;IAED,MAAM,CAAC,aAAa,CAAC,OAAyB;QAC1C,MAAM,IAAI,GAAsE;YAC5E,EAAE,EAAE,OAAO,CAAC,EAAE;YACd,QAAQ,EAAE,wEAAiC,CAAC,OAAO;YACnD,UAAU,EAAE,IAAI;SACnB,CAAC;QAEF,MAAM,wBAAwB,GAAa;YACvC,KAAK,EAAE,OAAO,CAAC,IAAI;YACnB,IAAI;YACJ,UAAU,EAAE,IAAI;YAChB,QAAQ,EAAE,OAAO,CAAC,SAAS,IAAI,OAAO,CAAC,SAAS;iBAC3C,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,UAAU,IAAI,CAAC,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC;iBACpD,GAAG,CAAW,+EAAqB,CAAC,aAAa,CAAC;iBAClD,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;SACtD,CAAC;QAEF,OAAO,wBAAwB,CAAC;IACpC,CAAC;CACJ;AAEM,MAAM,eAAe;IAKjB,MAAM,CAAC,WAAW,CAAC,QAAyB;QAC/C,MAAM,SAAS,GAAG,IAAI,gBAAgB,EAAE,CAAC;QAEzC,SAAS,CAAC,EAAE,GAAG,QAAQ,CAAC,EAAE,CAAC;QAC3B,SAAS,CAAC,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAC;QAE/B,IAAI,QAAQ,CAAC,SAAS,EAAE;YACpB,SAAS,CAAC,SAAS,GAAG,QAAQ,CAAC,SAAS,CAAC,GAAG,CAAC,8EAAoB,CAAC,WAAW,CAAC,CAAC;SAClF;QAED,OAAO,SAAS,CAAC;IACrB,CAAC;CACJ;AAEM,MAAM,gBAAgB;CAG5B;;;;;;;;;;;;;;;;;;;;;AC/EM,MAAM,qBAAqB;CAWjC;AAEM,MAAM,uBAAuB;CAGnC;AAEM,MAAM,qBAAqB;CAMjC;AAEM,MAAM,oBAAoB;IAStB,MAAM,CAAC,WAAW,CAAC,QAA8B;QACpD,MAAM,SAAS,GAAG,IAAI,qBAAqB,EAAE,CAAC;QAC9C,SAAS,CAAC,EAAE,GAAG,QAAQ,CAAC,EAAE,CAAC;QAC3B,SAAS,CAAC,SAAS,GAAG,QAAQ,CAAC,SAAS,CAAC;QACzC,SAAS,CAAC,QAAQ,GAAG,QAAQ,CAAC,QAAQ,CAAC;QACvC,SAAS,CAAC,SAAS,GAAG,QAAQ,CAAC,SAAS,CAAC;QACzC,SAAS,CAAC,WAAW,GAAG,QAAQ,CAAC,WAAW,CAAC;QAC7C,SAAS,CAAC,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC;QACjC,SAAS,CAAC,aAAa,GAAG,QAAQ,CAAC,aAAa,CAAC;QAEjD,OAAO,SAAS,CAAC;IACrB,CAAC;CACJ;;;;;;;;;;;;;;;;;;;;;;AC7CM,MAAM,oBAAoB;CAgBhC;AAEM,MAAM,YAAY;CAGxB;AAEM,MAAM,sBAAsB;CAMlC;AAEM,MAAM,oBAAoB;CAQhC;AAGM,MAAM,mBAAmB;IAWrB,MAAM,CAAC,WAAW,CAAC,QAA6B;QACnD,MAAM,SAAS,GAAG,IAAI,oBAAoB,EAAE,CAAC;QAC7C,SAAS,CAAC,EAAE,GAAG,QAAQ,CAAC,EAAE,CAAC;QAC3B,SAAS,CAAC,SAAS,GAAG,QAAQ,CAAC,SAAS,CAAC;QACzC,SAAS,CAAC,QAAQ,GAAG,QAAQ,CAAC,QAAQ,CAAC;QACvC,SAAS,CAAC,gBAAgB,GAAG,QAAQ,CAAC,gBAAgB,CAAC;QACvD,SAAS,CAAC,kBAAkB,GAAG,QAAQ,CAAC,kBAAkB,CAAC;QAC3D,SAAS,CAAC,YAAY,GAAE,QAAQ,CAAC,YAAY,CAAC;QAC9C,SAAS,CAAC,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC;QACjC,SAAS,CAAC,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAC;QACnC,SAAS,CAAC,aAAa,GAAG,QAAQ,CAAC,aAAa,CAAC;QAEjD,SAAS,CAAC,oBAAoB,GAAG,SAAS,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QAC7E,SAAS,CAAC,sBAAsB,GAAG,SAAS,CAAC,kBAAkB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QACjF,SAAS,CAAC,iBAAiB,GAAC,SAAS,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,GAAE,EAAC,CAAC,IAAI,CAAC,CAAC;QAElE,OAAO,SAAS,CAAC;IACrB,CAAC;CACJ;;;;;;;;;;;;;;;;;;;ACzEM,MAAM,0BAA0B;CAQtC;AAEM,MAAM,sBAAsB;CAGlC;;;;;;;;;;;;;;;;;;;;ACVM,MAAM,qBAAqB;CAgBjC;AAIM,MAAM,oBAAoB;IAatB,MAAM,CAAC,WAAW,CAAC,QAA8B;QACpD,MAAM,SAAS,GAAG,IAAI,qBAAqB,EAAE,CAAC;QAC9C,SAAS,CAAC,EAAE,GAAG,QAAQ,CAAC,EAAE,CAAC;QAC3B,SAAS,CAAC,YAAY,GAAG,QAAQ,CAAC,YAAY,CAAC;QAC/C,SAAS,CAAC,YAAY,GAAG,QAAQ,CAAC,YAAY,CAAC;QAC/C,SAAS,CAAC,YAAY,GAAG,QAAQ,CAAC,YAAY,CAAC;QAC/C,SAAS,CAAC,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;QAC/C,SAAS,CAAC,SAAS,GAAG,QAAQ,CAAC,SAAS,CAAC;QACzC,SAAS,CAAC,YAAY,GAAG,QAAQ,CAAC,YAAY,CAAC;QAC/C,SAAS,CAAC,YAAY,GAAG,QAAQ,CAAC,YAAY,CAAC;QAC/C,SAAS,CAAC,aAAa,GAAG,QAAQ,CAAC,aAAa,CAAC;QACjD,SAAS,CAAC,aAAa,GAAG,QAAQ,CAAC,aAAa,CAAC;QACjD,SAAS,CAAC,aAAa,GAAG,QAAQ,CAAC,aAAa,CAAC;QAEjD,SAAS,CAAC,gBAAgB,GAAG,SAAS,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QACrE,SAAS,CAAC,gBAAgB,GAAG,SAAS,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QACrE,SAAS,CAAC,gBAAgB,GAAG,SAAS,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QAErE,OAAO,SAAS,CAAC;IACrB,CAAC;CACJ;AAEM,MAAM,qBAAqB;CAajC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACtE0H;AACnC;AAC6E;AAEtH;AAGxC,MAAM,kBAAkB;IAC3B;QAwBA,uBAAuB;QACvB,cAAS,GAAG,sDAAW,CAAC,kBAAkB,CAAC;QAxBvC,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC;QACZ,IAAI,CAAC,OAAO,GAAG,EAAE,CAAC;IACtB,CAAC;IAwBM,MAAM,CAAC,WAAW,CAAC,SAA4C;QAClE,MAAM,SAAS,GAAG,IAAI,kBAAkB,CAAC;QACzC,SAAS,CAAC,EAAE,GAAG,SAAS,CAAC,KAAK,CAAC;QAC/B,SAAS,CAAC,IAAI,GAAG,SAAS,CAAC,IAAI,CAAC;QAChC,SAAS,CAAC,OAAO,GAAG,SAAS,CAAC,OAAO,CAAC;QACtC,SAAS,CAAC,IAAI,GAAG,SAAS,CAAC,IAAI,CAAC;QAChC,SAAS,CAAC,mBAAmB,GAAG,SAAS,CAAC,mBAAmB,CAAC;QAC9D,SAAS,CAAC,iCAAiC,GAAG,SAAS,CAAC,iCAAiC,CAAC;QAC1F,SAAS,CAAC,kCAAkC,GAAG,SAAS,CAAC,kCAAkC,CAAC;QAC5F,SAAS,CAAC,0BAA0B,GAAG,SAAS,CAAC,0BAA0B,CAAC;QAC5E,SAAS,CAAC,oBAAoB,GAAG,SAAS,CAAC,oBAAoB,CAAC;QAChE,SAAS,CAAC,uBAAuB,GAAG,SAAS,CAAC,uBAAuB,CAAC;QACtE,SAAS,CAAC,iCAAiC,GAAG,SAAS,CAAC,iCAAiC,CAAC;QAC1F,SAAS,CAAC,oCAAoC,GAAG,SAAS,CAAC,oCAAoC,CAAC;QAChG,IAAI,SAAS,CAAC,OAAO,IAAI,SAAS,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE;YACnD,SAAS,CAAC,OAAO,GAAG,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,wDAAe,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC;SAC5F;QAED,OAAO,SAAS,CAAC;IACrB,CAAC;CACJ;AAEM,MAAM,iBAAiB;IAiBnB,MAAM,CAAC,WAAW,CAAC,QAA2B;QACjD,MAAM,SAAS,GAAG,IAAI,kBAAkB,EAAE,CAAC;QAC3C,SAAS,CAAC,EAAE,GAAG,QAAQ,CAAC,EAAE,CAAC;QAC3B,SAAS,CAAC,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAC;QAC/B,SAAS,CAAC,OAAO,GAAG,QAAQ,CAAC,OAAO,CAAC;QACrC,SAAS,CAAC,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAC;QAC/B,SAAS,CAAC,iCAAiC,GAAG,QAAQ,CAAC,iCAAiC,CAAC;QACzF,SAAS,CAAC,kCAAkC,GAAG,QAAQ,CAAC,kCAAkC,CAAC;QAC3F,SAAS,CAAC,0BAA0B,GAAG,QAAQ,CAAC,0BAA0B,CAAC;QAC3E,SAAS,CAAC,oBAAoB,GAAG,QAAQ,CAAC,oBAAoB,CAAC;QAC/D,SAAS,CAAC,uBAAuB,GAAG,QAAQ,CAAC,uBAAuB,CAAC;QACrE,SAAS,CAAC,iCAAiC,GAAG,QAAQ,CAAC,iCAAiC,CAAC;QACzF,SAAS,CAAC,oCAAoC,GAAG,QAAQ,CAAC,oCAAoC,CAAC;QAC/F,SAAS,CAAC,yBAAyB,GAAG,QAAQ,CAAC,yBAAyB,CAAC;QACzE,SAAS,CAAC,kBAAkB,GAAG,QAAQ,CAAC,kBAAkB,CAAC;QAC3D,SAAS,CAAC,qBAAqB,GAAG,QAAQ,CAAC,qBAAqB,CAAC;QAEjE,IAAI,QAAQ,CAAC,OAAO,EAAE;YAClB,SAAS,CAAC,OAAO,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,uDAAc,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC;SAChF;QAED,OAAO,SAAS,CAAC;IACrB,CAAC;CACJ;AAEM,MAAM,kBAAkB;IAc3B,YAAY,SAA6B;QACrC,IAAI,CAAC,EAAE,GAAG,SAAS,CAAC,EAAE,CAAC;QACvB,IAAI,CAAC,IAAI,GAAG,SAAS,CAAC,IAAI,CAAC;QAC3B,IAAI,CAAC,OAAO,GAAG,SAAS,CAAC,OAAO,CAAC;QACjC,IAAI,CAAC,IAAI,GAAG,SAAS,CAAC,IAAI,CAAC;QAC3B,IAAI,CAAC,iCAAiC,GAAG,MAAM,CAAC,SAAS,CAAC,iCAAiC,CAAC,CAAC,mCAAkC;QAC/H,IAAI,CAAC,kCAAkC,GAAG,MAAM,CAAC,SAAS,CAAC,kCAAkC,CAAC,CAAC,mCAAkC;QACjI,IAAI,CAAC,0BAA0B,GAAG,SAAS,CAAC,0BAA0B;YAClE,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,0BAA0B,CAAC;YAC9C,CAAC,CAAC,SAAS,CAAC,0BAA0B,CAAC,mCAAkC;QAC7E,IAAI,CAAC,oBAAoB,GAAG,MAAM,CAAC,SAAS,CAAC,oBAAoB,CAAC,CAAC,mCAAkC;QACrG,IAAI,CAAC,uBAAuB,GAAG,SAAS,CAAC,uBAAuB,CAAC;QACjE,IAAI,CAAC,iCAAiC,GAAG,MAAM,CAAC,SAAS,CAAC,iCAAiC,CAAC,CAAC,mCAAkC;QAC/H,IAAI,CAAC,oCAAoC,GAAG,SAAS,CAAC,oCAAoC,CAAC;QAE3F,IAAI,SAAS,CAAC,OAAO,EAAE;YACnB,IAAI,CAAC,OAAO,GAAG,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,wDAAe,CAAC,CAAC,CAAC,CAAC,CAAC;SACrE;IACL,CAAC;CACJ;AAEM,MAAM,sBAAsB;IAI/B,MAAM,CAAC,aAAa,CAAC,SAAiC,EAAE,UAAkB;QACtE,MAAM,IAAI,GAAsE;YAC5E,EAAE,EAAE,SAAS,CAAC,EAAE;YAChB,QAAQ,EAAE,wEAAiC,CAAC,SAAS;YACrD,UAAU,EAAE,UAAU;SACzB,CAAC;QAEF,MAAM,0BAA0B,GAAa;YACzC,KAAK,EAAE,SAAS,CAAC,IAAI;YACrB,IAAI;YACJ,UAAU,EAAE,IAAI;SACnB,CAAC;QAEF,OAAO,0BAA0B,CAAC;IACtC,CAAC;CACJ;AAEM,MAAM,qBAAqB;IAIvB,MAAM,CAAC,WAAW,CAAC,QAA+B;QACrD,MAAM,SAAS,GAAG,IAAI,sBAAsB,EAAE,CAAC;QAE/C,SAAS,CAAC,EAAE,GAAG,QAAQ,CAAC,EAAE,CAAC;QAC3B,SAAS,CAAC,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAC;QAE/B,OAAO,SAAS,CAAC;IACrB,CAAC;CACJ;AAEM,MAAM,6BAA6B;IAQ/B,MAAM,CAAC,yBAAyB,CAAC,kBAAiD;QACrF,MAAM,iBAAiB,GAAa;YAChC,KAAK,EAAE,kBAAkB,CAAC,IAAI;YAC9B,IAAI,EAAE,kBAAkB,CAAC,EAAE;YAC3B,UAAU,EAAE,IAAI;YAChB,GAAG,EAAE,kBAAkB,CAAC,EAAE,CAAC,QAAQ,EAAE;SACxC,CAAC;QAEF,OAAO,iBAAiB,CAAC;IAC7B,CAAC;CACJ;AAEM,MAAM,4BAA4B;IAQ9B,MAAM,CAAC,WAAW,CAAC,QAAsC;QAC5D,MAAM,SAAS,GAAG,IAAI,6BAA6B,EAAE,CAAC;QAEtD,SAAS,CAAC,EAAE,GAAG,QAAQ,CAAC,EAAE,CAAC;QAC3B,SAAS,CAAC,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAC;QAC/B,SAAS,CAAC,IAAI,GAAG,4BAA4B,CAAC,6BAA6B,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QAC3F,SAAS,CAAC,OAAO,GAAG,4BAA4B,CAAC,gCAAgC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;QACpG,SAAS,CAAC,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAC;QACnC,SAAS,CAAC,QAAQ,GAAG,QAAQ,CAAC,QAAQ,CAAC;QAEvC,OAAO,SAAS,CAAC;IACrB,CAAC;IAEO,MAAM,CAAC,6BAA6B,CAAC,IAAuB;QAChE,MAAM,aAAa,GAAG,IAAI,2DAAa,EAAE,CAAC;QAE1C,aAAa,CAAC,EAAE,GAAG,IAAI,CAAC;QACxB,aAAa,CAAC,IAAI,GAAG,8DAAmB,CAAC,IAAI,CAAC,CAAC;QAE/C,OAAO,aAAa,CAAC;IACzB,CAAC;IAEO,MAAM,CAAC,gCAAgC,CAAC,OAA6B;QACzE,MAAM,aAAa,GAAG,IAAI,2DAAa,EAAE,CAAC;QAE1C,aAAa,CAAC,EAAE,GAAG,OAAO,CAAC;QAC3B,aAAa,CAAC,IAAI,GAAG,iEAAsB,CAAC,OAAO,CAAC,CAAC;QAErD,OAAO,aAAa,CAAC;IACzB,CAAC;CACJ;AAEM,MAAM,kCAAkC;IAepC,MAAM,CAAC,oBAAoB,CAAC,sBAA0D;QACzF,MAAM,kBAAkB,GAAG,IAAI,kBAAkB,EAAE,CAAC;QAEpD,kBAAkB,CAAC,EAAE,GAAG,sBAAsB,CAAC,EAAE,CAAC;QAClD,kBAAkB,CAAC,IAAI,GAAG,sBAAsB,CAAC,IAAI,CAAC;QACtD,kBAAkB,CAAC,OAAO,GAAG,sBAAsB,CAAC,OAAO,CAAC;QAC5D,kBAAkB,CAAC,IAAI,GAAG,sBAAsB,CAAC,IAAI,CAAC;QACtD,kBAAkB,CAAC,yBAAyB,GAAG,sBAAsB,CAAC,yBAAyB,CAAC;QAChG,kBAAkB,CAAC,kBAAkB,GAAG,sBAAsB,CAAC,kBAAkB,CAAC;QAClF,kBAAkB,CAAC,SAAS,GAAG,sBAAsB,CAAC,SAAS,CAAC;QAChE,kBAAkB,CAAC,qBAAqB,GAAG,sBAAsB,CAAC,qBAAqB,CAAC;QACxF,kBAAkB,CAAC,aAAa,GAAC,sBAAsB,CAAC,aAAa,CAAC;QAEtE,IAAI,sBAAsB,CAAC,OAAO,EAAE;YAChC,kBAAkB,CAAC,OAAO,GAAG,sBAAsB,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,wEAA+B,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC;SAC9H;QAED,OAAO,kBAAkB,CAAC;IAC9B,CAAC;CACJ;AAEM,MAAM,iCAAiC;IAenC,MAAM,CAAC,WAAW,CAAC,QAA2C;QACjE,MAAM,SAAS,GAAG,IAAI,kCAAkC,EAAE,CAAC;QAE3D,SAAS,CAAC,EAAE,GAAG,QAAQ,CAAC,EAAE,CAAC;QAC3B,SAAS,CAAC,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAC;QAC/B,SAAS,CAAC,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAC;QAC/B,SAAS,CAAC,OAAO,GAAG,QAAQ,CAAC,OAAO,CAAC;QACrC,SAAS,CAAC,YAAY,GAAG,QAAQ,CAAC,YAAY,CAAC;QAC/C,SAAS,CAAC,UAAU,GAAG,QAAQ,CAAC,UAAU,CAAC;QAC3C,SAAS,CAAC,yBAAyB,GAAG,QAAQ,CAAC,yBAAyB,CAAC;QACzE,SAAS,CAAC,kBAAkB,GAAG,QAAQ,CAAC,kBAAkB,CAAC;QAC3D,SAAS,CAAC,SAAS,GAAG,QAAQ,CAAC,SAAS,CAAC;QACzC,SAAS,CAAC,eAAe,GAAG,QAAQ,CAAC,eAAe,CAAC;QACrD,SAAS,CAAC,qBAAqB,GAAG,QAAQ,CAAC,qBAAqB,CAAC;QACjE,SAAS,CAAC,aAAa,GAAG,QAAQ,CAAC,aAAa,CAAC;QAEjD,IAAI,QAAQ,CAAC,OAAO,EAAE;YAClB,SAAS,CAAC,OAAO,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,uEAA8B,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC;SAClG;QAED,OAAO,SAAS,CAAC;IACrB,CAAC;CACJ;AAEM,MAAM,wBAAwB;CAGpC;;;;;;;;;;;;;;;;;;;;ACpTM,MAAM,sBAAsB;CAKlC;AAEM,MAAM,sBAAsB;CAGlC;AACM,MAAM,sBAAsB;CAKlC;;;;;;;;;;;;;;;;;;;;ACdM,MAAM,+BAA+B;CAK3C;AAEM,MAAM,eAAe;CAK3B;AAEM,MAAM,oBAAoB;CAKhC;;;;;;;;;;;;;;;;;;ACnBM,MAAM,sBAAsB;IACjC,YACW,UAA4B;QAA5B,eAAU,GAAV,UAAU,CAAkB;IAEpC,CAAC;CACL;;;;;;;;;;;;;;;;;;ACLM,MAAM,2BAA2B;IACtC,YACW,eAAsC;QAAtC,oBAAe,GAAf,eAAe,CAAuB;IAE9C,CAAC;CACL;;;;;;;;;;;;;;;;;;ACPM,MAAM,6BAA6B;IACxC,YACW,cAAsB;QAAtB,mBAAc,GAAd,cAAc,CAAQ;IAE9B,CAAC;CACL;;;;;;;;;;;;;;;;;;ACLM,MAAM,8BAA8B;IACvC,YACW,cAAsB;QAAtB,mBAAc,GAAd,cAAc,CAAQ;IAE9B,CAAC;CACL;;;;;;;;;;;;;;;;;;ACHI,MAAM,6BAA6B;IACxC,YACW,mBAA0C,EAC1C,WAAoB;QADpB,wBAAmB,GAAnB,mBAAmB,CAAuB;QAC1C,gBAAW,GAAX,WAAW,CAAS;IAE5B,CAAC;CACL;;;;;;;;;;;;;;;;;;ACRM,MAAM,wBAAwB;IACnC,YACW,SAAiB;QAAjB,cAAS,GAAT,SAAS,CAAQ;IAEzB,CAAC;CACL;;;;;;;;;;;;;;;;;;ACLM,MAAM,yBAAyB;IAClC,YACW,SAAiB;QAAjB,cAAS,GAAT,SAAS,CAAQ;IAEzB,CAAC;CACL;;;;;;;;;;;;;;;;;;ACHI,MAAM,wBAAwB;IACnC,YACW,cAAgC,EAChC,WAAoB;QADpB,mBAAc,GAAd,cAAc,CAAkB;QAChC,gBAAW,GAAX,WAAW,CAAS;IAE5B,CAAC;CACL;;;;;;;;;;;;;;;;;;ACNM,MAAM,0BAA0B;IACrC,YACW,cAAoC;QAApC,mBAAc,GAAd,cAAc,CAAsB;IAE5C,CAAC;CACL;;;;;;;;;;;;;;;;;;ACPM,MAAM,4BAA4B;IACvC,YACW,aAAqB;QAArB,kBAAa,GAAb,aAAa,CAAQ;IAE7B,CAAC;CACL;;;;;;;;;;;;;;;;;;ACLM,MAAM,6BAA6B;IACtC,YACW,aAAqB;QAArB,kBAAa,GAAb,aAAa,CAAQ;IAE7B,CAAC;CACL;;;;;;;;;;;;;;;;;;ACHI,MAAM,4BAA4B;IACvC,YACW,kBAAwC,EACxC,WAAoB;QADpB,uBAAkB,GAAlB,kBAAkB,CAAsB;QACxC,gBAAW,GAAX,WAAW,CAAS;IAE5B,CAAC;CACL;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACR4C;AACI;AACF;AACE;AACE;AACJ;AACa;AACF;AACM;AACN;AACZ;AACE;AACF;AACF;AACK;AACE;AACE;AACF;AACD;AACE;AACE;AACF;AACH;AACE;AACE;AACF;AACA;AACE;AACF;AACA;AACF;AACI;AACF;AACA;AACiB;AACN;AACJ;AACF;AACS;AACrB;AACD;AACI;AACF;AACM;AACF;AACI;AACF;AACe;AAClB;AACJ;AACE;AACE;AACF;AACI;AACI;AACF;AACA;AACgB;AACN;AACf;AACE;AACE;AACF;AACI;;;;;;;;;;;;;;;;;;AC9D9C,MAAM,qBAAqB;IAC9B,YACW,SAA0B;QAA1B,cAAS,GAAT,SAAS,CAAiB;IACjC,CAAC;CACR;;;;;;;;;;;;;;;;;;ACLM,MAAM,uBAAuB;IAChC,YACW,QAAgB,EAChB,aAAoB;QADpB,aAAQ,GAAR,QAAQ,CAAQ;QAChB,kBAAa,GAAb,aAAa,CAAO;IAC3B,CAAC;CACR;;;;;;;;;;;;;;;;;;ACLM,MAAM,wBAAwB;IACjC,YACW,QAAgB;QAAhB,aAAQ,GAAR,QAAQ,CAAQ;IACvB,CAAC;CACR;;;;;;;;;;;;;;;;;;ACFM,MAAM,0BAA0B;IACnC,YACW,QAAwB;QAAxB,aAAQ,GAAR,QAAQ,CAAgB;IAC/B,CAAC;CACR;;;;;;;;;;;;;;;;;;ACLM,MAAM,4BAA4B;IACrC,YAAmB,YAA4B;QAA5B,iBAAY,GAAZ,YAAY,CAAgB;IAAI,CAAC;CACvD;;;;;;;;;;;;;;;;;;ACHM,MAAM,6BAA6B;IACtC,YAAmB,QAAe,EACvB,QAAiB;QADT,aAAQ,GAAR,QAAQ,CAAO;QACvB,aAAQ,GAAR,QAAQ,CAAS;IAE5B,CAAC;CACJ;;;;;;;;;;;;;;;;;;ACJM,MAAM,4BAA4B;IACrC,YAAmB,KAAqB;QAArB,UAAK,GAAL,KAAK,CAAgB;IAExC,CAAC;CACJ;;;;;;;;;;;;;;;;;;ACJM,MAAM,uBAAuB;IAChC,YACW,aAA8B,EAC9B,WAAoB;QADpB,kBAAa,GAAb,aAAa,CAAiB;QAC9B,gBAAW,GAAX,WAAW,CAAS;IAC3B,CAAC;CACR;;;;;;;;;;;;;;;;;;ACJM,MAAM,uBAAuB;IAClC,YACW,WAA8B;QAA9B,gBAAW,GAAX,WAAW,CAAmB;IAEtC,CAAC;CACL;;;;;;;;;;;;;;;;;;ACLM,MAAM,0BAA0B;IACrC,YACW,WAAiC;QAAjC,gBAAW,GAAX,WAAW,CAAsB;IAEzC,CAAC;CACL;;;;;;;;;;;;;;;;;;ACPM,MAAM,4BAA4B;IACvC,YACW,UAAkB;QAAlB,eAAU,GAAV,UAAU,CAAQ;IAE1B,CAAC;CACL;;;;;;;;;;;;;;;;;;ACLM,MAAM,6BAA6B;IACtC,YACW,UAAkB;QAAlB,eAAU,GAAV,UAAU,CAAQ;IAE1B,CAAC;CACL;;;;;;;;;;;;;;;;;;ACHI,MAAM,4BAA4B;IACrC,YACW,eAAqC,EACrC,WAAoB;QADpB,oBAAe,GAAf,eAAe,CAAsB;QACrC,gBAAW,GAAX,WAAW,CAAS;IAE5B,CAAC;CACL;;;;;;;;;;;;;;;;;;ACRI,MAAM,yBAAyB;IACpC,YACW,UAAkB;QAAlB,eAAU,GAAV,UAAU,CAAQ;IAE1B,CAAC;CACL;;;;;;;;;;;;;;;;;;ACLM,MAAM,wCAAwC;IACjD,YACW,UAAkB,EAClB,mBAA6B;QAD7B,eAAU,GAAV,UAAU,CAAQ;QAClB,wBAAmB,GAAnB,mBAAmB,CAAU;IAErC,CAAC;CACL;;;;;;;;;;;;;;;;;;ACNI,MAAM,mCAAmC;IAC5C,YACW,UAAkB;QAAlB,eAAU,GAAV,UAAU,CAAQ;IAE1B,CAAC;CACL;;;;;;;;;;;;;;;;;;ACLI,MAAM,oCAAoC;IAC7C,YACW,UAAkB;QAAlB,eAAU,GAAV,UAAU,CAAQ;IAE1B,CAAC;CACL;;;;;;;;;;;;;;;;;;ACLI,MAAM,mCAAmC;IAC5C,YACW,UAAkB;QAAlB,eAAU,GAAV,UAAU,CAAQ;IAE1B,CAAC;CACL;;;;;;;;;;;;;;;;;;ACLI,MAAM,0BAA0B;IACnC,YACW,UAAkB;QAAlB,eAAU,GAAV,UAAU,CAAQ;IAE1B,CAAC;CACL;;;;;;;;;;;;;;;;;;ACJI,MAAM,0BAA0B;IACnC,YACW,cAAoC;QAApC,mBAAc,GAAd,cAAc,CAAsB;IAE5C,CAAC;CACL;;;;;;;;;;;;;;;;;;ACNI,MAAM,4BAA4B;IACrC,YACW,UAAkB;QAAlB,eAAU,GAAV,UAAU,CAAQ;IAE1B,CAAC;CACP;;;;;;;;;;;;;;;;;;ACLM,MAAM,2CAA2C;IACpD,YACW,UAAkB;QAAlB,eAAU,GAAV,UAAU,CAAQ;IACzB,CAAC;CACR;;;;;;;;;;;;;;;;;;ACJM,MAAM,sCAAsC;IAC/C,YACW,UAAkB,EAClB,aAAsB;QADtB,eAAU,GAAV,UAAU,CAAQ;QAClB,kBAAa,GAAb,aAAa,CAAS;IAE9B,CAAC;CACP;;;;;;;;;;;;;;;;;;ACHM,MAAM,yCAAyC;IAClD,YAAoB,aAAqC;QAArC,kBAAa,GAAb,aAAa,CAAwB;IACxD,CAAC;CAEL;;;;;;;;;;;;;;;;;;ACPM,MAAM,6BAA6B;IACtC,YACW,UAAkB;QAAlB,eAAU,GAAV,UAAU,CAAQ;IAE1B,CAAC;CACP;;;;;;;;;;;;;;;;;;ACLM,MAAM,mCAAmC;IAC5C,YACW,UAAkB,EAClB,MAAe;QADf,eAAU,GAAV,UAAU,CAAQ;QAClB,WAAM,GAAN,MAAM,CAAS;IACtB,CAAC;CACR;;;;;;;;;;;;;;;;;;ACHM,MAAM,4BAA4B;IACrC,YACW,kBAAwC,EACxC,WAAoB;QADpB,uBAAkB,GAAlB,kBAAkB,CAAsB;QACxC,gBAAW,GAAX,WAAW,CAAS;IAE5B,CAAC;CACP;;;;;;;;;;;;;;;;;;ACPM,MAAM,0BAA0B;IACnC,YACW,cAAoC;QAApC,mBAAc,GAAd,cAAc,CAAsB;IAE5C,CAAC;CACL;;;;;;;;;;;;;;;;;;ACNI,MAAM,iCAAiC;IAC1C,YACW,QAAgB;QAAhB,aAAQ,GAAR,QAAQ,CAAQ;IAExB,CAAC;CACP;;;;;;;;;;;;;;;;;;ACLM,MAAM,gCAAgC;IACzC,YACW,UAAkB;QAAlB,eAAU,GAAV,UAAU,CAAQ;IAE1B,CAAC;CACP;;;;;;;;;;;;;;;;;;ACLM,MAAM,4BAA4B;IACrC,YACW,UAAkB;QAAlB,eAAU,GAAV,UAAU,CAAQ;IAE1B,CAAC;CACP;;;;;;;;;;;;;;;;;;ACLM,MAAM,2CAA2C;IACpD,YACW,UAAkB,EAClB,mBAA6B;QAD7B,eAAU,GAAV,UAAU,CAAQ;QAClB,wBAAmB,GAAnB,mBAAmB,CAAU;IAErC,CAAC;CACP;;;;;;;;;;;;;;;;;;ACNM,MAAM,sCAAsC;IAC/C,YACW,UAAkB;QAAlB,eAAU,GAAV,UAAU,CAAQ;IAE1B,CAAC;CACP;;;;;;;;;;;;;;;;;;ACLM,MAAM,6BAA6B;IACtC,YACW,UAAkB;QAAlB,eAAU,GAAV,UAAU,CAAQ;IAE1B,CAAC;CACP;;;;;;;;;;;;;;;;;;ACHM,MAAM,4CAA4C;IACrD,YAAoB,aAAwC;QAAxC,kBAAa,GAAb,aAAa,CAA2B;IAC3D,CAAC;CAEL;;;;;;;;;;;;;;;;;;ACJM,MAAM,4BAA4B;IACrC,YACW,kBAAwC,EACxC,WAAoB;QADpB,uBAAkB,GAAlB,kBAAkB,CAAsB;QACxC,gBAAW,GAAX,WAAW,CAAS;IAE5B,CAAC;CACP;;;;;;;;;;;;;;;;;;ACNM,MAAM,yBAAyB;IAClC,YACW,eAAkC,EAClC,WAAoB;QADpB,oBAAe,GAAf,eAAe,CAAmB;QAClC,gBAAW,GAAX,WAAW,CAAS;IAE5B,CAAC;CACL;;;;;;;;;;;;;;;;;;ACNI,MAAM,wBAAwB;IACjC,YACW,YAAgC;QAAhC,iBAAY,GAAZ,YAAY,CAAoB;IACvC,CAAC;CACR;;;;;;;;;;;;;;;;;;ACNM,MAAM,0BAA0B;IACnC,YACW,WAAmB;QAAnB,gBAAW,GAAX,WAAW,CAAQ;IAC1B,CAAC;CACR;;;;;;;;;;;;;;;;;;ACJM,MAAM,2BAA2B;IACpC,YACW,WAAmB;QAAnB,gBAAW,GAAX,WAAW,CAAQ;IAC1B,CAAC;CACR;;;;;;;;;;;;;;;;;;ACFM,MAAM,0BAA0B;IACnC,YACW,gBAAoC,EACpC,WAAoB;QADpB,qBAAgB,GAAhB,gBAAgB,CAAoB;QACpC,gBAAW,GAAX,WAAW,CAAS;IAC3B,CAAC;CACR;;;;;;;;;;;;;;;;;;ACLM,MAAM,0BAA0B;IACrC,YACW,cAAoC;QAApC,mBAAc,GAAd,cAAc,CAAsB;IAE5C,CAAC;CACL;;;;;;;;;;;;;;;;;;ACPM,MAAM,4BAA4B;IACvC,YACW,aAAqB;QAArB,kBAAa,GAAb,aAAa,CAAQ;IAE7B,CAAC;CACL;;;;;;;;;;;;;;;;;;ACLM,MAAM,6BAA6B;IACtC,YACW,aAAqB;QAArB,kBAAa,GAAb,aAAa,CAAQ;IAE7B,CAAC;CACL;;;;;;;;;;;;;;;;;;ACHI,MAAM,4BAA4B;IACvC,YACW,kBAAwC,EACxC,WAAoB;QADpB,uBAAkB,GAAlB,kBAAkB,CAAsB;QACxC,gBAAW,GAAX,WAAW,CAAS;IAE5B,CAAC;CACL;;;;;;;;;;;;;;;;;;ACNM,MAAM,sCAAsC;IAC/C,YACW,mBAAgD;QAAhD,wBAAmB,GAAnB,mBAAmB,CAA6B;IACvD,CAAC;CACR;;;;;;;;;;;;;;;;;;ACJM,MAAM,qBAAqB;IAC9B,YACW,SAA0B;QAA1B,cAAS,GAAT,SAAS,CAAiB;IACjC,CAAC;CACR;;;;;;;;;;;;;;;;;;ACNM,MAAM,uBAAuB;IAChC,YACW,QAAgB;QAAhB,aAAQ,GAAR,QAAQ,CAAQ;IAExB,CAAC;CACL;;;;;;;;;;;;;;;;;;ACLI,MAAM,wBAAwB;IACjC,YACW,QAAgB;QAAhB,aAAQ,GAAR,QAAQ,CAAQ;IACvB,CAAC;CACR;;;;;;;;;;;;;;;;;;ACFM,MAAM,uBAAuB;IAChC,YACW,aAA8B,EAC9B,WAAoB;QADpB,kBAAa,GAAb,aAAa,CAAiB;QAC9B,gBAAW,GAAX,WAAW,CAAS;IAC3B,CAAC;CACR;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACP2B;AACM;AACK;AACL;AACR;AACY;AACA;AACA;AACP;AACW;AACC;AACf;AACE;AACC;AACQ;AACP;AACO;AACJ;AACC;AACJ;AACI;AACwB;AACpB;AACa;AACT;AACD;AACF;AACa;AACR;AACxB;AACwB;AACS;AACpB;AACI;AACP;AACI;AACD;AACA;AACC;AACE;AACF;AACQ;AACX;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC1CiH;AAI3I,MAAM,eAAe;IAqBjB,MAAM,CAAC,sBAAsB,CAAC,eAAgC;QACjE,MAAM,SAAS,GAAG,IAAI,oBAAoB,EAAE,CAAC;QAC7C,SAAS,CAAC,EAAE,GAAG,eAAe,CAAC,EAAE,CAAC;QAClC,SAAS,CAAC,UAAU,GAAG,eAAe,CAAC,UAAU,CAAC;QAClD,SAAS,CAAC,IAAI,GAAG,eAAe,CAAC,IAAI,CAAC;QACtC,SAAS,CAAC,MAAM,GAAG,eAAe,CAAC,MAAM,CAAC;QAE1C,OAAO,SAAS,CAAC;IACrB,CAAC;IAEM,MAAM,CAAC,cAAc,CAAC,WAA4B;QACrD,IAAI,SAAS,GAAG,IAAI,eAAe,EAAE,CAAC;QACtC,SAAS,CAAC,EAAE,GAAG,WAAW,CAAC,EAAE,CAAC;QAC9B,SAAS,CAAC,OAAO,GAAG,WAAW,CAAC,OAAO,CAAC;QACxC,SAAS,CAAC,YAAY,GAAG,WAAW,CAAC,YAAY,CAAC;QAClD,SAAS,CAAC,aAAa,GAAG,WAAW,CAAC,aAAa,CAAC;QACpD,SAAS,CAAC,KAAK,GAAG,WAAW,CAAC,KAAK,CAAC;QACpC,SAAS,CAAC,MAAM,GAAG,WAAW,CAAC,MAAM,CAAC;QACtC,SAAS,CAAC,oBAAoB,GAAG,WAAW,CAAC,oBAAoB,CAAC;QAClE,SAAS,CAAC,sBAAsB,GAAG,WAAW,CAAC,sBAAsB,CAAC;QACtE,SAAS,CAAC,UAAU,GAAG,WAAW,CAAC,UAAU,CAAC;QAC9C,SAAS,CAAC,QAAQ,GAAG,WAAW,CAAC,QAAQ,CAAC;QAC1C,SAAS,CAAC,IAAI,GAAG,WAAW,CAAC,IAAI,CAAC;QAClC,SAAS,CAAC,MAAM,GAAG,WAAW,CAAC,MAAM,CAAC;QACtC,SAAS,CAAC,SAAS,GAAG,WAAW,CAAC,SAAS,CAAC;QAC5C,SAAS,CAAC,OAAO,GAAG,WAAW,CAAC,OAAO,CAAC;QACxC,SAAS,CAAC,WAAW,GAAG,WAAW,CAAC,WAAW,CAAC;QAChD,SAAS,CAAC,SAAS,GAAG,WAAW,CAAC,SAAS,CAAC;QAC5C,SAAS,CAAC,aAAa,GAAG,WAAW,CAAC,aAAa,CAAC;QACpD,SAAS,CAAC,KAAK,GAAG,WAAW,CAAC,KAAK,CAAC;QACpC,OAAO,SAAS,CAAC;IACrB,CAAC;CACJ;AAEM,MAAM,oBAAoB;CAKhC;AAEM,MAAM,cAAc;IAkBhB,MAAM,CAAC,WAAW,CAAC,QAAwB;QAC9C,MAAM,SAAS,GAAG,IAAI,eAAe,EAAE,CAAC;QACxC,SAAS,CAAC,EAAE,GAAG,QAAQ,CAAC,EAAE,CAAC;QAC3B,SAAS,CAAC,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAC;QAC/B,SAAS,CAAC,UAAU,GAAG,QAAQ,CAAC,UAAU,CAAC;QAC3C,SAAS,CAAC,OAAO,GAAG,QAAQ,CAAC,OAAO,CAAC;QACrC,SAAS,CAAC,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAC;QACnC,SAAS,CAAC,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC;QACjC,SAAS,CAAC,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC;QACjC,SAAS,CAAC,WAAW,GAAG,QAAQ,CAAC,WAAW,CAAC;QAC7C,SAAS,CAAC,QAAQ,GAAG,QAAQ,CAAC,QAAQ,CAAC;QACvC,SAAS,CAAC,aAAa,GAAG,QAAQ,CAAC,aAAa,CAAC;QACjD,SAAS,CAAC,YAAY,GAAG,QAAQ,CAAC,YAAY,CAAC;QAC/C,SAAS,CAAC,aAAa,GAAG,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC;QACjD,SAAS,CAAC,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAC;QACnC,SAAS,CAAC,SAAS,GAAG,QAAQ,CAAC,SAAS,CAAC;QACzC,SAAS,CAAC,SAAS,GAAG,QAAQ,CAAC,SAAS,CAAC;QACzC,SAAS,CAAC,OAAO,GAAG,QAAQ,CAAC,OAAO,CAAC;QACrC,OAAO,SAAS,CAAC;IACrB,CAAC;CACJ;AAEM,MAAM,cAAc;IAcvB,YAAY,SAAyB;QACjC,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC,UAAU,CAAC;QACvC,IAAI,CAAC,IAAI,GAAG,SAAS,CAAC,IAAI,CAAC;QAC3B,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;QACvC,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;QACrC,IAAI,CAAC,QAAQ,GAAG,SAAS,CAAC,QAAQ,CAAC;QACnC,IAAI,CAAC,aAAa,GAAG,MAAM,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC;QACrD,IAAI,CAAC,OAAO,GAAG,SAAS,CAAC,OAAO,CAAC;QACjC,IAAI,CAAC,WAAW,GAAG,SAAS,CAAC,WAAW,CAAC;QACzC,IAAI,CAAC,YAAY,GAAG,SAAS,CAAC,YAAY,CAAC;QAC3C,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;QAC7C,IAAI,CAAC,KAAK,GAAG,SAAS,CAAC,KAAK,IAAI,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;QAC3E,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC,SAAS,IAAI,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;QACvF,IAAI,CAAC,OAAO,GAAG,SAAS,CAAC,OAAO,IAAI,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;IACrF,CAAC;CACJ;AAEM,MAAM,eAAe;IAcxB,YAAY,SAA0B;QAClC,IAAI,CAAC,EAAE,GAAG,SAAS,CAAC,EAAE,CAAC;QACvB,IAAI,CAAC,IAAI,GAAG,SAAS,CAAC,IAAI,CAAC;QAC3B,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;QACvC,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;QACrC,IAAI,CAAC,QAAQ,GAAG,SAAS,CAAC,QAAQ,CAAC;QACnC,IAAI,CAAC,aAAa,GAAG,MAAM,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC;QACrD,IAAI,CAAC,OAAO,GAAG,SAAS,CAAC,OAAO,CAAC;QACjC,IAAI,CAAC,WAAW,GAAG,SAAS,CAAC,WAAW,CAAC;QACzC,IAAI,CAAC,YAAY,GAAG,SAAS,CAAC,YAAY,CAAC;QAC3C,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;QAC7C,IAAI,CAAC,KAAK,GAAG,SAAS,CAAC,KAAK,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;QACtE,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC,SAAS,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;QAClF,IAAI,CAAC,OAAO,GAAG,SAAS,CAAC,OAAO,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;IAChF,CAAC;CACJ;AACM,MAAM,2BAA2B;CAQvC;AAEM,MAAM,+BAA+B;CAG3C;AAEM,MAAM,kBAAkB;CAK9B;AACM,MAAM,iBAAiB;CAG7B;AACM,MAAM,aAAa;IAGtB,YAAY,IAAY,EAAE,KAAa;QACnC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;IACvB,CAAC;CACJ;AAEM,MAAM,6BAA6B;CAGzC;AAEM,MAAM,6BAA6B;IAI/B,MAAM,CAAC,sBAAsB,CAAC,QAAuC;QACxE,MAAM,SAAS,GAAG,IAAI,uBAAuB,EAAE,CAAC;QAChD,SAAS,CAAC,EAAE,GAAG,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;QAClC,SAAS,CAAC,UAAU,GAAG,QAAQ,CAAC,MAAM,CAAC,UAAU,CAAC;QAClD,SAAS,CAAC,OAAO,GAAG,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC;QAC5C,SAAS,CAAC,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC;QAC1C,SAAS,CAAC,QAAQ,GAAG,QAAQ,CAAC,cAAc,CAAC,WAAW,CAAC;QACzD,SAAS,CAAC,IAAI,GAAG,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC;QACtC,SAAS,CAAC,QAAQ,GAAG,QAAQ,CAAC,MAAM,CAAC,QAAQ,CAAC;QAC9C,SAAS,CAAC,aAAa,GAAG,QAAQ,CAAC,MAAM,CAAC,aAAa,CAAC;QACxD,SAAS,CAAC,YAAY,GAAG,QAAQ,CAAC,MAAM,CAAC,YAAY,CAAC;QACtD,SAAS,CAAC,eAAe,GAAG,QAAQ,CAAC,cAAc,CAAC,kBAAkB,CAAC;QACvE,SAAS,CAAC,kBAAkB,GAAG,QAAQ,CAAC,SAAS,CAAC,kBAAkB,CAAC;QACrE,SAAS,CAAC,YAAY,GAAG,QAAQ,CAAC,SAAS,CAAC,YAAY,CAAC;QACzD,SAAS,CAAC,mBAAmB,GAAG,QAAQ,CAAC,SAAS,CAAC,mBAAmB,CAAC;QACvE,SAAS,CAAC,cAAc,GAAG,QAAQ,CAAC,SAAS,CAAC,cAAc,CAAC;QAC7D,SAAS,CAAC,2BAA2B,GAAG,QAAQ,CAAC,SAAS,CAAC,2BAA2B,CAAC;QACvF,SAAS,CAAC,oBAAoB,GAAG,QAAQ,CAAC,SAAS,CAAC,oBAAoB,CAAC;QACzE,SAAS,CAAC,sBAAsB,GAAG,QAAQ,CAAC,SAAS,CAAC,sBAAsB,CAAC;QAC7E,SAAS,CAAC,MAAM,GAAG,QAAQ,CAAC,SAAS,CAAC,MAAM,CAAC;QAC7C,OAAO,SAAS,CAAC;IACrB,CAAC;CACJ;AAEM,MAAM,uBAAuB;IAApC;QAaI,oBAAe,GAA2B,6DAAsB,CAAC,UAAU,CAAC;IAahF,CAAC;CAAA;AAEM,MAAM,mBAAmB;CAa/B;AACM,MAAM,mBAAmB;CAK/B;AACM,MAAM,eAAe;CAM3B;AAEM,MAAM,cAAc;IAOvB,gBAAgB,CAAC;IAEV,MAAM,CAAC,WAAW,CAAC,KAAqB;QAC3C,IAAI,SAAS,GAAG,IAAI,cAAc,EAAE,CAAC;QACrC,SAAS,CAAC,EAAE,GAAG,KAAK,CAAC,EAAE,CAAC;QACxB,SAAS,CAAC,QAAQ,GAAG,KAAK,CAAC,QAAQ,CAAC;QACpC,SAAS,CAAC,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC;QAClC,SAAS,CAAC,cAAc,GAAG,KAAK,CAAC,cAAc,CAAC;QAChD,SAAS,CAAC,qBAAqB,GAAG,KAAK,CAAC,qBAAqB,CAAC;QAC9D,SAAS,CAAC,aAAa,GAAG,KAAK,CAAC,aAAa,CAAC;QAC9C,OAAO,SAAS,CAAC;IACrB,CAAC;IAEM,MAAM,CAAC,iBAAiB,CAAC,cAA8B;QAC1D,IAAI,SAAS,GAAG,IAAI,cAAc,EAAE,CAAC;QACrC,SAAS,CAAC,EAAE,GAAG,MAAM,CAAC,cAAc,CAAC,EAAE,CAAC,CAAC;QACzC,SAAS,CAAC,QAAQ,GAAG,MAAM,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC;QACrD,SAAS,CAAC,cAAc,GAAG,MAAM,CAAC,cAAc,CAAC,cAAc,CAAC,CAAC;QACjE,SAAS,CAAC,OAAO,GAAG,MAAM,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;QACnD,SAAS,CAAC,qBAAqB,GAAG,cAAc,CAAC,qBAAqB,CAAC;QACvE,SAAS,CAAC,aAAa,GAAG,cAAc,CAAC,aAAa,CAAC;QACvD,OAAO,SAAS,CAAC;IACrB,CAAC;CACJ;AAEM,MAAM,kBAAkB;CAW9B;AAEM,MAAM,cAAe,SAAQ,cAAc;IAE9C;QACI,KAAK,EAAE,CAAC;IACZ,CAAC;IAEM,MAAM,CAAC,iBAAiB,CAAC,cAA8B;QAC1D,IAAI,SAAS,GAAG,IAAI,cAAc,EAAE,CAAC;QACrC,SAAS,CAAC,EAAE,GAAG,MAAM,CAAC,cAAc,CAAC,EAAE,CAAC,CAAC;QACzC,SAAS,CAAC,QAAQ,GAAG,MAAM,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC;QACrD,SAAS,CAAC,cAAc,GAAG,MAAM,CAAC,cAAc,CAAC,cAAc,CAAC,CAAC;QACjE,SAAS,CAAC,OAAO,GAAG,MAAM,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;QACnD,SAAS,CAAC,UAAU,GAAG,MAAM,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC;QACzD,SAAS,CAAC,qBAAqB,GAAG,cAAc,CAAC,qBAAqB,IAAI,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,cAAc,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;QACrI,SAAS,CAAC,aAAa,GAAG,cAAc,CAAC,aAAa,CAAC;QACvD,OAAO,SAAS,CAAC;IACrB,CAAC;IAED,gBAAgB,CAAC,SAAyB;QACtC,IAAI,KAAK,GAAG,IAAI,cAAc,EAAE,CAAC;QAEjC,OAAO,KAAK,CAAC;IACjB,CAAC;CAEJ;AAEM,MAAM,6BAA6B;IACtC,YAAY,cAAwB,EAAE,aAAuB,EAAE,eAAuB,EAAE,cAAwB;QAC5G,IAAI,CAAC,eAAe,GAAG,eAAe,CAAC;QACvC,IAAI,CAAC,mBAAmB,GAAG,cAAc,CAAC;QAC1C,IAAI,CAAC,kBAAkB,GAAG,aAAa,CAAC;QACxC,IAAI,CAAC,kBAAkB,GAAG,cAAc,CAAC;IAC7C,CAAC;CAMJ;AAEM,MAAM,sBAAsB;IAC/B;QAKA,oBAAe,GAAW,EAAE,CAAC;QAC7B,uBAAkB,GAAa,EAAE,CAAC;QAL9B,IAAI,CAAC,eAAe,GAAG,EAAE,CAAC;QAC1B,IAAI,CAAC,kBAAkB,GAAG,EAAE,CAAC;IACjC,CAAC;IAIM,MAAM,CAAC,+BAA+B,CAAC,sBAA8C;QACxF,MAAM,6BAA6B,GAAG,IAAI,6BAA6B,CAAC,EAAE,EAAE,EAAE,EAAE,sBAAsB,CAAC,eAAe,EAAE,sBAAsB,CAAC,kBAAkB,CAAC,CAAC;QACnK,OAAO,6BAA6B,CAAC;IACzC,CAAC;CACJ;AAEM,MAAM,uBAAuB;IAChC,YAAY,6BAA4D,EAAE,UAAkB,EAAE,aAAoC;QAC9H,IAAI,CAAC,6BAA6B,GAAG,6BAA6B,CAAC;QACnE,IAAI,CAAC,mBAAmB,GAAG,aAAa,CAAC;QACzC,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;IACjC,CAAC;CAKJ;AAEM,MAAM,wBAAwB;CAIpC;AAEM,MAAM,uBAAuB;CAMnC;AAEM,MAAM,kBAAkB;CAM9B;AAEM,MAAM,oBAAoB;CAMhC;;;;;;;;;;;;;;;;;;;;;;;AC7aoD;AAG9C,MAAM,iBAAiB;CAS7B;AAEM,MAAM,gBAAgB;IASlB,MAAM,CAAC,WAAW,CAAC,QAA0B;QAChD,MAAM,SAAS,GAAG,IAAI,iBAAiB,EAAE,CAAC;QAC1C,SAAS,CAAC,OAAO,GAAG,QAAQ,CAAC,OAAO,CAAC;QACrC,SAAS,CAAC,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC;QACjC,SAAS,CAAC,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAC;QAC/B,SAAS,CAAC,0BAA0B,GAAG,QAAQ,CAAC,0BAA0B,GAAG,gEAAqB,CAAC,4BAA4B,CAAC;QAChI,SAAS,CAAC,yBAAyB,GAAG,QAAQ,CAAC,yBAAyB,GAAG,gEAAqB,CAAC,4BAA4B,CAAC;QAC9H,SAAS,CAAC,UAAU,GAAG,QAAQ,CAAC,UAAU,CAAC,UAAU,CAAC;QACtD,SAAS,CAAC,UAAU,GAAG,QAAQ,CAAC,UAAU,CAAC;QAC3C,IAAI,QAAQ,CAAC,UAAU,EAAE;YACrB,SAAS,CAAC,YAAY,GAAG,QAAQ,CAAC,UAAU,CAAC,YAAY,CAAC;YAC1D,SAAS,CAAC,QAAQ,GAAG,QAAQ,CAAC,UAAU,CAAC,QAAQ,CAAC;SACrD;QACD,OAAO,SAAS,CAAC;IACrB,CAAC;CACJ;AAEM,MAAM,UAAU;CAItB;AAEM,MAAM,qBAAqB;CAIjC;AAEM,MAAM,yBAAyB;IAiBlC,YAAmB,aAAqB;QAArB,kBAAa,GAAb,aAAa,CAAQ;QAVjC,UAAK,GAAU,IAAI,CAAC;QAWvB,IAAI,CAAC,WAAW,GAAG,EAAE,CAAC;QACtB,IAAI,CAAC,SAAS,GAAG,EAAE,CAAC;QACpB,IAAI,CAAC,UAAU,GAAG,EAAE,CAAC;QACrB,IAAI,CAAC,WAAW,GAAG,CAAC,CAAC;IACzB,CAAC;IAbD,IAAW,mBAAmB;QAC1B,IAAI,KAAK,GAAG,CAAC,CAAC;QACd,KAAK,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC;QAChC,KAAK,IAAI,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC;QACjC,KAAK,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC;QAC/B,OAAO,KAAK,CAAC;IACjB,CAAC;CAQJ;;;;;;;;;;;;;;;;;;;;;;;ACxEM,MAAM,wBAAwB;CAGpC;AAEM,MAAM,YAAY;CAGxB;AAEM,MAAM,oBAAoB;CAShC;AAEM,MAAM,4BAA4B;CAGxC;AAEM,MAAM,wBAAyB,SAAQ,oBAAoB;CAGjE;AAEM,MAAM,wBAAwB;CAKpC;;;;;;;;;;;;;;;;;;ACvCM,MAAM,kBAAkB;IAK3B,YAAY,EAAU,EAAE,QAAc,EAAE,MAAY;QAChD,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC;QACb,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACzB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACvB,CAAC;CACN;;;;;;;;;;;;;;;;;;;;;;;;ACVoD;AACT;AAErC,MAAM,iBAAiB;CAS7B;AAEM,MAAM,gBAAgB;IAUpB,MAAM,CAAC,WAAW,CAAC,QAA0B;QAClD,MAAM,SAAS,GAAG,IAAI,iBAAiB,EAAE,CAAC;QAC1C,MAAM,EAAE,4BAA4B,EAAE,GAAG,gEAAqB,CAAC;QAE/D,MAAM,WAAW,GAAG,gBAAgB,CAAC,cAAc,CACjD,QAAQ,CAAC,IAAI,EACb,QAAQ,CAAC,UAAU,CAAC,iBAAiB,GAAG,4BAA4B,EACpE,QAAQ,CAAC,OAAO,CACjB,CAAC;QAEF,SAAS,CAAC,OAAO,GAAG,QAAQ,CAAC,OAAO,CAAC;QACrC,SAAS,CAAC,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC;QACjC,SAAS,CAAC,IAAI,GAAG,WAAW,CAAC;QAC7B,SAAS,CAAC,UAAU,GAAG,QAAQ,CAAC,UAAU,CAAC;QAC3C,IAAI,QAAQ,CAAC,UAAU,EAAE;YACvB,SAAS,CAAC,KAAK,GAAG,QAAQ,CAAC,UAAU,CAAC,KAAK,CAAC;SAC7C;QACD,SAAS,CAAC,0BAA0B;YAClC,QAAQ,CAAC,0BAA0B,GAAG,4BAA4B,CAAC;QAErE,SAAS,CAAC,yBAAyB;YACjC,QAAQ,CAAC,yBAAyB,GAAG,4BAA4B,CAAC;QAEpE,SAAS,CAAC,YAAY,GAAG,QAAQ,CAAC,OAAO;YACvC,CAAC,CAAC,uDAAgB,CAAC,KAAK;YACxB,CAAC,CAAC,uDAAgB,CAAC,IAAI,CAAC;QAE1B,OAAO,SAAS,CAAC;IACnB,CAAC;IAEO,MAAM,CAAC,cAAc,CAC3B,IAAY,EACZ,iBAAyB,EACzB,OAAgB;QAEhB,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,UAAU,CAAC,gCAAgC,CAAC,EAAE;YACjE,MAAM,SAAS,GAAG,IAAI,IAAI,CAAC,iBAAiB,CAAC,CAAC,cAAc,EAAE,CAAC;YAC/D,OAAO,GAAG,IAAI,IAAI,SAAS,EAAE,CAAC;SAC/B;QAED,OAAO,IAAI,CAAC;IACd,CAAC;CACF;AAEM,MAAM,UAAU;CAMtB;AAEM,MAAM,qBAAqB;CAIjC;AAEM,MAAM,yBAAyB;IAiBpC,YAAmB,aAAqB;QAArB,kBAAa,GAAb,aAAa,CAAQ;QAVjC,UAAK,GAAU,IAAI,CAAC;QAWzB,IAAI,CAAC,WAAW,GAAG,EAAE,CAAC;QACtB,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC;QACjB,IAAI,CAAC,UAAU,GAAG,EAAE,CAAC;QACrB,IAAI,CAAC,WAAW,GAAG,CAAC,CAAC;IACvB,CAAC;IAbD,IAAW,mBAAmB;QAC5B,IAAI,KAAK,GAAG,CAAC,CAAC;QACd,KAAK,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC;QAChC,KAAK,IAAI,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC;QACjC,KAAK,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC;QAC5B,OAAO,KAAK,CAAC;IACf,CAAC;CAQF;;;;;;;;;;;;;;;;;;;;ACvGM,MAAM,sCAAsC;CAQlD;AAEM,MAAM,eAAe;CAG3B;AAEM,MAAM,0BAA0B;CAKtC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACtBgC;AACI;AACQ;AACR;AACA;;;;;;;;;;;;;;;;;;;ACA9B,MAAM,2BAA2B;CAIvC;AAEM,MAAM,0BAA0B;IAK5B,MAAM,CAAC,WAAW,CAAC,QAAoC;QAC1D,MAAM,SAAS,GAAG,IAAI,2BAA2B,EAAE,CAAC;QACpD,SAAS,CAAC,YAAY,GAAG,QAAQ,CAAC,YAAY,CAAC;QAC/C,SAAS,CAAC,YAAY,GAAG,QAAQ,CAAC,YAAY,CAAC;QAC/C,SAAS,CAAC,YAAY,GAAG,QAAQ,CAAC,YAAY,CAAC;QAE/C,OAAO,SAAS,CAAC;IACrB,CAAC;CACJ;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACpB6C;AACkH;AAGzJ,MAAM,oBAAoB;IAAjC;QAQW,YAAO,GAAW,GAAG,CAAC;QAkB7B,uBAAuB;QACvB,cAAS,GAAG,sDAAW,CAAC,oBAAoB,CAAC;IACjD,CAAC;CAAA;AAEM,MAAM,mBAAmB;IAsBrB,MAAM,CAAC,WAAW,CAAC,QAA6B;QACnD,MAAM,SAAS,GAAG,IAAI,oBAAoB,EAAE,CAAC;QAC7C,SAAS,CAAC,QAAQ,GAAG,QAAQ,CAAC,QAAQ,CAAC;QACvC,SAAS,CAAC,EAAE,GAAG,QAAQ,CAAC,UAAU,CAAC;QACnC,SAAS,CAAC,YAAY,GAAG,QAAQ,CAAC,YAAY,CAAC;QAC/C,SAAS,CAAC,WAAW,GAAG,QAAQ,CAAC,WAAW,CAAC;QAE7C,SAAS,CAAC,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC;QACjC,SAAS,CAAC,OAAO,GAAG,QAAQ,CAAC,OAAO,CAAC;QACrC,SAAS,CAAC,QAAQ,GAAG,QAAQ,CAAC,QAAQ,CAAC;QACvC,SAAS,CAAC,gBAAgB,GAAG,QAAQ,CAAC,gBAAgB,CAAC;QACvD,SAAS,CAAC,eAAe,GAAG,QAAQ,CAAC,eAAe,CAAC;QACrD,SAAS,CAAC,mBAAmB,GAAG,QAAQ,CAAC,mBAAmB,CAAC;QAC7D,SAAS,CAAC,sBAAsB,GAAG,QAAQ,CAAC,sBAAsB,CAAC;QACnE,SAAS,CAAC,sBAAsB,GAAG,QAAQ,CAAC,sBAAsB,CAAC;QACnE,SAAS,CAAC,yBAAyB,GAAG,QAAQ,CAAC,yBAAyB,CAAC;QACzE,SAAS,CAAC,yBAAyB,GAAG,QAAQ,CAAC,yBAAyB,CAAC;QACzE,SAAS,CAAC,4BAA4B,GAAG,QAAQ,CAAC,4BAA4B,CAAC;QAC/E,SAAS,CAAC,aAAa,GAAG,QAAQ,CAAC,aAAa,CAAC;QACjD,SAAS,CAAC,uBAAuB,GAAG,QAAQ,CAAC,uBAAuB,CAAC;QACrE,SAAS,CAAC,mBAAmB,GAAG,QAAQ,CAAC,mBAAmB,CAAC;QAE7D,OAAO,SAAS,CAAC;IACnB,CAAC;CACN;AAEM,MAAM,oBAAoB;IAkB7B,YAAY,SAA+B;QACvC,IAAI,CAAC,QAAQ,GAAG,SAAS,CAAC,QAAQ,CAAC;QACnC,IAAI,CAAC,EAAE,GAAG,SAAS,CAAC,EAAE,CAAC;QAEvB,IAAI,CAAC,KAAK,GAAG,SAAS,CAAC,KAAK,CAAC;QAC7B,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,oCAAmC;QAC5E,IAAI,CAAC,QAAQ,GAAG,SAAS,CAAC,QAAQ,CAAC;QACnC,IAAI,CAAC,gBAAgB,GAAG,SAAS,CAAC,gBAAgB,CAAC;QACnD,IAAI,CAAC,eAAe,GAAG,SAAS,CAAC,eAAe,CAAC;QACjD,IAAI,CAAC,mBAAmB,GAAG,MAAM,CAAC,SAAS,CAAC,mBAAmB,CAAC,CAAC,mCAAkC;QACnG,IAAI,CAAC,sBAAsB,GAAG,SAAS,CAAC,sBAAsB,CAAC;QAC/D,IAAI,CAAC,sBAAsB,GAAG,MAAM,CAAC,SAAS,CAAC,sBAAsB,CAAC,CAAC,mCAAkC;QACzG,IAAI,CAAC,yBAAyB,GAAG,SAAS,CAAC,yBAAyB,CAAC;QACrE,IAAI,CAAC,yBAAyB,GAAG,MAAM,CAAC,SAAS,CAAC,yBAAyB,CAAC,CAAC,mCAAkC;QAC/G,IAAI,CAAC,4BAA4B,GAAG,SAAS,CAAC,4BAA4B,CAAC;QAC3E,IAAI,CAAC,mBAAmB,GAAG,SAAS,CAAC,mBAAmB,CAAC;IAC7D,CAAC;CACJ;AAEM,MAAM,6BAA8B,SAAQ,oBAAoB;IAG5D,MAAM,CAAC,WAAW,CAAC,QAA8B,EAAE,UAA+C;QACrG,MAAM,SAAS,GAAG,IAAI,6BAA6B,CAAC;QACpD,SAAS,CAAC,EAAE,GAAG,QAAQ,CAAC,EAAE,CAAC;QAC3B,SAAS,CAAC,YAAY,GAAG,QAAQ,CAAC,YAAY,CAAC;QAC/C,SAAS,CAAC,mBAAmB,GAAG,QAAQ,CAAC,mBAAmB,CAAC;QAC7D,SAAS,CAAC,sBAAsB,GAAG,QAAQ,CAAC,sBAAsB,CAAC;QACnE,SAAS,CAAC,sBAAsB,GAAG,QAAQ,CAAC,sBAAsB,CAAC;QACnE,SAAS,CAAC,yBAAyB,GAAG,QAAQ,CAAC,yBAAyB,CAAC;QACzE,SAAS,CAAC,yBAAyB,GAAG,QAAQ,CAAC,yBAAyB,CAAC;QACzE,SAAS,CAAC,4BAA4B,GAAG,QAAQ,CAAC,4BAA4B,CAAC;QAC/E,SAAS,CAAC,UAAU,GAAG,UAAU,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC,uEAAkB,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC,CAAC;QAE9F,OAAO,SAAS,CAAC;IACrB,CAAC;CACJ;AAEM,MAAM,4BAA4B;IAK9B,MAAM,CAAC,WAAW,CAAC,QAAsC;QAC5D,MAAM,SAAS,GAAG,IAAI,6BAA6B,EAAE,CAAC;QACtD,SAAS,CAAC,QAAQ,GAAG,QAAQ,CAAC,QAAQ,CAAC;QACvC,SAAS,CAAC,EAAE,GAAG,QAAQ,CAAC,EAAE,CAAC;QAE3B,IAAI,QAAQ,CAAC,UAAU,EAAE;YACrB,SAAS,CAAC,UAAU,GAAG,QAAQ,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,sEAAiB,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC,CAAC;SAC3F;QAED,OAAO,SAAS,CAAC;IACnB,CAAC;CACN;AAEM,MAAM,6BAA6B;IAKtC,YAAY,SAAwC;QAChD,IAAI,CAAC,QAAQ,GAAG,SAAS,CAAC,QAAQ,CAAC;QACnC,IAAI,CAAC,EAAE,GAAG,SAAS,CAAC,EAAE,CAAC;QACvB,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,uEAAkB,CAAC,EAAE,CAAC,CAAC,CAAC;IACjF,CAAC;CACJ;AAEM,MAAM,4BAA4B;IAK9B,MAAM,CAAC,wBAAwB,CAAC,iBAA+C;QACpF,MAAM,gBAAgB,GAAa;YAC/B,KAAK,EAAE,iBAAiB,CAAC,IAAI;YAC7B,IAAI,EAAE,iBAAiB,CAAC,EAAE;YAC1B,UAAU,EAAE,IAAI;YAChB,GAAG,EAAE,iBAAiB,CAAC,EAAE,CAAC,QAAQ,EAAE;YACpC,QAAQ,EAAE,iBAAiB,CAAC,UAAU,CAAC,GAAG,CAAC,kFAA6B,CAAC,yBAAyB,CAAC;SACtG,CAAC;QAEF,OAAO,gBAAgB,CAAC;IAC1B,CAAC;CACJ;AAEM,MAAM,2BAA2B;IAK7B,MAAM,CAAC,WAAW,CAAC,QAAqC;QAC3D,MAAM,SAAS,GAAG,IAAI,4BAA4B,EAAE,CAAC;QAErD,SAAS,CAAC,EAAE,GAAG,QAAQ,CAAC,EAAE,CAAC;QAC3B,SAAS,CAAC,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAC;QAE/B,IAAI,QAAQ,CAAC,UAAU,EAAE;YACrB,SAAS,CAAC,UAAU,GAAG,QAAQ,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,iFAA4B,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC,CAAC;SACtG;QAED,OAAO,SAAS,CAAC;IACnB,CAAC;CACN;AAEM,MAAM,iCAAkC,SAAQ,4BAA4B;CAElF;;;;;;;;;;;;;;;;;;;;;;;;ACjN6C;AAIvC,MAAM,oBAAoB;IAAjC;QAkBI,uBAAuB;QACvB,cAAS,GAAG,sDAAW,CAAC,oBAAoB,CAAC;IAKjD,CAAC;CAAA;AAEM,MAAM,uBAAuB;CAGnC;AAEM,MAAM,mBAAmB;IAarB,MAAM,CAAC,WAAW,CAAC,QAA6B;QACnD,MAAM,SAAS,GAAG,IAAI,oBAAoB,EAAE,CAAC;QAC7C,SAAS,CAAC,QAAQ,GAAG,QAAQ,CAAC,QAAQ,CAAC;QACvC,SAAS,CAAC,EAAE,GAAG,QAAQ,CAAC,EAAE,CAAC;QAC3B,SAAS,CAAC,YAAY,GAAG,QAAQ,CAAC,YAAY,CAAC;QAC/C,SAAS,CAAC,WAAW,GAAG,QAAQ,CAAC,WAAW,CAAC;QAC7C,SAAS,CAAC,WAAW,GAAG,QAAQ,CAAC,WAAW,CAAC;QAC7C,SAAS,CAAC,eAAe,GAAG,QAAQ,CAAC,eAAe,CAAC;QACrD,SAAS,CAAC,OAAO,GAAG,QAAQ,CAAC,OAAO,CAAC;QACrC,SAAS,CAAC,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAC;QAC/B,SAAS,CAAC,SAAS,GAAG,QAAQ,CAAC,SAAS,CAAC;QACzC,SAAS,CAAC,aAAa,GAAC,QAAQ,CAAC,aAAa,CAAC;QAE/C,OAAO,SAAS,CAAC;IACrB,CAAC;CACJ;AAEM,MAAM,oBAAoB;IAO7B,YAAY,QAA8B;QACtC,IAAI,CAAC,UAAU,GAAG,QAAQ,CAAC,EAAE,CAAC;QAC9B,IAAI,CAAC,IAAI,GAAG,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QAClC,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC,SAAS,CAAC;QACpC,IAAI,CAAC,eAAe,GAAG,MAAM,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAC;IAC5D,CAAC;CACJ;AAEM,MAAM,oBAAoB;CAIhC;AAEM,MAAM,eAAe;CAK3B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC5FiD;AACJ;AAC0B;AAMlD;AASf,MAAM,oBAAoB;IAAjC;QAqBE,uBAAuB;QACvB,cAAS,GAAG,sDAAW,CAAC,oBAAoB,CAAC;IAC/C,CAAC;CAAA;AAEM,MAAM,mBAAmB;IAevB,MAAM,CAAC,WAAW,CACvB,QAA6B;QAE7B,MAAM,SAAS,GAAG,IAAI,oBAAoB,EAAE,CAAC;QAC7C,SAAS,CAAC,QAAQ,GAAG,QAAQ,CAAC,QAAQ,CAAC;QACvC,SAAS,CAAC,EAAE,GAAG,QAAQ,CAAC,EAAE,CAAC;QAC3B,SAAS,CAAC,YAAY,GAAG,QAAQ,CAAC,YAAY,CAAC;QAC/C,SAAS,CAAC,WAAW,GAAG,QAAQ,CAAC,WAAW,CAAC;QAC7C,SAAS,CAAC,aAAa,GAAG,QAAQ,CAAC,aAAa,CAAC;QACjD,SAAS,CAAC,uBAAuB,GAAG,QAAQ,CAAC,uBAAuB,CAAC;QACrE,SAAS,CAAC,cAAc,GAAG,QAAQ,CAAC,cAAc,CAAC;QACnD,SAAS,CAAC,sBAAsB,GAAG,QAAQ,CAAC,sBAAsB,CAAC;QACnE,SAAS,CAAC,mBAAmB,GAAG,QAAQ,CAAC,mBAAmB,CAAC;QAC7D,SAAS,CAAC,YAAY;YACpB,QAAQ,CAAC,mBAAmB,KAAK,0DAAmB,CAAC,IAAI;gBACvD,CAAC,CAAC,4DAAoB,CAAC,eAAe,CAAC,QAAQ,CAAC,YAAY,EAAE,IAAI,CAAC;gBACnE,CAAC,CAAC,4DAAoB,CAAC,eAAe,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC;QAElE,SAAS,CAAC,WAAW,GAAG,QAAQ,CAAC,WAAW,CAAC;QAE7C,OAAO,SAAS,CAAC;IACnB,CAAC;CACF;AAEM,MAAM,oBAAoB;IAK/B,YAAY,QAA8B;QACxC,IAAI,CAAC,UAAU,GAAG,QAAQ,CAAC,EAAE,CAAC;QAC9B,IAAI,CAAC,mBAAmB,GAAG,QAAQ,CAAC,mBAAmB,CAAC;QACxD,IAAI,CAAC,YAAY,GAAG,4DAAoB,CAAC,eAAe,CACtD,QAAQ,CAAC,YAAY,CACtB,CAAC;IACJ,CAAC;CACF;AAEM,MAAM,0BAA0B;IAAvC;QAaE,uBAAuB;QAChB,cAAS,GAAG,sDAAW,CAAC,0BAA0B,CAAC;IAyF5D,CAAC;IAvFQ,MAAM,CAAC,cAAc,CAC1B,cAA0C;QAE1C,IAAI,CAAC,cAAc,EAAE;YACnB,OAAO;SACR;QAED,MAAM,EAAE,UAAU,EAAE,GAAG,cAAc,CAAC;QACtC,MAAM,iBAAiB,GACrB,UAAU;YACV,UAAU;iBACP,GAAG,CAAC,CAAC,SAAS,EAAE,EAAE;gBACjB,IAAI,YAAY,GAAG,IAAI,CAAC;gBAExB,MAAM,gBAAgB,GAAa;oBACjC,KAAK,EAAE,SAAS,CAAC,IAAI;oBACrB,IAAI,EAAE,SAAS,CAAC,EAAE;iBACnB,CAAC;gBAEF,IAAI,SAAS,CAAC,IAAI,EAAE;oBAClB,gBAAgB,CAAC,QAAQ,GAAG,SAAS,CAAC,IAAI;yBACvC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC;yBAC5B,GAAG,CAAW,CAAC,GAAG,EAAE,EAAE;wBACrB,MAAM,YAAY,GAAa;4BAC7B,KAAK,EAAE,GAAG,CAAC,IAAI;4BACf,IAAI,EAAE,GAAG,CAAC,EAAE;4BACZ,UAAU,EAAE,IAAI;4BAChB,MAAM,EAAE,gBAAgB;yBACzB,CAAC;wBAEF,OAAO,YAAY,CAAC;oBACtB,CAAC,CAAC;yBACD,IAAI,CAAC,uDAAe,CAAC,qBAAqB,CAAC,CAAC;oBAE/C,YAAY,GAAG,KAAK,CAAC;iBACtB;gBAED,gBAAgB,CAAC,UAAU,GAAG,YAAY,CAAC;gBAE3C,OAAO,gBAAgB,CAAC;YAC1B,CAAC,CAAC;iBACD,IAAI,CAAC,uDAAe,CAAC,qBAAqB,CAAC,CAAC;QAEjD,OAAO,iBAAiB,CAAC;IAC3B,CAAC;IAEM,MAAM,CAAC,qBAAqB,CACjC,cAA0C;QAE1C,IAAI,CAAC,cAAc,EAAE;YACnB,OAAO;SACR;QACD,MAAM,EAAE,UAAU,EAAE,GAAG,cAAc,CAAC;QAEtC,MAAM,iBAAiB,GACrB,UAAU;YACV,UAAU;iBACP,GAAG,CAAC,CAAC,SAAS,EAAE,EAAE;gBACjB,MAAM,gBAAgB,GAAa;oBACjC,KAAK,EAAE,SAAS,CAAC,IAAI;oBACrB,IAAI,EAAE,SAAS,CAAC,EAAE;oBAClB,UAAU,EAAE,IAAI;oBAChB,GAAG,EAAE,SAAS,CAAC,EAAE,CAAC,QAAQ,EAAE;iBAC7B,CAAC;gBAEF,IAAI,SAAS,CAAC,IAAI,EAAE;oBAClB,gBAAgB,CAAC,QAAQ,GAAG,SAAS,CAAC,IAAI;yBACvC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC;yBAC5B,GAAG,CAAW,CAAC,GAAG,EAAE,EAAE;wBACrB,MAAM,YAAY,GAAa;4BAC7B,KAAK,EAAE,GAAG,CAAC,IAAI;4BACf,IAAI,EAAE,GAAG,CAAC,EAAE;4BACZ,UAAU,EAAE,IAAI;4BAChB,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,QAAQ,EAAE;yBACvB,CAAC;wBAEF,OAAO,YAAY,CAAC;oBACtB,CAAC,CAAC;yBACD,IAAI,CAAC,uDAAe,CAAC,qBAAqB,CAAC,CAAC;iBAChD;gBAED,OAAO,gBAAgB,CAAC;YAC1B,CAAC,CAAC;iBACD,IAAI,CAAC,uDAAe,CAAC,qBAAqB,CAAC,CAAC;QAEjD,OAAO,iBAAiB,CAAC;IAC3B,CAAC;CACF;AAEM,MAAM,yBAAyB;IAAtC;QAcE,uBAAuB;QAChB,cAAS,GAAG,sDAAW,CAAC,0BAA0B,CAAC;IAsB5D,CAAC;IApBQ,MAAM,CAAC,WAAW,CACvB,QAAmC;QAEnC,MAAM,SAAS,GAAG,IAAI,0BAA0B,EAAE,CAAC;QACnD,SAAS,CAAC,UAAU,GAAG,QAAQ,CAAC,UAAU,CAAC;QAC3C,SAAS,CAAC,UAAU,GAAG,QAAQ,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CACnD,uDAAY,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAClC,CAAC;QACF,SAAS,CAAC,oBAAoB,GAAG,QAAQ,CAAC,oBAAoB,CAAC;QAC/D,SAAS,CAAC,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAC;QACnC,SAAS,CAAC,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC;QACjC,SAAS,CAAC,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC;QACjC,SAAS,CAAC,YAAY,GAAG,QAAQ,CAAC,YAAY,CAAC;QAC/C,SAAS,CAAC,aAAa,GAAG,QAAQ,CAAC,aAAa,CAAC;QACjD,SAAS,CAAC,eAAe,GAAG,QAAQ,CAAC,eAAe,CAAC;QACrD,SAAS,CAAC,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC;QACjC,SAAS,CAAC,iBAAiB,GAAG,QAAQ,CAAC,iBAAiB,CAAC;QAEzD,OAAO,SAAS,CAAC;IACnB,CAAC;CACF;AAEM,MAAM,iCAAiC;CAQ7C;AAEM,MAAM,gCAAgC;IASpC,MAAM,CAAC,WAAW,CACvB,QAA0C;QAE1C,MAAM,SAAS,GAAG,IAAI,iCAAiC,EAAE,CAAC;QAC1D,SAAS,CAAC,eAAe,GAAG,QAAQ,CAAC,eAAe,CAAC;QACrD,SAAS,CAAC,YAAY,GAAG,QAAQ,CAAC,YAAY,CAAC;QAC/C,SAAS,CAAC,aAAa,GAAG,QAAQ,CAAC,aAAa,CAAC;QACjD,SAAS,CAAC,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAC;QACnC,SAAS,CAAC,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC;QACjC,SAAS,CAAC,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC;QAEjC,IAAI,QAAQ,CAAC,IAAI,EAAE;YACjB,SAAS,CAAC,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,sDAAW,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC;SACvE;QAED,OAAO,SAAS,CAAC;IACnB,CAAC;CACF;AAEM,MAAM,iCAAiC;IAU5C,YACE,UAAkB,EAClB,cAAiD;QAEjD,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;QAC7B,IAAI,CAAC,eAAe,GAAG,cAAc,CAAC,eAAe,CAAC;QACtD,IAAI,CAAC,YAAY,GAAG,cAAc,CAAC,YAAY,CAAC;QAChD,IAAI,CAAC,aAAa,GAAG,cAAc,CAAC,aAAa,CAAC;QAClD,IAAI,CAAC,MAAM,GAAG,cAAc,CAAC,MAAM,CAAC;QACpC,IAAI,CAAC,KAAK,GAAG,cAAc,CAAC,KAAK,CAAC;QAClC,IAAI,CAAC,KAAK,GAAG,cAAc,CAAC,KAAK,CAAC;QAElC,IAAI,cAAc,CAAC,IAAI,EAAE;YACvB,IAAI,CAAC,IAAI,GAAG,cAAc,CAAC,IAAI,CAAC,GAAG,CACjC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,oEAAyB,CAAC,CAAC,CAAC,CACxC,CAAC;SACH;IACH,CAAC;CACF;AAEM,MAAM,mCAAmC;CAQ/C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC1TgE;AACnB;AACqJ;AAEjJ;AACqC;AAGhF,MAAM,iBAAiB;IAA9B;QAiBI,uBAAuB;QACvB,cAAS,GAAG,sDAAW,CAAC,iBAAiB,CAAC;IAC9C,CAAC;CAAA;AAEM,MAAM,gBAAgB;IAalB,MAAM,CAAC,WAAW,CAAC,QAA0B;QAChD,MAAM,SAAS,GAAG,IAAI,iBAAiB,EAAE,CAAC;QAC1C,SAAS,CAAC,EAAE,GAAG,QAAQ,CAAC,EAAE,CAAC;QAC3B,SAAS,CAAC,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAC;QAC/B,SAAS,CAAC,SAAS,GAAG,QAAQ,CAAC,SAAS,CAAC;QACzC,SAAS,CAAC,WAAW,GAAG,QAAQ,CAAC,WAAW,CAAC;QAC7C,SAAS,CAAC,YAAY,GAAG,QAAQ,CAAC,YAAY,CAAC;QAC/C,SAAS,CAAC,YAAY,GAAG,QAAQ,CAAC,YAAY,CAAC;QAC/C,SAAS,CAAC,cAAc,GAAG,QAAQ,CAAC,cAAc,CAAC;QACnD,SAAS,CAAC,SAAS,GAAG,QAAQ,CAAC,SAAS,CAAC;QACzC,SAAS,CAAC,SAAS,GAAG,QAAQ,CAAC,SAAS,CAAC;QACzC,SAAS,CAAC,OAAO,GAAG,QAAQ,CAAC,OAAO,CAAC;QACrC,SAAS,CAAC,eAAe,GAAG,QAAQ,CAAC,eAAe,CAAC;QAErD,OAAO,SAAS,CAAC;IACrB,CAAC;CACJ;AAEM,MAAM,iBAAiB;IAa1B,YAAY,SAA4B;QACpC,IAAI,CAAC,EAAE,GAAG,SAAS,CAAC,EAAE,CAAC;QACvB,IAAI,CAAC,IAAI,GAAG,SAAS,CAAC,IAAI,CAAC;QAC3B,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC,SAAS,CAAC;QACrC,IAAI,CAAC,YAAY,GAAG,SAAS,CAAC,YAAY,CAAC;QAC3C,IAAI,CAAC,YAAY,GAAG,SAAS,CAAC,YAAY,CAAC;QAC3C,IAAI,CAAC,cAAc,GAAG,SAAS,CAAC,cAAc,CAAC;QAC/C,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC,SAAS,CAAC;QACrC,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC,SAAS,CAAC;QACrC,IAAI,CAAC,OAAO,GAAG,SAAS,CAAC,OAAO,CAAC;QACjC,IAAI,CAAC,eAAe,GAAG,SAAS,CAAC,eAAe,CAAC;IACrD,CAAC;CACJ;AAEM,MAAM,qBAAqB;IAM9B,MAAM,CAAC,aAAa,CAAC,QAA+B;QAChD,MAAM,IAAI,GAAsE;YAC5E,EAAE,EAAE,QAAQ,CAAC,EAAE;YACf,QAAQ,EAAE,wEAAiC,CAAC,QAAQ;YACpD,UAAU,EAAE,QAAQ,CAAC,EAAE;SAC1B,CAAC;QAEF,MAAM,oBAAoB,GAAa;YACnC,KAAK,EAAE,QAAQ,CAAC,IAAI;YACpB,IAAI;YACJ,UAAU,EAAE,IAAI;YAChB,GAAG,EAAE,IAAI,CAAC,QAAQ,GAAG,GAAG,GAAG,QAAQ,CAAC,EAAE;YACtC,QAAQ,EAAE,QAAQ,CAAC,IAAI,IAAI,QAAQ,CAAC,IAAI;iBACnC,GAAG,CAAW,CAAC,CAAC,EAAE,CAAC,2DAAgB,CAAC,aAAa,CAAC,CAAC,EAAE,QAAQ,CAAC,EAAE,CAAC,CAAC;iBAClE,IAAI,CAAC,uDAAe,CAAC,qBAAqB,CAAC;SACnD,CAAC;QAEF,OAAO,oBAAoB,CAAC;IAChC,CAAC;IAED,MAAM,CAAC,aAAa,CAAC,QAA+B;QAChD,MAAM,IAAI,GAAsE;YAC5E,EAAE,EAAE,QAAQ,CAAC,EAAE;YACf,QAAQ,EAAE,wEAAiC,CAAC,QAAQ;YACpD,UAAU,EAAE,QAAQ,CAAC,EAAE;SAC1B,CAAC;QAEF,MAAM,0BAA0B,GAAa;YACzC,KAAK,EAAE,QAAQ,CAAC,IAAI;YACpB,IAAI;YACJ,UAAU,EAAE,IAAI;YAChB,QAAQ,EAAE,QAAQ,CAAC,UAAU,IAAI,QAAQ,CAAC,UAAU;iBAC/C,GAAG,CAAW,CAAC,CAAC,EAAE,CAAC,2EAAsB,CAAC,aAAa,CAAC,CAAC,EAAE,QAAQ,CAAC,EAAE,CAAC,CAAC;iBACxE,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;SACtD,CAAC;QAEF,OAAO,0BAA0B,CAAC;IACtC,CAAC;CACJ;AAEM,MAAM,oBAAoB;IAMtB,MAAM,CAAC,WAAW,CAAC,QAA8B;QACpD,MAAM,SAAS,GAAG,IAAI,qBAAqB,EAAE,CAAC;QAE9C,SAAS,CAAC,EAAE,GAAG,QAAQ,CAAC,EAAE,CAAC;QAC3B,SAAS,CAAC,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAC;QAE/B,IAAI,QAAQ,CAAC,IAAI,EAAE;YACf,SAAS,CAAC,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,0DAAe,CAAC,WAAW,CAAC,CAAC;SACnE;QAED,IAAI,QAAQ,CAAC,UAAU,EAAE;YACrB,SAAS,CAAC,UAAU,GAAG,QAAQ,CAAC,UAAU,CAAC,GAAG,CAAC,0EAAqB,CAAC,WAAW,CAAC,CAAC;SACrF;QAED,OAAO,SAAS,CAAC;IACrB,CAAC;CACJ;AAEM,MAAM,wBAAwB;CAKpC;AAEM,MAAM,iCAAiC;CAiB7C;AAEM,MAAM,8BAA8B;CAe1C;;;;;;;;;;;;;;;;;;;;;ACpMM,MAAM,QAAQ;CAQpB;AAEM,MAAM,cAAc;CAG1B;AAEM,MAAM,kBAAkB;CAK9B;AAEM,MAAM,aAAa;CAIzB;;;;;;;;;;;;;;;;;;AC3BM,MAAM,2BAA2B;CAQvC;;;;;;;;;;;;;;;;;;;;ACRM,MAAM,kBAAkB;CAU9B;AAEM,MAAM,iBAAiB;IAQnB,MAAM,CAAC,WAAW,CAAC,QAA2B;QACjD,MAAM,SAAS,GAAG,IAAI,kBAAkB,EAAE,CAAC;QAC3C,SAAS,CAAC,EAAE,GAAG,QAAQ,CAAC,EAAE,CAAC;QAC3B,SAAS,CAAC,SAAS,GAAG,QAAQ,CAAC,SAAS,CAAC;QACzC,SAAS,CAAC,QAAQ,GAAG,QAAQ,CAAC,QAAQ,CAAC;QACvC,SAAS,CAAC,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC;QACjC,SAAS,CAAC,aAAa,GAAG,QAAQ,CAAC,aAAa,CAAC;QACjD,SAAS,CAAC,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAC;QAEnC,OAAO,SAAS,CAAC;IACrB,CAAC;CACJ;AAEM,MAAM,kBAAkB;CAK9B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACxCkC;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACDe;AACmF;AACe;AACpG;AAGzC,MAAM,eAAe;IAA5B;QAeI,uBAAuB;QACvB,cAAS,GAAG,sDAAW,CAAC,eAAe,CAAC;IAqC5C,CAAC;IAnCU,MAAM,CAAC,WAAW,CAAC,MAAsC;QAC5D,MAAM,SAAS,GAAG,IAAI,eAAe,CAAC;QACtC,SAAS,CAAC,EAAE,GAAG,MAAM,CAAC,KAAK,CAAC;QAC5B,SAAS,CAAC,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC;QAC7B,SAAS,CAAC,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;QACrC,SAAS,CAAC,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC;QAC7B,SAAS,CAAC,aAAa,GAAG,MAAM,CAAC,aAAa,CAAC;QAC/C,SAAS,CAAC,cAAc,GAAG,MAAM,CAAC,cAAc,CAAC;QACjD,SAAS,CAAC,iBAAiB,GAAG,MAAM,CAAC,iBAAiB,CAAC;QACvD,SAAS,CAAC,YAAY,GAAG,MAAM,CAAC,YAAY,CAAC;QAC7C,SAAS,CAAC,eAAe,GAAG,MAAM,CAAC,eAAe,CAAC;QACnD,SAAS,CAAC,0BAA0B,GAAG,MAAM,CAAC,0BAA0B,CAAC;QACzE,SAAS,CAAC,6BAA6B,GAAG,MAAM,CAAC,6BAA6B,CAAC;QAC/E,SAAS,CAAC,wBAAwB,GAAG,MAAM,CAAC,wBAAwB,CAAC;QACrE,SAAS,CAAC,2BAA2B,GAAG,MAAM,CAAC,2BAA2B,CAAC;QAE3E,OAAO,SAAS,CAAC;IACrB,CAAC;IACM,MAAM,CAAC,YAAY,CAAC,QAAwB;QAC/C,MAAM,SAAS,GAAG,IAAI,eAAe,EAAE,CAAC;QACxC,SAAS,CAAC,EAAE,GAAG,QAAQ,CAAC,EAAE,IAAI,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC1D,SAAS,CAAC,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAC;QAC/B,SAAS,CAAC,QAAQ,GAAG,QAAQ,CAAC,QAAQ,CAAC;QACvC,SAAS,CAAC,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAC;QAC/B,SAAS,CAAC,aAAa,GAAG,MAAM,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC;QACzD,SAAS,CAAC,cAAc,GAAG,MAAM,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC;QAC3D,SAAS,CAAC,iBAAiB,GAAG,MAAM,CAAC,QAAQ,CAAC,iBAAiB,CAAC,CAAC;QACjE,SAAS,CAAC,YAAY,GAAG,MAAM,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC;QACvD,SAAS,CAAC,eAAe,GAAG,MAAM,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAC;QAC7D,SAAS,CAAC,0BAA0B,GAAG,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,0BAA0B,CAAC,CAAC,IAAI,QAAQ,CAAC,0BAA0B,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,0BAA0B,CAAC,CAAC;QAC9L,SAAS,CAAC,6BAA6B,GAAG,QAAQ,CAAC,6BAA6B,IAAI,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,6BAA6B,CAAC;QAC9I,SAAS,CAAC,wBAAwB,GAAG,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,wBAAwB,CAAC,CAAC,IAAI,QAAQ,CAAC,wBAAwB,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,wBAAwB,CAAC,CAAC;QACtL,SAAS,CAAC,2BAA2B,GAAG,QAAQ,CAAC,2BAA2B,IAAI,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,2BAA2B,CAAC;QACxI,OAAO,SAAS,CAAC;IACrB,CAAC;CACJ;AAEM,MAAM,cAAc;IAehB,MAAM,CAAC,WAAW,CAAC,QAAwB;QAC9C,OAAO,eAAe,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC;IAClD,CAAC;CACJ;AAEM,MAAM,eAAe;IAexB,YAAY,SAA0B;QAClC,IAAI,CAAC,EAAE,GAAG,SAAS,CAAC,EAAE,CAAC;QACvB,IAAI,CAAC,IAAI,GAAG,SAAS,CAAC,IAAI,CAAC;QAC3B,IAAI,CAAC,QAAQ,GAAG,SAAS,CAAC,QAAQ,CAAC;QACnC,IAAI,CAAC,IAAI,GAAG,SAAS,CAAC,IAAI,CAAC;QAC3B,IAAI,CAAC,aAAa,GAAG,MAAM,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC,mCAAkC;QACvF,IAAI,CAAC,cAAc,GAAG,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC,mCAAkC;QACzF,IAAI,CAAC,iBAAiB,GAAG,SAAS,CAAC,iBAAiB,CAAC;QACrD,IAAI,CAAC,YAAY,GAAG,MAAM,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC,mCAAkC;QACrF,IAAI,CAAC,eAAe,GAAG,SAAS,CAAC,eAAe,CAAC;QACjD,IAAI,CAAC,0BAA0B,GAAG,SAAS,CAAC,0BAA0B,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,0BAA0B,CAAC,CAAC;QACrI,IAAI,CAAC,6BAA6B,GAAG,SAAS,CAAC,6BAA6B,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,6BAA6B,CAAC;QACtI,IAAI,CAAC,wBAAwB,GAAG,SAAS,CAAC,wBAAwB,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,wBAAwB,CAAC,CAAC;QAC/H,IAAI,CAAC,2BAA2B,GAAG,SAAS,CAAC,2BAA2B,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,2BAA2B,CAAC;IACpI,CAAC;CACJ;AAEM,MAAM,+BAA+B;IAWjC,MAAM,CAAC,iBAAiB,CAAC,mBAAoD;QAChF,MAAM,eAAe,GAAG,IAAI,eAAe,EAAE,CAAC;QAE9C,eAAe,CAAC,EAAE,GAAG,mBAAmB,CAAC,EAAE,CAAC;QAC5C,eAAe,CAAC,IAAI,GAAG,mBAAmB,CAAC,IAAI,CAAC,EAAE,CAAC;QACnD,eAAe,CAAC,QAAQ,GAAG,mBAAmB,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC3D,eAAe,CAAC,IAAI,GAAG,mBAAmB,CAAC,IAAI,CAAC,EAAE,CAAC;QAEnD,OAAO,eAAe,CAAC;IAC3B,CAAC;CACJ;AAEM,MAAM,8BAA8B;IAShC,MAAM,CAAC,WAAW,CAAC,QAAwC;QAC9D,MAAM,SAAS,GAAG,IAAI,+BAA+B,EAAE,CAAC;QACxD,SAAS,CAAC,EAAE,GAAG,QAAQ,CAAC,EAAE,CAAC;QAC3B,SAAS,CAAC,IAAI,GAAG,8BAA8B,CAAC,0BAA0B,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QAC1F,SAAS,CAAC,QAAQ,GAAG,8BAA8B,CAAC,8BAA8B,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;QACtG,SAAS,CAAC,IAAI,GAAG,8BAA8B,CAAC,6BAA6B,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QAC7F,SAAS,CAAC,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC;QACjC,SAAS,CAAC,MAAM,GAAG,8BAA8B,CAAC,kCAAkC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;QACtG,SAAS,CAAC,SAAS,GAAG,8BAA8B,CAAC,mCAAmC,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;QAC7G,SAAS,CAAC,aAAa,GAAG,uDAAe,CAAC,mBAAmB,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QAE7E,OAAO,SAAS,CAAC;IACrB,CAAC;IAEO,MAAM,CAAC,0BAA0B,CAAC,IAAoB;QAC1D,MAAM,aAAa,GAAG,IAAI,2DAAa,EAAE,CAAC;QAE1C,aAAa,CAAC,EAAE,GAAG,IAAI,CAAC;QACxB,aAAa,CAAC,IAAI,GAAG,2DAAgB,CAAC,IAAI,CAAC,CAAC;QAE5C,OAAO,aAAa,CAAC;IACzB,CAAC;IAEO,MAAM,CAAC,8BAA8B,CAAC,IAAwB;QAClE,MAAM,aAAa,GAAG,IAAI,2DAAa,EAAE,CAAC;QAE1C,aAAa,CAAC,EAAE,GAAG,IAAI,CAAC;QACxB,aAAa,CAAC,IAAI,GAAG,+DAAoB,CAAC,IAAI,CAAC,CAAC;QAEhD,OAAO,aAAa,CAAC;IACzB,CAAC;IAEO,MAAM,CAAC,6BAA6B,CAAC,IAAuB;QAChE,MAAM,aAAa,GAAG,IAAI,2DAAa,EAAE,CAAC;QAE1C,aAAa,CAAC,EAAE,GAAG,IAAI,CAAC;QACxB,aAAa,CAAC,IAAI,GAAG,8DAAmB,CAAC,IAAI,CAAC,CAAC;QAE/C,OAAO,aAAa,CAAC;IACzB,CAAC;IAEO,MAAM,CAAC,kCAAkC,CAAC,MAA8B;QAC5E,MAAM,aAAa,GAAG,IAAI,2DAAa,EAAE,CAAC;QAE1C,aAAa,CAAC,EAAE,GAAG,MAAM,CAAC;QAE1B,QAAQ,MAAM,EAAE;YACZ,KAAK,6DAAsB,CAAC,IAAI;gBAC5B,aAAa,CAAC,IAAI,GAAG,QAAQ,CAAC;gBAC9B,MAAM;YACV,KAAK,6DAAsB,CAAC,KAAK;gBAC7B,aAAa,CAAC,IAAI,GAAG,OAAO,CAAC;gBAC7B,MAAM;YACV,KAAK,6DAAsB,CAAC,OAAO;gBAC/B,aAAa,CAAC,IAAI,GAAG,SAAS,CAAC;gBAC/B,MAAM;YACT,KAAK,6DAAsB,CAAC,KAAK;gBAC9B,aAAa,CAAC,IAAI,GAAG,OAAO,CAAC;gBAC7B,MAAM;YACV;gBACI,aAAa,CAAC,IAAI,GAAG,SAAS,CAAC;gBAC/B,MAAM;SACb;QAED,OAAO,aAAa,CAAC;IACzB,CAAC;IAEO,MAAM,CAAC,mCAAmC,CAAC,IAA4B;QAC3E,IAAI,CAAC,IAAI,EAAE;YACP,OAAO,IAAI,CAAC;SACf;QAED,MAAM,aAAa,GAAG,IAAI,2DAAa,EAAE,CAAC;QAE1C,aAAa,CAAC,EAAE,GAAG,IAAI,CAAC;QACxB,aAAa,CAAC,IAAI,GAAG,mEAAwB,CAAC,IAAI,CAAC,CAAC;QAEpD,OAAO,aAAa,CAAC;IACzB,CAAC;CACJ;AAEM,MAAM,qBAAqB;CAIjC;AAEM,MAAM,UAAU;CAKtB;;;;;;;;;;;;;;;;;;;;AC3OM,MAAM,kBAAkB;IAKpB,MAAM,CAAC,iBAAiB,CAAC,QAA2B;QACvD,MAAM,SAAS,GAAG,IAAI,wBAAwB,EAAE,CAAC;QAEjD,SAAS,CAAC,EAAE,GAAG,QAAQ,CAAC,EAAE,CAAC;QAC3B,SAAS,CAAC,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAC;QACnC,SAAS,CAAC,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC;QAEjC,OAAO,SAAS,CAAC;IACrB,CAAC;CACJ;AAEM,MAAM,wBAAwB;CAIpC;AAEM,MAAM,iBAAiB;IAKnB,MAAM,CAAC,WAAW,CAAC,QAA2B;QACjD,MAAM,SAAS,GAAG,IAAI,kBAAkB,EAAE,CAAC;QAE3C,SAAS,CAAC,EAAE,GAAG,QAAQ,CAAC,EAAE,CAAC;QAC3B,SAAS,CAAC,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAC;QACnC,SAAS,CAAC,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC;QAEjC,OAAO,SAAS,CAAC;IACrB,CAAC;CACJ;;;;;;;;;;;;;;;;;;;;;;ACtCM,MAAM,oBAAoB;CAShC;AAEM,MAAM,sBAAsB;IAGxB,MAAM,CAAC,WAAW,CAAC,WAAmC;QACzD,MAAM,SAAS,GAAG,IAAI,oBAAoB,EAAE,CAAC;QAC7C,SAAS,CAAC,KAAK,GAAG,WAAW,CAAC,KAAK,CAAC;QAEpC,OAAO,SAAS,CAAC;IACrB,CAAC;CACJ;AAEM,MAAM,oBAAoB;CAIhC;AAEM,MAAM,sBAAsB;CAElC;AAEM,MAAM,mBAAmB;IAOrB,MAAM,CAAC,WAAW,CAAC,QAA6B;QACnD,MAAM,SAAS,GAAG,IAAI,oBAAoB,EAAE,CAAC;QAC7C,SAAS,CAAC,EAAE,GAAG,QAAQ,CAAC,EAAE,CAAC;QAC3B,SAAS,CAAC,SAAS,GAAG,QAAQ,CAAC,SAAS,CAAC;QACzC,SAAS,CAAC,QAAQ,GAAG,QAAQ,CAAC,QAAQ,CAAC;QACvC,SAAS,CAAC,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC;QACjC,SAAS,CAAC,aAAa,GAAG,QAAQ,CAAC,aAAa,CAAC;QAEjD,OAAO,SAAS,CAAC;IACrB,CAAC;CACJ;;;;;;;;;;;;;;;;;;;;;;;;;AC9CM,MAAM,0BAA0B;CAKtC;AAEM,MAAM,kBAAkB;CAI9B;AAEM,MAAM,qBAAqB;CAIjC;AAEM,MAAM,sBAAsB;CAIlC;AAEM,MAAM,qBAAqB;CAGjC;AAEM,MAAM,uBAAuB;CAGnC;AAEM,MAAM,sBAAsB;CAGlC;AAEM,MAAM,gBAAgB;CAG5B;;;;;;;;;;;;;;;;;;;;;;;AC9CM,MAAM,yBAAyB;IAI3B,MAAM,CAAC,gCAAgC,CAAC,SAAoC;QAC/E,MAAM,yBAAyB,GAAG,IAAI,8BAA8B,EAAE,CAAC;QACvE,yBAAyB,CAAC,KAAK,GAAG,SAAS,CAAC,KAAK,CAAC;QAClD,yBAAyB,CAAC,iBAAiB,GAAG,SAAS,CAAC,MAAM,CAAC;QAC/D,yBAAyB,CAAC,UAAU,GAAG,SAAS,CAAC,UAAU,CAAC;QAC5D,OAAO,yBAAyB,CAAC;IACrC,CAAC;CACJ;AAEM,MAAM,wBAAwB;IAO1B,MAAM,CAAC,gCAAgC,CAAC,QAAkC;QAC7E,MAAM,SAAS,GAAG,IAAI,8BAA8B,EAAE,CAAC;QACvD,SAAS,CAAC,UAAU,GAAG,QAAQ,CAAC,UAAU,CAAC;QAC3C,SAAS,CAAC,iBAAiB,GAAG,QAAQ,CAAC,iBAAiB,CAAC;QACzD,SAAS,CAAC,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC;QAEjC,OAAO,SAAS,CAAC;IACrB,CAAC;CACJ;AAEM,MAAM,yBAAyB;IAK3B,MAAM,CAAC,4BAA4B,CAAC,UAAuC;QAE9E,OAAO,UAAU,CAAC,GAAG,CAAC,CAAC,SAAS,EAAE,EAAE;YAChC,MAAM,yBAAyB,GAAG,IAAI,yBAAyB,EAAE,CAAC;YAClE,yBAAyB,CAAC,KAAK,GAAG,SAAS,CAAC,EAAE,CAAC,QAAQ,EAAE,CAAC;YAC1D,yBAAyB,CAAC,QAAQ,GAAG,SAAS,CAAC,QAAQ,CAAC;YACxD,OAAO,yBAAyB,CAAC;QACrC,CAAC,CAAC,CAAC;IACP,CAAC;CACJ;AAEM,MAAM,cAAc;IAA3B;QAEI,oBAAe,GAAW,EAAE,CAAC;QAE7B,4BAAuB,GAAW,EAAE,CAAC;QAErC,2BAAsB,GAAW,EAAE,CAAC;QACpC,6BAAwB,GAAW,EAAE,CAAC;IAG1C,CAAC;CAAA;AAEM,MAAM,8BAA8B;CAI1C;AAEM,MAAM,yBAAyB;CAGrC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACnEuC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACEjC,MAAM,wBAAwB;CAQpC;AAEM,MAAM,wBAAwB;CAIpC;AAEM,MAAM,qBAAqB;IAAlC;QAKI,6BAAwB,GAAY,KAAK,CAAC;IAE9C,CAAC;CAAA;AAEM,MAAM,6BAA6B;CAOzC;AAEM,MAAM,wBAAwB;CAMpC;AAEM,MAAM,8BAA8B;IAA3C;QASI,gBAAW,GAAY,KAAK,CAAC;IAGjC,CAAC;CAAA;AAEM,MAAM,uBAAuB;CAOnC;AAEM,MAAM,6BAA6B;CAIzC;AAEM,MAAM,yBAAyB;CAOrC;AAEM,MAAM,wBAAwB;CAKpC;AAEM,MAAM,8BAA8B;CAI1C;AAEM,MAAM,iBAAiB;CAI7B;AAEM,MAAM,2BAA2B;CAMvC;AAEM,MAAM,0BAA0B;CAItC;AAEM,MAAM,wBAAwB;CAMpC;AAEM,MAAM,8BAA8B;CAG1C;AAEM,MAAM,mBAAmB;CAM/B;AAEM,MAAM,uBAAuB;CAOnC;AAEM,MAAM,qBAAqB;CAGjC;AAEM,MAAM,+BAA+B;CAI3C;;;;;;;;;;;;;;;;;;;;;ACvJM,MAAM,eAAe;CAc3B;AAEM,MAAM,cAAc;IAUhB,MAAM,CAAC,WAAW,CAAC,QAAwB;QAC9C,MAAM,SAAS,GAAG,IAAI,eAAe,EAAE,CAAC;QACxC,SAAS,CAAC,EAAE,GAAG,QAAQ,CAAC,EAAE,CAAC;QAC3B,SAAS,CAAC,SAAS,GAAG,QAAQ,CAAC,SAAS,CAAC;QACzC,SAAS,CAAC,QAAQ,GAAG,QAAQ,CAAC,QAAQ,CAAC;QACvC,SAAS,CAAC,YAAY,GAAG,QAAQ,CAAC,YAAY,CAAC;QAC/C,SAAS,CAAC,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC;QACjC,SAAS,CAAC,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAC;QACnC,SAAS,CAAC,aAAa,GAAG,QAAQ,CAAC,aAAa,CAAC;QACjD,SAAS,CAAC,WAAW,GAAG,QAAQ,CAAC,WAAW,CAAC;QAC7C,SAAS,CAAC,WAAW,GAAG,CAAC,CAAC;QAC1B,SAAS,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,GAAG,SAAS,CAAC,WAAW,IAAI,CAAC,CAAC,IAAI,CAAC,MAAM,EAAC,CAAC,CAAC,CAAC;QAChF,SAAS,CAAC,iBAAiB,GAAG,QAAQ,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QAErE,OAAO,SAAS,CAAC;IACrB,CAAC;CACJ;AAEM,MAAM,iBAAiB;CAG7B;AAEM,MAAM,eAAe;IAKxB;QACI,IAAI,CAAC,aAAa,GAAG,EAAE,CAAC;IAC5B,CAAC;CACJ;;;;;;;;;;;;;;;;;;;;AC5D2B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACAwB;AACI;AAGxD,IAAa,QAAQ,GAArB,MAAa,QAAQ;IACnB,YAAoB,SAAuB;QAAvB,cAAS,GAAT,SAAS,CAAc;IAAG,CAAC;IAC/C,SAAS,CAAC,GAAG;QACX,OAAO,IAAI,CAAC,SAAS,CAAC,8BAA8B,CAAC,GAAG,CAAC,CAAC;IAC5D,CAAC;CACF;;YAJgC,sEAAY;;AADhC,QAAQ;IADpB,0DAAI,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;qCAEU,sEAAY;GADhC,QAAQ,CAKpB;AALoB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACJsB;AACJ;AAEK;AAO5C,IAAa,wBAAwB,GAArC,MAAa,wBAAwB;IAEnC,YAAoB,WAA8B;QAA9B,gBAAW,GAAX,WAAW,CAAmB;QAD3C,YAAO,GAAgC,IAAI,oDAAe,CAAC,IAAI,CAAC,CAAC;IAClB,CAAC;IAEhD,UAAU;QACf,IAAI;YACF,IAAI,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC,UAAU,EAAE,CAAC;YAC3C,IAAI,MAAM,EAAE;gBACV,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBACxB,OAAO,MAAM,CAAC;aACf;SACF;QAAC,OAAO,KAAK,EAAE;YACd,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;SAC1B;IACH,CAAC;IAEY,WAAW,CAAC,OAA4B;;YACnD,IAAI;gBACF,IAAI,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;gBACnD,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBACxB,OAAO,MAAM,CAAC;aACf;YAAC,OAAO,KAAK,EAAE;gBACd,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;aAC1B;QACH,CAAC;KAAA;CACF;;YAvBkC,uDAAiB;;AAFvC,wBAAwB;IAHpC,gEAAU,CAAC;QACV,UAAU,EAAE,MAAM;KACnB,CAAC;qCAGiC,uDAAiB;GAFvC,wBAAwB,CAyBpC;AAzBoC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACVM;AACJ;AAGQ;AACA;AAK/C,IAAa,2BAA2B,GAAxC,MAAa,2BAA2B;IAItC,YAAoB,cAAoC;QAApC,mBAAc,GAAd,cAAc,CAAsB;QAHjD,yBAAoB,GAAkD,IAAI,oDAAe,CAAC,EAAE,CAAC,CAAC;QAC9F,YAAO,GAAgC,IAAI,oDAAe,CAAC,IAAI,CAAC,CAAC;IAEZ,CAAC;IAEhD,sBAAsB;;YACjC,IAAI;gBACF,IAAI,WAAW,GAAG,IAAI,CAAC,oBAAoB,CAAC,QAAQ,EAAE,CAAC;gBACvD,IAAI,CAAC,WAAW,IAAI,WAAW,IAAI,WAAW,CAAC,MAAM,IAAI,CAAC,EAAE;oBAC1D,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,sBAAsB,EAAkC,CAAC;oBAChG,IAAI,IAAI,EAAE;wBACR,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;wBACrC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;qBACzB;iBACF;aACF;YAAC,OAAO,KAAK,EAAE;gBACd,IAAI,KAAK,YAAY,kDAAU,EAAE;oBAC/B,OAAO,KAAK,CAAC;iBACd;qBAAM;oBACL,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;iBAC1B;aACF;QACH,CAAC;KAAA;CACF;;YApBqC,0DAAoB;;AAJ7C,2BAA2B;IAHvC,gEAAU,CAAC;QACV,UAAU,EAAE,MAAM;KACnB,CAAC;qCAKoC,0DAAoB;GAJ7C,2BAA2B,CAwBvC;AAxBuC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACVG;AAEJ;AAEQ;AACM;AAMrD,IAAa,+BAA+B,GAA5C,MAAa,+BAA+B;IAI1C,YAAoB,kBAA4C;QAA5C,uBAAkB,GAAlB,kBAAkB,CAA0B;QAHzD,iBAAY,GAA+C,IAAI,oDAAe,CAAC,EAAE,CAAC,CAAC;QACnF,YAAO,GAAgC,IAAI,oDAAe,CAAC,IAAI,CAAC,CAAC;IAEJ,CAAC;IAExD,MAAM;;YACjB,IAAI;gBACF,IAAI,WAAW,GAAG,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE,CAAC;gBAC/C,IAAI,CAAC,WAAW,IAAI,WAAW,IAAI,WAAW,CAAC,MAAM,IAAI,CAAC,EAAE;oBAC1D,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,kBAAkB,CAAC,MAAM,EAA+B,CAAC;oBACjF,IAAI,IAAI,EAAE;wBACR,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;wBAC7B,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;qBACzB;iBACF;aACF;YAAC,OAAO,KAAK,EAAE;gBACd,IAAI,KAAK,YAAY,kDAAU,EAAE;oBAC/B,OAAO,KAAK,CAAC;iBACd;qBAAM;oBACL,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;iBAC1B;aACF;QACH,CAAC;KAAA;CACF;;YApByC,8DAAwB;;AAJrD,+BAA+B;IAH3C,gEAAU,CAAC;QACV,UAAU,EAAE,MAAM;KACnB,CAAC;qCAKwC,8DAAwB;GAJrD,+BAA+B,CAwB3C;AAxB2C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACXD;AACJ;AAGa;AACP;AAK7C,IAAa,gCAAgC,GAA7C,MAAa,gCAAgC;IAK3C,YAAoB,mBAA8C;QAA9C,wBAAmB,GAAnB,mBAAmB,CAA2B;QAJ3D,YAAO,GAAgC,IAAI,oDAAe,CAAC,IAAI,CAAC,CAAC;QACjE,YAAO,GAA0C,IAAI,oDAAe,CAAC,EAAE,CAAC,CAAC;QACzE,8BAAyB,GAAgD,IAAI,oDAAe,CAAC,EAAE,CAAC,CAAC;IAElC,CAAC;IAE1D,mBAAmB,CAAC,EAAU;;YACzC,IAAI;gBACF,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,mBAAmB,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;gBAC9D,OAAO,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;aAChC;YAAC,OAAO,KAAK,EAAE;gBACd,IAAI,KAAK,YAAY,kDAAU,EAAE;oBAC/B,OAAO,KAAK,CAAC;iBACd;aACF;QACH,CAAC;KAAA;IAEY,mBAAmB,CAAC,EAAU;;YACzC,IAAI;gBACF,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,mBAAmB,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC;gBAC/D,OAAO,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;aAChC;YAAC,OAAO,KAAK,EAAE;gBACd,IAAI,KAAK,YAAY,kDAAU,EAAE;oBAC/B,OAAO,KAAK,CAAC;iBACd;aACF;QACH,CAAC;KAAA;IAEY,eAAe,CAAC,gBAA2C;;YACtE,IAAI;gBACF,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,mBAAmB,CAAC,oBAAoB,CAAC,gBAAgB,CAAC,CAAC;gBACrF,OAAO,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;aAChC;YAAC,OAAO,KAAK,EAAE;gBACd,IAAI,KAAK,YAAY,kDAAU,EAAE;oBAC/B,OAAO,KAAK,CAAC;iBACd;aACF;QACH,CAAC;KAAA;IAEY,gBAAgB,CAAC,iBAA6C;;YACzE,IAAI;gBACF,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,mBAAmB,CAAC,qBAAqB,CAAC,iBAAiB,CAAC,CAAC;gBACvF,OAAO,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;aAChC;YAAC,OAAO,KAAK,EAAE;gBACd,IAAI,KAAK,YAAY,kDAAU,EAAE;oBAC/B,OAAO,KAAK,CAAC;iBACd;aACF;QACH,CAAC;KAAA;IAEY,mBAAmB,CAAC,gBAA2C;;YAC1E,IAAI;gBACF,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,mBAAmB,CAAC,mBAAmB,CAAC,gBAAgB,CAAC,CAAC;gBACpF,OAAO,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;aAChC;YAAC,OAAO,KAAK,EAAE;gBACd,IAAI,KAAK,YAAY,kDAAU,EAAE;oBAC/B,OAAO,KAAK,CAAC;iBACd;aACF;QACH,CAAC;KAAA;IAEY,oBAAoB,CAAC,iBAA6C;;YAC7E,IAAI;gBACF,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,mBAAmB,CAAC,oBAAoB,CAAC,iBAAiB,CAAC,CAAC;gBACtF,OAAO,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;aAChC;YAAC,OAAO,KAAK,EAAE;gBACd,IAAI,KAAK,YAAY,kDAAU,EAAE;oBAC/B,OAAO,KAAK,CAAC;iBACd;aACF;QACH,CAAC;KAAA;IAEY,kBAAkB,CAAC,OAAe;;YAC7C,IAAI;gBACF,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,mBAAmB,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC;gBAC1E,OAAO,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;aAChC;YAAC,OAAO,KAAK,EAAE;gBACd,IAAI,KAAK,YAAY,kDAAU,EAAE;oBAC/B,OAAO,KAAK,CAAC;iBACd;aACF;QACH,CAAC;KAAA;IAEY,iBAAiB;;YAC5B,IAAI;gBACF,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,mBAAmB,CAAC,YAAY,EAAE,CAAC;gBAC7D,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,MAA8B,CAAC,CAAC;aACnD;YAAC,OAAO,KAAK,EAAE;gBACd,IAAI,KAAK,EAAE;oBACT,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;iBAC1B;aACF;QACH,CAAC;KAAA;IAEY,mBAAmB,CAAC,gBAA8C;;YAC7E,IAAI;gBACF,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,mBAAmB,CAAC,mBAAmB,CAAC,gBAAgB,CAAC,CAAC;gBACpF,OAAO,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;aAChC;YAAC,OAAO,KAAK,EAAE;gBACd,IAAI,KAAK,YAAY,kDAAU,EAAE;oBAC/B,OAAO,KAAK,CAAC;iBACd;aACF;QACH,CAAC;KAAA;IAEY,oBAAoB,CAAC,gBAA8C;;YAC9E,IAAI;gBACF,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,mBAAmB,CAAC,oBAAoB,CAAC,gBAAgB,CAAC,CAAC;gBACrF,OAAO,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;aAChC;YAAC,OAAO,KAAK,EAAE;gBACd,IAAI,KAAK,YAAY,kDAAU,EAAE;oBAC/B,OAAO,KAAK,CAAC;iBACd;aACF;QACH,CAAC;KAAA;IAEY,uBAAuB,CAAC,EAAU;;YAC7C,IAAI;gBACF,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,mBAAmB,CAAC,uBAAuB,CAAC,EAAE,CAAC,CAAC;gBAC1E,OAAO,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;aAChC;YAAC,OAAO,KAAK,EAAE;gBACd,IAAI,KAAK,YAAY,kDAAU,EAAE;oBAC/B,OAAO,KAAK,CAAC;iBACd;aACF;QACH,CAAC;KAAA;IAEY,gCAAgC;;YAC3C,IAAI;gBACF,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,mBAAmB,CAAC,gCAAgC,EAAE,CAAC;gBACjF,IAAG,MAAM,EAAC;oBACR,IAAI,CAAC,yBAAyB,CAAC,IAAI,CAAC,MAAoC,CAAC,CAAC;iBAC3E;aACF;YAAC,OAAO,KAAK,EAAE;gBACd,IAAI,KAAK,YAAY,kDAAU,EAAE;oBAC/B,OAAO,KAAK,CAAC;iBACd;aACF;QACH,CAAC;KAAA;CAEF;;YAxI0C,+DAAyB;;AALvD,gCAAgC;IAH5C,gEAAU,CAAC;QACV,UAAU,EAAE,MAAM;KACnB,CAAC;qCAMyC,+DAAyB;GALvD,gCAAgC,CA6I5C;AA7I4C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACVF;AACJ;AAEM;AACC;AACa;AAO3D,IAAa,0BAA0B,GAAvC,MAAa,0BAA0B;IAGrC,YAAoB,aAAkC;QAAlC,kBAAa,GAAb,aAAa,CAAqB;QAF/C,YAAO,GAAgC,IAAI,oDAAe,CAAC,IAAI,CAAC,CAAC;IAEd,CAAC;IAE9C,kCAAkC,CAAC,KAAkC;;YAChF,IAAI;gBACF,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,kCAAkC,CAAC,KAAK,CAAC,CAAC;gBAClF,OAAO,OAAO,CAAC,OAAO,CAAC,IAAI,IAAI,CAAC,CAAC,MAAoB,CAAC,EAAE,EAAE,IAAI,EAAE,eAAe,mEAAwB,CAAC,KAAK,CAAC,YAAY,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;aACnI;YAAC,OAAO,KAAK,EAAE;gBACd,IAAI,KAAK,YAAY,kDAAU,EAAE;oBAC/B,OAAO,KAAK,CAAC;iBACd;qBAAM;oBACL,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;iBAC1B;aACF;QACH,CAAC;KAAA;IAEY,+BAA+B,CAAC,KAAkC;;YAC7E,IAAI;gBACF,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,+BAA+B,CAAC,KAAK,CAAC,CAAC;gBAC/E,OAAO,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;aAChC;YAAC,OAAO,KAAK,EAAE;gBACd,IAAI,KAAK,YAAY,kDAAU,EAAE;oBAC/B,OAAO,KAAK,CAAC;iBACd;aACF;QACH,CAAC;KAAA;IAEY,mCAAmC,CAAC,KAAmC;;YAClF,IAAI;gBACF,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,mCAAmC,CAAC,KAAK,CAAC,CAAC;gBACnF,OAAO,OAAO,CAAC,OAAO,CAAC,IAAI,IAAI,CAAC,CAAC,MAAoB,CAAC,EAAE,EAAE,IAAI,EAAE,eAAe,mEAAwB,CAAC,KAAK,CAAC,YAAY,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;aACnI;YAAC,OAAO,KAAK,EAAE;gBACd,IAAI,KAAK,YAAY,kDAAU,EAAE;oBAC/B,OAAO,KAAK,CAAC;iBACd;qBAAM;oBACL,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;iBAC1B;aACF;QACH,CAAC;KAAA;IAEY,gCAAgC,CAAC,KAAmC;;YAC/E,IAAI;gBACF,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,gCAAgC,CAAC,KAAK,CAAC,CAAC;gBAChF,OAAO,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;aAChC;YAAC,OAAO,KAAK,EAAE;gBACd,IAAI,KAAK,YAAY,kDAAU,EAAE;oBAC/B,OAAO,KAAK,CAAC;iBACd;aACF;QACH,CAAC;KAAA;IAEY,kCAAkC,CAAC,KAAkC;;YAChF,IAAI;gBACF,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,kCAAkC,CAAC,KAAK,CAAC,CAAC;gBAClF,OAAO,OAAO,CAAC,OAAO,CAAC,IAAI,IAAI,CAAC,CAAC,MAAoB,CAAC,EAAE,EAAE,IAAI,EAAE,eAAe,mEAAwB,CAAC,KAAK,CAAC,YAAY,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;aACnI;YAAC,OAAO,KAAK,EAAE;gBACd,IAAI,KAAK,YAAY,kDAAU,EAAE;oBAC/B,OAAO,KAAK,CAAC;iBACd;qBAAM;oBACL,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;iBAC1B;aACF;QACH,CAAC;KAAA;IAEY,+BAA+B,CAAC,KAAkC;;YAC7E,IAAI;gBACF,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,+BAA+B,CAAC,KAAK,CAAC,CAAC;gBAC/E,OAAO,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;aAChC;YAAC,OAAO,KAAK,EAAE;gBACd,IAAI,KAAK,YAAY,kDAAU,EAAE;oBAC/B,OAAO,KAAK,CAAC;iBACd;aACF;QACH,CAAC;KAAA;IAEY,6BAA6B,CACxC,gBAA0B,EAC1B,YAA8B,EAC9B,QAAgB,EAChB,SAAe;;YACf,IAAI;gBACF,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,6BAA6B,CACnE,gBAAgB,EAChB,YAAY,EACZ,QAAQ,EACR,SAAS,CAAC,CAAC;gBACb,OAAO,OAAO,CAAC,OAAO,CAAC,IAAI,IAAI,CAAC,CAAC,MAAoB,CAAC,EAAE,EAAE,IAAI,EAAE,eAAe,mEAAwB,CAAC,YAAY,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;aAC7H;YAAC,OAAO,KAAK,EAAE;gBACd,IAAI,KAAK,YAAY,kDAAU,EAAE;oBAC/B,OAAO,KAAK,CAAC;iBACd;qBAAM;oBACL,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;iBAC1B;aACF;QACH,CAAC;KAAA;IAEY,0BAA0B,CACrC,gBAA0B,EAC1B,YAA8B,EAC9B,QAAgB,EAChB,SAAe;;YACf,IAAI;gBACF,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,0BAA0B,CAChE,gBAAgB,EAChB,YAAY,EACZ,QAAQ,EACR,SAAS,CAAC,CAAC;gBACb,OAAO,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;aAChC;YAAC,OAAO,KAAK,EAAE;gBACd,IAAI,KAAK,YAAY,kDAAU,EAAE;oBAC/B,OAAO,KAAK,CAAC;iBACd;aACF;QACH,CAAC;KAAA;CACF;;YAjHoC,yDAAmB;;AAH3C,0BAA0B;IAHtC,gEAAU,CAAC;QACV,UAAU,EAAE,MAAM;KACnB,CAAC;qCAImC,yDAAmB;GAH3C,0BAA0B,CAoHtC;AApHsC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACZI;AACJ;AAEM;AASvB;AACoC;AACb;AAG7C,IAAa,0BAA0B,GAAvC,MAAa,0BAA0B;IAIrC,YACU,aAAkC,EAClC,WAAuB;QADvB,kBAAa,GAAb,aAAa,CAAqB;QAClC,gBAAW,GAAX,WAAW,CAAY;QAL1B,eAAU,GAAwC,IAAI,oDAAe,CAAC,EAAE,CAAC,CAAC;QAC1E,YAAO,GAAgC,IAAI,oDAAe,CAAC,IAAI,CAAC,CAAC;QAKtE,IAAI,CAAC,qBAAqB,EAAE,CAAC;IAC/B,CAAC;IAEY,GAAG;;YACd,IAAI;gBACF,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE,CAAC;gBAChD,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAA0B,CAAC,CAAC;gBACjD,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;aACzB;YAAC,OAAO,KAAK,EAAE;gBACd,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;aAC1B;QACH,CAAC;KAAA;IAEY,GAAG,CAAC,WAAmB;;YAClC,IAAI;gBACF,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,WAAW,CAAqB,CAAC;gBAC7E,IAAI,MAAM,EAAE;oBACV,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,qDAAU,CAAC,OAAO,CAAC,YAAY,EAAE,IAAI,8DAAsB,CAAC,MAAM,CAAC,CAAC,CAAC;oBAChG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;wBACnB,GAAG,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE;wBAC7B,MAAM;qBACP,CAAC,CAAC;oBACH,OAAO,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;iBAChC;gBACD,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;aACzB;YAAC,OAAO,KAAK,EAAE;gBACd,IAAI,KAAK,YAAY,kDAAU,EAAE;oBAC/B,OAAO,KAAK,CAAC;iBACd;aACF;QACH,CAAC;KAAA;IAEY,IAAI,CAAC,YAA8B;;YAC9C,IAAI;gBACF,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,YAAY,CAAqB,CAAC;gBAC/E,IAAI,MAAM,EAAE;oBACV,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,qDAAU,CAAC,OAAO,CAAC,cAAc,EAAE,IAAI,gEAAwB,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC;oBAC1G,MAAM,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,MAAM,CAAC,EAAE,CAAC,CAAC,mBAAM,CAAC,EAAK,MAAM,EAAG,CAAC,CAAC,CAAC,CAAC,CAAC;oBACpG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;oBAChC,OAAO,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;iBAChC;gBACD,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;aACzB;YAAC,OAAO,KAAK,EAAE;gBACd,IAAI,KAAK,YAAY,kDAAU,EAAE;oBAC/B,OAAO,KAAK,CAAC;iBACd;aACF;QACH,CAAC;KAAA;IACY,MAAM,CAAC,SAAiB;;YACnC,IAAI;gBACF,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;gBAC1D,IAAI,MAAM,EAAE;oBACV,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,qDAAU,CAAC,OAAO,CAAC,cAAc,EAAE,IAAI,gEAAwB,CAAC,SAAS,CAAC,CAAC,CAAC;oBACvG,MAAM,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,MAAM,CAAC,CAAC;oBAC1E,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;oBAChC,OAAO,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;iBAC9B;aACF;YAAC,OAAO,KAAK,EAAE;gBACd,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;aAC1B;QACH,CAAC;KAAA;IAEY,8BAA8B,CAAC,SAAiB;;YAC3D,IAAI,CAAC,WAAW,CAAC,qBAAqB,CAAC,qDAAU,CAAC,OAAO,CAAC,eAAe,EAAE,IAAI,iEAAyB,CAAC,SAAS,CAAC,CAAC,CAAC;QACvH,CAAC;KAAA;IAEY,6BAA6B,CAAC,OAAyB,EAAE,WAAoB;;YACxF,IAAI,CAAC,WAAW,CAAC,qBAAqB,CAAC,qDAAU,CAAC,OAAO,CAAC,cAAc,EAAE,IAAI,gEAAwB,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC,CAAC;QAChI,CAAC;KAAA;IAEY,4BAA4B;;YACvC,IAAI;gBACF,IAAI,MAAM,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,4BAA4B,EAAwB,CAAC;gBAC3F,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBACxB,OAAO,MAAM,CAAC;aACf;YAAC,OAAO,KAAK,EAAE;gBACd,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;aAC1B;QACH,CAAC;KAAA;IAEO,qBAAqB;QAC3B,IAAI,CAAC,WAAW,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC,UAAqC,EAAE,EAAE;YACnF,IAAI,UAAU,IAAI,UAAU,CAAC,eAAe,EAAE;gBAC5C,MAAM,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE,CAAC;gBAC7C,KAAK,IAAI,OAAO,IAAI,SAAS,EAAE;oBAC7B,MAAM,gBAAgB,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,UAAU,CAAC,eAAe,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;oBACxH,IAAI,gBAAgB,EAAE;wBACpB,gBAAgB,CAAC,IAAI,GAAG,UAAU,CAAC,eAAe,CAAC,IAAI,CAAC;wBACxD,MAAM;qBACP;iBACF;gBAAA,CAAC;aACH;QACH,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,UAAkC,EAAE,EAAE;YAC7E,IAAI,UAAU,IAAI,UAAU,CAAC,UAAU,EAAE;gBACvC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;oBACnB,GAAG,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE;oBAC7B,UAAU,CAAC,UAAU;iBACtB,CAAC,CAAC;aACJ;QACH,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,WAAW,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC,UAAoC,EAAE,EAAE;YACjF,IAAI,UAAU,EAAE;gBACd,MAAM,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,UAAU,CAAC,SAAS,CAAC,CAAC;gBACxF,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;aACjC;QACH,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,WAAW,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC,UAAqC,EAAE,EAAE;YACnF,IAAI,UAAU,EAAE;gBACd,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,UAAU,CAAC,SAAS,CAAC,CAAC;gBACpF,IAAI,OAAO,EAAE;oBACX,OAAO,CAAC,sBAAsB,GAAG,IAAI,CAAC;iBACvC;aACF;QACH,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,WAAW,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC,UAAoC,EAAE,EAAE;YACjF,IAAI,UAAU,IAAI,UAAU,CAAC,cAAc,EAAE;gBAC3C,IAAI,UAAU,CAAC,WAAW,EAAE;oBAC1B,UAAU,CAAC,cAAc,CAAC,sBAAsB,GAAG,SAAS,CAAC;oBAC7D,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,UAAU,CAAC,cAAc,CAAC,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;iBAClI;qBAAM;oBACL,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,UAAU,CAAC,cAAc,CAAC,EAAE,CAAC,CAAC;oBAC3F,OAAO,CAAC,sBAAsB,GAAG,KAAK,CAAC;iBACxC;aACF;QACH,CAAC,CAAC,CAAC;IACL,CAAC;CACF;;YAjI0B,yDAAmB;YACrB,gDAAU;;AANtB,0BAA0B;IADtC,gEAAU,EAAE;qCAMc,yDAAmB;QACrB,gDAAU;GANtB,0BAA0B,CAsItC;AAtIsC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACjBI;AACJ;AAEM;AACA;AASvB;AACwC;AAG9D,IAAa,8BAA8B,GAA3C,MAAa,8BAA8B;IAIzC,YACU,iBAA0C,EAC1C,WAAuB;QADvB,sBAAiB,GAAjB,iBAAiB,CAAyB;QAC1C,gBAAW,GAAX,WAAW,CAAY;QAL1B,mBAAc,GAA6C,IAAI,oDAAe,CAAC,EAAE,CAAC,CAAC;QACnF,YAAO,GAAgC,IAAI,oDAAe,CAAC,IAAI,CAAC,CAAC;QAMpE,IAAI,CAAC,qBAAqB,EAAE,CAAC;IAC/B,CAAC;IAEU,GAAG,CAAC,SAAiB;;YAChC,IAAI;gBACF,IAAI,SAAS,IAAI,IAAI,EAAE;oBACrB,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,iBAAiB,CAAC,iBAAiB,CAAC,SAAS,CAAC,CAAC;oBACvE,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAA+B,CAAC,CAAC;iBAC3D;qBACI;oBACH,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,iBAAiB,CAAC,OAAO,EAAE,CAAC;oBACpD,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAA+B,CAAC,CAAC;iBAC3D;gBAED,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;aACzB;YAAC,OAAO,KAAK,EAAE;gBACd,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;aAC1B;QACH,CAAC;KAAA;IAEY,MAAM,CAAC,YAAqC;;YACvD,IAAI;gBACF,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,YAAY,CAA0B,CAAC;gBAC1F,IAAI,MAAM,EAAE;oBACV,IAAI,CAAC,WAAW,CAAC,qCAAqC,CAAC,qDAAU,CAAC,YAAY,CAAC,iBAAiB,EAAE,MAAM,CAAC,SAAS,EAAE,IAAI,mEAA2B,CAAC,MAAM,CAAC,CAAC,CAAC;oBAC7J,IAAI,IAAI,CAAC,cAAc,CAAC,QAAQ,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,IAAI,MAAM,CAAC,KAAK,CAAC,EAAE;wBACrE,MAAM,aAAa,GAAG,IAAI,CAAC,cAAc,CAAC,QAAQ,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,KAAK,MAAM,CAAC,KAAK,CAAC,CAAC,mBAAM,CAAC,EAAK,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;wBACjH,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;qBACzC;yBAAM;wBACL,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC;4BACvB,GAAG,IAAI,CAAC,cAAc,CAAC,QAAQ,EAAE;4BACjC,MAAM;yBACP,CAAC,CAAC;qBACJ;oBACD,OAAO,MAAM,CAAC;iBACf;aACF;YAAC,OAAO,KAAK,EAAE;gBACd,IAAI,KAAK,YAAY,kDAAU,EAAE;oBAC/B,OAAO,KAAK,CAAC;iBACd;aACF;QACH,CAAC;KAAA;IAEY,IAAI,CAAC,YAAmC;;YACnD,IACA;gBACE,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,YAAY,CAA0B,CAAC;gBACxF,IAAI,MAAM,EAAE;oBACV,MAAM,aAAa,GAAG,IAAI,CAAC,cAAc,CAAC,QAAQ,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,MAAM,CAAC,EAAE,CAAC,CAAC,mBAAM,CAAC,EAAK,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;oBAC3G,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;oBACxC,OAAO,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;iBAC9B;gBAED,OAAO,KAAK,CAAC;aACd;YAAC,OAAO,KAAK,EAAE;gBACd,OAAO,KAAK,YAAY,kDAAU,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC;aACpD;QACH,CAAC;KAAA;IAEY,MAAM,CAAC,cAAsB,EAAE,SAAiB;;YAC3D,IACA;gBACE,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC;gBACnE,IAAI,MAAM,EAAE;oBACV,IAAI,CAAC,WAAW,CAAC,qCAAqC,CAAC,qDAAU,CAAC,YAAY,CAAC,mBAAmB,EAAE,SAAS,EAAE,IAAI,qEAA6B,CAAC,cAAc,CAAC,CAAC,CAAC;oBAClK,MAAM,aAAa,GAAG,IAAI,CAAC,cAAc,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,MAAM,CAAC,CAAC;oBAClF,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;oBACxC,OAAO,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;iBAC9B;gBAED,OAAO,KAAK,CAAC;aACd;YAAC,OAAO,KAAK,EAAE;gBACd,OAAO,KAAK,YAAY,kDAAU,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC;aACpD;QACH,CAAC;KAAA;IAEY,mCAAmC,CAAC,MAAc,EAAE,SAAiB;;YAChF,IAAI,CAAC,WAAW,CAAC,qCAAqC,CAAC,qDAAU,CAAC,YAAY,CAAC,oBAAoB,EAAE,SAAS,EAAE,IAAI,sEAA8B,CAAC,MAAM,CAAC,CAAC,CAAC;QAC9J,CAAC;KAAA;IAEY,kCAAkC,CAAC,YAAmC,EAAE,WAAoB;;YACvG,IAAI,CAAC,WAAW,CAAC,qCAAqC,CAAC,qDAAU,CAAC,YAAY,CAAC,mBAAmB,EAAE,YAAY,CAAC,SAAS,EAAE,IAAI,qEAA6B,CAAC,YAAY,EAAE,WAAW,CAAC,CAAC,CAAC;QAC5L,CAAC;KAAA;IAEO,qBAAqB;QAC3B,IAAI,CAAC,WAAW,CAAC,iBAAiB,CAAC,SAAS,CAAC,CAAC,UAAuC,EAAE,EAAE;YACvF,IAAI,UAAU,IAAI,UAAU,CAAC,eAAe,EAAE;gBAC5C,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC;oBACvB,GAAG,IAAI,CAAC,cAAc,CAAC,QAAQ,EAAE;oBACjC,UAAU,CAAC,eAAe;iBAC3B,CAAC,CAAC;aACJ;QACH,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,WAAW,CAAC,mBAAmB,CAAC,SAAS,CAAC,CAAC,UAAyC,EAAE,EAAE;YAC3F,IAAI,UAAU,EAAE;gBACd,MAAM,KAAK,GAAG,IAAI,CAAC,cAAc,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,UAAU,CAAC,cAAc,CAAC,CAAC;gBAC7F,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;aACjC;QACH,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,WAAW,CAAC,oBAAoB,CAAC,SAAS,CAAC,CAAC,UAA0C,EAAE,EAAE;YAC7F,IAAI,UAAU,EAAE;gBACd,MAAM,YAAY,GAAG,IAAI,CAAC,cAAc,CAAC,QAAQ,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,UAAU,CAAC,cAAc,CAAC,CAAC;gBAClG,IAAI,YAAY,EAAE;oBAChB,YAAY,CAAC,2BAA2B,GAAG,IAAI,CAAC;iBACjD;aACF;QACH,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,WAAW,CAAC,mBAAmB,CAAC,SAAS,CAAC,CAAC,UAAyC,EAAE,EAAE;YAC3F,IAAI,UAAU,IAAI,UAAU,CAAC,mBAAmB,EAAE;gBAChD,IAAI,UAAU,CAAC,WAAW,EAAE;oBAC1B,UAAU,CAAC,mBAAmB,CAAC,2BAA2B,GAAG,SAAS,CAAC;oBACvE,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,QAAQ,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,UAAU,CAAC,mBAAmB,CAAC,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;iBACpJ;qBAAM;oBACL,MAAM,YAAY,GAAG,IAAI,CAAC,cAAc,CAAC,QAAQ,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,UAAU,CAAC,mBAAmB,CAAC,EAAE,CAAC,CAAC;oBACzG,YAAY,CAAC,2BAA2B,GAAG,KAAK,CAAC;iBAClD;aACF;QACH,CAAC,CAAC,CAAC;IACL,CAAC;CACF;;YA1H8B,6DAAuB;YAC7B,gDAAU;;AANtB,8BAA8B;IAD1C,gEAAU,EAAE;qCAMkB,6DAAuB;QAC7B,gDAAU;GANtB,8BAA8B,CA+H1C;AA/H0C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACjBA;AACJ;AAEM;AASvB;AACuC;AAChB;AAG7C,IAAa,6BAA6B,GAA1C,MAAa,6BAA6B;IAIxC,YACU,gBAAwC,EACxC,WAAuB;QADvB,qBAAgB,GAAhB,gBAAgB,CAAwB;QACxC,gBAAW,GAAX,WAAW,CAAY;QAL1B,kBAAa,GAA4C,IAAI,oDAAe,CAAC,EAAE,CAAC,CAAC;QACjF,YAAO,GAAgC,IAAI,oDAAe,CAAC,IAAI,CAAC,CAAC;QAKpE,IAAI,CAAC,qBAAqB,EAAE,CAAC;IAC/B,CAAC;IAEU,GAAG,CAAC,aAAqB;;YACpC,IAAI;gBACF,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;gBAChE,IAAI,IAAI,EAAE;oBACR,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAA8B,CAAC,CAAC;oBACxD,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;iBACzB;aACF;YAAC,OAAO,KAAK,EAAE;gBACd,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;aAC1B;QACH,CAAC;KAAA;IAEY,MAAM,CAAC,WAAmC;;YACrD,IAAI;gBACF,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,WAAW,CAAyB,CAAC;gBACvF,IAAI,MAAM,EAAE;oBACV,IAAI,CAAC,WAAW,CAAC,mCAAmC,CAAC,qDAAU,CAAC,WAAW,CAAC,gBAAgB,EAAE,IAAI,kEAA0B,CAAC,MAAM,CAAC,CAAC,CAAC;oBACtI,OAAO,MAAM,CAAC;iBACf;aACF;YAAC,OAAO,KAAK,EAAE;gBACd,IAAI,KAAK,YAAY,kDAAU,EAAE;oBAC/B,OAAO,KAAK,CAAC;iBACd;aACF;QACH,CAAC;KAAA;IAEY,IAAI,CAAC,WAAiC;;YACjD,IACA;gBACE,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,WAAW,CAAyB,CAAC;gBACrF,IAAI,MAAM,EAAE;oBACV,IAAI,CAAC,WAAW,CAAC,mCAAmC,CAAC,qDAAU,CAAC,WAAW,CAAC,kBAAkB,EAAE,IAAI,oEAA4B,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC;oBAChJ,MAAM,YAAY,GAAG,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,MAAM,CAAC,EAAE,CAAC,CAAC,mBAAM,CAAC,EAAK,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;oBACzG,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;oBACtC,OAAO,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;iBAC9B;gBAED,OAAO,KAAK,CAAC;aACd;YAAC,OAAO,KAAK,EAAE;gBACd,OAAO,KAAK,YAAY,kDAAU,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC;aACpD;QACH,CAAC;KAAA;IAEY,MAAM,CAAC,aAAqB;;YACvC,IACA;gBACE,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;gBACjE,IAAI,MAAM,EAAE;oBACV,IAAI,CAAC,WAAW,CAAC,mCAAmC,CAAC,qDAAU,CAAC,WAAW,CAAC,kBAAkB,EAAE,IAAI,oEAA4B,CAAC,aAAa,CAAC,CAAC,CAAC;oBACjJ,MAAM,YAAY,GAAG,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,MAAM,CAAC,CAAC;oBAChF,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;oBACtC,OAAO,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;iBAC9B;gBAED,OAAO,KAAK,CAAC;aACd;YAAC,OAAO,KAAK,EAAE;gBACd,OAAO,KAAK,YAAY,kDAAU,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC;aACpD;QACH,CAAC;KAAA;IAEY,kCAAkC,CAAC,MAAc;;YAC5D,IAAI,CAAC,WAAW,CAAC,mCAAmC,CAAC,qDAAU,CAAC,WAAW,CAAC,mBAAmB,EAAE,IAAI,qEAA6B,CAAC,MAAM,CAAC,CAAC,CAAC;QAC9I,CAAC;KAAA;IAEY,iCAAiC,CAAC,WAAiC,EAAE,aAAsB;;YACtG,IAAI,CAAC,WAAW,CAAC,mCAAmC,CAAC,qDAAU,CAAC,WAAW,CAAC,kBAAkB,EAAE,IAAI,oEAA4B,CAAC,WAAW,EAAE,aAAa,CAAC,CAAC,CAAC;QAChK,CAAC;KAAA;IAEO,qBAAqB;QAC3B,IAAI,CAAC,WAAW,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC,UAAsC,EAAE,EAAE;YACrF,IAAI,UAAU,IAAI,UAAU,CAAC,cAAc,EAAE;gBAC3C,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC;oBACtB,GAAG,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE;oBAChC,UAAU,CAAC,cAAc;iBAC1B,CAAC,CAAC;aACJ;QACH,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,WAAW,CAAC,kBAAkB,CAAC,SAAS,CAAC,CAAC,UAAwC,EAAE,EAAE;YACzF,IAAI,UAAU,EAAE;gBACd,MAAM,KAAK,GAAG,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,UAAU,CAAC,aAAa,CAAC,CAAC;gBAC3F,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;aAChC;QACH,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,WAAW,CAAC,mBAAmB,CAAC,SAAS,CAAC,CAAC,UAAyC,EAAE,EAAE;YAC3F,IAAI,UAAU,EAAE;gBACd,MAAM,WAAW,GAAG,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,UAAU,CAAC,aAAa,CAAC,CAAC;gBAC/F,IAAI,WAAW,EAAE;oBACf,WAAW,CAAC,0BAA0B,GAAG,IAAI,CAAC;iBAC/C;aACF;QACH,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,WAAW,CAAC,kBAAkB,CAAC,SAAS,CAAC,CAAC,UAAwC,EAAE,EAAE;YACzF,IAAI,UAAU,IAAI,UAAU,CAAC,kBAAkB,EAAE;gBAC/C,IAAI,UAAU,CAAC,WAAW,EAAE;oBAC1B,UAAU,CAAC,kBAAkB,CAAC,0BAA0B,GAAG,SAAS,CAAC;oBACrE,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,UAAU,CAAC,kBAAkB,CAAC,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;iBAChJ;qBAAM;oBACL,MAAM,WAAW,GAAG,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,UAAU,CAAC,kBAAkB,CAAC,EAAE,CAAC,CAAC;oBACtG,WAAW,CAAC,0BAA0B,GAAG,KAAK,CAAC;iBAChD;aACF;QACH,CAAC,CAAC,CAAC;IACL,CAAC;CACF;;YA5G6B,4DAAsB;YAC3B,gDAAU;;AANtB,6BAA6B;IADzC,gEAAU,EAAE;qCAMiB,4DAAsB;QAC3B,gDAAU;GANtB,6BAA6B,CAiHzC;AAjHyC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACjBC;AACJ;AAEe;AACR;AACC;AAK/C,IAAa,0BAA0B,GAAvC,MAAa,0BAA0B;IAIrC,YAAoB,YAAiC;QAAjC,iBAAY,GAAZ,YAAY,CAAqB;QAH9C,mBAAc,GAA4C,IAAI,oDAAe,CAAC,IAAI,8DAAsB,EAAE,CAAC,CAAC;QAC5G,YAAO,GAAgC,IAAI,oDAAe,CAAC,IAAI,CAAC,CAAC;IAEf,CAAC;IAE7C,eAAe,CAAC,SAAiB;;YAC5C,IAAI;gBACF,IAAI,MAAM,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,eAAe,CAAC,SAAS,CAA2B,CAAC;gBAC1F,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;gBACjC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;aACzB;YAAC,OAAO,KAAK,EAAE;gBACd,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;aAC1B;QACH,CAAC;KAAA;IAEY,eAAe,CAAC,SAAiB,EAAE,QAAgB;;YAC9D,IAAI;gBACF,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,eAAe,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;gBAC5E,OAAO,OAAO,CAAC,OAAO,CAAC,IAAI,IAAI,CAAC,CAAC,MAAoB,CAAC,EAAE,EAAE,IAAI,EAAE,iBAAiB,EAAE,CAAC,CAAC,CAAC;aACvF;YAAC,OAAO,KAAK,EAAE;gBACd,IAAI,KAAK,YAAY,kDAAU,EAAE;oBAC/B,OAAO,KAAK,CAAC;iBACd;qBAAM;oBACL,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;iBAC1B;aACF;QACH,CAAC;KAAA;IAEY,gBAAgB,CAAC,SAAiB,EAAE,SAAmB;;YAClE,IAAI;gBACF,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,gBAAgB,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;gBAC9E,OAAO,OAAO,CAAC,OAAO,CAAC,IAAI,IAAI,CAAC,CAAC,MAAoB,CAAC,EAAE,EAAE,IAAI,EAAE,iBAAiB,EAAE,CAAC,CAAC,CAAC;aACvF;YAAC,OAAO,KAAK,EAAE;gBACd,IAAI,KAAK,YAAY,kDAAU,EAAE;oBAC/B,OAAO,KAAK,CAAC;iBACd;qBAAM;oBACL,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;iBAC1B;aACF;QACH,CAAC;KAAA;IAEY,sBAAsB,CAAC,QAAgB;;YAClD,IAAI;gBACF,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,sBAAsB,CAAC,QAAQ,CAAC,CAAC;gBACxE,OAAO,MAAiB,CAAC;aAC1B;YAAC,OAAO,KAAK,EAAE;gBACd,IAAI,KAAK,YAAY,kDAAU,EAAE;oBAC/B,OAAO,KAAK,CAAC;iBACd;qBAAM;oBACL,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;oBACzB,OAAO,KAAK,CAAC;iBACd;aACF;QACH,CAAC;KAAA;CACF;;YAnDmC,yDAAmB;;AAJ1C,0BAA0B;IAHtC,gEAAU,CAAC;QACV,UAAU,EAAE,MAAM;KACnB,CAAC;qCAKkC,yDAAmB;GAJ1C,0BAA0B,CAuDtC;AAvDsC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACVI;AACJ;AAEM;AAEI;AAGjD,IAAa,6BAA6B,GAA1C,MAAa,6BAA6B;IAGtC,YACY,gBAAwC;QAAxC,qBAAgB,GAAhB,gBAAgB,CAAwB;QAH7C,mBAAc,GAA6C,IAAI,oDAAe,CAAC,IAAI,CAAC,CAAC;QACrF,YAAO,GAAgC,IAAI,oDAAe,CAAC,IAAI,CAAC,CAAC;IAEhB,CAAC;IAE5C,MAAM,CAAC,aAAqB;;YACrC,IAAI;gBACA,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;gBAChE,IAAI,IAAI,EAAE;oBACN,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAA+B,CAAC,CAAC;oBAC1D,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;iBAC3B;aACJ;YAAC,OAAO,KAAK,EAAE;gBACZ,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;aAC5B;QACL,CAAC;KAAA;IAEY,aAAa,CAAC,YAAmC;;YAC1D,IAAI;gBACA,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,YAAY,CAA0B,CAAC;gBAC1F,IAAI,MAAM,EAAE;oBACR,IAAI,aAAa,GAAG,IAAI,CAAC,cAAc,CAAC,QAAQ,EAAE,CAAC;oBACnD,IAAI,YAAY,CAAC,EAAE,IAAI,CAAC,EAAE;wBACtB,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;qBAC9B;yBACI;wBACD,aAAa,GAAG,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,MAAM,CAAC,EAAE,CAAC,CAAC,mBAAM,CAAC,EAAK,MAAM,EAAG,CAAC,CAAC,CAAC,CAAC;qBACvF;oBACD,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;oBACxC,OAAO,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;iBAChC;gBACD,OAAO,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;aACjC;YACD,OAAO,KAAK,EAAE;gBACV,OAAO,KAAK,YAAY,kDAAU,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC;aACtD;QACL,CAAC;KAAA;IAEY,MAAM,CAAC,EAAU,EAAE,SAAiB;;YAC7C,IAAI;gBACA,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,EAAE,EAAE,SAAS,CAAC,CAAC;gBACjE,IAAI,MAAM,EAAE;oBACR,MAAM,aAAa,GAAG,IAAI,CAAC,cAAc,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC;oBAC7E,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;oBACxC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC;iBACxB;gBACD,OAAO,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;aACjC;YACD,OAAO,KAAK,EAAE;gBACV,OAAO,KAAK,YAAY,kDAAU,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC;aACtD;QACL,CAAC;KAAA;CACJ;;YAjDiC,4DAAsB;;AAJ3C,6BAA6B;IADzC,gEAAU,EAAE;qCAKqB,4DAAsB;GAJ3C,6BAA6B,CAqDzC;AArDyC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACRC;AACJ;AAEO;AAM9C,IAAa,0BAA0B,GAAvC,MAAa,0BAA0B;IAKrC,YAAoB,aAAkC;QAAlC,kBAAa,GAAb,aAAa,CAAqB;QAJ/C,YAAO,GAAgC,IAAI,oDAAe,CAAC,IAAI,CAAC,CAAC;QACjE,4BAAuB,GAC5B,IAAI,oDAAe,CAAC,IAAI,CAAC,CAAC;IAE6B,CAAC;IAE7C,yBAAyB,CAAC,WAAmB;;YACxD,IAAI;gBACF,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,yBAAyB,CAC7D,WAAW,CACZ,CAAC;gBAEF,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAC/B,IAA0C,CAC3C,CAAC;gBAEF,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;aACzB;YAAC,OAAO,KAAK,EAAE;gBACd,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;aAC1B;QACH,CAAC;KAAA;CACF;;YAjBoC,yDAAmB;;AAL3C,0BAA0B;IADtC,gEAAU,EAAE;qCAMwB,yDAAmB;GAL3C,0BAA0B,CAsBtC;AAtBsC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACTI;AACJ;AAUG;AAM1C,IAAa,sBAAsB,GAAnC,MAAa,sBAAsB;IAEjC,YAAoB,SAA0B;QAA1B,cAAS,GAAT,SAAS,CAAiB;QADvC,YAAO,GAAgC,IAAI,oDAAe,CAAC,IAAI,CAAC,CAAC;IACtB,CAAC;IAEtC,oBAAoB,CAC/B,KAAgC;;YAEhC,IAAI;gBACF,MAAM,MAAM,GAAG,CAAC,MAAM,IAAI,CAAC,SAAS,CAAC,cAAc,CACjD,KAAK,CACN,CAA0B,CAAC;gBAC5B,OAAO,MAAM,CAAC;aACf;YAAC,OAAO,KAAK,EAAE;gBACd,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;aAC1B;QACH,CAAC;KAAA;IAEY,oBAAoB,CAC/B,KAAgC;;YAEhC,IAAI;gBACF,MAAM,MAAM,GAAG,CAAC,MAAM,IAAI,CAAC,SAAS,CAAC,cAAc,CACjD,KAAK,CACN,CAA0B,CAAC;gBAC5B,OAAO,MAAM,CAAC;aACf;YAAC,OAAO,KAAK,EAAE;gBACd,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;aAC1B;QACH,CAAC;KAAA;IAEY,oBAAoB,CAC/B,KAAgC;;YAEhC,IAAI;gBACF,MAAM,MAAM,GAAG,CAAC,MAAM,IAAI,CAAC,SAAS,CAAC,cAAc,CACjD,KAAK,CACN,CAA0B,CAAC;gBAC5B,OAAO,MAAM,CAAC;aACf;YAAC,OAAO,KAAK,EAAE;gBACd,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;aAC1B;QACH,CAAC;KAAA;CACF;;YAxCgC,qDAAe;;AAFnC,sBAAsB;IAHlC,gEAAU,CAAC;QACV,UAAU,EAAE,MAAM;KACnB,CAAC;qCAG+B,qDAAe;GAFnC,sBAAsB,CA0ClC;AA1CkC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACjBY;AACA;AACK;AACD;AACA;AACA;AACA;AACP;AACO;AACN;AACF;AACC;AACC;AACI;AACI;AACL;AACC;AACM;AACP;AACD;AACI;AACC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACrBb;AACI;AAEY;AACV;AAKvB;AACyB;AAM/C,IAAa,uBAAuB,GAApC,MAAa,uBAAuB;IAOlC,YACU,UAA4B,EAC5B,WAAuB;QADvB,eAAU,GAAV,UAAU,CAAkB;QAC5B,gBAAW,GAAX,WAAW,CAAY;QAR1B,YAAO,GAAuC,IAAI,oDAAe,CAAC,EAAE,CAAC,CAAC;QACtE,oBAAe,GAA2C,IAAI,oDAAe,CAAC,EAAE,CAAC,CAAC;QAElF,YAAO,GAAgC,IAAI,oDAAe,CAAC,IAAI,CAAC,CAAC;QACjE,oBAAe,GAAqC,IAAI,oDAAe,CAAC,IAAI,CAAC,CAAC;QAMnF,IAAI,CAAC,qBAAqB,EAAE,CAAC;IAC/B,CAAC;IACK,oBAAoB,CAAC,gBAAwC,EAAE,UAAkB,EAAE,cAAqC;;YAC5H,IAAI;gBACF,MAAM,uBAAuB,GAAG,8DAAsB,CAAC,+BAA+B,CAAC,gBAAgB,CAAC,CAAC;gBACzG,MAAM,iBAAiB,GAAG,IAAI,+DAAuB,CAAC,uBAAuB,EAAE,UAAU,EAAE,cAAc,CAAC,CAAC;gBAC3G,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,oBAAoB,CAAC,iBAAiB,CAAC,CAAC;gBAC7E,IAAI,IAAI,GAAG,MAA2B,CAAC;gBACvC,OAAO,IAAI,CAAC;aACb;YAAC,OAAO,KAAK,EAAE;gBACd,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;aAC1B;QACH,CAAC;KAAA;IAEK,kBAAkB,CAAC,eAAoC;;YAC3D,IAAI;gBACF,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,kBAAkB,CAAC,eAAe,CAAC,CAAC;gBACvE,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAuB,CAAC,CAAC;aACpD;YACD,OAAO,KAAK,EAAE;gBACZ,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;aAC1B;QACH,CAAC;KAAA;IAEK,yBAAyB;;YAC7B,IAAI;gBACF,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,yBAAyB,EAAE,CAAC;gBAC/D,OAAO,IAAI,CAAC;aACb;YACD,OAAO,KAAK,EAAE;gBACZ,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;aAC1B;QACH,CAAC;KAAA;IAEK,wBAAwB;;YAC5B,IAAI;gBACF,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,wBAAwB,EAAE,CAAC;gBAC9D,OAAO,IAAI,CAAC;aACb;YACD,OAAO,KAAK,EAAE;gBACZ,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;aAC1B;QACH,CAAC;KAAA;IAGY,+BAA+B,CAAC,KAAa;;YACxD,IAAI;gBACF,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC;gBAC5D,OAAO,IAAI,CAAC;aACb;YACD,OAAO,KAAK,EAAE;gBACZ,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;gBACzB,OAAO,KAAK,CAAC;aACd;QACH,CAAC;KAAA;IAGK,sBAAsB,CAAC,UAAkB;;YAC7C,IAAI,CAAC,eAAe,GAAG,UAAU,CAAC;YAClC,IAAI;gBACF,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,sBAAsB,CAAC,UAAU,CAAC,CAAC;gBACtE,IAAI,IAAI,EAAE;oBACR,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAyB,CAAC,CAAC;iBAC9C;aACF;YACD,OAAO,KAAK,EAAE;gBACZ,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;aAC1B;QACH,CAAC;KAAA;IAEK,kBAAkB,CAAC,IAAc;;YACrC,IAAI;gBACF,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC;gBAC9D,MAAM,IAAI,GAAG,MAA+B,CAAC;gBAC7C,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;aACjC;YAAC,OAAO,KAAK,EAAE;gBACd,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;aAC1B;QACH,CAAC;KAAA;IAEK,GAAG,CAAC,SAAyB;;YACjC,IAAI;gBACF,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,SAAS,CAAoB,CAAC;gBACvE,IAAI,MAAM,EAAE;oBACV,IAAI,CAAC,WAAW,CAAC,qBAAqB,CAAC,qDAAU,CAAC,MAAM,CAAC,WAAW,EAAE,IAAI,6DAAqB,CAAC,MAAM,CAAC,CAAC,CAAC;oBACzG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC;wBAChB,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE;wBAC1B,MAAM;qBACP,CAAC,CAAC;oBACH,OAAO,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;iBAChC;gBACD,OAAO,IAAI,CAAC;aACb;YAAC,OAAO,KAAK,EAAE;gBACd,IAAI,KAAK,YAAY,kDAAU,EAAE;oBAC/B,OAAO,KAAK,CAAC;iBACd;qBAAM;oBACL,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;iBAC1B;aACF;QACH,CAAC;KAAA;IAEK,IAAI,CAAC,UAA2B;;YACpC,IAAI;gBACF,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,UAAU,CAAoB,CAAC;gBACzE,IAAI,MAAM,EAAE;oBACV,IAAI,CAAC,WAAW,CAAC,qBAAqB,CAAC,qDAAU,CAAC,MAAM,CAAC,aAAa,EAAE,IAAI,+DAAuB,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC;oBACnH,IAAI,CAAC,OAAO,CAAC,IAAI,CACf,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CACtE,CAAC;oBACF,OAAO,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;iBAChC;gBACD,OAAO,IAAI,CAAC;aACb;YAAC,OAAO,KAAK,EAAE;gBACd,IAAI,KAAK,YAAY,kDAAU,EAAE;oBAC/B,OAAO,KAAK,CAAC;iBACd;qBAAM;oBACL,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;iBAC1B;aACF;QACH,CAAC;KAAA;IAEK,SAAS,CAAC,UAAoC;;YAClD,IAAI;gBACF,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,UAAU,CAAoB,CAAC;gBAC9E,IAAI,MAAM,EAAE;oBACV,IAAI,CAAC,WAAW,CAAC,qBAAqB,CAAC,qDAAU,CAAC,MAAM,CAAC,aAAa,EAAE,IAAI,+DAAuB,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC;oBACnH,IAAI,CAAC,OAAO,CAAC,IAAI,CACf,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CACtE,CAAC;oBACF,OAAO,IAAI,CAAC;iBACb;gBACD,OAAO,KAAK,CAAC;aACd;YAAC,OAAO,KAAK,EAAE;gBACd,IAAI,KAAK,YAAY,kDAAU,EAAE;oBAC/B,OAAO,KAAK,CAAC;iBACd;qBAAM;oBACL,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;iBAC1B;aACF;QACH,CAAC;KAAA;IAEY,6BAA6B,CACxC,QAAgB;;YAEhB,IAAI,CAAC,WAAW,CAAC,qBAAqB,CACpC,qDAAU,CAAC,MAAM,CAAC,cAAc,EAChC,IAAI,gEAAwB,CAAC,QAAQ,CAAC,CACvC,CAAC;QACJ,CAAC;KAAA;IAEY,kCAAkC,CAC7C,QAAgB,EAAE,QAAiB;;YAEnC,IAAI,CAAC,WAAW,CAAC,qBAAqB,CACpC,qDAAU,CAAC,MAAM,CAAC,mBAAmB,EACrC,IAAI,qEAA6B,CAAC,QAAQ,EAAE,QAAQ,CAAC,CACtD,CAAC;QACJ,CAAC;KAAA;IAEY,4BAA4B,CACvC,MAAuB,EACvB,WAAoB;;YAEpB,IAAI,CAAC,WAAW,CAAC,qBAAqB,CACpC,qDAAU,CAAC,MAAM,CAAC,aAAa,EAC/B,IAAI,+DAAuB,CAAC,MAAM,EAAE,WAAW,CAAC,CACjD,CAAC;QACJ,CAAC;KAAA;IAEY,MAAM,CAAC,MAAuB;;YACzC,IAAI;gBACF,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;gBACvD,IAAI,MAAM,EAAE;oBACV,IAAI,CAAC,WAAW,CAAC,qBAAqB,CAAC,qDAAU,CAAC,MAAM,CAAC,aAAa,EAAE,IAAI,+DAAuB,CAAC,MAAM,CAAC,EAAE,EAAE,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC;oBACnI,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,MAAM,CAAC,EAAE,CAAC,CAAC;oBACxE,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;oBAC3B,OAAO,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;iBAC9B;gBAED,OAAO,KAAK,CAAC;aACd;YAAC,OAAO,KAAK,EAAE;gBACd,IAAI,KAAK,YAAY,kDAAU,EAAE;oBAC/B,OAAO,KAAK,CAAC;iBACd;qBAAM;oBACL,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;iBAC1B;aACF;QACH,CAAC;KAAA;IAEO,qBAAqB;QAC3B,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,SAAS,CACpC,CAAC,UAAiC,EAAE,EAAE;YACpC,IAAI,UAAU,IAAI,UAAU,CAAC,SAAS,EAAE;gBACtC,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC;gBACxC,MAAM,SAAS,GAAG,UAAU,CAAC,SAAS,CAAC;gBACvC,IAAI,IAAI,CAAC,eAAe,IAAI,SAAS,CAAC,UAAU,EAAE;oBAChD,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,GAAG,OAAO,EAAE,SAAS,CAAC,CAAC,CAAC;iBAC5C;aACF;QACH,CAAC,CACF,CAAC;QACF,IAAI,CAAC,WAAW,CAAC,cAAc,CAAC,SAAS,CACvC,CAAC,UAAoC,EAAE,EAAE;YACvC,IAAI,UAAU,EAAE;gBACd,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,UAAU,CAAC,QAAQ,CAAC,CAAC;gBAC9E,IAAI,MAAM,EAAE;oBACV,MAAM,CAAC,sBAAsB,GAAG,IAAI,CAAC;iBACtC;aACF;QACH,CAAC,CACF,CAAC;QACF,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,SAAS,CACtC,CAAC,UAAmC,EAAE,EAAE;YACtC,IAAI,UAAU,IAAI,UAAU,CAAC,aAAa,EAAE;gBAC1C,IAAI,UAAU,CAAC,WAAW,EAAE;oBAC1B,UAAU,CAAC,aAAa,CAAC,sBAAsB,GAAG,SAAS,CAAC;oBAC5D,IAAI,CAAC,OAAO,CAAC,IAAI,CACf,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;wBAChC,IAAI,CAAC,CAAC,EAAE,KAAK,UAAU,CAAC,aAAa,CAAC,EAAE,EAAE;4BACxC,OAAO,UAAU,CAAC,aAAa,CAAC;yBACjC;6BAAM;4BACL,OAAO,CAAC,CAAC;yBACV;oBACH,CAAC,CAAC,CACH,CAAC;iBACH;qBAAM;oBACL,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO;yBACxB,QAAQ,EAAE;yBACV,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,UAAU,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC;oBACpD,MAAM,CAAC,sBAAsB,GAAG,KAAK,CAAC;iBACvC;aACF;QACH,CAAC,CACF,CAAC;QACF,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC,UAAmC,EAAE,EAAE;YAC/E,IAAI,UAAU,EAAE;gBACd,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,UAAU,CAAC,QAAQ,CAAC,CAAC;gBAClF,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;aAC5B;QACH,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,WAAW,CAAC,mBAAmB,CAAC,SAAS,CAAC,CAAC,UAAyC,EAAE,EAAE;YAC3F,IAAI,UAAU,EAAE;gBACd,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,UAAU,CAAC,QAAQ,CAAC,CAAC;gBAC9E,IAAI,MAAM,EAAE;oBACV,MAAM,CAAC,oBAAoB,GAAG,UAAU,CAAC,QAAQ,CAAC;oBAClD,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC;iBAC5C;aACF;QACH,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,WAAW,CAAC,kBAAkB,CAAC,SAAS,CAAC,CAAC,UAAwC,EAAE,EAAE;YACzF,IAAI,UAAU,EAAE;gBACd,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,UAAU,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC;gBAC7F,IAAI,MAAM,EAAE;oBACV,MAAM,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,UAAU,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC;oBAC9E,MAAM,CAAC,aAAa,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC;oBAC5C,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC;iBAC5C;aACF;QACH,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,WAAW,CAAC,kBAAkB,CAAC,SAAS,CAAC,CAAC,UAAwC,EAAE,EAAE;YACzF,IAAI,UAAU,EAAE;gBACd,IAAI,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,UAAU,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;gBAClF,IAAI,MAAM,EAAE;oBACV,IAAI,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;oBACjE,IAAI,KAAK,EAAE;wBACT,KAAK,CAAC,OAAO,GAAG,UAAU,CAAC,KAAK,CAAC,OAAO,CAAC;wBACzC,KAAK,CAAC,cAAc,GAAG,UAAU,CAAC,KAAK,CAAC,cAAc,CAAC;wBACvD,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC;qBAC5C;iBACF;aACF;QACH,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,WAAW,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC,UAAsC,EAAE,EAAE;YACrF,IAAI,UAAU,EAAE;gBACd,IAAI,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,UAAU,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;gBACrF,IAAI,MAAM,EAAE;oBACV,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;oBACxC,MAAM,CAAC,aAAa,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC;oBAC5C,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC;iBAC5C;aACF;QACH,CAAC,CAAC,CAAC;IACL,CAAC;IAEK,QAAQ,CAAC,KAAqB;;YAElC,IAAI,WAAW,GAAG,sDAAc,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC;YAC1D,IAAI;gBACF,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,WAAW,CAAmB,CAAC;gBAC7E,IAAI,MAAM,YAAY,kDAAU,EAAE;oBAChC,OAAO,MAAM,CAAC;iBACf;qBAAM;oBACL,IAAI,CAAC,WAAW,CAAC,qBAAqB,CAAC,qDAAU,CAAC,MAAM,CAAC,gBAAgB,EAAE,IAAI,kEAA0B,CAAC,MAAM,CAAC,CAAC,CAAC;oBACnH,IAAI,WAAW,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,MAAM,CAAC,QAAQ,CAAC,CAAC;oBACnF,IAAI,WAAW,EAAE;wBACf,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;wBAChC,WAAW,CAAC,aAAa,GAAG,WAAW,CAAC,MAAM,CAAC,MAAM,CAAC;qBACvD;oBAED,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;oBAChD,OAAO,MAAM,CAAC;iBACf;aACF;YACD,OAAO,KAAK,EAAE;gBACZ,IAAI,UAAU,GAAG,KAAmB;gBACpC,OAAO,UAAU;aAClB;QACH,CAAC;KAAA;IAEK,SAAS,CAAC,KAAqB;;YACnC,IAAI,WAAW,GAAG,sDAAc,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC;YAC1D,IAAI;gBACF,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,WAAW,CAAmB;gBAC7E,IAAI,MAAM,YAAY,kDAAU,EAAE;oBAChC,OAAO,MAAM,CAAC;iBACf;qBAAM;oBACL,IAAI,CAAC,WAAW,CAAC,qBAAqB,CAAC,qDAAU,CAAC,MAAM,CAAC,kBAAkB,EAAE,IAAI,oEAA4B,CAAC,MAAM,CAAC,CAAC,CAAC;oBACvH,IAAI,WAAW,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,MAAM,CAAC,QAAQ,CAAC,CAAC;oBACnF,IAAI,KAAK,GAAG,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,MAAM,CAAC,EAAE,CAAC,CAAC;oBAC5D,KAAK,CAAC,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC;oBAC/B,KAAK,CAAC,cAAc,GAAG,MAAM,CAAC,cAAc,CAAC;oBAC7C,KAAK,CAAC,aAAa,GAAG,MAAM,CAAC,aAAa,CAAC;oBAC3C,KAAK,CAAC,qBAAqB,GAAG,MAAM,CAAC,qBAAqB,CAAC;oBAC3D,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;iBACjD;aACF;YAAC,OAAO,KAAK,EAAE;gBACd,IAAI,UAAU,GAAG,KAAmB,CAAC;gBACrC,OAAO,UAAU,CAAC;aACnB;QACH,CAAC;KAAA;IAEY,WAAW,CAAC,KAAqB;;YAC5C,IAAI;gBACF,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;gBAC3D,IAAI,MAAM,EAAE;oBACV,IAAI,CAAC,WAAW,CAAC,qBAAqB,CAAC,qDAAU,CAAC,MAAM,CAAC,kBAAkB,EAAE,IAAI,oEAA4B,CAAC,KAAK,CAAC,CAAC,CAAC;oBACtH,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,KAAK,CAAC,QAAQ,CAAC,CAAC;oBAC3E,IAAI,MAAM,EAAE;wBACV,MAAM,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,KAAK,CAAC,EAAE,CAAC,CAAC;wBAC5D,MAAM,CAAC,aAAa,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC;wBAC5C,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC;qBAC5C;oBACD,OAAO,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;iBAC9B;gBACD,OAAO,KAAK,CAAC;aACd;YAAC,OAAO,KAAK,EAAE;gBACd,IAAI,KAAK,YAAY,kDAAU,EAAE;oBAC/B,OAAO,KAAK,CAAC;iBACd;qBAAM;oBACL,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;iBAC1B;aACF;QACH,CAAC;KAAA;CACF;;YApWuB,sDAAgB;YACf,gDAAU;;AATtB,uBAAuB;IAHnC,gEAAU,CAAC;QACV,UAAU,EAAE,MAAM;KACnB,CAAC;qCASsB,sDAAgB;QACf,gDAAU;GATtB,uBAAuB,CA4WnC;AA5WmC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AChBO;AACJ;AAEM;AAGvB;AAC4D;AACrC;AAO7C,IAAa,6BAA6B,GAA1C,MAAa,6BAA6B;IAQxC,YACU,gBAAwC,EACxC,aAAkC,EAClC,WAAuB;QAFvB,qBAAgB,GAAhB,gBAAgB,CAAwB;QACxC,kBAAa,GAAb,aAAa,CAAqB;QAClC,gBAAW,GAAX,WAAW,CAAY;QAV1B,kBAAa,GAA4C,IAAI,oDAAe,CAAC,EAAE,CAAC,CAAC;QACjF,4BAAuB,GAA4C,IAAI,oDAAe,CAAC,EAAE,CAAC,CAAC;QAC3F,YAAO,GAAgC,IAAI,oDAAe,CAAC,IAAI,CAAC,CAAC;QACjE,4BAAuB,GAAwC,IAAI,oDAAe,CAAC,EAAE,CAAC,CAAC;QACvF,uBAAkB,GAAoD,IAAI,oDAAe,CAAC,EAAE,CAAC,CAAC;QAC9F,yBAAoB,GAA4B,IAAI,oDAAe,CAAC,IAAI,CAAC,CAAC;QAM/E,IAAI,CAAC,qBAAqB,EAAE,CAAC;IAC/B,CAAC;IAEY,GAAG;;YACd,IAAI;gBACF,IAAI,IAAI,GAAG,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE,CAAC;gBACzC,IAAI,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,CAAC,MAAM,IAAI,CAAC,EAAE;oBACrC,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC,MAAM,EAAE,CAAC;oBAClD,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAA8B,CAAC,CAAC;iBACzD;qBACI;oBACH,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;iBAC/B;gBAED,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;aACzB;YAAC,OAAO,KAAK,EAAE;gBACd,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;aAC1B;QACH,CAAC;KAAA;IAEY,aAAa,CAAC,SAAiB;;YAC1C,IAAI;gBACF,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC;gBACrE,IAAI,IAAI,EAAE;oBACR,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,IAA8B,CAAC,CAAC;oBAClE,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;iBACzB;aACF;YAAC,OAAO,KAAK,EAAE;gBACd,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;aAC1B;QACH,CAAC;KAAA;IAEY,GAAG,CAAC,QAA8B;;YAC7C,IAAI;gBACF,MAAM,iBAAiB,GAAG,IAAI,4DAAoB,CAAC,QAAQ,CAAC,CAAC;gBAC7D,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,iBAAiB,CAAyB,CAAC;gBAC1F,IAAI,MAAM,EAAE;oBACV,IAAI,CAAC,WAAW,CAAC,qBAAqB,CAAC,qDAAU,CAAC,WAAW,CAAC,gBAAgB,EAAE,IAAI,kEAA0B,CAAC,MAAM,CAAC,CAAC,CAAC;oBACxH,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC;wBACtB,GAAG,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE;wBAChC,MAAM;qBACP,CAAC,CAAC;oBACH,OAAO,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;iBAChC;gBAED,OAAO,IAAI,CAAC;aACb;YAAC,OAAO,KAAK,EAAE;gBACd,IAAI,KAAK,YAAY,kDAAU,EAAE;oBAC/B,OAAO,KAAK,CAAC;iBACd;qBAAM;oBACL,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;iBAC1B;aACF;QACH,CAAC;KAAA;IAEY,IAAI,CAAC,QAA8B;;YAC9C,IAAI;gBACF,MAAM,gBAAgB,GAAG,IAAI,4DAAoB,CAAC,QAAQ,CAAC,CAAC;gBAC5D,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,gBAAgB,CAAyB,CAAC;gBAC1F,IAAI,MAAM,EAAE;oBACV,IAAI,CAAC,WAAW,CAAC,qBAAqB,CAAC,qDAAU,CAAC,WAAW,CAAC,kBAAkB,EAAE,IAAI,oEAA4B,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC;oBAClI,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;oBAC7G,OAAO,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;iBAChC;gBAED,OAAO,IAAI,CAAC;aACb;YAAC,OAAO,KAAK,EAAE;gBACd,IAAI,KAAK,YAAY,kDAAU,EAAE;oBAC/B,OAAO,KAAK,CAAC;iBACd;qBAAM;oBACL,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;iBAC1B;aACF;QACH,CAAC;KAAA;IAEY,YAAY,CAAC,QAAgB;;YACxC,IAAI,QAAQ,GAAG,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,QAAQ,CAAC,CAAC;YAChF,IAAI,CAAC,QAAQ,EAAE;gBACb,MAAM,IAAI,CAAC,GAAG,EAAE,CAAC;gBACjB,QAAQ,GAAG,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,QAAQ,CAAC,CAAC;aAC7E;YAED,IAAI;gBACF,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,QAAQ,CAAkC,CAAC;gBAE1F,OAAO,SAAS,CAAC;aAClB;YAAC,OAAO,KAAK,EAAE;gBACd,OAAO,KAAK,CAAC;aACd;QACH,CAAC;KAAA;IAEY,UAAU,CAAC,WAAmB,EAAE,UAAkB;;YAC7D,IAAI;gBACF,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,WAAW,EAAE,UAAU,CAAC,CAAC;gBAC7E,OAAO,OAAO,CAAC;aAChB;YAAC,OAAO,KAAK,EAAE;gBACd,OAAO,KAAK,CAAC;aACd;QACH,CAAC;KAAA;IAEY,oBAAoB,CAAC,KAAoC;;YACpE,IAAI;gBACF,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;gBAE3D,IAAI,MAAM,EAAE;oBACV,IAAI,CAAC,WAAW,CAAC,qBAAqB,CAAC,qDAAU,CAAC,WAAW,CAAC,4BAA4B,EAAE,IAAI,2EAAmC,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC;oBAC/I,MAAM,QAAQ,GAAG,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC;oBACxF,QAAQ,CAAC,aAAa,GAAG,KAAK,CAAC;iBAChC;gBAED,OAAO,MAAM,CAAC;aACf;YAAC,OAAO,KAAK,EAAE;gBACd,OAAO,KAAK,CAAC;aACd;QACH,CAAC;KAAA;IAEY,8BAA8B,CAAC,IAAU,EAAE,UAAkB;;YACxE,IAAI;gBACF,MAAM,UAAU,GAAG,IAAI,QAAQ,EAAE,CAAC;gBAClC,UAAU,CAAC,MAAM,CAAC,mBAAmB,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;gBACxD,UAAU,CAAC,MAAM,CAAC,YAAY,EAAE,UAAU,CAAC,QAAQ,EAAE,CAAC,CAAC;gBACvD,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC,8BAA8B,CAAC,UAAU,CAA6B,CAAC;gBAClH,IAAI,MAAM,EAAE;oBACV,OAAO,MAAM,CAAC;iBACf;gBACD,OAAO,IAAI,CAAC;aACb;YAAC,OAAO,KAAK,EAAE;gBACd,IAAI,KAAK,YAAY,kDAAU,EAAE;oBAC/B,OAAO,KAAK,CAAC;iBACd;qBAAM;oBACL,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;iBAC1B;aACF;QACH,CAAC;KAAA;IAEY,4CAA4C,CAAC,qBAA+C;;YACvG,IAAI;gBACF,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC,4CAA4C,CAAC,qBAAqB,CAAC,CAAC;gBAC/G,IAAI,MAAM,EAAE;oBACV,IAAI,CAAC,WAAW,CAAC,qBAAqB,CAAC,qDAAU,CAAC,WAAW,CAAC,4BAA4B,EAAE,IAAI,2EAAmC,CAAC,qBAAqB,CAAC,UAAU,CAAC,CAAC,CAAC;oBACvK,MAAM,QAAQ,GAAG,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,qBAAqB,CAAC,QAAQ,CAAC,CAAC;oBACxG,QAAQ,CAAC,aAAa,GAAG,KAAK,CAAC;iBAChC;aACF;YAAC,OAAO,KAAK,EAAE;gBACd,IAAI,KAAK,YAAY,kDAAU,EAAE;oBAC/B,OAAO,KAAK,CAAC;iBACd;qBAAM;oBACL,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;iBAC1B;aACF;QACH,CAAC;KAAA;IAEY,6BAA6B,CAAC,UAAkB;;YAC3D,IAAI;gBACF,MAAM,IAAI,CAAC,WAAW,CAAC,qBAAqB,CAAC,qDAAU,CAAC,WAAW,CAAC,iCAAiC,EAAE,IAAI,gFAAwC,CAAC,UAAU,CAAC,CAAC,CAAC;gBACjK,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC,6BAA6B,CAAC,UAAU,CAAC,CAAC;gBACrF,IAAI,MAAM,EAAE;oBACV,IAAI,CAAC,WAAW,CAAC,qBAAqB,CAAC,qDAAU,CAAC,WAAW,CAAC,4BAA4B,EAAE,IAAI,2EAAmC,CAAC,UAAU,CAAC,CAAC,CAAC;oBACjJ,MAAM,QAAQ,GAAG,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,UAAU,CAAC,CAAC;oBAC9E,QAAQ,CAAC,aAAa,GAAG,IAAI,CAAC;oBAC9B,OAAO,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;iBAC9B;gBAED,OAAO,KAAK,CAAC;aACd;YAAC,OAAO,KAAK,EAAE;gBACd,IAAI,KAAK,YAAY,kDAAU,EAAE;oBAC/B,OAAO,KAAK,CAAC;iBACd;qBAAM;oBACL,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;iBAC1B;aACF;QACH,CAAC;KAAA;IAEY,sBAAsB,CAAC,UAAkB;;YACpD,IAAI;gBACF,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC,sBAAsB,CAAC,UAAU,CAAC,CAAC;gBAE9E,OAAO,OAAO,CAAC,OAAO,CAAC,IAAI,IAAI,CAAC,CAAC,MAAoB,CAAC,EAAE,EAAE,IAAI,EAAE,iBAAiB,EAAE,CAAC,CAAC,CAAC;aACvF;YAAC,OAAO,KAAK,EAAE;gBACd,IAAI,KAAK,YAAY,kDAAU,EAAE;oBAC/B,OAAO,KAAK,CAAC;iBACd;qBAAM;oBACL,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;iBAC1B;aACF;QACH,CAAC;KAAA;IAEY,MAAM,CAAC,UAAkB;;YACpC,IAAI;gBACF,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;gBAE9D,IAAI,MAAM,EAAE;oBACV,IAAI,CAAC,WAAW,CAAC,qBAAqB,CAAC,qDAAU,CAAC,WAAW,CAAC,kBAAkB,EAAE,IAAI,oEAA4B,CAAC,UAAU,CAAC,CAAC,CAAC;oBAChI,MAAM,SAAS,GAAG,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,UAAU,CAAC,CAAC;oBACjF,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;oBACnC,OAAO,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;iBAC9B;gBAED,OAAO,KAAK,CAAC;aACd;YAAC,OAAO,KAAK,EAAE;gBACd,IAAI,KAAK,YAAY,kDAAU,EAAE;oBAC/B,OAAO,KAAK,CAAC;iBACd;qBAAM;oBACL,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;iBAC1B;aACF;QACH,CAAC;KAAA;IAEY,WAAW,CAAC,UAAkB,EAAE,WAAmB,EAAE,kBAA4B;;YAC5F,IAAI;gBACF,IAAI,IAAI,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC,UAAU,EAAE,WAAW,EAAE,kBAAkB,CAAC,CAAC;gBAC7F,OAAO,IAAI,CAAC;aACb;YAAC,OAAO,KAAK,EAAE;gBACd,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;aAC1B;QACH,CAAC;KAAA;IAEY,6BAA6B,CAAC,OAA6B;;YACtE,IAAI;gBACF,IAAI,IAAI,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,6BAA6B,CAAC,OAAO,CAAC,CAAC;gBAC3E,OAAO,IAAI,CAAC;aACb;YAAC,OAAO,KAAK,EAAE;gBACd,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;aAC1B;QACH,CAAC;KAAA;IAEY,+BAA+B,CAAC,UAAkB;;YAC7D,IAAI,CAAC,WAAW,CAAC,qBAAqB,CAAC,qDAAU,CAAC,WAAW,CAAC,mBAAmB,EAAE,IAAI,qEAA6B,CAAC,UAAU,CAAC,CAAC,CAAC;QACpI,CAAC;KAAA;IAEY,8BAA8B,CAAC,QAA8B,EAAE,WAAoB;;YAC9F,IAAI,CAAC,WAAW,CAAC,qBAAqB,CAAC,qDAAU,CAAC,WAAW,CAAC,kBAAkB,EAAE,IAAI,oEAA4B,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAC,CAAC;QAC7I,CAAC;KAAA;IAEY,yCAAyC,CAAC,UAAkB;;YACvE,IAAI,CAAC,WAAW,CAAC,qBAAqB,CAAC,qDAAU,CAAC,WAAW,CAAC,6BAA6B,EAAE,IAAI,4EAAoC,CAAC,UAAU,CAAC,CAAC,CAAC;QACrJ,CAAC;KAAA;IAEY,wCAAwC,CAAC,UAAkB;;YACtE,IAAI,CAAC,WAAW,CAAC,qBAAqB,CAAC,qDAAU,CAAC,WAAW,CAAC,4BAA4B,EAAE,IAAI,4EAAoC,CAAC,UAAU,CAAC,CAAC,CAAC;QACpJ,CAAC;KAAA;IAEY,yBAAyB,CAAC,cAAc,GAAG,KAAK;;YAC3D,IAAI;gBACF,MAAM,UAAU,GAAG,IAAI,CAAC,uBAAuB,CAAC,QAAQ,EAAE,CAAC;gBAC3D,IAAI,CAAC,UAAU,IAAI,UAAU,IAAI,UAAU,CAAC,MAAM,IAAI,CAAC,EAAE;oBACvD,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC,yBAAyB,CAAC,cAAc,CAAC,CAAC;oBACnF,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,IAA0B,CAAC,CAAC;oBAC9D,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;iBACzB;;oBAAM,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,UAAgC,CAAC,CAAC;aAC5E;YAAC,OAAO,KAAK,EAAE;gBACd,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;aAC1B;QACH,CAAC;KAAA;IAEY,oBAAoB;;YAC/B,IAAI;gBACF,MAAM,QAAQ,GAAG,IAAI,CAAC,kBAAkB,CAAC,QAAQ,EAAE,CAAC;gBACpD,IAAI,CAAC,QAAQ,IAAI,QAAQ,CAAC,MAAM,IAAI,CAAC,EAAE;oBACrC,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC,oBAAoB,EAAE,CAAC;oBAChE,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,IAAsC,CAAC,CAAC;oBACrE,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;iBACzB;qBACI;oBACH,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,QAA0C,CAAC,CAAC;iBAC1E;aACF;YAAC,OAAO,KAAK,EAAE;gBACd,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;aAC1B;QACH,CAAC;KAAA;IAEO,qBAAqB;QAC3B,IAAI,CAAC,WAAW,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC,UAAsC,EAAE,EAAE;YACrF,IAAI,UAAU,IAAI,UAAU,CAAC,WAAW,EAAE;gBACxC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC;oBACtB,GAAG,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE;oBAChC,UAAU,CAAC,WAAW;iBACvB,CAAC,CAAC;aACJ;QACH,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,WAAW,CAAC,kBAAkB,CAAC,SAAS,CAAC,CAAC,UAAwC,EAAE,EAAE;YACzF,IAAI,UAAU,EAAE;gBACd,MAAM,SAAS,GAAG,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,UAAU,CAAC,UAAU,CAAC,CAAC;gBAC5F,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;aACpC;QACH,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,WAAW,CAAC,mBAAmB,CAAC,SAAS,CAAC,CAAC,UAAyC,EAAE,EAAE;YAC3F,IAAI,UAAU,EAAE;gBACd,MAAM,QAAQ,GAAG,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,UAAU,CAAC,UAAU,CAAC,CAAC;gBACzF,IAAI,QAAQ,EAAE;oBACZ,QAAQ,CAAC,uBAAuB,GAAG,IAAI,CAAC;iBACzC;aACF;QACH,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,WAAW,CAAC,kBAAkB,CAAC,SAAS,CAAC,CAAC,UAAwC,EAAE,EAAE;YACzF,IAAI,UAAU,IAAI,UAAU,CAAC,eAAe,EAAE;gBAC5C,IAAI,UAAU,CAAC,WAAW,EAAE;oBAC1B,UAAU,CAAC,eAAe,CAAC,uBAAuB,GAAG,SAAS,CAAC;oBAC/D,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE;wBAC5D,IAAI,CAAC,CAAC,EAAE,KAAK,UAAU,CAAC,eAAe,CAAC,EAAE,EAAE;4BAC1C,OAAO,UAAU,CAAC,eAAe,CAAC;yBACnC;6BAAM;4BACL,OAAO,CAAC,CAAC;yBACV;oBACH,CAAC,CAAC,CAAC,CAAC;iBACL;qBAAM;oBACL,MAAM,QAAQ,GAAG,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,UAAU,CAAC,eAAe,CAAC,EAAE,CAAC,CAAC;oBAChG,QAAQ,CAAC,uBAAuB,GAAG,KAAK,CAAC;iBAC1C;aACF;QACH,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,WAAW,CAAC,6BAA6B,CAAC,SAAS,CAAC,CAAC,UAAgD,EAAE,EAAE;YAC5G,IAAI,UAAU,EAAE;gBACd,MAAM,QAAQ,GAAG,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,UAAU,CAAC,UAAU,CAAC,CAAC;gBACzF,IAAI,QAAQ,EAAE;oBACZ,QAAQ,CAAC,uBAAuB,GAAG,IAAI,CAAC;iBACzC;aACF;QACH,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,WAAW,CAAC,4BAA4B,CAAC,SAAS,CAAC,CAAC,UAA+C,EAAE,EAAE;YAC1G,IAAI,UAAU,EAAE;gBACd,MAAM,QAAQ,GAAG,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,UAAU,CAAC,UAAU,CAAC,CAAC;gBACzF,IAAI,QAAQ,EAAE;oBACZ,QAAQ,CAAC,uBAAuB,GAAG,KAAK,CAAC;oBACzC,QAAQ,CAAC,aAAa,GAAG,KAAK,CAAC;iBAChC;aACF;QACH,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,WAAW,CAAC,iCAAiC,CAAC,SAAS,CAAC,CAAC,UAAoD,EAAE,EAAE;YACpH,IAAI,UAAU,EAAE;gBACd,MAAM,QAAQ,GAAG,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,UAAU,CAAC,UAAU,CAAC,CAAC;gBACzF,IAAI,QAAQ,EAAE;oBACZ,QAAQ,CAAC,wBAAwB,GAAG,IAAI,CAAC;iBAC1C;aACF;QACH,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,WAAW,CAAC,4BAA4B,CAAC,SAAS,CAAC,CAAC,UAA+C,EAAE,EAAE;YAC1G,IAAI,UAAU,EAAE;gBACd,MAAM,QAAQ,GAAG,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,UAAU,CAAC,UAAU,CAAC,CAAC;gBACzF,IAAI,QAAQ,EAAE;oBACZ,QAAQ,CAAC,wBAAwB,GAAG,KAAK,CAAC;oBAC1C,QAAQ,CAAC,aAAa,GAAG,IAAI,CAAC;iBAC/B;aACF;QACH,CAAC,CAAC,CAAC;IACL,CAAC;IAED,gBAAgB;QACd,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAC5B,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACjC,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACxC,CAAC;CACF;;YAnW6B,4DAAsB;YACzB,yDAAmB;YACrB,gDAAU;;AAXtB,6BAA6B;IAHzC,gEAAU,CAAC;QACV,UAAU,EAAE,MAAM;KACnB,CAAC;qCAU4B,4DAAsB;QACzB,yDAAmB;QACrB,gDAAU;GAXtB,6BAA6B,CA4WzC;AA5WyC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACfC;AACJ;AAGK;AACiB;AAChB;AAevB;AAKtB,IAAa,6BAA6B,GAA1C,MAAa,6BAA6B;IAIxC,YACU,gBAAwC,EACxC,WAAuB;QADvB,qBAAgB,GAAhB,gBAAgB,CAAwB;QACxC,gBAAW,GAAX,WAAW,CAAY;QAL1B,kBAAa,GAA4C,IAAI,oDAAe,CAAC,EAAE,CAAC,CAAC;QACjF,YAAO,GAAgC,IAAI,oDAAe,CAAC,IAAI,CAAC,CAAC;QAMtE,IAAI,CAAC,qBAAqB,EAAE,CAAC;IAC/B,CAAC;IAGY,8BAA8B,CAAC,SAAiB;;YAC3D,IAAI;gBACF,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC,wBAAwB,CAAC,SAAS,CAA2B,CAAC;gBACvG,IAAI,IAAI,EAAE;oBACR,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAA8B,CAAC,CAAC;iBACzD;aACF;YAAC,OAAO,KAAK,EAAE;gBACd,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;aAC1B;QACH,CAAC;KAAA;IAEY,GAAG;;YACd,IAAI;gBACF,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC,MAAM,EAAE,CAAC;gBAClD,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAA8B,CAAC,CAAC;gBACxD,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;aACzB;YAAC,OAAO,KAAK,EAAE;gBACd,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;aAC1B;QACH,CAAC;KAAA;IAEY,kCAAkC,CAC7C,UAAkB;;YAElB,IAAI,CAAC,WAAW,CAAC,qBAAqB,CACpC,qDAAU,CAAC,WAAW,CAAC,mBAAmB,EAC1C,IAAI,qEAA6B,CAAC,UAAU,CAAC,CAC9C,CAAC;QACJ,CAAC;KAAA;IAEY,wCAAwC,CACnD,UAAkB,EAClB,MAAe;;YAEf,IAAI,CAAC,WAAW,CAAC,qBAAqB,CACpC,qDAAU,CAAC,WAAW,CAAC,wBAAwB,EAC/C,IAAI,2EAAmC,CAAC,UAAU,EAAE,MAAM,CAAC,CAC5D,CAAC;QACJ,CAAC;KAAA;IAEY,iCAAiC,CAC5C,QAA8B,EAC9B,WAAoB;;YAEpB,IAAI,CAAC,WAAW,CAAC,qBAAqB,CACpC,qDAAU,CAAC,WAAW,CAAC,kBAAkB,EACzC,IAAI,oEAA4B,CAAC,QAAQ,EAAE,WAAW,CAAC,CACxD,CAAC;QACJ,CAAC;KAAA;IAEY,GAAG,CAAC,QAA8B;;YAC7C,IAAI;gBACF,MAAM,iBAAiB,GAAG,IAAI,4DAAoB,CAAC,QAAQ,CAAC,CAAC;gBAC7D,MAAM,MAAM,GAAG,CAAC,MAAM,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAC7C,iBAAiB,CAClB,CAAyB,CAAC;gBAC3B,IAAI,MAAM,EAAE;oBACV,IAAI,CAAC,WAAW,CAAC,qBAAqB,CACpC,qDAAU,CAAC,WAAW,CAAC,gBAAgB,EACvC,IAAI,kEAA0B,CAAC,MAAM,CAAC,CACvC,CAAC;oBACF,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE,EAAE,MAAM,CAAC,CAAC,CAAC;oBACpE,OAAO,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;iBAChC;gBACD,OAAO,IAAI,CAAC;aACb;YAAC,OAAO,KAAK,EAAE;gBACd,IAAI,KAAK,YAAY,yDAAU,EAAE;oBAC/B,OAAO,KAAK,CAAC;iBACd;qBAAM;oBACL,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;iBAC1B;aACF;QACH,CAAC;KAAA;IACY,IAAI,CACf,QAA8B;;YAE9B,IAAI;gBACF,MAAM,gBAAgB,GAAG,IAAI,4DAAoB,CAAC,QAAQ,CAAC,CAAC;gBAC5D,MAAM,MAAM,GAAG,CAAC,MAAM,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAC9C,gBAAgB,CACjB,CAAyB,CAAC;gBAC3B,IAAI,MAAM,EAAE;oBACV,IAAI,CAAC,aAAa,CAAC,IAAI,CACrB,IAAI,CAAC,aAAa;yBACf,QAAQ,EAAE;yBACV,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CACjD,CAAC;oBACF,OAAO,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;iBAChC;gBACD,OAAO,IAAI,CAAC;aACb;YAAC,OAAO,KAAK,EAAE;gBACd,IAAI,KAAK,YAAY,yDAAU,EAAE;oBAC/B,OAAO,KAAK,CAAC;iBACd;qBAAM;oBACL,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;iBAC1B;aACF;QACH,CAAC;KAAA;IAEY,MAAM,CAAC,UAAkB;;YACpC,IAAI;gBACF,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;gBAC9D,IAAI,MAAM,EAAE;oBACV,IAAI,CAAC,WAAW,CAAC,qBAAqB,CACpC,qDAAU,CAAC,WAAW,CAAC,kBAAkB,EACzC,IAAI,oEAA4B,CAAC,UAAU,CAAC,CAC7C,CAAC;oBACF,MAAM,SAAS,GAAG,IAAI,CAAC,aAAa;yBACjC,QAAQ,EAAE;yBACV,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,UAAU,CAAC,CAAC;oBACtC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;oBACnC,OAAO,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;iBAC9B;gBACD,OAAO,KAAK,CAAC;aACd;YAAC,OAAO,KAAK,EAAE;gBACd,IAAI,KAAK,YAAY,yDAAU,EAAE;oBAC/B,OAAO,KAAK,CAAC;iBACd;qBAAM;oBACL,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;iBAC1B;aACF;QACH,CAAC;KAAA;IAEY,iBAAiB,CAAC,UAAkB;;YAC/C,IAAI;gBACF,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC,iBAAiB,CAAC,UAAU,CAA2B,CAAC;gBAEnG,IAAI,MAAM,EAAE;oBACV,MAAM,QAAQ,GAAG,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,MAAM,CAAC,UAAU,CAAC,CAAC;oBACrF,QAAQ,CAAC,cAAc,GAAG,MAAM,CAAC,cAAc,CAAC;iBACjD;aACF;YAAC,OAAO,KAAK,EAAE;gBACd,IAAI,KAAK,YAAY,yDAAU,EAAE;oBAC/B,OAAO,KAAK,CAAC;iBACd;qBAAM;oBACL,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;iBAC1B;aACF;QACH,CAAC;KAAA;IAEY,iBAAiB,CAAC,iBAAyC;;YACtE,IAAI;gBACF,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC,iBAAiB,CAAC,iBAAiB,CAA2B;gBACzG,IAAI,MAAM,EAAE;oBACV,MAAM,QAAQ,GAAG,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,MAAM,CAAC,UAAU,CAAC,CAAC;oBACpF,IAAI,QAAQ,EAAE;wBACZ,QAAQ,CAAC,aAAa,GAAG,MAAM,CAAC,aAAa,CAAC;wBAC9C,QAAQ,CAAC,sBAAsB,GAAG,MAAM,CAAC,sBAAsB,CAAC;wBAChE,QAAQ,CAAC,cAAc,GAAG,MAAM,CAAC,cAAc,CAAC;qBACjD;oBAED,MAAM,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,qDAAU,CAAC,WAAW,CAAC,+BAA+B,EAAE,IAAI,iFAAyC,CAAC,iBAAiB,CAAC,CAAC,CAAC;iBAC5J;gBAED,OAAO,MAAM,CAAC;aACf;YAAC,OAAO,KAAK,EAAE;gBACd,IAAI,KAAK,YAAY,yDAAU,EAAE;oBAC/B,OAAO,KAAK,CAAC;iBACd;qBAAM;oBACL,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;iBAC1B;aACF;QACH,CAAC;KAAA;IAEO,qBAAqB;QAC3B,IAAI,CAAC,WAAW,CAAC,gBAAgB,CAAC,SAAS,CACzC,CAAC,UAAsC,EAAE,EAAE;YACzC,IAAI,UAAU,IAAI,UAAU,CAAC,cAAc,EAAE;gBAC3C,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC;oBACtB,GAAG,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE;oBAChC,UAAU,CAAC,cAAc;iBAC1B,CAAC,CAAC;aACJ;QACH,CAAC,CACF,CAAC;QAEF,IAAI,CAAC,WAAW,CAAC,wBAAwB,CAAC,SAAS,CACjD,CAAC,UAA+C,EAAE,EAAE;YAClD,IAAI,UAAU,EAAE;gBACd,MAAM,QAAQ,GAAG,IAAI,CAAC,aAAa;qBAChC,QAAQ,EAAE;qBACV,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,UAAU,CAAC,UAAU,CAAC,CAAC;gBAC/C,IAAI,QAAQ,EAAE;oBACZ,QAAQ,CAAC,uBAAuB,GAAG,UAAU,CAAC,MAAM,CAAC;iBACtD;aACF;QACH,CAAC,CACF,CAAC;QAEF,IAAI,CAAC,WAAW,CAAC,mBAAmB,CAAC,SAAS,CAC5C,CAAC,UAAyC,EAAE,EAAE;YAC5C,IAAI,UAAU,EAAE;gBACd,MAAM,QAAQ,GAAG,IAAI,CAAC,aAAa;qBAChC,QAAQ,EAAE;qBACV,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,UAAU,CAAC,UAAU,CAAC,CAAC;gBAC/C,IAAI,QAAQ,EAAE;oBACZ,QAAQ,CAAC,uBAAuB,GAAG,IAAI,CAAC;iBACzC;aACF;QACH,CAAC,CACF,CAAC;QACF,IAAI,CAAC,WAAW,CAAC,kBAAkB,CAAC,SAAS,CAC3C,CAAC,UAAwC,EAAE,EAAE;YAC3C,IAAI,UAAU,IAAI,UAAU,CAAC,kBAAkB,EAAE;gBAC/C,IAAI,UAAU,CAAC,WAAW,EAAE;oBAC1B,UAAU,CAAC,kBAAkB,CAAC,uBAAuB,GAAG,KAAK,CAAC;oBAC9D,IAAI,CAAC,aAAa,CAAC,IAAI,CACrB,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;wBACtC,IAAI,CAAC,CAAC,EAAE,IAAI,UAAU,CAAC,kBAAkB,CAAC,EAAE,EAAE;4BAC5C,OAAO,UAAU,CAAC,kBAAkB,CAAC;yBACtC;6BAAM;4BACL,OAAO,CAAC,CAAC;yBACV;oBACH,CAAC,CAAC,CACH,CAAC;iBACH;qBAAM;oBACL,MAAM,QAAQ,GAAG,IAAI,CAAC,aAAa;yBAChC,QAAQ,EAAE;yBACV,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,UAAU,CAAC,kBAAkB,CAAC,EAAE,CAAC,CAAC;oBACzD,QAAQ,CAAC,uBAAuB,GAAG,KAAK,CAAC;oBACzC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,uBAAuB,CAAC;iBAC9C;aACF;QACH,CAAC,CACF,CAAC;QACF,IAAI,CAAC,WAAW,CAAC,kBAAkB,CAAC,SAAS,CAC3C,CAAC,UAAwC,EAAE,EAAE;YAC3C,IAAI,UAAU,EAAE;gBACd,MAAM,SAAS,GAAG,IAAI,CAAC,aAAa;qBACjC,QAAQ,EAAE;qBACV,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,UAAU,CAAC,UAAU,CAAC,CAAC;gBACjD,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;aACpC;QACH,CAAC,CACF,CAAC;QACF,IAAI,CAAC,WAAW,CAAC,oBAAoB,CAAC,SAAS,CAAC,CAAC,UAAqD,EAAE,EAAE;YACxG,IAAI,UAAU,EAAE;gBACd,MAAM,QAAQ,GAAG,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,UAAU,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC;gBACvG,IAAI,QAAQ,EAAE;oBACZ,QAAQ,CAAC,cAAc,GAAG,UAAU,CAAC,aAAa,CAAC,MAAM,CAAC;iBAC3D;aACF;QACH,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC,UAAiC,EAAE,EAAE;YAC3E,IAAI,UAAU,EAAE;gBACd,MAAM,SAAS,GAAG,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE,CAAC;gBAChD,MAAM,QAAQ,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,UAAU,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;gBAC/E,IAAI,QAAQ,EAAE;oBACZ,QAAQ,CAAC,WAAW,EAAE,CAAC;oBACvB,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;iBACpC;aACF;QACH,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC,UAAmC,EAAE,EAAE;YAC/E,MAAM,SAAS,GAAG,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE,CAAC;YAChD,MAAM,QAAQ,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,UAAU,CAAC,aAAa,CAAC,CAAC;YACxE,IAAI,QAAQ,EAAE;gBACZ,QAAQ,CAAC,WAAW,EAAE,CAAC;gBACvB,IAAI,QAAQ,CAAC,WAAW,GAAG,CAAC,EAAE;oBAC5B,QAAQ,CAAC,WAAW,GAAG,CAAC,CAAC;iBAC1B;gBACD,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;aACpC;QACH,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,WAAW,CAAC,iCAAiC,CAAC,SAAS,CAAC,CAAC,UAAuD,EAAE,EAAE;YACvH,MAAM,SAAS,GAAG,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE,CAAC;YAChD,MAAM,QAAQ,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,UAAU,CAAC,UAAU,CAAC,CAAC;YACpE,IAAI,QAAQ,EAAE;gBACZ,QAAQ,CAAC,wBAAwB,GAAG,IAAI,CAAC;gBACzC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;aACpC;QACH,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,WAAW,CAAC,4BAA4B,CAAC,SAAS,CAAC,CAAC,UAAkD,EAAE,EAAE;YAC7G,MAAM,SAAS,GAAG,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE,CAAC;YAChD,MAAM,QAAQ,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,UAAU,CAAC,UAAU,CAAC,CAAC;YACpE,IAAI,QAAQ,EAAE;gBACZ,QAAQ,CAAC,wBAAwB,GAAG,KAAK,CAAC;gBAC1C,QAAQ,CAAC,aAAa,GAAG,UAAU,CAAC,aAAa,CAAC;gBAClD,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;aACpC;QACH,CAAC,CAAC,CAAC;IACL,CAAC;IAEY,6BAA6B,CAAC,UAAkB;;YAC3D,IAAI;gBACF,MAAM,IAAI,CAAC,WAAW,CAAC,qBAAqB,CAAC,qDAAU,CAAC,WAAW,CAAC,iCAAiC,EAAE,IAAI,mFAA2C,CAAC,UAAU,CAAC,CAAC,CAAC;gBACpK,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC,6BAA6B,CAAC,UAAU,CAAC,CAAC;gBACrF,MAAM,IAAI,CAAC,WAAW,CAAC,qBAAqB,CAAC,qDAAU,CAAC,WAAW,CAAC,4BAA4B,EAAE,IAAI,8EAAsC,CAAC,UAAU,EAAE,MAAiB,CAAC,CAAC,CAAC;gBAC7K,IAAI,MAAM,EAAE;oBACV,OAAO,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;iBAC9B;gBACD,OAAO,KAAK,CAAC;aACd;YAAC,OAAO,KAAK,EAAE;gBACd,MAAM,IAAI,CAAC,WAAW,CAAC,qBAAqB,CAAC,qDAAU,CAAC,WAAW,CAAC,4BAA4B,EAAE,IAAI,8EAAsC,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC,CAAC;gBACjK,IAAI,KAAK,YAAY,yDAAU,EAAE;oBAC/B,OAAO,KAAK,CAAC;iBACd;qBAAM;oBACL,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;iBAC1B;aACF;QACH,CAAC;KAAA;IAEY,sBAAsB,CAAC,UAAkB;;YACpD,IAAI;gBACF,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC,sBAAsB,CAAC,UAAU,CAAC,CAAC;gBAC9E,OAAO,OAAO,CAAC,OAAO,CAAC,IAAI,IAAI,CAAC,CAAC,MAAoB,CAAC,EAAE,EAAE,IAAI,EAAE,iBAAiB,EAAE,CAAC,CAAC,CAAC;aACvF;YAAC,OAAO,KAAK,EAAE;gBACd,IAAI,KAAK,YAAY,yDAAU,EAAE;oBAC/B,OAAO,KAAK,CAAC;iBACd;qBAAM;oBACL,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;iBAC1B;aACF;QACH,CAAC;KAAA;IAEY,wCAAwC;;YACnD,IAAI;gBACF,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC,wCAAwC,EAA4B,CAAC;gBAC9G,OAAO,IAAI,CAAC;aACb;YAAC,OAAO,KAAK,EAAE;gBACd,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;aAC1B;QACH,CAAC;KAAA;CACF;;YA3U6B,4DAAsB;YAC3B,gDAAU;;AANtB,6BAA6B;IAHzC,gEAAU,CAAC;QACV,UAAU,EAAE,MAAM;KACnB,CAAC;qCAM4B,4DAAsB;QAC3B,gDAAU;GANtB,6BAA6B,CAgVzC;AAhVyC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC1BC;AACJ;AACE;AAEI;AA4BvB;AACuC;AAChB;AAC0B;AAGvE,IAAa,6BAA6B,GAA1C,MAAa,6BAA6B;IAWxC,YACU,gBAAwC,EACxC,WAAuB,EACvB,OAAe;QAFf,qBAAgB,GAAhB,gBAAgB,CAAwB;QACxC,gBAAW,GAAX,WAAW,CAAY;QACvB,YAAO,GAAP,OAAO,CAAQ;QAblB,kBAAa,GAA4C,IAAI,oDAAe,CAAC,EAAE,CAAC,CAAC;QACjF,4BAAuB,GAAwC,IAAI,oDAAe,CAAC,EAAE,CAAC,CAAC;QACvF,YAAO,GAAgC,IAAI,oDAAe,CAAC,IAAI,CAAC,CAAC;QACjE,eAAU,GAAgD,IAAI,oDAAe,CAAC,IAAI,CAAC,CAAC;QACpF,mBAAc,GAAgD,IAAI,oDAAe,CAAC,IAAI,CAAC,CAAC;QACxF,2BAAsB,GAAgD,IAAI,oDAAe,CAAC,IAAI,CAAC,CAAC;QAChG,uBAAkB,GAAoD,IAAI,oDAAe,CAAC,IAAI,CAAC,CAAC;QAChG,qBAAgB,GAA8C,IAAI,oDAAe,CAAC,IAAI,CAAC,CAAC;QACxF,oBAAe,GAAgD,IAAI,oDAAe,CAAC,IAAI,CAAC,CAAC;QAO9F,IAAI,CAAC,qBAAqB,EAAE,CAAC;IAC/B,CAAC;IAEY,GAAG;;YACd,IAAI;gBACF,MAAM,SAAS,GAAG,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE,CAAC;gBAChD,IAAI,CAAC,SAAS,IAAI,SAAS,CAAC,MAAM,IAAI,CAAC,EAAE;oBACvC,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC,MAAM,EAAE,CAAC;oBAClD,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAA8B,CAAC,CAAC;oBACxD,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;iBACzB;qBAAM;oBACL,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,SAAmC,CAAC,CAAC;iBAC9D;aACF;YAAC,OAAO,KAAK,EAAE;gBACd,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;aAC1B;QACH,CAAC;KAAA;IAEY,SAAS,CAAC,UAAkB,EAAE,iBAA0B,KAAK;;YACxE,IAAI;gBACF,MAAM,MAAM,GAAG,IAAI,CAAC,eAAe,CAAC,QAAQ,EAAE,CAAC;gBAC/C,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC,UAAU,IAAI,UAAU,IAAI,CAAC,CAAC,MAAM,CAAC,eAAe,IAAI,cAAc,IAAI,IAAI,CAAC,EAAE;oBACrG,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,UAAU,EAAE,cAAc,CAA+B,CAAC;oBAE7G,IAAI,IAAI,EAAE;wBACR,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;wBAChC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;wBAExB,OAAO,IAAI,CAAC;qBACb;iBACF;qBAAM;oBACL,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;oBAClC,OAAO,MAAM,CAAC;iBACf;gBAED,OAAO,IAAI,CAAC;aACb;YAAC,OAAO,KAAK,EAAE;gBACd,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;aAC1B;QACH,CAAC;KAAA;IAEY,+BAA+B,CAAC,UAAkB;;YAC7D,IAAI;gBACF,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC,oBAAoB,CAAC,UAAU,CAAmC,CAAC;gBAC9G,OAAO,MAAM,CAAC;aACf;YAAC,OAAO,KAAK,EAAE;gBACd,IAAI,KAAK,YAAY,kDAAU,EAAE;oBAC/B,OAAO,KAAK,CAAC;iBACd;qBAAM;oBACL,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;iBAC1B;aACF;QACH,CAAC;KAAA;IAEY,qCAAqC,CAAC,MAAgB,EAAE,aAAqB,EAAE,WAAmB;;YAC7G,IAAI;gBACF,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC,qCAAqC,CAAC,MAAM,EAAE,aAAa,EAAE,WAAW,CAA4B,CAAC;gBAChJ,OAAO,MAAM,CAAC;aACf;YAAC,OAAO,KAAK,EAAE;gBACd,IAAI,KAAK,YAAY,kDAAU,EAAE;oBAC/B,OAAO,KAAK,CAAC;iBACd;qBAAM;oBACL,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;iBAC1B;aACF;QACH,CAAC;KAAA;IAEY,gBAAgB,CAAC,QAAiC;;YAC7D,IAAI;gBACF,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC,gBAAgB,CAAC,QAAQ,CAAiC,CAAC;gBACtG,OAAO,MAAM,CAAC;aACf;YAAC,OAAO,KAAK,EAAE;gBACd,IAAI,KAAK,YAAY,kDAAU,EAAE;oBAC/B,OAAO,KAAK,CAAC;iBACd;qBAAM;oBACL,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;iBAC1B;aACF;QACH,CAAC;KAAA;IAEY,YAAY,CAAC,KAAa,EAAE,SAAmB;;YAC1D,IAAI;gBACF,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC,YAAY,CAAC,KAAK,EAAE,SAAS,CAA+B,CAAC;gBAExG,IAAI,MAAM,EAAE;oBACV,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;iBAClC;aACF;YAAC,OAAO,KAAK,EAAE;gBACd,IAAI,KAAK,YAAY,kDAAU,EAAE;oBAC/B,OAAO,KAAK,CAAC;iBACd;qBAAM;oBACL,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;iBAC1B;aACF;QACH,CAAC;KAAA;IAEY,YAAY,CAAC,UAAkB,EAAE,KAAa;;YACzD,IAAI;gBACF,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC,YAAY,CAAC,UAAU,EAAE,KAAK,CAAuB,CAAC;gBACjG,OAAO,MAAM,CAAC;aACf;YAAC,OAAO,KAAK,EAAE;gBACd,IAAI,KAAK,YAAY,kDAAU,EAAE;oBAC/B,OAAO,KAAK,CAAC;iBACd;qBAAM;oBACL,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;iBAC1B;aACF;QACH,CAAC;KAAA;IAEY,YAAY,CAAC,KAAa,EAAE,OAAoB;;YAC3D,IAAI;gBACF,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC,YAAY,CAAC,KAAK,EAAE,OAAO,CAA+B,CAAC;gBAEtG,IAAI,MAAM,EAAE;oBACV,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;iBAC9B;aACF;YAAC,OAAO,KAAK,EAAE;gBACd,IAAI,KAAK,YAAY,kDAAU,EAAE;oBAC/B,OAAO,KAAK,CAAC;iBACd;qBAAM;oBACL,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;iBAC1B;aACF;QACH,CAAC;KAAA;IAEY,oBAAoB,CAAC,UAAkB;;YAClD,IAAI;gBACF,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC,oBAAoB,CAAC,UAAU,CAAmC,CAAC;gBAE9G,IAAI,MAAM,EAAE;oBACV,MAAM,QAAQ,GAAG,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,MAAM,CAAC,UAAU,CAAC,CAAC;oBACrF,QAAQ,CAAC,iBAAiB,GAAG,MAAM,CAAC,iBAAiB,CAAC;oBACtD,QAAQ,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC;oBAC9B,QAAQ,CAAC,KAAK,CAAC,sBAAsB,GAAG,QAAQ,CAAC,KAAK,CAAC,uBAAuB,CAAC;iBAChF;aACF;YAAC,OAAO,KAAK,EAAE;gBACd,IAAI,KAAK,YAAY,kDAAU,EAAE;oBAC/B,OAAO,KAAK,CAAC;iBACd;qBAAM;oBACL,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;iBAC1B;aACF;QACH,CAAC;KAAA;IAEY,GAAG,CAAC,QAA8B;;YAC7C,IAAI;gBACF,MAAM,iBAAiB,GAAG,IAAI,4DAAoB,CAAC,QAAQ,CAAC,CAAC;gBAC7D,MAAM,MAAM,GAAG,CAAC,MAAM,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAC7C,iBAAiB,CAClB,CAAyB,CAAC;gBAC3B,IAAI,MAAM,EAAE;oBACV,IAAI,CAAC,WAAW,CAAC,qBAAqB,CACpC,qDAAU,CAAC,WAAW,CAAC,gBAAgB,EACvC,IAAI,kEAA0B,CAAC,MAAM,CAAC,CACvC,CAAC;oBACF,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE,EAAE,MAAM,CAAC,CAAC,CAAC;oBACpE,OAAO,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;iBAChC;gBACD,OAAO,IAAI,CAAC;aACb;YAAC,OAAO,KAAK,EAAE;gBACd,IAAI,KAAK,YAAY,kDAAU,EAAE;oBAC/B,OAAO,KAAK,CAAC;iBACd;qBAAM;oBACL,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;iBAC1B;aACF;QACH,CAAC;KAAA;IAEY,IAAI,CACf,QAA8B;;YAE9B,IAAI;gBACF,MAAM,gBAAgB,GAAG,IAAI,4DAAoB,CAAC,QAAQ,CAAC,CAAC;gBAC5D,MAAM,MAAM,GAAG,CAAC,MAAM,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAC9C,gBAAgB,CACjB,CAAyB,CAAC;gBAC3B,IAAI,MAAM,EAAE;oBACV,IAAI,CAAC,WAAW,CAAC,qBAAqB,CACpC,qDAAU,CAAC,WAAW,CAAC,kBAAkB,EACzC,IAAI,oEAA4B,CAAC,MAAM,EAAE,IAAI,CAAC,CAC/C,CAAC;oBACF,IAAI,CAAC,aAAa,CAAC,IAAI,CACrB,IAAI,CAAC,aAAa;yBACf,QAAQ,EAAE;yBACV,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CACjD,CAAC;oBACF,OAAO,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;iBAChC;gBACD,OAAO,IAAI,CAAC;aACb;YAAC,OAAO,KAAK,EAAE;gBACd,IAAI,KAAK,YAAY,kDAAU,EAAE;oBAC/B,OAAO,KAAK,CAAC;iBACd;qBAAM;oBACL,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;iBAC1B;aACF;QACH,CAAC;KAAA;IAEY,oBAAoB,CAAC,oBAA+C;;YAC/E,IAAI;gBACF,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC,oBAAoB,CAAC,oBAAoB,CAA6B;gBACjH,IAAI,MAAM,EAAE;oBACV,MAAM,QAAQ,GAAG,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,MAAM,CAAC,UAAU,CAAC,CAAC;oBACpF,IAAI,QAAQ,EAAE;wBACZ,QAAQ,CAAC,aAAa,GAAG,MAAM,CAAC,aAAa,CAAC;wBAC9C,QAAQ,CAAC,sBAAsB,GAAG,MAAM,CAAC,sBAAsB,CAAC;wBAChE,QAAQ,CAAC,iBAAiB,GAAG,MAAM,CAAC,iBAAiB,CAAC;wBACtD,QAAQ,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC;qBAC/B;oBACD,MAAM,MAAM,GAAG,IAAI,CAAC,eAAe,CAAC,QAAQ,EAAE,CAAC;oBAC/C,IAAI,MAAM,IAAI,MAAM,CAAC,UAAU,IAAI,oBAAoB,CAAC,UAAU,IAAI,MAAM,CAAC,eAAe,EAAE;wBAE5F,MAAM,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC;wBAC5B,MAAM,CAAC,iBAAiB,GAAG,MAAM,CAAC,iBAAiB,CAAC;wBAEpD,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;qBACnC;oBACD,MAAM,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,qDAAU,CAAC,WAAW,CAAC,kCAAkC,EAAE,IAAI,oFAA4C,CAAC,oBAAoB,CAAC,CAAC,CAAC;iBACrK;gBAED,OAAO,MAAM,CAAC;aACf;YAAC,OAAO,KAAK,EAAE;gBACd,IAAI,KAAK,YAAY,kDAAU,EAAE;oBAC/B,OAAO,KAAK,CAAC;iBACd;qBAAM;oBACL,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;iBAC1B;aACF;QACH,CAAC;KAAA;IAEY,6BAA6B,CACxC,UAAkB;;YAElB,IAAI;gBACF,MAAM,IAAI,CAAC,WAAW,CAAC,qBAAqB,CAC1C,qDAAU,CAAC,WAAW,CAAC,iCAAiC,EACxD,IAAI,mFAA2C,CAAC,UAAU,CAAC,CAC5D,CAAC;gBACF,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC,6BAA6B,CAAC,UAAU,CAAC,CAAC;gBACrF,IAAI,MAAM,EAAE;oBACV,IAAI,CAAC,WAAW,CAAC,qBAAqB,CACpC,qDAAU,CAAC,WAAW,CAAC,4BAA4B,EACnD,IAAI,8EAAsC,CAAC,UAAU,CAAC,CACvD,CAAC;oBAEF,MAAM,QAAQ,GAAG,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,UAAU,CAAC,CAAC;oBAC9E,IAAI,QAAQ,EAAE;wBACZ,QAAQ,CAAC,aAAa,GAAG,IAAI,CAAC;qBAC/B;oBAED,OAAO,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;iBAC9B;gBAED,OAAO,KAAK,CAAC;aACd;YAAC,OAAO,KAAK,EAAE;gBACd,IAAI,KAAK,YAAY,kDAAU,EAAE;oBAC/B,OAAO,KAAK,CAAC;iBACd;qBAAM;oBACL,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;iBAC1B;aACF;QACH,CAAC;KAAA;IAEY,sBAAsB,CACjC,UAAkB;;YAElB,IAAI;gBACF,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC,sBAAsB,CAC/D,UAAU,CACX,CAAC;gBAEF,OAAO,OAAO,CAAC,OAAO,CACpB,IAAI,IAAI,CAAC,CAAC,MAAoB,CAAC,EAAE,EAAE,IAAI,EAAE,iBAAiB,EAAE,CAAC,CAC9D,CAAC;aACH;YAAC,OAAO,KAAK,EAAE;gBACd,IAAI,KAAK,YAAY,kDAAU,EAAE;oBAC/B,OAAO,KAAK,CAAC;iBACd;qBAAM;oBACL,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;iBAC1B;aACF;QACH,CAAC;KAAA;IAEY,MAAM,CAAC,UAAkB;;YACpC,IAAI;gBACF,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;gBAE9D,IAAI,MAAM,EAAE;oBACV,IAAI,CAAC,WAAW,CAAC,qBAAqB,CACpC,qDAAU,CAAC,WAAW,CAAC,kBAAkB,EACzC,IAAI,oEAA4B,CAAC,UAAU,CAAC,CAC7C,CAAC;oBACF,MAAM,SAAS,GAAG,IAAI,CAAC,aAAa;yBACjC,QAAQ,EAAE;yBACV,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,UAAU,CAAC,CAAC;oBACtC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;oBACnC,OAAO,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;iBAC9B;gBACD,OAAO,KAAK,CAAC;aACd;YAAC,OAAO,KAAK,EAAE;gBACd,IAAI,KAAK,YAAY,kDAAU,EAAE;oBAC/B,OAAO,KAAK,CAAC;iBACd;qBAAM;oBACL,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;iBAC1B;aACF;QACH,CAAC;KAAA;IAEY,uBAAuB,CAAC,IAAU,EAAE,UAAkB;;YACjE,IAAI,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,EAAE;gBAC/C,OAAO,IAAI,CAAC,wCAAwC,EAAE,CAAC;aACxD;YAED,IAAI;gBACF,MAAM,UAAU,GAAG,IAAI,QAAQ,EAAE,CAAC;gBAClC,UAAU,CAAC,MAAM,CAAC,mBAAmB,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;gBACxD,UAAU,CAAC,MAAM,CAAC,YAAY,EAAE,UAAU,CAAC,QAAQ,EAAE,CAAC,CAAC;gBAEvD,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC,uBAAuB,CAAC,UAAU,CAAqC,CAAC;gBACnH,IAAI,MAAM,EAAE;oBACV,OAAO,wEAAgC,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;iBAC7D;gBACD,OAAO,IAAI,CAAC;aACb;YAAC,OAAO,KAAK,EAAE;gBACd,IAAI,KAAK,YAAY,kDAAU,EAAE;oBAC/B,OAAO,KAAK,CAAC;iBACd;qBAAM;oBACL,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;iBAC1B;aACF;QACH,CAAC;KAAA;IAEY,oBAAoB,CAAC,YAA+C;;YAC/E,IAAI;gBACF,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC,qBAAqB,CAAC,YAAY,CAAwC,CAAC;gBACtH,IAAI,MAAM,EAAE;oBACV,MAAM,QAAQ,GAAG,IAAI,CAAC,aAAa;yBAChC,QAAQ,EAAE;yBACV,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,YAAY,CAAC,UAAU,CAAC,CAAC;oBACjD,IAAI,QAAQ,EAAE;wBACZ,QAAQ,CAAC,aAAa,GAAG,CAAC,MAAM,CAAC,wBAAwB,CAAC;wBAC1D,QAAQ,CAAC,sBAAsB,GAAG,MAAM,CAAC,sBAAsB,CAAC;wBAChE,QAAQ,CAAC,YAAY,GAAG,MAAM,CAAC,YAAY,CAAC;wBAC5C,QAAQ,CAAC,cAAc,GAAG,MAAM,CAAC,aAAa,CAAC;wBAC/C,QAAQ,CAAC,WAAW,GAAG,MAAM,CAAC,WAAW,CAAC;qBAC3C;oBACD,OAAO,MAAM,CAAC;iBACf;gBACD,OAAO,IAAI,CAAC;aACb;YAAC,OAAO,KAAK,EAAE;gBACd,IAAI,KAAK,YAAY,kDAAU,EAAE;oBAC/B,OAAO,KAAK,CAAC;iBACd;qBAAM;oBACL,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;iBAC1B;aACF;QACH,CAAC;KAAA;IAEY,kCAAkC,CAC7C,UAAkB;;YAElB,IAAI,CAAC,WAAW,CAAC,qBAAqB,CACpC,qDAAU,CAAC,WAAW,CAAC,mBAAmB,EAC1C,IAAI,qEAA6B,CAAC,UAAU,CAAC,CAC9C,CAAC;QACJ,CAAC;KAAA;IAEY,iCAAiC,CAC5C,QAA8B,EAC9B,WAAoB;;YAEpB,IAAI,CAAC,WAAW,CAAC,qBAAqB,CACpC,qDAAU,CAAC,WAAW,CAAC,kBAAkB,EACzC,IAAI,oEAA4B,CAAC,QAAQ,EAAE,WAAW,CAAC,CACxD,CAAC;QACJ,CAAC;KAAA;IAEY,sCAAsC,CACjD,QAAgB;;YAEhB,IAAI,CAAC,WAAW,CAAC,qBAAqB,CACpC,qDAAU,CAAC,WAAW,CAAC,uBAAuB,EAC9C,IAAI,yEAAiC,CAAC,QAAQ,CAAC,CAChD,CAAC;QACJ,CAAC;KAAA;IAEY,qCAAqC,CAChD,QAAgB;;YAEhB,IAAI,CAAC,WAAW,CAAC,qBAAqB,CACpC,qDAAU,CAAC,WAAW,CAAC,sBAAsB,EAC7C,IAAI,yEAAiC,CAAC,QAAQ,CAAC,CAChD,CAAC;QACJ,CAAC;KAAA;IAEY,wBAAwB,CAAC,UAAkB;;YACtD,IAAI;gBACF,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC,wBAAwB,CAAC,UAAU,CAAC,CAAC;gBAC9E,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAgC,CAAC,CAAC;gBAC7D,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;aACzB;YAAC,OAAO,KAAK,EAAE;gBACd,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;aAC1B;QACH,CAAC;KAAA;IAEY,eAAe,CAAC,UAAkB,EAAE,eAAyC;;YACxF,IAAI;gBACF,IAAI,kBAAkB,GAAG,IAAI,kEAA0B,CAAC,UAAU,EAAE,eAAe,CAAC,CAAC;gBACrF,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC,eAAe,CAAC,kBAAkB,CAAC,CAAC;gBAC/E,IAAI,CAAC,CAAC,MAAM,YAAY,kDAAU,CAAC,EAAE;oBACnC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,UAAU,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC;oBACpG,IAAI,CAAC,iCAAiC,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;iBACtD;aACF;YACD,OAAO,KAAK,EAAE;gBACZ,IAAI,KAAK,YAAY,kDAAU,EAAE;oBAC/B,OAAO,KAAK,CAAC;iBACd;qBAAM;oBACL,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;iBAC1B;aACF;QACH,CAAC;KAAA;IAEY,yBAAyB,CAAC,QAAQ,GAAG,KAAK;;YACrD,IAAI;gBACF,MAAM,SAAS,GAAG,IAAI,CAAC,uBAAuB,CAAC,QAAQ,EAAE,CAAC;gBAC1D,IAAI,CAAC,SAAS,IAAI,SAAS,IAAI,SAAS,CAAC,MAAM,IAAI,CAAC,EAAE;oBACpD,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC,yBAAyB,CAAC,QAAQ,CAAC,CAAC;oBAC7E,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,IAA0B,CAAC,CAAC;oBAC9D,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;iBACzB;;oBACI,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;aACnD;YAAC,OAAO,KAAK,EAAE;gBACd,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;aAC1B;QACH,CAAC;KAAA;IAEO,qBAAqB;QAC3B,IAAI,CAAC,WAAW,CAAC,gBAAgB,CAAC,SAAS,CACzC,CAAC,UAAsC,EAAE,EAAE;YACzC,IAAI,UAAU,IAAI,UAAU,CAAC,cAAc,EAAE;gBAC3C,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC;oBACtB,GAAG,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE;oBAChC,UAAU,CAAC,cAAc;iBAC1B,CAAC,CAAC;aACJ;QACH,CAAC,CACF,CAAC;QAEF,IAAI,CAAC,WAAW,CAAC,mBAAmB,CAAC,SAAS,CAC5C,CAAC,UAAyC,EAAE,EAAE;YAC5C,IAAI,UAAU,EAAE;gBACd,MAAM,QAAQ,GAAG,IAAI,CAAC,aAAa;qBAChC,QAAQ,EAAE;qBACV,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,UAAU,CAAC,UAAU,CAAC,CAAC;gBAC/C,IAAI,QAAQ,EAAE;oBACZ,QAAQ,CAAC,uBAAuB,GAAG,IAAI,CAAC;iBACzC;aACF;QACH,CAAC,CACF,CAAC;QACF,IAAI,CAAC,WAAW,CAAC,kBAAkB,CAAC,SAAS,CAC3C,CAAC,UAAwC,EAAE,EAAE;YAC3C,IAAI,UAAU,IAAI,UAAU,CAAC,kBAAkB,EAAE;gBAC/C,IAAI,UAAU,CAAC,WAAW,EAAE;oBAC1B,UAAU,CAAC,kBAAkB,CAAC,uBAAuB,GAAG,SAAS,CAAC;oBAClE,IAAI,CAAC,aAAa,CAAC,IAAI,CACrB,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;wBACtC,IAAI,CAAC,CAAC,EAAE,KAAK,UAAU,CAAC,kBAAkB,CAAC,EAAE,EAAE;4BAC7C,OAAO,UAAU,CAAC,kBAAkB,CAAC;yBACtC;6BAAM;4BACL,OAAO,CAAC,CAAC;yBACV;oBACH,CAAC,CAAC,CACH,CAAC;iBACH;qBAAM;oBACL,MAAM,QAAQ,GAAG,IAAI,CAAC,aAAa;yBAChC,QAAQ,EAAE;yBACV,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,UAAU,CAAC,kBAAkB,CAAC,EAAE,CAAC,CAAC;oBACzD,QAAQ,CAAC,uBAAuB,GAAG,KAAK,CAAC;iBAC1C;aACF;QACH,CAAC,CACF,CAAC;QACF,IAAI,CAAC,WAAW,CAAC,eAAe,CAAC,SAAS,CACxC,CAAC,UAAwC,EAAE,EAAE;YAC3C,IAAI,UAAU,EAAE;gBACd,MAAM,SAAS,GAAG,IAAI,CAAC,aAAa;qBACjC,QAAQ,EAAE;qBACV,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,UAAU,CAAC,UAAU,CAAC,CAAC;gBACjD,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;aACpC;QACH,CAAC,CACF,CAAC;QACF,IAAI,CAAC,WAAW,CAAC,sBAAsB,CAAC,SAAS,CAC/C,CAAC,UAA4C,EAAE,EAAE;YAC/C,IAAI,UAAU,EAAE;gBACd,MAAM,QAAQ,GAAG,IAAI,CAAC,aAAa;qBAChC,QAAQ,EAAE;qBACV,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,UAAU,CAAC,UAAU,CAAC,CAAC;gBAC/C,IAAI,QAAQ,EAAE;oBACZ,QAAQ,CAAC,uBAAuB,GAAG,KAAK,CAAC;iBAC1C;aACF;QACH,CAAC,CACF,CAAC;QACF,IAAI,CAAC,WAAW,CAAC,iCAAiC,CAAC,SAAS,CAC1D,CAAC,UAAuD,EAAE,EAAE;YAC1D,IAAI,UAAU,EAAE;gBACd,MAAM,QAAQ,GAAG,IAAI,CAAC,aAAa;qBAChC,QAAQ,EAAE;qBACV,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,UAAU,CAAC,UAAU,CAAC,CAAC;gBAC/C,IAAI,QAAQ,EAAE;oBACZ,QAAQ,CAAC,wBAAwB,GAAG,IAAI,CAAC;iBAC1C;aACF;QACH,CAAC,CACF,CAAC;QACF,IAAI,CAAC,WAAW,CAAC,4BAA4B,CAAC,SAAS,CACrD,CAAC,UAAkD,EAAE,EAAE;YACrD,IAAI,UAAU,EAAE;gBACd,MAAM,QAAQ,GAAG,IAAI,CAAC,aAAa;qBAChC,QAAQ,EAAE;qBACV,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,UAAU,CAAC,UAAU,CAAC,CAAC;gBAC/C,IAAI,QAAQ,EAAE;oBACZ,QAAQ,CAAC,wBAAwB,GAAG,KAAK,CAAC;iBAC3C;aACF;QACH,CAAC,CACF,CAAC;QACF,IAAI,CAAC,WAAW,CAAC,uBAAuB,CAAC,SAAS,CAAC,CAAC,UAAwD,EAAE,EAAE;YAC9G,IAAI,UAAU,EAAE;gBACd,MAAM,QAAQ,GAAG,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,UAAU,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC;gBACvG,IAAI,QAAQ,EAAE;oBACZ,QAAQ,CAAC,iBAAiB,GAAG,UAAU,CAAC,aAAa,CAAC,MAAM,CAAC;oBAC7D,QAAQ,CAAC,KAAK,GAAG,UAAU,CAAC,aAAa,CAAC,KAAK,CAAC;iBACjD;aACF;QACH,CAAC,CAAC,CAAC;IACL,CAAC;IAEO,wCAAwC;QAC9C,MAAM,WAAW,GAAG;YAClB;gBACE,IAAI,EAAE,OAAO;gBACb,KAAK,EAAE,CAAC;gBACR,UAAU,EAAE,qDAAc,CAAC,GAAG;aAC/B;YACD;gBACE,IAAI,EAAE,OAAO;gBACb,KAAK,EAAE,CAAC;gBACR,cAAc,EAAE,qDAAc,CAAC,GAAG;aACnC;YACD;gBACE,IAAI,EAAE,OAAO;gBACb,KAAK,EAAE,CAAC;gBACR,cAAc,EAAE,qDAAc,CAAC,MAAM;aACtC;YACD;gBACE,IAAI,EAAE,OAAO;gBACb,KAAK,EAAE,CAAC;gBACR,cAAc,EAAE,qDAAc,CAAC,QAAQ;aACxC;YACD;gBACE,IAAI,EAAE,OAAO;gBACb,KAAK,EAAE,CAAC;gBACR,cAAc,EAAE,qDAAc,CAAC,MAAM;aACtC;SACF,CAAC;QAEF,MAAM,cAAc,GAAG;YACrB,IAAI,EAAE,WAAW;SACmB,CAAC;QAEvC,OAAO,cAAc,CAAC;IACxB,CAAC;IAED,gBAAgB;QACd,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACtC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAC9B,CAAC;CACF;;YAzkB6B,4DAAsB;YAC3B,gDAAU;YACd,sDAAM;;AAdd,6BAA6B;IADzC,gEAAU,EAAE;qCAaiB,4DAAsB;QAC3B,gDAAU;QACd,sDAAM;GAdd,6BAA6B,CAqlBzC;AArlByC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACtCC;AACJ;AAEM;AAWvB;AACoC;AACb;AAG7C,IAAa,0BAA0B,GAAvC,MAAa,0BAA0B;IAQrC,YACU,aAAkC,EAClC,WAAuB;QADvB,kBAAa,GAAb,aAAa,CAAqB;QAClC,gBAAW,GAAX,WAAW,CAAY;QAT1B,eAAU,GAAyC,IAAI,oDAAe,CAAC,EAAE,CAAC,CAAC;QAC3E,yBAAoB,GAAyC,IAAI,oDAAe,CAAC,EAAE,CAAC,CAAC;QACrF,4BAAuB,GAA4C,IAAI,oDAAe,CAAC,EAAE,CAAC,CAAC;QAC3F,4BAAuB,GAA4C,IAAI,oDAAe,CAAC,EAAE,CAAC,CAAC;QAC3F,4BAAuB,GAA4C,IAAI,oDAAe,CAAC,EAAE,CAAC,CAAC;QAC3F,YAAO,GAAgC,IAAI,oDAAe,CAAC,IAAI,CAAC,CAAC;QAKtE,IAAI,CAAC,qBAAqB,EAAE,CAAC;IAC/B,CAAC;IAEY,GAAG;;YACd,IAAI;gBACF,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE,CAAC;gBAC/C,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAA2B,CAAC,CAAC;gBAClD,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;aACzB;YAAC,OAAO,KAAK,EAAE;gBACd,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;aAC1B;QACH,CAAC;KAAA;IAEY,aAAa,CAAC,SAAiB;;YAC1C,IAAI;gBACF,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC;gBAClE,IAAI,IAAI,EAAE;oBACR,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,IAA2B,CAAC,CAAC;oBAC5D,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;iBACzB;aACF;YAAC,OAAO,KAAK,EAAE;gBACd,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;aAC1B;QACH,CAAC;KAAA;IAEY,8BAA8B,CAAC,SAAiB;;YAC3D,IAAI;gBACF,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,8BAA8B,CAAC,SAAS,CAAgC,CAAC;gBAE/G,IAAI,IAAI,EAAE;oBACR,IAAI,IAAI,CAAC,YAAY,EAAE;wBACrB,MAAM,qBAAqB,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,2DAAmB,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC;wBAC7F,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC;qBAC1D;oBACD,IAAI,IAAI,CAAC,YAAY,EAAE;wBACrB,MAAM,qBAAqB,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,2DAAmB,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC;wBAC7F,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC;qBAC1D;oBACD,IAAI,IAAI,CAAC,YAAY,EAAE;wBACrB,MAAM,qBAAqB,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,2DAAmB,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC;wBAC7F,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC;qBAC1D;oBACD,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;iBACzB;aACF;YAAC,OAAO,KAAK,EAAE;gBACd,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;aAC1B;QACH,CAAC;KAAA;IAEY,GAAG,CAAC,QAA2B;;YAC1C,IAAI;gBACF,MAAM,iBAAiB,GAAG,IAAI,yDAAiB,CAAC,QAAQ,CAAC,CAAC;gBAC1D,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,iBAAiB,CAAsB,CAAC;gBACpF,IAAI,MAAM,EAAE;oBACV,IAAI,CAAC,WAAW,CAAC,qBAAqB,CAAC,qDAAU,CAAC,QAAQ,CAAC,aAAa,EAAE,IAAI,+DAAuB,CAAC,MAAM,CAAC,CAAC,CAAC;oBAC/G,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;wBACnB,GAAG,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE;wBAC7B,MAAM;qBACP,CAAC,CAAC;oBACH,OAAO,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;iBAChC;gBAED,OAAO,IAAI,CAAC;aACb;YAAC,OAAO,KAAK,EAAE;gBACd,IAAI,KAAK,YAAY,kDAAU,EAAE;oBAC/B,OAAO,KAAK,CAAC;iBACd;qBAAM;oBACL,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;iBAC1B;aACF;QACH,CAAC;KAAA;IAEY,IAAI,CAAC,QAA2B;;YAC3C,IAAI;gBACF,MAAM,gBAAgB,GAAG,IAAI,yDAAiB,CAAC,QAAQ,CAAC,CAAC;gBACzD,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,gBAAgB,CAAsB,CAAC;gBACpF,IAAI,MAAM,EAAE;oBACV,IAAI,CAAC,WAAW,CAAC,qBAAqB,CAAC,qDAAU,CAAC,QAAQ,CAAC,eAAe,EAAE,IAAI,iEAAyB,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC;oBACzH,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;oBAC3F,OAAO,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;iBAChC;gBAED,OAAO,IAAI,CAAC;aACb;YAAC,OAAO,KAAK,EAAE;gBACd,IAAI,KAAK,YAAY,kDAAU,EAAE;oBAC/B,OAAO,KAAK,CAAC;iBACd;qBAAM;oBACL,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;iBAC1B;aACF;QACH,CAAC;KAAA;IAED,gDAAgD;IACnC,YAAY,CAAC,UAAkB;;YAC1C,IAAI,QAAQ,GAAG,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,UAAU,CAAC,CAAC;YACzE,IAAI,CAAC,QAAQ,EAAE;gBACb,MAAM,IAAI,CAAC,GAAG,EAAE,CAAC;gBACjB,QAAQ,GAAG,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,UAAU,CAAC,CAAC;aACtE;YACD,MAAM,YAAY,GAAG,QAAQ,CAAC,IAAI,CAAC;YACnC,IAAI;gBACF,OAAO;oBACL,IAAI,EAAE,YAAY;iBACE,CAAC;aACxB;YAAC,OAAO,KAAK,EAAE;gBACd,OAAO;oBACL,EAAE,EAAE,UAAU;oBACd,IAAI,EAAE,YAAY;iBACE,CAAC;aACxB;QACH,CAAC;KAAA;IAEY,MAAM,CAAC,UAAkB;;YACpC,IAAI;gBACF,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;gBAE3D,IAAI,MAAM,EAAE;oBACV,IAAI,CAAC,WAAW,CAAC,qBAAqB,CAAC,qDAAU,CAAC,QAAQ,CAAC,eAAe,EAAE,IAAI,iEAAyB,CAAC,UAAU,CAAC,CAAC,CAAC;oBACvH,MAAM,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,UAAU,CAAC,CAAC;oBAC9E,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;oBAChC,OAAO,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;iBAC9B;gBAED,OAAO,KAAK,CAAC;aACd;YAAC,OAAO,KAAK,EAAE;gBACd,IAAI,KAAK,YAAY,kDAAU,EAAE;oBAC/B,OAAO,KAAK,CAAC;iBACd;qBAAM;oBACL,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;iBAC1B;aACF;QACH,CAAC;KAAA;IAEY,+BAA+B,CAAC,UAAkB;;YAC7D,IAAI,CAAC,WAAW,CAAC,qBAAqB,CAAC,qDAAU,CAAC,QAAQ,CAAC,gBAAgB,EAAE,IAAI,kEAA0B,CAAC,UAAU,CAAC,CAAC,CAAC;QAC3H,CAAC;KAAA;IAEY,8BAA8B,CAAC,QAA2B,EAAE,WAAoB;;YAC3F,IAAI,CAAC,WAAW,CAAC,qBAAqB,CAAC,qDAAU,CAAC,QAAQ,CAAC,eAAe,EAAE,IAAI,iEAAyB,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAC,CAAC;QACpI,CAAC;KAAA;IAEO,qBAAqB;QAC3B,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC,UAAmC,EAAE,EAAE;YAC/E,IAAI,UAAU,IAAI,UAAU,CAAC,WAAW,EAAE;gBACxC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;oBACnB,GAAG,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE;oBAC7B,UAAU,CAAC,WAAW;iBACvB,CAAC,CAAC;aACJ;QACH,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,WAAW,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC,UAAqC,EAAE,EAAE;YACnF,IAAI,UAAU,EAAE;gBACd,MAAM,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,UAAU,CAAC,UAAU,CAAC,CAAC;gBACzF,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;aACjC;QACH,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,WAAW,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC,UAAsC,EAAE,EAAE;YACrF,IAAI,UAAU,EAAE;gBACd,MAAM,QAAQ,GAAG,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,UAAU,CAAC,UAAU,CAAC,CAAC;gBACtF,IAAI,QAAQ,EAAE;oBACZ,QAAQ,CAAC,uBAAuB,GAAG,IAAI,CAAC;iBACzC;aACF;QACH,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,WAAW,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC,UAAqC,EAAE,EAAE;YACnF,IAAI,UAAU,IAAI,UAAU,CAAC,eAAe,EAAE;gBAC5C,IAAI,UAAU,CAAC,WAAW,EAAE;oBAE1B,UAAU,CAAC,eAAe,CAAC,uBAAuB,GAAG,SAAS,CAAC;oBAC/D,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE;wBACtD,IAAI,CAAC,CAAC,EAAE,KAAK,UAAU,CAAC,eAAe,CAAC,EAAE,EAAE;4BAC1C,OAAO,UAAU,CAAC,eAAe,CAAC;yBACnC;6BAAM;4BACL,OAAO,CAAC,CAAC;yBACV;oBACH,CAAC,CAAC,CAAC,CAAC;iBACL;qBAAM;oBACL,MAAM,QAAQ,GAAG,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,UAAU,CAAC,eAAe,CAAC,EAAE,CAAC,CAAC;oBAC7F,QAAQ,CAAC,uBAAuB,GAAG,KAAK,CAAC;iBAC1C;aACF;QACH,CAAC,CAAC,CAAC;IACL,CAAC;CACF;;YAzL0B,yDAAmB;YACrB,gDAAU;;AAVtB,0BAA0B;IADtC,gEAAU,EAAE;qCAUc,yDAAmB;QACrB,gDAAU;GAVtB,0BAA0B,CAkMtC;AAlMsC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACnBI;AACJ;AAGI;AACE;AACW;AAOxD,IAAa,uBAAuB,GAApC,MAAa,uBAAuB;IAElC,YACU,UAA4B;QAA5B,eAAU,GAAV,UAAU,CAAkB;QAF/B,YAAO,GAAgC,IAAI,oDAAe,CAAC,IAAI,CAAC,CAAC;IAGpE,CAAC;IAEC,kCAAkC,CAAC,MAA4B;;YACnE,IAAI;gBACF,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,kCAAkC,CAAC,MAAM,CAAC,CAAC;gBAC9E,OAAO,IAAI,CAAC;aACb;YACD,OAAO,KAAK,EAAE;gBACZ,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;gBACzB,IAAI,KAAK,YAAY,kDAAU,EAAE;oBAC/B,OAAO,KAAK,CAAC;iBACd;aACF;QACH,CAAC;KAAA;IAEY,+BAA+B,CAAC,MAA8C;;YACzF,IAAI;gBACF,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,+BAA+B,CAAC,MAAM,CAAC,CAAC;gBAC7E,OAAO,OAAO,CAAC,OAAO,CAAC,IAAI,IAAI,CAAC,CAAC,MAAoB,CAAC,EAAE,EAAE,IAAI,EAAE,eAAe,gEAAqB,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;aAC/G;YAAC,OAAO,KAAK,EAAE;gBACd,IAAI,KAAK,YAAY,kDAAU,EAAE;oBAC/B,OAAO,KAAK,CAAC;iBACd;qBAAM;oBACL,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;iBAC1B;aACF;QACH,CAAC;KAAA;IAEY,mCAAmC,CAAC,MAA4C;;YAC3F,IAAI;gBACF,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,mCAAmC,CAAC,MAAM,CAAC,CAAC;gBACjF,OAAO,OAAO,CAAC,OAAO,CAAC,IAAI,IAAI,CAAC,CAAC,MAAoB,CAAC,EAAE,EAAE,IAAI,EAAE,eAAe,gEAAqB,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;aAC/G;YAAC,OAAO,KAAK,EAAE;gBACd,IAAI,KAAK,YAAY,kDAAU,EAAE;oBAC/B,OAAO,KAAK,CAAC;iBACd;qBAAM;oBACL,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;iBAC1B;aACF;QACH,CAAC;KAAA;IAEY,gCAAgC,CAAC,MAAkC;;YAC9E,IAAI;gBACF,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,gCAAgC,CAAC,MAAM,CAAC,CAAC;gBAC9E,OAAO,OAAO,CAAC,OAAO,CAAC,IAAI,IAAI,CAAC,CAAC,MAAoB,CAAC,EAAE,EAAE,IAAI,EAAE,eAAe,gEAAqB,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;aAC/G;YAAC,OAAO,KAAK,EAAE;gBACd,IAAI,KAAK,YAAY,kDAAU,EAAE;oBAC/B,OAAO,KAAK,CAAC;iBACd;qBAAM;oBACL,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;iBAC1B;aACF;QACH,CAAC;KAAA;IAEY,+BAA+B,CAAC,MAAgC;;YAC3E,IAAI;gBACF,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,+BAA+B,CAAC,MAAM,CAAC,CAAC;gBAC7E,OAAO,OAAO,CAAC,OAAO,CAAC,IAAI,IAAI,CAAC,CAAC,MAAoB,CAAC,EAAE,EAAE,IAAI,EAAE,eAAe,gEAAqB,CAAC,MAAM,CAAC,YAAY,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;aACjI;YAAC,OAAO,KAAK,EAAE;gBACd,IAAI,KAAK,YAAY,kDAAU,EAAE;oBAC/B,OAAO,KAAK,CAAC;iBACd;qBAAM;oBACL,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;iBAC1B;aACF;QACH,CAAC;KAAA;IAEY,6BAA6B,CAAC,MAAgC;;YACzE,IAAI;gBACF,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,6BAA6B,CAAC,MAAM,CAAC,CAAC;gBAC3E,OAAO,OAAO,CAAC,OAAO,CAAC,IAAI,IAAI,CAAC,CAAC,MAAoB,CAAC,EAAE,EAAE,IAAI,EAAE,eAAe,gEAAqB,CAAC,MAAM,CAAC,YAAY,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;aACjI;YAAC,OAAO,KAAK,EAAE;gBACd,IAAI,KAAK,YAAY,kDAAU,EAAE;oBAC/B,OAAO,KAAK,CAAC;iBACd;qBAAM;oBACL,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;iBAC1B;aACF;QACH,CAAC;KAAA;IAEY,6BAA6B,CAAC,MAA+B;;YACxE,IAAI;gBACF,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,6BAA6B,CAAC,MAAM,CAAC,CAAC;gBAC3E,OAAO,OAAO,CAAC,OAAO,CAAC,IAAI,IAAI,CAAC,CAAC,MAAoB,CAAC,EAAE,EAAE,IAAI,EAAE,eAAe,gEAAqB,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;aAC/G;YAAC,OAAO,KAAK,EAAE;gBACd,IAAI,KAAK,YAAY,kDAAU,EAAE;oBAC/B,OAAO,KAAK,CAAC;iBACd;qBAAM;oBACL,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;iBAC1B;aACF;QACH,CAAC;KAAA;IAEY,0BAA0B,CAAC,KAAkC;;YACxE,IAAI;gBACF,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,0BAA0B,CAAC,KAAK,CAAC,CAAC;gBACvE,OAAO,OAAO,CAAC,OAAO,CAAC,IAAI,IAAI,CAAC,CAAC,MAAoB,CAAC,EAAE,EAAE,IAAI,EAAE,iBAAiB,EAAE,CAAC,CAAC,CAAC;aACvF;YAAC,OAAO,KAAK,EAAE;gBACd,IAAI,KAAK,YAAY,kDAAU,EAAE;oBAC/B,OAAO,KAAK,CAAC;iBACd;qBAAM;oBACL,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;iBAC1B;aACF;QACH,CAAC;KAAA;CACF;;YA1GuB,sDAAgB;;AAH3B,uBAAuB;IAHnC,gEAAU,CAAC;QACV,UAAU,EAAE,MAAM;KACnB,CAAC;qCAIsB,sDAAgB;GAH3B,uBAAuB,CA6GnC;AA7GmC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACbO;AACJ;AAEM;AACgK;AAClJ;AACd;AAK7C,IAAa,2BAA2B,GAAxC,MAAa,2BAA2B;IAItC,YAAoB,cAAoC,EAC9C,WAAuB;QADb,mBAAc,GAAd,cAAc,CAAsB;QAC9C,gBAAW,GAAX,WAAW,CAAY;QAJ1B,gBAAW,GAA0C,IAAI,oDAAe,CAAC,EAAE,CAAC,CAAC;QAC7E,YAAO,GAAgC,IAAI,oDAAe,CAAC,IAAI,CAAC,CAAC;QAItE,IAAI,CAAC,qBAAqB,EAAE,CAAC;IAC/B,CAAC;IAEY,MAAM;;YACjB,IAAI;gBACF,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE,CAAC;gBACvD,IAAI,UAAU,EAAE;oBACd,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,UAAkC,CAAC,CAAC;oBAC1D,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;iBACzB;aACF;YAAC,OAAO,KAAK,EAAE;gBACd,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;aAC1B;QACH,CAAC;KAAA;IAEY,IAAI,CAAC,SAA6B;;YAC7C,IAAI;gBACF,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,SAAS,CAAuB,CAAC;gBAC/E,IAAI,MAAM,EAAE;oBACV,IAAI,CAAC,WAAW,CAAC,qBAAqB,CAAC,qDAAU,CAAC,SAAS,CAAC,gBAAgB,EAAE,IAAI,kEAA0B,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC;oBAC5H,MAAM,UAAU,GAAG,IAAI,CAAC,WAAW,CAAC,QAAQ,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,MAAM,CAAC,EAAE,CAAC,CAAC,mBAAM,CAAC,EAAK,MAAM,EAAG,CAAC,CAAC,CAAC,CAAC,CAAC;oBACtG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;oBAClC,OAAO,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;iBAC9B;gBAED,OAAO,KAAK,CAAC;aACd;YAAC,OAAO,KAAK,EAAE;gBACd,OAAO,KAAK,YAAY,kDAAU,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC;aACpD;QACH,CAAC;KAAA;IAEY,MAAM,CAAC,SAAiC;;YACnD,IAAI;gBACF,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,SAAS,CAAuB,CAAC;gBACjF,IAAI,MAAM,EAAE;oBACV,IAAI,CAAC,WAAW,CAAC,qBAAqB,CAAC,qDAAU,CAAC,SAAS,CAAC,cAAc,EAAE,IAAI,gEAAwB,CAAC,MAAM,CAAC,CAAC,CAAC;oBAClH,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC;wBACpB,GAAG,IAAI,CAAC,WAAW,CAAC,QAAQ,EAAE;wBAC9B,MAAM;qBACP,CAAC,CAAC;oBACH,OAAO,MAAM,CAAC;iBACf;aACF;YAAC,OAAO,KAAK,EAAE;gBACd,IAAI,KAAK,YAAY,kDAAU,EAAE;oBAC/B,OAAO,KAAK,CAAC;iBACd;aACF;QACH,CAAC;KAAA;IAEY,MAAM,CAAC,WAAmB;;YACrC,IACA;gBACE,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;gBAC7D,IAAI,MAAM,EAAE;oBACV,IAAI,CAAC,WAAW,CAAC,qBAAqB,CAAC,qDAAU,CAAC,SAAS,CAAC,gBAAgB,EAAE,IAAI,kEAA0B,CAAC,WAAW,CAAC,CAAC,CAAC;oBAC3H,MAAM,YAAY,GAAG,IAAI,CAAC,WAAW,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,MAAM,CAAC,CAAC;oBAC9E,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;oBACpC,OAAO,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;iBAC9B;gBAED,OAAO,KAAK,CAAC;aACd;YAAC,OAAO,KAAK,EAAE;gBACd,OAAO,KAAK,YAAY,kDAAU,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC;aACpD;QACH,CAAC;KAAA;IAEY,kCAAkC,CAAC,MAAc;;YAC5D,IAAI,CAAC,WAAW,CAAC,qBAAqB,CAAC,qDAAU,CAAC,SAAS,CAAC,iBAAiB,EAAE,IAAI,mEAA2B,CAAC,MAAM,CAAC,CAAC,CAAC;QAC1H,CAAC;KAAA;IAEY,iCAAiC,CAAC,SAA6B,EAAE,WAAoB;;YAChG,IAAI,CAAC,WAAW,CAAC,qBAAqB,CAAC,qDAAU,CAAC,SAAS,CAAC,gBAAgB,EAAE,IAAI,kEAA0B,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC,CAAC;QACxI,CAAC;KAAA;IAGO,qBAAqB;QAC3B,IAAI,CAAC,WAAW,CAAC,iBAAiB,CAAC,SAAS,CAAC,CAAC,UAAuC,EAAE,EAAE;YACvF,IAAI,UAAU,EAAE;gBACd,MAAM,SAAS,GAAG,IAAI,CAAC,WAAW,CAAC,QAAQ,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,UAAU,CAAC,WAAW,CAAC,CAAC;gBACzF,IAAI,SAAS,EAAE;oBACb,SAAS,CAAC,wBAAwB,GAAG,IAAI,CAAC;iBAC3C;aACF;QACH,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,WAAW,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC,UAAsC,EAAE,EAAE;YACrF,IAAI,UAAU,IAAI,UAAU,CAAC,gBAAgB,EAAE;gBAC7C,IAAI,UAAU,CAAC,WAAW,EAAE;oBAC1B,UAAU,CAAC,gBAAgB,CAAC,wBAAwB,GAAG,SAAS,CAAC;oBACjE,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,QAAQ,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,UAAU,CAAC,gBAAgB,CAAC,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;iBACxI;qBAAM;oBACL,MAAM,SAAS,GAAG,IAAI,CAAC,WAAW,CAAC,QAAQ,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,UAAU,CAAC,gBAAgB,CAAC,EAAE,CAAC,CAAC;oBAChG,SAAS,CAAC,wBAAwB,GAAG,KAAK,CAAC;iBAC5C;aACF;QACH,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,WAAW,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC,UAAoC,EAAE,EAAE;YACjF,IAAI,UAAU,IAAI,UAAU,CAAC,YAAY,EAAE;gBACzC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC;oBACpB,GAAG,IAAI,CAAC,WAAW,CAAC,QAAQ,EAAE;oBAC9B,UAAU,CAAC,YAAY;iBACxB,CAAC,CAAC;aACJ;QACH,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,WAAW,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC,UAAsC,EAAE,EAAE;YACrF,IAAI,UAAU,EAAE;gBACd,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,UAAU,CAAC,WAAW,CAAC,CAAC;gBACvF,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;aAC9B;QACH,CAAC,CAAC,CAAC;IACL,CAAC;CACF;;YAnHqC,0DAAoB;YACjC,gDAAU;;AALtB,2BAA2B;IAHvC,gEAAU,CAAC;QACV,UAAU,EAAE,MAAM;KACnB,CAAC;qCAKoC,0DAAoB;QACjC,gDAAU;GALtB,2BAA2B,CAuHvC;AAvHuC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACXG;AACJ;AAEM;AASvB;AACuC;AAChB;AAG7C,IAAa,6BAA6B,GAA1C,MAAa,6BAA6B;IAIxC,YACU,gBAAwC,EACxC,WAAuB;QADvB,qBAAgB,GAAhB,gBAAgB,CAAwB;QACxC,gBAAW,GAAX,WAAW,CAAY;QAL1B,kBAAa,GAA4C,IAAI,oDAAe,CAAC,EAAE,CAAC,CAAC;QACjF,YAAO,GAAgC,IAAI,oDAAe,CAAC,IAAI,CAAC,CAAC;QAKpE,IAAI,CAAC,qBAAqB,EAAE,CAAC;IAC/B,CAAC;IAEU,GAAG;;YACd,IAAI;gBACF,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE,CAAC;gBAC3D,IAAI,YAAY,EAAE;oBAChB,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,YAAsC,CAAC,CAAC;oBAChE,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;iBACzB;aACF;YAAC,OAAO,KAAK,EAAE;gBACd,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;aAC1B;QACH,CAAC;KAAA;IAEY,MAAM,CAAC,WAAmC;;YACrD,IAAI;gBACF,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,WAAW,CAAyB,CAAC;gBACvF,IAAI,MAAM,EAAE;oBACV,IAAI,CAAC,WAAW,CAAC,qBAAqB,CAAC,qDAAU,CAAC,WAAW,CAAC,gBAAgB,EAAE,IAAI,kEAA0B,CAAC,MAAM,CAAC,CAAC,CAAC;oBACxH,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC;wBACtB,GAAG,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE;wBAChC,MAAM;qBACP,CAAC,CAAC;oBACH,OAAO,MAAM,CAAC;iBACf;aACF;YAAC,OAAO,KAAK,EAAE;gBACd,IAAI,KAAK,YAAY,kDAAU,EAAE;oBAC/B,OAAO,KAAK,CAAC;iBACd;aACF;QACH,CAAC;KAAA;IAEY,IAAI,CAAC,WAAiC;;YACjD,IACA;gBACE,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,WAAW,CAAyB,CAAC;gBACrF,IAAI,MAAM,EAAE;oBACV,IAAI,CAAC,WAAW,CAAC,qBAAqB,CAAC,qDAAU,CAAC,WAAW,CAAC,kBAAkB,EAAE,IAAI,oEAA4B,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC;oBAClI,MAAM,YAAY,GAAG,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,MAAM,CAAC,EAAE,CAAC,CAAC,mBAAM,CAAC,EAAK,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;oBACzG,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;oBACtC,OAAO,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;iBAC9B;gBAED,OAAO,KAAK,CAAC;aACd;YAAC,OAAO,KAAK,EAAE;gBACd,OAAO,KAAK,YAAY,kDAAU,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC;aACpD;QACH,CAAC;KAAA;IAEY,MAAM,CAAC,aAAqB;;YACvC,IACA;gBACE,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;gBACjE,IAAI,MAAM,EAAE;oBACV,IAAI,CAAC,WAAW,CAAC,qBAAqB,CAAC,qDAAU,CAAC,WAAW,CAAC,kBAAkB,EAAE,IAAI,oEAA4B,CAAC,aAAa,CAAC,CAAC,CAAC;oBACnI,MAAM,YAAY,GAAG,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,MAAM,CAAC,CAAC;oBAChF,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;oBACtC,OAAO,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;iBAC9B;gBAED,OAAO,KAAK,CAAC;aACd;YAAC,OAAO,KAAK,EAAE;gBACd,OAAO,KAAK,YAAY,kDAAU,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC;aACpD;QACH,CAAC;KAAA;IAEY,kCAAkC,CAAC,MAAc;;YAC5D,IAAI,CAAC,WAAW,CAAC,qBAAqB,CAAC,qDAAU,CAAC,WAAW,CAAC,mBAAmB,EAAE,IAAI,qEAA6B,CAAC,MAAM,CAAC,CAAC,CAAC;QAChI,CAAC;KAAA;IAEY,iCAAiC,CAAC,WAAiC,EAAE,WAAoB;;YACpG,IAAI,CAAC,WAAW,CAAC,qBAAqB,CAAC,qDAAU,CAAC,WAAW,CAAC,kBAAkB,EAAE,IAAI,oEAA4B,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC,CAAC;QAChJ,CAAC;KAAA;IAEO,qBAAqB;QAC3B,IAAI,CAAC,WAAW,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC,UAAsC,EAAE,EAAE;YACrF,IAAI,UAAU,IAAI,UAAU,CAAC,cAAc,EAAE;gBAC3C,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC;oBACtB,GAAG,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE;oBAChC,UAAU,CAAC,cAAc;iBAC1B,CAAC,CAAC;aACJ;QACH,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,WAAW,CAAC,kBAAkB,CAAC,SAAS,CAAC,CAAC,UAAwC,EAAE,EAAE;YACzF,IAAI,UAAU,EAAE;gBACd,MAAM,KAAK,GAAG,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,UAAU,CAAC,aAAa,CAAC,CAAC;gBAC3F,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;aAChC;QACH,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,WAAW,CAAC,mBAAmB,CAAC,SAAS,CAAC,CAAC,UAAyC,EAAE,EAAE;YAC3F,IAAI,UAAU,EAAE;gBACd,MAAM,WAAW,GAAG,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,UAAU,CAAC,aAAa,CAAC,CAAC;gBAC/F,IAAI,WAAW,EAAE;oBACf,WAAW,CAAC,0BAA0B,GAAG,IAAI,CAAC;iBAC/C;aACF;QACH,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,WAAW,CAAC,kBAAkB,CAAC,SAAS,CAAC,CAAC,UAAwC,EAAE,EAAE;YACzF,IAAI,UAAU,IAAI,UAAU,CAAC,kBAAkB,EAAE;gBAC/C,IAAI,UAAU,CAAC,WAAW,EAAE;oBAC1B,UAAU,CAAC,kBAAkB,CAAC,0BAA0B,GAAG,SAAS,CAAC;oBACrE,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,UAAU,CAAC,kBAAkB,CAAC,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;iBAChJ;qBAAM;oBACL,MAAM,WAAW,GAAG,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,UAAU,CAAC,kBAAkB,CAAC,EAAE,CAAC,CAAC;oBACtG,WAAW,CAAC,0BAA0B,GAAG,KAAK,CAAC;iBAChD;aACF;QACH,CAAC,CAAC,CAAC;IACL,CAAC;CACF;;YAhH6B,4DAAsB;YAC3B,gDAAU;;AANtB,6BAA6B;IADzC,gEAAU,EAAE;qCAMiB,4DAAsB;QAC3B,gDAAU;GANtB,6BAA6B,CAqHzC;AArHyC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACjBC;AACJ;AAEM;AACc;AACyb;AAC/b;AACR;AAK7C,IAAa,8BAA8B,GAA3C,MAAa,8BAA8B;IAKzC,YACU,oBAA0C,EAC1C,WAAuB;QADvB,yBAAoB,GAApB,oBAAoB,CAAsB;QAC1C,gBAAW,GAAX,WAAW,CAAY;QAN1B,uBAAkB,GAAgD,IAAI,oDAAe,CAAC,EAAE,CAAC,CAAC;QAC1F,eAAU,GAAgD,IAAI,oDAAe,CAAC,EAAE,CAAC,CAAC;QAClF,YAAO,GAAgC,IAAI,oDAAe,CAAC,IAAI,CAAC,CAAC;QAMtE,IAAI,CAAC,qBAAqB,EAAE,CAAC;IAC/B,CAAC;IAEY,WAAW,CAAC,OAAuC;;YAC9D,IAAI;gBACF,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,oBAAoB,CAAC,WAAW,CAAC,OAAO,CAA+B,CAAC;gBACpG,IAAI,QAAQ,EAAE;oBACZ,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;wBACnB,IAAI,iBAAiB,GAAG,CAAC,CAAC;wBAC1B,IAAI,wBAAwB,GAAG,CAAC,CAAC;wBAEjC,CAAC,CAAC,eAAe,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE;4BACjC,iBAAiB,IAAI,MAAM,CAAC,OAAO,CAAC;wBACtC,CAAC,CAAC;wBACF,CAAC,CAAC,iBAAiB,GAAG,iBAAiB,CAAC;wBAExC,CAAC,CAAC,cAAc,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE;4BACjC,wBAAwB,IAAI,OAAO,CAAC,iBAAiB,CAAC;wBACxD,CAAC,CAAC;wBACF,CAAC,CAAC,uBAAuB,GAAG,wBAAwB,CAAC;oBACvD,CAAC,CAAC;oBACF,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,QAAsC,CAAC,CAAC;oBACrE,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;iBACzB;qBACI;oBACH,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;iBAClC;aACF;YAAC,OAAO,KAAK,EAAE;gBACd,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;aAC1B;QACH,CAAC;KAAA;IAEY,GAAG,CAAC,OAA0D;;YACzE,IAAI;gBACF,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,OAAO,CAA0B,CAAC;gBACrF,IAAI,MAAM,EAAE;oBACV,IAAI,SAAS,GAAG,IAAI,CAAC,kBAAkB,CAAC,QAAQ,EAAE,CAAC;oBACnD,IAAI,QAAQ,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,OAAO,CAAC,UAAU,CAAC,CAAC;oBAE/D,IAAI,CAAC,gBAAgB,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;oBAExC,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;oBACxC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;iBACzB;aACF;YAAC,OAAO,KAAK,EAAE;gBACd,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;aAC1B;QACH,CAAC;KAAA;IAEY,IAAI,CAAC,EAAU,EAAE,WAA0C;;YACtE,IAAI;gBACF,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,EAAE,EAAE,WAAW,CAA0B,CAAC;gBAC9F,IAAI,MAAM,EAAE;oBACV,IAAI,SAAS,GAAG,IAAI,CAAC,kBAAkB,CAAC,QAAQ,EAAE,CAAC;oBACnD,IAAI,QAAQ,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,MAAM,CAAC,UAAU,CAAC,CAAC;oBAE9D,IAAI,YAAY,GAAG,QAAQ,CAAC,cAAc,CAAC,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;oBAClG,QAAQ,CAAC,cAAc,CAAC,MAAM,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC;oBAChD,IAAI,CAAC,gBAAgB,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;oBAExC,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;oBACxC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;iBACzB;aACF;YAAC,OAAO,KAAK,EAAE;gBACd,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;aAC1B;QACH,CAAC;KAAA;IAEY,6BAA6B,CAAC,EAAU;;YACnD,IAAI;gBACF,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,oBAAoB,CAAC,6BAA6B,CAAC,EAAE,CAAC,CAAC;gBACjF,IAAI,MAAM,EAAE;oBACV,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;oBACxB,OAAO,MAAM,CAAC;iBACf;aACF;YAAC,OAAO,KAAK,EAAE;gBACd,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;aAC1B;QACH,CAAC;KAAA;IAEY,sBAAsB,CAAC,EAAU;;YAC5C,IAAI;gBACF,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,oBAAoB,CAAC,sBAAsB,CAAC,EAAE,CAAC,CAAC;gBAC1E,OAAO,OAAO,CAAC,OAAO,CACpB,IAAI,IAAI,CAAC,CAAC,MAAoB,CAAC,EAAE,EAAE,IAAI,EAAE,iBAAiB,EAAE,CAAC,CAC9D,CAAC;aACH;YAAC,OAAO,KAAK,EAAE;gBACd,IAAI,KAAK,YAAY,kDAAU,EAAE;oBAC/B,OAAO,KAAK,CAAC;iBACd;qBAAM;oBACL,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;iBAC1B;aACF;QACH,CAAC;KAAA;IAEY,MAAM,CAAC,SAAiB,EAAE,UAAkB;;YACvD,IAAI;gBACF,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,oBAAoB,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;gBACjE,IAAI,MAAM,EAAE;oBACV,IAAI,SAAS,GAAG,IAAI,CAAC,kBAAkB,CAAC,QAAQ,EAAE,CAAC;oBACnD,IAAI,QAAQ,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,UAAU,CAAC,CAAC;oBACvD,QAAQ,CAAC,cAAc,GAAG,QAAQ,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,SAAS,CAAC,CAAC;oBAEjF,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;oBACxC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;oBACxB,OAAO,MAAM,CAAC;iBACf;aACF;YAAC,OAAO,KAAK,EAAE;gBACd,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;aAC1B;QACH,CAAC;KAAA;IAEY,oBAAoB,CAAC,OAAgB;;YAChD,IAAI;gBACF,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,oBAAoB,CAAC,oBAAoB,CAAC,OAAO,CAA+B,CAAC;gBAC3G,IAAI,MAAM,EAAE;oBACV,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;wBACjB,CAAC,CAAC,IAAI,GAAG,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,IAAI,CAAW,CAAC;oBACpD,CAAC,CAAC,CAAC;oBAEH,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;oBAC7B,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;iBACzB;aACF;YAAC,OAAO,KAAK,EAAE;gBACd,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;aAC1B;QACH,CAAC;KAAA;IAEY,oBAAoB,CAAC,OAAoD;;YACpF,IAAI;gBACF,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,oBAAoB,CAAC,oBAAoB,CAAC,OAAO,CAAC,CAAC;gBAC7E,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBAExB,OAAO,OAAO,CAAC,OAAO,CACpB,IAAI,IAAI,CAAC,CAAC,MAAoB,CAAC,EAAE,EAAE,IAAI,EAAE,iBAAiB,EAAE,CAAC,CAC9D,CAAC;aACH;YAAC,OAAO,KAAK,EAAE;gBACd,IAAI,KAAK,YAAY,kDAAU,EAAE;oBAC/B,OAAO,KAAK,CAAC;iBACd;qBAAM;oBACL,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;iBAC1B;aACF;QACH,CAAC;KAAA;IAEY,qBAAqB,CAAC,OAAuD;;YACxF,IAAI;gBACF,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,oBAAoB,CAAC,qBAAqB,CAAC,OAAO,CAAC,CAAC;gBAC9E,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBAExB,OAAO,OAAO,CAAC,OAAO,CACpB,IAAI,IAAI,CAAC,CAAC,MAAoB,CAAC,EAAE,EAAE,IAAI,EAAE,iBAAiB,EAAE,CAAC,CAC9D,CAAC;aACH;YAAC,OAAO,KAAK,EAAE;gBACd,IAAI,KAAK,YAAY,kDAAU,EAAE;oBAC/B,OAAO,KAAK,CAAC;iBACd;qBAAM;oBACL,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;iBAC1B;aACF;QACH,CAAC;KAAA;IAEY,uBAAuB,CAAC,OAAuD;;YAC1F,IAAI;gBACF,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,oBAAoB,CAAC,uBAAuB,CAAC,OAAO,CAAC,CAAC;gBAChF,IAAI,MAAM,EAAE;oBACV,IAAI,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE,CAAC;oBAC3C,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;oBAC3D,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;iBACjC;gBAED,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBAExB,OAAO,MAAM,CAAC;aACf;YAAC,OAAO,KAAK,EAAE;gBACd,IAAI,KAAK,YAAY,kDAAU,EAAE;oBAC/B,OAAO,KAAK,CAAC;iBACd;qBAAM;oBACL,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;iBAC1B;aACF;QACH,CAAC;KAAA;IAEY,cAAc,CAAC,OAAoD;;YAC9E,IAAI;gBACF,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,oBAAoB,CAAC,cAAc,CAAC,OAAO,CAA6B,CAAC;gBACnG,IAAI,MAAM,EAAE;oBACV,MAAM,CAAC,IAAI,GAAG,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,IAAI,CAAW,CAAC;oBAE5D,IAAI,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE,CAAC;oBAC3C,IAAI,QAAQ,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,MAAM,CAAC,IAAI,CAAC,CAAC;oBAE7D,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;oBACtB,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;oBAC/B,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;oBAExB,OAAO,MAAM,CAAC;iBACf;aACF;YAAC,OAAO,KAAK,EAAE;gBACd,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;aAC1B;QACH,CAAC;KAAA;IAEY,sBAAsB,CAAC,OAAgC;;YAClE,IAAI;gBACF,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,oBAAoB,CAAC,sBAAsB,CAAC,OAAO,CAA8B,CAAC;gBAC5G,IAAI,MAAM,EAAE;oBACV,IAAI,MAAM,EAAE;wBACV,IAAI,CAAC,iCAAiC,CAAC,CAAC,MAAM,CAAgC,CAAC,CAAC;wBAChF,IAAI,CAAC,sBAAsB,CAAC,CAAC,MAAM,CAAgC,CAAC,CAAC;qBACtE;oBACD,OAAO,MAAM,CAAC;iBACf;aACF;YAAC,OAAO,KAAK,EAAE;gBACd,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;aAC1B;QACH,CAAC;KAAA;IAEY,sCAAsC,CAAC,OAA8B;;YAChF,IAAI;gBACF,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,oBAAoB,CAAC,sCAAsC,CAAC,OAAO,CAAoC,CAAC;gBAClI,OAAO,MAAM,CAAC;aACf;YAAC,OAAO,KAAK,EAAE;gBACd,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;aAC1B;QACH,CAAC;KAAA;IAEY,0BAA0B,CAAC,OAAsC;;YAC5E,IAAI;gBACF,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,oBAAoB,CAAC,0BAA0B,CAAC,OAAO,CAAsB,CAAC;gBACxG,IAAI,MAAM,EAAE;oBACV,IAAI,SAAS,GAAG,IAAI,CAAC,kBAAkB,CAAC,QAAQ,EAAE,CAAC;oBACnD,IAAI,eAAe,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,OAAO,CAAC,UAAU,CAAC,CAAC;oBACtE,IAAI,YAAY,GAAG,eAAe,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,OAAO,CAAC,eAAe,CAAC,CAAC;oBAC7F,IAAI,YAAY,EAAE;wBAChB,IAAI,OAAO,GAAG,YAAY,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,IAAI,OAAO,CAAC,eAAe,CAAC,CAAC;wBAC3F,IAAI,MAAM,CAAC,cAAc,EAAE;4BACzB,OAAO,CAAC,KAAK,GAAG,6DAAsB,CAAC,EAAE,CAAC;yBAC3C;wBACD,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;qBACzC;iBACF;gBAED,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBACxB,OAAO,MAAM,CAAC;aACf;YAAC,OAAO,KAAK,EAAE;gBACd,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;aAC1B;QACH,CAAC;KAAA;IAEY,oBAAoB,CAAC,OAAgC;;YAChE,IAAI;gBACF,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,oBAAoB,CAAC,oBAAoB,CAAC,OAAO,CAA8B,CAAC;gBAC1G,IAAI,MAAM,EAAE;oBACV,IAAI,CAAC,iCAAiC,CAAC,CAAC,MAAM,CAAgC,CAAC,CAAC;oBAChF,IAAI,CAAC,sBAAsB,CAAC,CAAC,MAAM,CAAgC,CAAC,CAAC;iBACtE;gBAED,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBACxB,OAAO,MAAM,CAAC;aACf;YAAC,OAAO,KAAK,EAAE;gBACd,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;aAC1B;QACH,CAAC;KAAA;IAEY,qBAAqB,CAAC,OAAiC;;YAClE,IAAI;gBACF,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,oBAAoB,CAAC,qBAAqB,CAAC,OAAO,CAAgC,CAAC;gBAC7G,IAAI,MAAM,EAAE;oBACV,IAAI,CAAC,iCAAiC,CAAC,MAAM,CAAC,CAAC;oBAC/C,IAAI,CAAC,sBAAsB,CAAC,MAAM,CAAC,CAAC;iBACrC;gBACD,OAAO,MAAM,CAAC;aACf;YAAC,OAAO,KAAK,EAAE;gBACd,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;aAC1B;QACH,CAAC;KAAA;IAEY,wBAAwB,CAAC,QAAgB,EAAE,UAAkB;;YACxE,IAAI;gBACF,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,oBAAoB,CAAC,wBAAwB,CAAC,QAAQ,EAAE,UAAU,CAAkC,CAAC;gBAC/H,IAAI,MAAM,EAAE;oBACV,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;wBACjB,IAAI,CAAC,CAAC,aAAa,KAAK,EAAE,EAAE;4BAC1B,CAAC,CAAC,aAAa,GAAG,GAAG,CAAC;yBACvB;wBACD,IAAI,CAAC,CAAC,gBAAgB,KAAK,EAAE,EAAE;4BAC7B,CAAC,CAAC,gBAAgB,GAAG,GAAG,CAAC;yBAC1B;wBACD,IAAI,CAAC,CAAC,cAAc,KAAK,EAAE,EAAE;4BAC3B,CAAC,CAAC,cAAc,GAAG,GAAG,CAAC;yBACxB;oBACH,CAAC,CAAC;oBACF,OAAO,MAAM,CAAC;iBACf;gBACD,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;aACzB;YAAC,OAAO,KAAK,EAAE;gBACd,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;aAC1B;QACH,CAAC;KAAA;IAEY,gBAAgB,CAAC,OAAqC;;YACjE,IAAI;gBACF,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC;gBACpD,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,oBAAoB,CAAC,gBAAgB,CAAC,OAAO,CAA+B,CAAC;gBACvG,IAAI,MAAM,EAAE;oBACV,IAAI,SAAS,GAAG,IAAI,CAAC,kBAAkB,CAAC,QAAQ,EAAE,CAAC;oBACnD,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE;wBAC5B,MAAM,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,eAAe,IAAI,YAAY,CAAC,eAAe,CAAC;wBACnF,IAAI,MAAM,EAAE;4BACV,IAAI,eAAe,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,MAAM,CAAC,UAAU,CAAC,CAAC;4BACrE,IAAI,eAAe,EAAE;gCACnB,IAAI,OAAO,GAAG,eAAe,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,MAAM,CAAC,eAAe,CAAC,CAAC;gCACvF,IAAI,OAAO,GAAG,OAAO,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,IAAI,MAAM,CAAC,eAAe,CAAC,CAAC;gCACrF,OAAO,CAAC,cAAc,GAAG,YAAY,CAAC,cAAc,CAAC;gCACrD,OAAO,CAAC,YAAY,GAAG,YAAY,CAAC,YAAY,CAAC;gCACjD,OAAO,CAAC,UAAU,GAAG,YAAY,CAAC,UAAU,CAAC;gCAC7C,OAAO,CAAC,KAAK,GAAG,YAAY,CAAC,KAAK,CAAC;6BACpC;yBACF;oBACH,CAAC,CAAC,CAAC;oBACH,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;iBACzC;gBACD,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;aAEzB;YAAC,OAAO,KAAK,EAAE;gBACd,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;aAC1B;QACH,CAAC;KAAA;IAEa,sBAAsB,CAAC,KAAkC;;YACrE,IAAI,CAAC,WAAW,CAAC,qBAAqB,CAAC,qDAAU,CAAC,OAAO,CAAC,4BAA4B,EAAE,IAAI,8EAAsC,CAAC,KAAK,CAAC,CAAC,CAAC;QAC7I,CAAC;KAAA;IAGO,qBAAqB;QAC3B,IAAI,CAAC,WAAW,CAAC,4BAA4B,CAAC,SAAS,CAAC,CAAC,UAAkD,EAAE,EAAE;YAC7G,IAAI,UAAU,CAAC,mBAAmB,EAAE;gBAClC,IAAI,CAAC,iCAAiC,CAAC,UAAU,CAAC,mBAAmB,CAAC,CAAC;aACxE;QACH,CAAC,CAAC,CAAC;IACL,CAAC;IAEO,iCAAiC,CAAC,MAAmC;QAC3E,IAAI,SAAS,GAAG,IAAI,CAAC,kBAAkB,CAAC,QAAQ,EAAE,CAAC;QACnD,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;YACjB,IAAI,eAAe,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,UAAU,CAAC,CAAC;YAChE,IAAI,YAAY,GAAG,eAAe,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,eAAe,CAAC,CAAC;YACvF,IAAI,YAAY,EAAE;gBAChB,IAAI,OAAO,GAAG,YAAY,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,IAAI,CAAC,CAAC,eAAe,CAAC,CAAC;gBACrF,OAAO,CAAC,UAAU,GAAG,IAAI,IAAI,EAAE,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC;gBACjD,IAAI,CAAC,CAAC,cAAc,EAAE;oBACpB,OAAO,CAAC,KAAK,GAAG,6DAAsB,CAAC,QAAQ,CAAC;oBAChD,OAAO,CAAC,YAAY,GAAG,EAAE,CAAC;iBAC3B;qBAAM;oBACL,OAAO,CAAC,KAAK,GAAG,6DAAsB,CAAC,MAAM,CAAC;oBAC9C,OAAO,CAAC,YAAY,GAAG,CAAC,CAAC,cAAc,CAAC;iBACzC;aACF;QACH,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IAC1C,CAAC;IAEO,iBAAiB,CAAC,IAAY;QACpC,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QAChC,IAAI,KAAK,KAAK,CAAC,CAAC,EAAE;YAChB,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;SAC3C;QAED,OAAO;IACT,CAAC;IAEO,gBAAgB,CAAC,UAAiC,EAAE,QAAkC;QAE5F,IAAI,eAAe,GAAG,QAAQ,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,GAAG,UAAU,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC,CAAC;QAE7G,eAAe,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;YAC1B,IAAI,aAAa,GAAG,IAAI,qEAA6B,EAAE,CAAC;YACxD,aAAa,CAAC,cAAc,GAAG,IAAI;gBACjC,aAAa,CAAC,QAAQ,GAAG,CAAC,CAAC,QAAQ;gBACnC,aAAa,CAAC,UAAU,GAAG,IAAI;gBAC/B,aAAa,CAAC,OAAO,GAAG,CAAC,CAAC,OAAO;gBAEjC,UAAU,CAAC,cAAc,CAAC,IAAI,CAAC,aAAa,CAAC;QACjD,CAAC,CAAC,CAAC;QAEH,QAAQ,CAAC,cAAc,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IAC3C,CAAC;CACF;;YAvYiC,0DAAoB;YAC7B,gDAAU;;AAPtB,8BAA8B;IAH1C,gEAAU,CAAC;QACV,UAAU,EAAE,MAAM;KACnB,CAAC;qCAOgC,0DAAoB;QAC7B,gDAAU;GAPtB,8BAA8B,CA6Y1C;AA7Y0C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACZyC;AAC7C;AACI;AACY;AAC4E;AACtF;AACA;AAK7C,IAAa,uBAAuB,GAApC,MAAa,uBAAuB;IAKlC,YACU,WAAuB,EACvB,UAA4B;QAD5B,gBAAW,GAAX,WAAW,CAAY;QACvB,eAAU,GAAV,UAAU,CAAkB;QAL/B,oBAAe,GAAuC,IAAI,oDAAe,CAAC,EAAE,CAAC,CAAC;QAC9E,YAAO,GAAgC,IAAI,oDAAe,CAAC,IAAI,CAAC,CAAC;QAMtE,IAAI,CAAC,qBAAqB,EAAE,CAAC;IAC/B,CAAC;IAEY,GAAG,CAAC,SAAiB;;YAChC,IAAI;gBACF,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC;gBAC/D,IAAI,IAAI,EAAE;oBACR,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAyB,CAAC,CAAC;oBACrD,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;iBACzB;aACF;YAAC,OAAO,KAAK,EAAE;gBACd,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;aAC1B;QACH,CAAC;KAAA;IAEY,MAAM,CAAC,MAAyB;;YAC3C,IAAI;gBACF,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,MAAM,CAAoB,CAAC;gBACvE,IAAI,MAAM,EAAE;oBACV,IAAI,CAAC,WAAW,CAAC,mCAAmC,CAAC,qDAAU,CAAC,MAAM,CAAC,WAAW,EAAE,IAAI,8DAAqB,CAAC,MAAM,CAAC,CAAC,CAAC;oBACvH,OAAO,MAAM,CAAC;iBACf;aACF;YAAC,OAAO,KAAK,EAAE;gBACd,IAAI,KAAK,YAAY,kDAAU,EAAE;oBAC/B,OAAO,KAAK,CAAC;iBACd;aACF;QACH,CAAC;KAAA;IAEY,cAAc,CAAC,MAAuB;;YACjD,IAAI;gBACF,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC,MAAM,CAAoB,CAAC;gBAC/E,IAAI,MAAM,EAAE;oBACV,IAAI,CAAC,WAAW,CAAC,mCAAmC,CAAC,qDAAU,CAAC,MAAM,CAAC,aAAa,EAAE,IAAI,gEAAuB,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC;oBACjI,MAAM,YAAY,GAAG,IAAI,CAAC,eAAe,CAAC,QAAQ,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,MAAM,CAAC,EAAE,CAAC,CAAC,mBAAM,CAAC,EAAK,MAAM,EAAG,CAAC,CAAC,CAAC,CAAC,CAAC;oBAC5G,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;oBACxC,OAAO,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;iBAC9B;gBACD,OAAO,KAAK,CAAC;aACd;YAAC,OAAO,KAAK,EAAE;gBACd,OAAO,KAAK,YAAY,kDAAU,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC;aACpD;QACH,CAAC;KAAA;IAEY,YAAY,CAAC,QAAgB,EAAE,SAAiB;;YAC3D,IAAI;gBACF,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;gBACvE,IAAI,MAAM,EAAE;oBACV,IAAI,CAAC,WAAW,CAAC,mCAAmC,CAAC,qDAAU,CAAC,MAAM,CAAC,aAAa,EAAE,IAAI,gEAAuB,CAAC,QAAQ,CAAC,CAAC,CAAC;oBAC7H,MAAM,OAAO,GAAG,IAAI,CAAC,eAAe,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,MAAM,CAAC,CAAC;oBAC7E,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;oBACnC,OAAO,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;iBAC9B;gBAED,OAAO,KAAK,CAAC;aACd;YAAC,OAAO,KAAK,EAAE;gBACd,OAAO,KAAK,YAAY,kDAAU,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC;aACpD;QACH,CAAC;KAAA;IAEY,kCAAkC,CAAC,QAAgB;;YAC9D,IAAI,CAAC,WAAW,CAAC,mCAAmC,CAAC,qDAAU,CAAC,MAAM,CAAC,cAAc,EAAE,IAAI,iEAAwB,CAAC,QAAQ,CAAC,CAAC,CAAC;QACjI,CAAC;KAAA;IAEY,iCAAiC,CAAC,MAAuB,EAAE,aAAsB;;YAC5F,IAAI,CAAC,WAAW,CAAC,mCAAmC,CAAC,qDAAU,CAAC,MAAM,CAAC,aAAa,EAAE,IAAI,gEAAuB,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC,CAAC;QAC5I,CAAC;KAAA;IAEO,qBAAqB;QAC3B,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC,UAAmC,EAAE,EAAE;YAC/E,IAAI,UAAU,EAAE;gBACd,MAAM,KAAK,GAAG,IAAI,CAAC,eAAe,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,UAAU,CAAC,QAAQ,CAAC,CAAC;gBACxF,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;aAClC;QACH,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC,UAAiC,EAAE,EAAE;YAC3E,IAAI,UAAU,IAAI,UAAU,CAAC,SAAS,EAAE;gBACtC,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC;oBACxB,GAAG,IAAI,CAAC,eAAe,CAAC,QAAQ,EAAE;oBAClC,UAAU,CAAC,SAAS;iBACrB,CAAC,CAAC;aACJ;QACH,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,WAAW,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC,UAAoC,EAAE,EAAE;YACjF,IAAI,UAAU,EAAE;gBACd,MAAM,MAAM,GAAG,IAAI,CAAC,eAAe,CAAC,QAAQ,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,UAAU,CAAC,QAAQ,CAAC,CAAC;gBACvF,IAAI,MAAM,EAAE;oBACV,MAAM,CAAC,qBAAqB,GAAG,IAAI,CAAC;iBACrC;aACF;QACH,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC,UAAmC,EAAE,EAAE;YAC/E,IAAI,UAAU,IAAI,UAAU,CAAC,aAAa,EAAE;gBAC1C,IAAI,UAAU,CAAC,WAAW,EAAE;oBAC1B,UAAU,CAAC,aAAa,CAAC,qBAAqB,GAAG,SAAS,CAAC;oBAC3D,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,QAAQ,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,UAAU,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;iBAC1I;qBAAM;oBACL,MAAM,MAAM,GAAG,IAAI,CAAC,eAAe,CAAC,QAAQ,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,UAAU,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC;oBAC9F,MAAM,CAAC,qBAAqB,GAAG,KAAK,CAAC;iBACtC;aACF;QACH,CAAC,CAAC,CAAC;IACL,CAAC;CACF;;YA1GwB,gDAAU;YACX,sDAAgB;;AAP3B,uBAAuB;IAHnC,gEAAU,CAAC;QACV,UAAU,EAAE,MAAM;KACnB,CAAC;qCAOuB,gDAAU;QACX,sDAAgB;GAP3B,uBAAuB,CAgHnC;AAhHmC;;;;;;;;;;;;;;;;;;;;ACXE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACAK;AACF;AAE2B;AACA;AAE1B;AAG1C,IAAa,WAAW,GAAxB,MAAa,WAAW;IACtB,YACU,oBAAyC,EACzC,OAAe;QADf,yBAAoB,GAApB,oBAAoB,CAAqB;QACzC,YAAO,GAAP,OAAO,CAAQ;IACtB,CAAC;IAEG,WAAW,CAAC,IAAkB;QACnC,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC;QAC7B,MAAM,UAAU,GAAG,GAAG,CAAC,OAAO,CAAC,oDAAS,CAAC,KAAK,CAAC,CAAC,CAAC;QAEjD,MAAM,aAAa,GAAG,UAAU;YAC9B,CAAC,CAAC,IAAI,CAAC,uBAAuB,CAAC,GAAG,CAAC;YACnC,CAAC,CAAC,IAAI,CAAC,oBAAoB,CAAC,YAAY,EAAE,CAAC;QAE7C,OAAO,aAAa,IAAI,aAAa,CAAC,IAAI,KAAK,IAAI,CAAC;IACtD,CAAC;IAEM,uBAAuB,CAAC,GAAW;QACxC,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,iEAAsB,CAAC,CAAC,IAAI,CACnD,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CACjC,CAAC;QAEF,OAAO;YACL,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,iEAAsB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,oDAAY,CAAC,WAAW;YACpE,QAAQ,EAAE,kDAAW,CAAC,GAAG,GAAG,kDAAW,CAAC,GAAG,GAAG,kDAAW,CAAC,GAAG;SAC9D,CAAC;IACJ,CAAC;CACF;;YAzBiC,2DAAmB;YAChC,sDAAM;;AAHd,WAAW;IADvB,gEAAU,EAAE;qCAGqB,2DAAmB;QAChC,sDAAM;GAHd,WAAW,CA2BvB;AA3BuB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACTmB;AACF;AAE8B;AAMvE,IAAa,iBAAiB,GAA9B,MAAa,iBAAiB;IAE5B,YACU,YAAyB,EACzB,OAAe;QADf,iBAAY,GAAZ,YAAY,CAAa;QACzB,YAAO,GAAP,OAAO,CAAQ;IACrB,CAAC;IAEQ,UAAU;;YACrB,IAAI;gBACF,IAAI,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,EAAE;oBAC/C,OAAO,IAAI,CAAC,WAAW,EAAE,CAAC;iBAC3B;gBACD,IAAI,MAAM,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,iDAAS,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;gBACjE,IAAI,MAAM,EAAE;oBACV,OAAO,MAAM,CAAC;iBACf;aACF;YACD,OAAO,KAAK,EAAE;gBACZ,OAAO,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;aACjC;QACH,CAAC;KAAA;IAEY,WAAW,CAAC,OAA4B;;YACnD,IAAI;gBACF,IAAI,MAAM,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,iDAAS,CAAC,OAAO,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;gBAC5E,IAAI,MAAM,EAAE;oBACV,OAAO,MAAM,CAAC;iBACf;aACF;YACD,OAAO,KAAK,EAAE;gBACZ,OAAO,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;aACjC;QACH,CAAC;KAAA;IAEO,YAAY,CAAC,KAAU;QAC7B,IAAI,KAAK,YAAY,kDAAU,EAAE;YAC/B,OAAO,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;SAC9B;QAED,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QACnB,OAAO,IAAI,CAAC;IACd,CAAC;IAEO,WAAW;QACjB,IAAI,OAAO,GAAG;YACZ,MAAM,EAAE,CAAC;YACT,SAAS,EAAE,eAAe;YAC1B,QAAQ,EAAE,cAAc;YACxB,WAAW,EAAE,iBAAiB;SACR,CAAC;QACzB,OAAO,OAAO,CAAC;IACjB,CAAC;CACF;;YAjDyB,mDAAW;YAChB,sDAAM;;AAJd,iBAAiB;IAH7B,gEAAU,CAAC;QACV,UAAU,EAAE,MAAM;KACnB,CAAC;qCAIwB,mDAAW;QAChB,sDAAM;GAJd,iBAAiB,CAoD7B;AApD6B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACTa;AACF;AAGmB;AAChB;AAK5C,IAAa,oBAAoB,GAAjC,MAAa,oBAAoB;IAE/B,YACU,YAAyB,EACzB,OAAe;QADf,iBAAY,GAAZ,YAAY,CAAa;QACzB,YAAO,GAAP,OAAO,CAAQ;IAAK,CAAC;IAElB,sBAAsB;;YACjC,IAAI;gBACF,IAAI,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,EAAE;oBAC/C,OAAO,IAAI,CAAC,WAAW,EAAE,CAAC;iBAC3B;gBACD,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,oDAAS,CAAC,OAAO,CAAC,sBAAsB,CAAC,CAAC;gBACrF,OAAO,MAAM;aACd;YAAC,OAAO,KAAK,EAAE;gBACd,OAAO,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;aACjC;QACH,CAAC;KAAA;IAEO,YAAY,CAAC,KAAU;QAC7B,IAAI,KAAK,YAAY,kDAAU,EAAE;YAC/B,OAAO,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;SAC9B;QAED,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QACnB,OAAO,IAAI,CAAC;IACd,CAAC;IAEO,WAAW;QACjB,IAAI,IAAI,GAAG;YACT;gBACE,IAAI,EAAE,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC;gBACnC,MAAM,EAAE;oBACN,EAAE,IAAI,EAAE,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAC,WAAW,EAAC,GAAG,EAAE,WAAW,EAAE,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE;oBACjL,EAAE,IAAI,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,EAAC,WAAW,EAAC,GAAG,EAAE,WAAW,EAAE,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE;oBACtM,EAAE,IAAI,EAAE,EAAE,EAAE,MAAM,EAAE,SAAS,EAAC,WAAW,EAAC,GAAG,EAAE,WAAW,EAAE,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE;iBACrY;aACF;YACD;gBACE,IAAI,EAAE,CAAC,EAAE,MAAM,EAAE,mBAAmB,EAAE,MAAM,EAAE,CAAC;gBAC/C,MAAM,EAAE;oBACN,EAAE,IAAI,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,EAAC,WAAW,EAAC,GAAG,EAAE,WAAW,EAAE,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,CAAC,EAAE;oBAChN,EAAE,IAAI,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,EAAC,WAAW,EAAC,GAAG,EAAE,WAAW,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,QAAQ,EAAE,GAAG,EAAC,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,QAAQ,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,CAAC,EAAE;oBAC3X,EAAE,IAAI,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,EAAC,WAAW,EAAC,GAAG,EAAE,WAAW,EAAE,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAC,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAC,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,CAAC,EAAE;oBACrd,EAAE,IAAI,EAAE,CAAC,EAAE,MAAM,EAAE,MAAM,EAAC,WAAW,EAAC,GAAG,EAAE,WAAW,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE;iBACrT;aACF;YACD;gBACE,IAAI,EAAE,CAAC,EAAE,MAAM,EAAE,wBAAwB,EAAE,MAAM,EAAE,CAAC;gBACpD,MAAM,EAAE;oBACN,EAAE,IAAI,EAAE,CAAC,EAAE,MAAM,EAAE,MAAM,EAAC,WAAW,EAAC,GAAG,EAAE,WAAW,EAAE,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE;oBACrP,EAAE,IAAI,EAAE,CAAC,EAAE,MAAM,EAAE,MAAM,EAAC,WAAW,EAAC,GAAG,EAAE,WAAW,EAAE,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE;oBAC3P,EAAE,IAAI,EAAE,CAAC,EAAE,MAAM,EAAE,MAAM,EAAC,WAAW,EAAC,GAAG,EAAE,WAAW,EAAE,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE;iBACnP;aACF;YACD;gBACE,IAAI,EAAE,CAAC,EAAE,MAAM,EAAE,mBAAmB,EAAE,MAAM,EAAE,CAAC;gBAC/C,MAAM,EAAE;oBACN,EAAE,IAAI,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,EAAC,WAAW,EAAC,GAAG,EAAE,WAAW,EAAE,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE;oBAC3J,EAAE,IAAI,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,EAAC,WAAW,EAAC,GAAG,EAAE,WAAW,EAAE,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE;oBACpP,EAAE,IAAI,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,EAAC,WAAW,EAAC,GAAG,EAAE,WAAW,EAAE,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE;iBAClU;aACF;SACF,CAAC;QACF,OAAO,IAAoC,CAAC;IAC9C,CAAC;CACF;;YA9DyB,mDAAW;YAChB,sDAAM;;AAJd,oBAAoB;IAHhC,gEAAU,CAAC;QACV,UAAU,EAAE,MAAM;KACnB,CAAC;qCAIwB,mDAAW;QAChB,sDAAM;GAJd,oBAAoB,CAiEhC;AAjEgC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACVU;AACF;AAEG;AACgB;AAM5D,IAAa,wBAAwB,GAArC,MAAa,wBAAwB;IAEnC,YACU,YAAyB,EACzB,OAAe;QADf,iBAAY,GAAZ,YAAY,CAAa;QACzB,YAAO,GAAP,OAAO,CAAQ;IAAK,CAAC;IAElB,MAAM;;YACjB,IAAI;gBACF,IAAI,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,EAAE;oBAC/C,OAAO,IAAI,CAAC,WAAW,EAAE,CAAC;iBAC3B;gBACD,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,oDAAS,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;gBACvE,OAAO,MAAM;aACd;YAAC,OAAO,KAAK,EAAE;gBACd,OAAO,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;aACjC;QACH,CAAC;KAAA;IAEO,YAAY,CAAC,KAAU;QAC7B,IAAI,KAAK,YAAY,kDAAU,EAAE;YAC/B,OAAO,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;SAC9B;QAED,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QACnB,OAAO,IAAI,CAAC;IACd,CAAC;IAEO,WAAW;QACjB,IAAI,SAAS,GAA8B,EAAE,CAAC;QAC9C,SAAS,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE,EAAE,mBAAmB,EAAE,EAAE,EAAE,kBAAkB,EAAE,CAAC,CAAC;QAC5F,SAAS,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE,oBAAoB,EAAE,EAAE,EAAE,kBAAkB,EAAE,CAAC,CAAC;QAC5F,SAAS,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,aAAa,EAAE,EAAE,EAAE,mBAAmB,EAAE,EAAE,EAAE,kBAAkB,EAAE,CAAC,CAAC;QAChG,SAAS,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,qBAAqB,EAAE,EAAE,EAAE,mBAAmB,EAAE,EAAE,EAAE,kBAAkB,EAAE,CAAC,CAAC;QACxG,SAAS,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,gBAAgB,EAAE,EAAE,EAAE,mBAAmB,EAAE,EAAE,EAAE,kBAAkB,EAAE,CAAC,CAAC;QACnG,SAAS,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,eAAe,EAAE,EAAE,EAAE,mBAAmB,EAAE,EAAE,EAAE,kBAAkB,EAAE,CAAC,CAAC;QAClG,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,EAAE,EAAE,KAAK,EAAE,EAAE;YACvC,SAAS,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,WAAW,KAAK,GAAG,CAAC,EAAE,EAAE,EAAE,EAAE,mBAAmB,EAAE,EAAE,EAAE,kBAAkB,EAAE,CAAC,CAAC;SAC9G;QACD,OAAO,SAAS,CAAC;IACnB,CAAC;CACF;;YArCyB,mDAAW;YAChB,sDAAM;;AAJd,wBAAwB;IAHpC,gEAAU,CAAC;QACV,UAAU,EAAE,MAAM;KACnB,CAAC;qCAIwB,mDAAW;QAChB,sDAAM;GAJd,wBAAwB,CAwCpC;AAxCoC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACVM;AACF;AAGiB;AACd;AACyB;AAKrE,IAAa,yBAAyB,GAAtC,MAAa,yBAAyB;IAEpC,YACU,YAAyB,EACzB,OAAe;QADf,iBAAY,GAAZ,YAAY,CAAa;QACzB,YAAO,GAAP,OAAO,CAAQ;IAAK,CAAC;IAElB,WAAW,CAAC,EAAU;;YACjC,IAAI;gBACF,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,oDAAS,CAAC,YAAY,CAAC,mBAAmB,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;gBAC/F,IAAI,MAAM,EAAE;oBACV,OAAO,MAAM,CAAC;iBACf;aACF;YAAC,OAAO,KAAK,EAAE;gBACd,IAAI,KAAK,YAAY,kDAAU,EAAE;oBAC/B,OAAO,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;iBAC9B;aACF;QACH,CAAC;KAAA;IAEY,YAAY,CAAC,EAAU;;YAClC,IAAI;gBACF,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,oDAAS,CAAC,YAAY,CAAC,oBAAoB,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;gBAChG,IAAI,MAAM,EAAE;oBACV,OAAO,MAAM,CAAC;iBACf;aACF;YAAC,OAAO,KAAK,EAAE;gBACd,IAAI,KAAK,YAAY,kDAAU,EAAE;oBAC/B,OAAO,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;iBAC9B;aACF;QACH,CAAC;KAAA;IAEY,oBAAoB,CAAC,gBAA2C;;YAC3E,IAAI;gBACF,IAAI,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,EAAE;oBAC/C,OAAO,gBAAgB,CAAC;iBACzB;gBACD,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,oDAAS,CAAC,YAAY,CAAC,oBAAoB,EAAE,gBAAgB,CAAC,CAAC;gBAC3G,IAAI,MAAM,EAAE;oBACV,OAAO,MAAM,CAAC;iBACf;aACF;YAAC,OAAO,KAAK,EAAE;gBACd,IAAI,KAAK,YAAY,kDAAU,EAAE;oBAC/B,OAAO,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;iBAC9B;aACF;QACH,CAAC;KAAA;IAEY,qBAAqB,CAAC,iBAA6C;;YAC9E,IAAI;gBACF,IAAI,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,EAAE;oBAC/C,OAAO,iBAAiB,CAAC;iBAC1B;gBACD,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,oDAAS,CAAC,YAAY,CAAC,qBAAqB,EAAE,iBAAiB,CAAC,CAAC;gBAC7G,IAAI,MAAM,EAAE;oBACV,OAAO,MAAM,CAAC;iBACf;aACF;YAAC,OAAO,KAAK,EAAE;gBACd,IAAI,KAAK,YAAY,kDAAU,EAAE;oBAC/B,OAAO,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;iBAC9B;aACF;QACH,CAAC;KAAA;IAEY,mBAAmB,CAAC,gBAA2C;;YAC1E,IAAI;gBACF,IAAI,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,EAAE;oBAC/C,OAAO,gBAAgB,CAAC;iBACzB;gBACD,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,oDAAS,CAAC,YAAY,CAAC,mBAAmB,EAAE,gBAAgB,CAAC,CAAC;gBAC1G,OAAO,MAAM,CAAC;aACf;YAAC,OAAO,KAAK,EAAE;gBACd,OAAO,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;aACjC;QACH,CAAC;KAAA;IAEY,oBAAoB,CAAC,iBAA6C;;YAC7E,IAAI;gBACF,IAAI,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,EAAE;oBAC/C,OAAO,iBAAiB,CAAC;iBAC1B;gBACD,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,oDAAS,CAAC,YAAY,CAAC,oBAAoB,EAAE,iBAAiB,CAAC,CAAC;gBAC5G,OAAO,MAAM,CAAC;aACf;YAAC,OAAO,KAAK,EAAE;gBACd,OAAO,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;aACjC;QACH,CAAC;KAAA;IAEY,kBAAkB,CAAC,EAAU;;YACxC,IAAI;gBACF,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,oDAAS,CAAC,YAAY,CAAC,kBAAkB,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;gBACjG,OAAO,MAAM,CAAC;aACf;YAAC,OAAO,KAAK,EAAE;gBACd,OAAO,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;aACjC;QACH,CAAC;KAAA;IAEY,YAAY;;YACvB,IAAI;gBACF,IAAI,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,EAAE;oBAC/C,OAAO,IAAI,CAAC,WAAW,EAAE,CAAC;iBAC3B;gBACD,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,oDAAS,CAAC,YAAY,CAAC,iBAAiB,CAAC,CAAC;gBACrF,OAAO,MAAM,CAAC;aACf;YAAC,OAAO,KAAK,EAAE;gBACd,OAAO,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;aACjC;QACH,CAAC;KAAA;IAEY,mBAAmB,CAAC,gBAA8C;;YAC7E,IAAI;gBACF,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,oDAAS,CAAC,YAAY,CAAC,mBAAmB,EAAE,gBAAgB,CAAC,CAAC;gBAC1G,IAAI,MAAM,EAAE;oBACV,OAAO,MAAM,CAAC;iBACf;aACF;YAAC,OAAO,KAAK,EAAE;gBACd,IAAI,KAAK,YAAY,kDAAU,EAAE;oBAC/B,OAAO,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;iBAC9B;aACF;QACH,CAAC;KAAA;IAEY,oBAAoB,CAAC,gBAA8C;;YAC9E,IAAI;gBACF,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,oDAAS,CAAC,YAAY,CAAC,oBAAoB,EAAE,gBAAgB,CAAC,CAAC;gBAC3G,IAAI,MAAM,EAAE;oBACV,OAAO,MAAM,CAAC;iBACf;aACF;YAAC,OAAO,KAAK,EAAE;gBACd,IAAI,KAAK,YAAY,kDAAU,EAAE;oBAC/B,OAAO,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;iBAC9B;aACF;QACH,CAAC;KAAA;IAEY,uBAAuB,CAAC,EAAU;;YAC7C,IAAI;gBACF,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,oDAAS,CAAC,YAAY,CAAC,uBAAuB,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;gBACnG,IAAI,MAAM,EAAE;oBACV,OAAO,MAAM,CAAC;iBACf;aACF;YAAC,OAAO,KAAK,EAAE;gBACd,IAAI,KAAK,YAAY,kDAAU,EAAE;oBAC/B,OAAO,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;iBAC9B;aACF;QACH,CAAC;KAAA;IAEY,gCAAgC;;YAC3C,IAAI;gBACF,IAAI,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,EAAE;oBAC/C,OAAO,IAAI,CAAC,YAAY,EAAE,CAAC;iBAC5B;gBACD,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,oDAAS,CAAC,YAAY,CAAC,yCAAyC,CAAC,CAAC;gBAC7G,IAAI,MAAM,EAAE;oBACV,OAAO,MAAM,CAAC;iBACf;aACF;YAAC,OAAO,KAAK,EAAE;gBACd,IAAI,KAAK,YAAY,kDAAU,EAAE;oBAC/B,OAAO,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;iBAC9B;aACF;QACH,CAAC;KAAA;IAEO,YAAY,CAAC,KAAU;QAC7B,IAAI,KAAK,YAAY,kDAAU,EAAE;YAC/B,OAAO,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;SAC9B;QAED,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QACnB,OAAO,IAAI,CAAC;IACd,CAAC;IAEO,YAAY;QAClB,IAAI,IAAI,GAAG;YACT,EAAE,EAAE,EAAC,CAAC,EAAE,UAAU,EAAC,EAAC,WAAW,EAAC,cAAc,EAAC,IAAI,EAAC,OAAO,EAAC,OAAO,EAAC,UAAU,EAAC,YAAY,EAAC,eAAe,EAAC,OAAO,EAAC,UAAU,EAAC,YAAY,EAAC,eAAe,EAAC,YAAY,EAAC,eAAe,EAAC,WAAW,EAAC,cAAc,EAAC,EAAE,EAAC,CAAC,EAAC,aAAa,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,EAAE;YACxP,EAAE,EAAE,EAAC,CAAC,EAAE,UAAU,EAAC,EAAC,WAAW,EAAC,cAAc,EAAC,IAAI,EAAC,OAAO,EAAC,OAAO,EAAC,UAAU,EAAC,YAAY,EAAC,eAAe,EAAC,OAAO,EAAC,UAAU,EAAC,YAAY,EAAC,eAAe,EAAC,YAAY,EAAC,eAAe,EAAC,WAAW,EAAC,cAAc,EAAC,EAAE,EAAC,CAAC,EAAC,aAAa,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,EAAE;YACxP,EAAE,EAAE,EAAC,CAAC,EAAE,UAAU,EAAC,EAAC,WAAW,EAAC,cAAc,EAAC,IAAI,EAAC,OAAO,EAAC,OAAO,EAAC,UAAU,EAAC,YAAY,EAAC,eAAe,EAAC,OAAO,EAAC,UAAU,EAAC,YAAY,EAAC,eAAe,EAAC,YAAY,EAAC,eAAe,EAAC,WAAW,EAAC,cAAc,EAAC,EAAE,EAAC,CAAC,EAAC,aAAa,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,EAAE;YACxP,EAAE,EAAE,EAAC,CAAC,EAAE,UAAU,EAAC,EAAC,WAAW,EAAC,cAAc,EAAC,IAAI,EAAC,OAAO,EAAC,OAAO,EAAC,UAAU,EAAC,YAAY,EAAC,eAAe,EAAC,OAAO,EAAC,UAAU,EAAC,YAAY,EAAC,eAAe,EAAC,YAAY,EAAC,eAAe,EAAC,WAAW,EAAC,cAAc,EAAC,EAAE,EAAC,CAAC,EAAC,aAAa,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,EAAE;YACxP,EAAE,EAAE,EAAC,CAAC,EAAE,UAAU,EAAC,EAAC,WAAW,EAAC,cAAc,EAAC,IAAI,EAAC,OAAO,EAAC,OAAO,EAAC,UAAU,EAAC,YAAY,EAAC,eAAe,EAAC,OAAO,EAAC,UAAU,EAAC,YAAY,EAAC,eAAe,EAAC,YAAY,EAAC,eAAe,EAAC,WAAW,EAAC,cAAc,EAAC,EAAE,EAAC,CAAC,EAAC,aAAa,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,EAAE;YACxP,EAAE,EAAE,EAAC,CAAC,EAAE,UAAU,EAAC,EAAC,WAAW,EAAC,cAAc,EAAC,IAAI,EAAC,OAAO,EAAC,OAAO,EAAC,UAAU,EAAC,YAAY,EAAC,eAAe,EAAC,OAAO,EAAC,UAAU,EAAC,YAAY,EAAC,eAAe,EAAC,YAAY,EAAC,eAAe,EAAC,WAAW,EAAC,cAAc,EAAC,EAAE,EAAC,CAAC,EAAC,aAAa,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,EAAE;SAC3N;QAC/B,OAAO,IAAI,CAAC;IACd,CAAC;IAEO,WAAW;QACjB,IAAI,MAAM,GAAG;YACX,EAAE,WAAW,EAAE,eAAe,EAAE,WAAW,EAAE,yDAAkB,CAAC,eAAe,EAAE,WAAW,EAAE,yDAAkB,CAAC,IAAI,EAAE;YACvH,EAAE,WAAW,EAAE,eAAe,EAAE,WAAW,EAAE,yDAAkB,CAAC,eAAe,EAAE,WAAW,EAAE,yDAAkB,CAAC,aAAa,EAAE;YAChI,EAAE,WAAW,EAAE,eAAe,EAAE,WAAW,EAAE,yDAAkB,CAAC,eAAe,EAAE,WAAW,EAAE,yDAAkB,CAAC,UAAU,EAAE;YAC7H,EAAE,WAAW,EAAE,eAAe,EAAE,WAAW,EAAE,yDAAkB,CAAC,gBAAgB,EAAE,WAAW,EAAE,yDAAkB,CAAC,OAAO,EAAE;YAC3H,EAAE,WAAW,EAAE,eAAe,EAAE,WAAW,EAAE,yDAAkB,CAAC,gBAAgB,EAAE,WAAW,EAAE,yDAAkB,CAAC,QAAQ,EAAE;YAC5H,EAAE,WAAW,EAAE,eAAe,EAAE,WAAW,EAAE,yDAAkB,CAAC,oBAAoB,EAAE,WAAW,EAAE,yDAAkB,CAAC,IAAI,EAAE;SACrG,CAAC;QAC1B,OAAO,MAAM,CAAC;IAChB,CAAC;CACF;;YAjMyB,mDAAW;YAChB,sDAAM;;AAJd,yBAAyB;IAHrC,gEAAU,CAAC;QACV,UAAU,EAAE,MAAM;KACnB,CAAC;qCAIwB,mDAAW;QAChB,sDAAM;GAJd,yBAAyB,CAoMrC;AApMqC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACXK;AAEe;AACd;AAO5C,IAAa,mBAAmB,GAAhC,MAAa,mBAAmB;IAE9B,YAAoB,YAAyB;QAAzB,iBAAY,GAAZ,YAAY,CAAa;IAAI,CAAC;IAErC,kCAAkC,CAAC,KAAkC;;YAChF,IAAI;gBACF,IAAI,MAAM,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,eAAe,CAAC,oDAAS,CAAC,SAAS,CAAC,yBAAyB,EAAE,KAAK,CAAC,CAAC;gBAC3G,OAAO,MAAM,CAAC;aACf;YAAC,OAAO,KAAK,EAAE;gBACd,OAAO,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;aACjC;QACH,CAAC;KAAA;IAEY,+BAA+B,CAAC,KAAkC;;YAC7E,IAAI;gBACF,IAAI,MAAM,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,oDAAS,CAAC,SAAS,CAAC,+BAA+B,EAAE,KAAK,CAAC;gBACrG,OAAO,MAAM,CAAC;aACf;YAAC,OAAO,KAAK,EAAE;gBACd,OAAO,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;aACjC;QACH,CAAC;KAAA;IAEY,mCAAmC,CAAC,KAAmC;;YAClF,IAAI;gBACF,IAAI,MAAM,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,eAAe,CAAC,oDAAS,CAAC,SAAS,CAAC,mBAAmB,EAAE,KAAK,CAAC,CAAC;gBACrG,OAAO,MAAM,CAAC;aACf;YAAC,OAAO,KAAK,EAAE;gBACd,OAAO,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;aACjC;QACH,CAAC;KAAA;IAEY,gCAAgC,CAAC,KAAmC;;YAC/E,IAAI;gBACF,IAAI,MAAM,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,oDAAS,CAAC,SAAS,CAAC,2BAA2B,EAAE,KAAK,CAAC;gBACjG,OAAO,MAAM,CAAC;aACf;YAAC,OAAO,KAAK,EAAE;gBACd,OAAO,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;aACjC;QACH,CAAC;KAAA;IAEY,kCAAkC,CAAC,KAAkC;;YAChF,IAAI;gBACF,IAAI,MAAM,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,eAAe,CAAC,oDAAS,CAAC,SAAS,CAAC,kBAAkB,EAAE,KAAK,CAAC,CAAC;gBACpG,OAAO,MAAM,CAAC;aACf;YAAC,OAAO,KAAK,EAAE;gBACd,OAAO,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;aACjC;QACH,CAAC;KAAA;IAEY,+BAA+B,CAAC,KAAkC;;YAC7E,IAAI;gBACF,IAAI,MAAM,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,oDAAS,CAAC,SAAS,CAAC,0BAA0B,EAAE,KAAK,CAAC;gBAChG,OAAO,MAAM,CAAC;aACf;YAAC,OAAO,KAAK,EAAE;gBACd,OAAO,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;aACjC;QACH,CAAC;KAAA;IAEY,6BAA6B,CACxC,gBAA0B,EAC1B,YAA8B,EAC9B,QAAgB,EAChB,SAAe;;YACf,IAAI;gBACF,IAAI,MAAM,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,eAAe,CAClD,oDAAS,CAAC,SAAS,CAAC,oBAAoB,EACxC;oBACE,gBAAgB,EAAE,gBAAgB;oBAClC,YAAY,EAAE,YAAY;oBAC1B,QAAQ,EAAE,QAAQ;oBAClB,SAAS,EAAE,SAAS;iBACrB,CAAC,CAAC;gBACL,OAAO,MAAM,CAAC;aACf;YAAC,OAAO,KAAK,EAAE;gBACd,OAAO,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;aACjC;QACH,CAAC;KAAA;IAEY,0BAA0B,CACrC,gBAA0B,EAC1B,YAA8B,EAC9B,QAAgB,EAChB,SAAe;;YACf,IAAI;gBACF,IAAI,MAAM,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,IAAI,CACvC,oDAAS,CAAC,SAAS,CAAC,0BAA0B,EAC9C;oBACE,gBAAgB,EAAE,gBAAgB;oBAClC,YAAY,EAAE,YAAY;oBAC1B,QAAQ,EAAE,QAAQ;oBAClB,SAAS,EAAE,SAAS;iBACrB,CAAC,CAAC;gBACL,OAAO,MAAM,CAAC;aACf;YAAC,OAAO,KAAK,EAAE;gBACd,OAAO,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;aACjC;QACH,CAAC;KAAA;IAEO,YAAY,CAAC,KAAU;QAC7B,IAAI,KAAK,YAAY,kDAAU,EAAE;YAC/B,OAAO,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;SAC9B;QACD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QACnB,OAAO,IAAI,CAAC;IACd,CAAC;CACF;;YAvGmC,mDAAW;;AAFlC,mBAAmB;IAH/B,gEAAU,CAAC;QACV,UAAU,EAAE,MAAM;KACnB,CAAC;qCAGkC,mDAAW;GAFlC,mBAAmB,CAyG/B;AAzG+B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACVW;AAEe;AACd;AAG5C,IAAa,aAAa,GAA1B,MAAa,aAAa;IACxB,YACU,YAAyB;QAAzB,iBAAY,GAAZ,YAAY,CAAa;IAC/B,CAAC;IAEQ,WAAW;;YACtB,IAAI;gBACF,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,cAAc,CAAC,oDAAS,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;gBACjF,OAAO,MAAM,CAAC;aACf;YAAC,OAAO,KAAK,EAAE;gBACd,OAAO,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;aACjC;QACH,CAAC;KAAA;IAEY,WAAW;;YACtB,IAAI;gBACF,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,cAAc,CAAC,oDAAS,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;gBACjF,OAAO,MAAM,CAAC;aACf;YAAC,OAAO,KAAK,EAAE;gBACd,OAAO,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;aACjC;QACH,CAAC;KAAA;IAEO,YAAY,CAAC,KAAU;QAC7B,IAAI,KAAK,YAAY,kDAAU,EAAE;YAC/B,OAAO,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;SAC9B;QAED,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QACnB,OAAO,IAAI,CAAC;IACd,CAAC;CACF;;YA7ByB,mDAAW;;AAFxB,aAAa;IADzB,gEAAU,EAAE;qCAGa,mDAAW;GAFxB,aAAa,CA+BzB;AA/ByB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACNiB;AACF;AAEiB;AACyB;AACvC;AAG5C,IAAa,mBAAmB,GAAhC,MAAa,mBAAmB;IAC9B,YACU,YAAyB,EACzB,OAAe;QADf,iBAAY,GAAZ,YAAY,CAAa;QACzB,YAAO,GAAP,OAAO,CAAQ;IACrB,CAAC;IAEQ,OAAO;;YAClB,IAAI;gBACF,IAAI,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,EAAE;oBAC/C,OAAO,IAAI,CAAC,WAAW,EAAE,CAAC;iBAC3B;gBAED,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,oDAAS,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;gBAErE,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;oBACzB,OAAO,uDAAe,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;gBAC3C,CAAC,CAAC,CAAC;aACJ;YAAC,OAAO,KAAK,EAAE;gBACd,IAAI,KAAK,YAAY,kDAAU,EAAE;oBAC/B,OAAO,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;iBAC9B;gBAED,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;gBACnB,OAAO,IAAI,CAAC;aACb;QACH,CAAC;KAAA;IAEY,GAAG,CAAC,WAAmB;;YAClC,IAAI;gBACF,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,oDAAS,CAAC,OAAO,CAAC,GAAG,EAAE,WAAW,CAAC,CAAC;gBAChF,IAAI,MAAM,EAAE;oBACV,OAAO,MAAM,CAAC;iBACf;aACF;YAAC,OAAO,KAAK,EAAE;gBACd,IAAI,KAAK,YAAY,kDAAU,EAAE;oBAC/B,OAAO,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;iBAC9B;aACF;QACH,CAAC;KAAA;IAEY,IAAI,CAAC,OAAyB;;YACzC,IAAI;gBACF,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,oDAAS,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAoB,CAAC;gBAChG,IAAI,MAAM,EAAE;oBACV,MAAM,gBAAgB,GAAG,uDAAe,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;oBAC7D,OAAO,gBAAgB,CAAC;iBACzB;aACF;YAAC,OAAO,KAAK,EAAE;gBACd,IAAI,KAAK,YAAY,kDAAU,EAAE;oBAC/B,OAAO,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;iBAC9B;aACF;QACH,CAAC;KAAA;IAEY,MAAM,CAAC,SAAiB;;YACnC,IAAI;gBACF,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,oDAAS,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,EAAE,EAAE,SAAS,EAAE,CAAC;gBACxF,OAAO,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;aACnC;YAAC,OAAO,KAAK,EAAE;gBACd,IAAI,KAAK,YAAY,kDAAU,EAAE;oBAC/B,OAAO,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;iBAC9B;aACF;QACH,CAAC;KAAA;IAEY,4BAA4B;;YACvC,IAAI;gBACF,IAAI,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,EAAE;oBAC/C,OAAO,IAAI,CAAC,WAAW,EAAE,CAAC;iBAC3B;gBAED,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,oDAAS,CAAC,OAAO,CAAC,4BAA4B,CAAC,CAAC;gBAC3F,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;oBACzB,OAAO,uDAAe,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;gBAC3C,CAAC,CAAC,CAAC;aACJ;YAAC,OAAO,KAAK,EAAE;gBACd,IAAI,KAAK,YAAY,kDAAU,EAAE;oBAC/B,OAAO,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;iBAC9B;gBAED,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;gBACnB,OAAO,IAAI,CAAC;aACb;QACH,CAAC;KAAA;IAEO,WAAW;QACjB,MAAM,IAAI,GAAG;YACX,EAAE,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE;YAC3B,EAAE,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE;YAC3B,EAAE,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE;YAC3B,EAAE,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE;YAC3B,EAAE,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE;SACN,CAAC;QACxB,OAAO,IAAI,CAAC;IACd,CAAC;CACF;;YA7FyB,mDAAW;YAChB,sDAAM;;AAHd,mBAAmB;IAD/B,gEAAU,EAAE;qCAGa,mDAAW;QAChB,sDAAM;GAHd,mBAAmB,CA+F/B;AA/F+B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACRW;AAE0B;AACsD;AAG3H,IAAa,uBAAuB,GAApC,MAAa,uBAAuB;IAClC,YACU,YAAyB;QAAzB,iBAAY,GAAZ,YAAY,CAAa;IAAI,CAAC;IAE3B,OAAO;;YAClB,IAAI;gBACF,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,iDAAS,CAAC,OAAO,CAAC,kBAAkB,CAA2B,CAAC;gBACzG,IAAI,IAAI,EAAE;oBACR,MAAM,iBAAiB,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,4DAAoB,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC;oBACnF,OAAO,iBAAiB,CAAC;iBAC1B;aACF;YAAC,OAAO,KAAK,EAAE;gBACd,OAAO,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;aACjC;QACH,CAAC;KAAA;IAEY,iBAAiB,CAAC,SAAiB;;YAC9C,IAAI;gBACF,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,iDAAS,CAAC,OAAO,CAAC,4BAA4B,EAAE,EAAE,SAAS,EAAE,SAAS,EAAE,CAAC,CAAC;gBACnH,OAAO,IAAI;aACZ;YAAC,OAAO,KAAK,EAAE;gBACd,OAAO,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;aACjC;QACH,CAAC;KAAA;IAEY,MAAM,CAAC,YAAqC;;YACvD,IAAI;gBACF,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,iDAAS,CAAC,OAAO,CAAC,eAAe,EAAE,YAAY,CAAC,CAAC;gBAC7F,IAAI,MAAM,IAAI,IAAI,EAAE;oBAClB,OAAO,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;iBAChC;aACF;YAAC,OAAO,KAAK,EAAE;gBACd,OAAO,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;aACjC;QACH,CAAC;KAAA;IAEY,IAAI,CAAC,YAAmC;;YACnD,IAAI;gBACF,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,IAAI,CAAE,iDAAS,CAAC,OAAO,CAAC,gBAAgB,EAAE,YAAY,CAAyB,CAAC;gBACvH,IAAI,MAAM,EAAE;oBACV,MAAM,qBAAqB,GAAG,4DAAoB,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;oBACvE,OAAO,OAAO,CAAC,OAAO,CAAC,qBAAqB,CAAC,CAAC;iBAC/C;aACF;YAAC,OAAO,KAAK,EAAE;gBACd,OAAO,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;aACjC;QACH,CAAC;KAAA;IAEY,MAAM,CAAC,cAAsB;;YACxC,IAAI;gBACF,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,IAAI,CAAE,iDAAS,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,EAAE,EAAE,cAAc,EAAE,CAAC;gBAClG,IAAI,MAAM,EAAE;oBACZ,OAAO,OAAO,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;iBACtC;aACF;YAAC,OAAO,KAAK,EAAE;gBACd,OAAO,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;aACjC;QACH,CAAC;KAAA;IAEO,YAAY,CAAC,KAAU;QAC7B,IAAI,KAAK,YAAY,kDAAU,EAAE;YAC/B,OAAO,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;SAC9B;QAED,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QACnB,OAAO,IAAI,CAAC;IACd,CAAC;CACF;;YAjEyB,mDAAW;;AAFxB,uBAAuB;IADnC,gEAAU,EAAE;qCAGa,mDAAW;GAFxB,uBAAuB,CAmEnC;AAnEmC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACNO;AAE0B;AACkD;AAC9E;AACI;AAG7C,IAAa,sBAAsB,GAAnC,MAAa,sBAAsB;IACjC,YACU,YAAyB,EACzB,OAAe;QADf,iBAAY,GAAZ,YAAY,CAAa;QACzB,YAAO,GAAP,OAAO,CAAQ;IAAI,CAAC;IAEjB,OAAO,CAAC,aAAqB;;YACxC,IAAI;gBACF,IAAI,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,EAAE;oBAC/C,OAAO,IAAI,CAAC,WAAW,EAAE,CAAC;iBAC3B;gBACD,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,iDAAS,CAAC,OAAO,CAAC,iBAAiB,EAAE,EAAE,SAAS,EAAE,aAAa,EAAE,CAAC,CAAC;gBAC5G,IAAI,IAAI,EAAE;oBACR,MAAM,gBAAgB,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,2DAAmB,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC;oBACjF,OAAO,gBAAgB,CAAC;iBACzB;aACF;YAAC,OAAO,KAAK,EAAE;gBACd,OAAO,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;aACjC;QACH,CAAC;KAAA;IAEY,MAAM,CAAC,WAAmC;;YACrD,IAAI;gBACF,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,iDAAS,CAAC,OAAO,CAAC,cAAc,EAAE,WAAW,CAAC,CAAC;gBAC3F,IAAI,MAAM,EAAE;oBACV,OAAO,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;iBAChC;aACF;YAAC,OAAO,KAAK,EAAE;gBACd,OAAO,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;aACjC;QACH,CAAC;KAAA;IAEY,IAAI,CAAC,WAAiC;;YACjD,IAAI;gBACF,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,iDAAS,CAAC,OAAO,CAAC,eAAe,EAAE,WAAW,CAAwB,CAAC;gBACnH,IAAI,MAAM,EAAE;oBACV,MAAM,oBAAoB,GAAG,2DAAmB,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;oBACrE,OAAO,OAAO,CAAC,OAAO,CAAC,oBAAoB,CAAC,CAAC;iBAC9C;aACF;YAAC,OAAO,KAAK,EAAE;gBACd,OAAO,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;aACjC;QACH,CAAC;KAAA;IAEY,MAAM,CAAC,aAAqB;;YACvC,IAAI;gBACF,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,iDAAS,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,EAAE,EAAE,aAAa,EAAE,CAAC,CAAC;gBACjG,IAAI,MAAM,EAAE;oBACV,OAAO,OAAO,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;iBACvC;aACF;YAAC,OAAO,KAAK,EAAE;gBACd,OAAO,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;aACjC;QACH,CAAC;KAAA;IAEO,YAAY,CAAC,KAAU;QAC7B,IAAI,KAAK,YAAY,kDAAU,EAAE;YAC/B,OAAO,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;SAC9B;QAED,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QACnB,OAAO,IAAI,CAAC;IACd,CAAC;IAEM,WAAW;QAChB,MAAM,IAAI,GAAG;YACX,EAAE,EAAE,EAAE,CAAC,EAAE,SAAS,EAAE,WAAW,EAAE,QAAQ,EAAE,UAAU,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,qDAAc,CAAC,MAAM,EAAE,gBAAgB,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC,EAAE,oBAAoB,EAAE,CAAC,WAAW,EAAE,WAAW,CAAC,EAAE,kBAAkB,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC,EAAE,sBAAsB,EAAE,CAAC,WAAW,EAAE,WAAW,CAAC,EAAE,YAAY,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC,EAAE,iBAAiB,EAAE,CAAC,WAAW,EAAE,WAAW,CAAC,EAAE,aAAa,EAAE,IAAI,IAAI,EAAE;YAClgB,EAAE,EAAE,EAAE,CAAC,EAAE,SAAS,EAAE,YAAY,EAAE,QAAQ,EAAE,WAAW,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,qDAAc,CAAC,MAAM,EAAE,gBAAgB,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC,EAAE,oBAAoB,EAAE,CAAC,WAAW,EAAE,WAAW,CAAC,EAAE,kBAAkB,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC,EAAE,sBAAsB,EAAE,CAAC,WAAW,EAAE,WAAW,CAAC,EAAE,YAAY,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC,EAAE,iBAAiB,EAAE,CAAC,WAAW,EAAE,WAAW,CAAC,EAAE,aAAa,EAAE,IAAI,IAAI,EAAE;SAC5e,CAAC;QAC5B,OAAO,IAAI,CAAC;IACd,CAAC;CACF;;YApEyB,mDAAW;YAChB,sDAAM;;AAHd,sBAAsB;IADlC,gEAAU,EAAE;qCAGa,mDAAW;QAChB,sDAAM;GAHd,sBAAsB,CAsElC;AAtEkC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACRQ;AACF;AAGmB;AAChB;AAK5C,IAAa,mBAAmB,GAAhC,MAAa,mBAAmB;IAE9B,YACU,YAAyB,EACzB,OAAe;QADf,iBAAY,GAAZ,YAAY,CAAa;QACzB,YAAO,GAAP,OAAO,CAAQ;IAAI,CAAC;IAEjB,eAAe,CAAC,QAAgB;;YAC3C,IAAI;gBACF,IAAI,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,EAAE;oBAC/C,OAAO,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;iBACnC;gBAED,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,oDAAS,CAAC,SAAS,CAAC,oBAAoB,EAAE,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC,CAAC;gBAC3G,IAAI,IAAI,EAAE;oBACR,OAAO,IAAI,CAAC;iBACb;aAEF;YAAC,OAAO,KAAK,EAAE;gBACd,OAAO,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;aACjC;QACH,CAAC;KAAA;IAEY,eAAe,CAAC,QAAgB,EAAE,QAAgB;;YAC7D,IAAI;gBACF,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,cAAc,CAAC,oDAAS,CAAC,SAAS,CAAC,eAAe,EAAE,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC,CAAC;gBACvI,OAAO,MAAM,CAAC;aACf;YAAC,OAAO,KAAK,EAAE;gBACd,OAAO,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;aACjC;QACH,CAAC;KAAA;IAEY,gBAAgB,CAAC,QAAgB,EAAE,SAAmB;;YACjE,IAAI;gBACF,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,eAAe,CAAC,oDAAS,CAAC,SAAS,CAAC,gBAAgB,EAAE,EAAE,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAE,SAAS,EAAE,CAAC,CAAC;gBAC3I,OAAO,MAAM,CAAC;aACf;YAAC,OAAO,KAAK,EAAE;gBACd,OAAO,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;aACjC;QACH,CAAC;KAAA;IAEY,sBAAsB,CAAC,QAAgB;;YAClD,IAAI;gBACF,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,oDAAS,CAAC,SAAS,CAAC,sBAAsB,EAAG,QAAQ,CAAE,CAAC;gBACpG,OAAO,MAAM,CAAC;aACf;YAAC,OAAO,KAAK,EAAE;gBACd,OAAO,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;aACjC;QACH,CAAC;KAAA;IAEO,YAAY,CAAC,KAAU;QAC7B,IAAI,KAAK,YAAY,kDAAU,EAAE;YAC/B,OAAO,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;SAC9B;QAED,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QACnB,OAAO,IAAI,CAAC;IACd,CAAC;IAEO,WAAW,CAAC,QAAgB;QAClC,IAAI,IAAI,GAAiC,EAAE,CAAC;QAC5C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE,EAAE;YAC5B,IAAI,CAAC,IAAI,CAAC,EAAE,WAAW,EAAE,IAAI,IAAI,EAAE,EAAE,gBAAgB,EAAE,IAAI,IAAI,EAAE,EAAE,uBAAuB,EAAE,aAAa,CAAC,MAAM,EAAE,QAAQ,EAAE,YAAY,CAAC,MAAM,EAAE,YAAY,EAAE,YAAY,CAAC,MAAM,EAAC,IAAI,EAAC,CAAC,EAAE,SAAS,EAAC,GAAG,CAAC,GAAC,EAAE,KAAK,EAAE,CAAC,CAAC;SACtN;QACD,IAAI,QAAQ,GAAG,EAAE,gBAAgB,EAAE,IAAI,EAAE,iBAAiB,EAAE,IAAI,EAA4B,CAAC;QAC7F,OAAO,QAAQ,CAAC;IAClB,CAAC;CACF;;YA/DyB,mDAAW;YAChB,sDAAM;;AAJd,mBAAmB;IAH/B,gEAAU,CAAC;QACV,UAAU,EAAE,MAAM;KACnB,CAAC;qCAIwB,mDAAW;QAChB,sDAAM;GAJd,mBAAmB,CAkE/B;AAlE+B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACVW;AACF;AAE4B;AAC6B;AAC3C;AAGvD,IAAa,sBAAsB,GAAnC,MAAa,sBAAsB;IAC/B,YACY,YAAyB,EACzB,OAAe;QADf,iBAAY,GAAZ,YAAY,CAAa;QACzB,YAAO,GAAP,OAAO,CAAQ;IAAI,CAAC;IAEnB,OAAO,CAAC,aAAqB;;YACtC,IAAI;gBACA,IAAI,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,EAAE;oBAC7C,OAAO,IAAI,CAAC,WAAW,EAAE,CAAC;iBAC7B;gBACD,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,iDAAS,CAAC,OAAO,CAAC,yCAAyC,EAAE,EAAE,SAAS,EAAE,aAAa,EAAE,CAA2B,CAAC;gBAC9J,IAAI,IAAI,EAAE;oBACN,MAAM,gBAAgB,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,4DAAoB,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC;oBAClF,OAAO,gBAAgB,CAAC;iBAC3B;aACJ;YAAC,OAAO,KAAK,EAAE;gBACZ,OAAO,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;aACnC;QACL,CAAC;KAAA;IAEY,OAAO,CAAC,YAAmC;;YACpD,IAAI;gBACA,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,iDAAS,CAAC,OAAO,CAAC,yCAAyC,EAAE,YAAY,CAAyB,CAAC;gBAC/I,IAAI,MAAM,EAAE;oBACR,MAAM,gBAAgB,GAAG,4DAAoB,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;oBAClE,OAAO,OAAO,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC;iBAC5C;aACJ;YAAC,OAAO,KAAK,EAAE;gBACZ,OAAO,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;aACnC;QACL,CAAC;KAAA;IAEY,MAAM,CAAC,EAAU,EAAE,SAAiB;;YAC7C,IAAI;gBACA,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,iDAAS,CAAC,OAAO,CAAC,wCAAwC,EAAE,EAAE,cAAc,EAAE,EAAE,EAAE,SAAS,EAAE,SAAS,EAAE,CAAC,CAAC;gBAExJ,OAAO,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;aAClC;YAAC,OAAO,KAAK,EAAE;gBACZ,OAAO,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;aACnC;QACL,CAAC;KAAA;IAEO,YAAY,CAAC,KAAU;QAC3B,IAAI,KAAK,YAAY,kDAAU,EAAE;YAC7B,OAAO,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;SAChC;QAED,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QACnB,OAAO,IAAI,CAAC;IAChB,CAAC;IAEO,WAAW;QACf,MAAM,IAAI,GAAG;YACT;gBACI,EAAE,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,gBAAgB,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,gBAAgB,CAAC,EAAE,YAAY,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC,EAAE,gBAAgB,EAAE,CAAC,WAAW,EAAE,WAAW,CAAC,EAAE,YAAY,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC,EAAE,gBAAgB,EAAE,CAAC,WAAW,EAAE,WAAW,CAAC,EAAE,YAAY,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC,EAAE,gBAAgB,EAAE,CAAC,WAAW,EAAE,WAAW,CAAC,EAAE,YAAY,EAAE,+DAAwB,CAAC,KAAK,EAAE,YAAY,EAAE,KAAK;gBACxgB,aAAa,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,aAAa,EAAE,CAAC,CAAC,CAAC,EAAE,aAAa,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;aACnE;YACD;gBACI,EAAE,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,iBAAiB,EAAE,iBAAiB,EAAE,uBAAuB,EAAE,iBAAiB,CAAC,EAAE,YAAY,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC,EAAE,gBAAgB,EAAE,CAAC,WAAW,EAAE,WAAW,CAAC,EAAE,YAAY,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC,EAAE,gBAAgB,EAAE,CAAC,WAAW,EAAE,WAAW,CAAC,EAAE,YAAY,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC,EAAE,gBAAgB,EAAE,CAAC,WAAW,EAAE,WAAW,CAAC,EAAE,YAAY,EAAE,+DAAwB,CAAC,MAAM,EAAE,YAAY,EAAE,KAAK;gBACnhB,aAAa,EAAE,CAAC,CAAC,CAAC,EAAE,aAAa,EAAE,CAAC,CAAC,CAAC,EAAE,aAAa,EAAE,CAAC,CAAC,CAAC;aAC7D;YACD;gBACI,EAAE,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,uBAAuB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,CAAC,EAAE,YAAY,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC,EAAE,gBAAgB,EAAE,CAAC,WAAW,EAAE,WAAW,CAAC,EAAE,YAAY,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC,EAAE,gBAAgB,EAAE,CAAC,WAAW,EAAE,WAAW,CAAC,EAAE,YAAY,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC,EAAE,gBAAgB,EAAE,CAAC,WAAW,EAAE,WAAW,CAAC,EAAE,YAAY,EAAE,+DAAwB,CAAC,OAAO,EAAE,YAAY,EAAE,KAAK;gBACphB,aAAa,EAAE,CAAC,CAAC,CAAC,EAAE,aAAa,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,aAAa,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;aACtE;SACuB,CAAC;QAC7B,OAAO,IAAI,CAAC;IAChB,CAAC;CACJ;;YAlE6B,mDAAW;YAChB,sDAAM;;AAHlB,sBAAsB;IADlC,gEAAU,EAAE;qCAGiB,mDAAW;QAChB,sDAAM;GAHlB,sBAAsB,CAoElC;AApEkC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACRQ;AACF;AAEiB;AACd;AACsM;AACrE;AAM7K,IAAa,mBAAmB,GAAhC,MAAa,mBAAmB;IAC9B,YACU,YAAyB,EACzB,OAAe;QADf,iBAAY,GAAZ,YAAY,CAAa;QACzB,YAAO,GAAP,OAAO,CAAQ;IACrB,CAAC;IAEL,6CAA6C;IAChC,GAAG,CAAC,QAAgB;;YAC/B,IAAI;gBACF,IAAI,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,EAAE;oBAC/C,OAAO,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;iBACnC;gBAED,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,oDAAS,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,QAAQ,EAAE,CAAC,CAAC;gBAElF,OAAO,oEAA4B,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;aACzD;YAAC,OAAO,KAAK,EAAE;gBACd,OAAO,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;aACjC;QACH,CAAC;KAAA;IAEY,WAAW,CAAC,KAAoC;;YAC3D,IAAI;gBACF,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,oDAAS,CAAC,SAAS,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;gBAC7E,OAAO,MAAM,CAAC;aACf;YAAC,OAAO,KAAK,EAAE;gBACd,OAAO,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;aACjC;QACH,CAAC;KAAA;IAEY,WAAW,CAAC,UAAkB,EAAE,WAAmB,EAAE,UAAoB;;YACpF,IAAI;gBACF,IAAI,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,EAAE;oBAC/C,IAAI,MAAM,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC,UAAU,CAAC,CAAC;oBACrD,OAAO,MAAuC,CAAC;iBAChD;gBAED,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,oDAAS,CAAC,SAAS,CAAC,WAAW,EAAE,EAAE,UAAU,EAAE,UAAU,EAAE,WAAW,EAAE,WAAW,EAAE,UAAU,EAAE,UAAU,EAAE,CAA0B,CAAC;gBACpL,OAAO,MAAM,CAAC,OAAO,CAAC;aACvB;YAAC,OAAO,KAAK,EAAE;gBACd,OAAO,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;aACjC;QACH,CAAC;KAAA;IAEY,yBAAyB,CAAC,WAAmB;;YACxD,IAAI;gBACF,IAAI,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,EAAE;oBAC/C,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,6BAA6B,CAAC,WAAW,CAAC,CAAC;oBACrE,OAAO,yEAAiC,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;iBAC9D;gBAED,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,oDAAS,CAAC,SAAS,CAAC,yBAAyB,EAAE,EAAE,WAAW,EAAE,WAAW,EAAE,CAAsC,CAAC;gBAC7J,OAAO,yEAAiC,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;aAC9D;YAAC,OAAO,KAAK,EAAE;gBACd,OAAO,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;aACjC;QACH,CAAC;KAAA;IAEO,6BAA6B,CAAC,WAAmB;QACvD,MAAM,kBAAkB,GAAuB,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,WAAW,CAAC,CAAC;QAEnH,IAAI,CAAC,kBAAkB,EAAE;YACvB,OAAO,IAAI,CAAC;SACb;QAED,MAAM,MAAM,GAAsC;YAChD,EAAE,EAAE,kBAAkB,CAAC,EAAE;YACzB,IAAI,EAAE,kBAAkB,CAAC,IAAI;YAC7B,IAAI,EAAE,kBAAkB,CAAC,IAAI;YAC7B,OAAO,EAAE,kBAAkB,CAAC,OAAO;YACnC,YAAY,EAAE,eAAe;YAC7B,UAAU,EAAE,CAAC;YACb,yBAAyB,EAAE,kBAAkB,CAAC,yBAAyB;YACvE,kBAAkB,EAAE,kBAAkB,CAAC,kBAAkB;YACzD,SAAS,EAAE,UAAU;YACrB,eAAe,EAAE,EAAE;YACnB,qBAAqB,EAAE,IAAI;YAC3B,aAAa,EAAE,IAAI;YACnB,OAAO,EAAE,kBAAkB,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,EAAE;gBACjD,MAAM,MAAM,GAAG,IAAI,CAAC,yBAAyB,CAAC,6DAAsB,CAAC,CAAC;gBACtE,OAAO;oBACL,EAAE,EAAE,CAAC,CAAC,EAAE;oBACR,IAAI,EAAE,CAAC,CAAC,IAAI;oBACZ,QAAQ,EAAE,CAAC,CAAC,QAAQ;oBACpB,IAAI,EAAE,CAAC,CAAC,IAAI;oBACZ,KAAK,EAAE,CAAC,GAAG,GAAG;oBACd,MAAM,EAAE,MAAM;oBACd,SAAS,EAAE,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC;iBAC3C;YACH,CAAC,CAAC;SACH;QAED,OAAO,MAAM,CAAC;IAChB,CAAC;IAEY,UAAU,CAAC,WAAmB,EAAE,UAAkB;;YAC7D,IAAI;gBACF,IAAI,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,EAAE;oBAC/C,sCAAsC;iBACvC;gBAED,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,oDAAS,CAAC,SAAS,CAAC,uBAAuB,EAAE,EAAE,WAAW,EAAE,UAAU,EAAE,CAAC,CAAC;gBAErH,OAAO,MAAM,CAAC;aACf;YAAC,OAAO,KAAK,EAAE;gBACd,OAAO,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;aACjC;QACH,CAAC;KAAA;IAEY,6BAA6B,CAAC,OAA6B;;YACtE,IAAI;gBACF,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,oDAAS,CAAC,SAAS,CAAC,6BAA6B,EAAE,OAAO,CAAsC,CAAC;gBAC7I,OAAO,MAAM,CAAC;aACf;YAAC,OAAO,KAAK,EAAE;gBACd,OAAO,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;aACjC;QACH,CAAC;KAAA;IAEO,YAAY,CAAC,KAAU;QAC7B,IAAI,KAAK,YAAY,kDAAU,EAAE;YAC/B,OAAO,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;SAC9B;QAED,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QACnB,OAAO,IAAI,CAAC;IACd,CAAC;IAEO,WAAW,CAAC,QAAgB;QAClC,MAAM,UAAU,GAAG;YACjB;gBACE,EAAE,EAAE,CAAC;gBACL,IAAI,EAAE,wDAAiB,CAAC,IAAI;gBAC5B,OAAO,EAAE,2DAAoB,CAAC,KAAK;gBACnC,IAAI,EAAE,mBAAmB;gBACzB,iCAAiC,EAAE,CAAC;gBACpC,kCAAkC,EAAE,KAAK;gBACzC,0BAA0B,EAAE,CAAC;gBAC7B,oBAAoB,EAAE,CAAC;gBACvB,uBAAuB,EAAE,CAAC;gBAC1B,iCAAiC,EAAE,CAAC;gBACpC,oCAAoC,EAAE,CAAC;gBACvC,mBAAmB,EAAE,EAAE;gBACvB,aAAa,EAAE,IAAI;gBACnB,OAAO,EAAE,CAAC;wBACR,EAAE,EAAE,CAAC;wBACL,IAAI,EAAE,qDAAc,CAAC,UAAU;wBAC/B,QAAQ,EAAE,yDAAkB,CAAC,0BAA0B;wBACvD,IAAI,EAAE,wDAAiB,CAAC,IAAI;wBAC5B,aAAa,EAAE,KAAK;wBACpB,cAAc,EAAE,GAAG;wBACnB,iBAAiB,EAAE,CAAC;wBACpB,YAAY,EAAE,EAAE;wBAChB,eAAe,EAAE,CAAC;wBAClB,0BAA0B,EAAE,EAAE;wBAC9B,6BAA6B,EAAE,CAAC;wBAChC,wBAAwB,EAAE,CAAC;wBAC3B,2BAA2B,EAAE,EAAE;qBAChC,CAAsB;aACxB;YACD;gBACE,EAAE,EAAE,CAAC;gBACL,IAAI,EAAE,wDAAiB,CAAC,IAAI;gBAC5B,OAAO,EAAE,2DAAoB,CAAC,MAAM;gBACpC,IAAI,EAAE,oBAAoB;gBAC1B,iCAAiC,EAAE,CAAC;gBACpC,kCAAkC,EAAE,KAAK;gBACzC,0BAA0B,EAAE,CAAC;gBAC7B,oBAAoB,EAAE,CAAC;gBACvB,uBAAuB,EAAE,CAAC;gBAC1B,iCAAiC,EAAE,CAAC;gBACpC,oCAAoC,EAAE,CAAC;gBACvC,mBAAmB,EAAE,EAAE;gBACvB,aAAa,EAAE,IAAI;gBACnB,OAAO,EAAE,CAAC;wBACR,EAAE,EAAE,CAAC;wBACL,IAAI,EAAE,qDAAc,CAAC,UAAU;wBAC/B,QAAQ,EAAE,yDAAkB,CAAC,0BAA0B;wBACvD,IAAI,EAAE,wDAAiB,CAAC,IAAI;wBAC5B,aAAa,EAAE,KAAK;wBACpB,cAAc,EAAE,GAAG;wBACnB,iBAAiB,EAAE,CAAC;wBACpB,YAAY,EAAE,EAAE;wBAChB,eAAe,EAAE,CAAC;wBAClB,0BAA0B,EAAE,EAAE;wBAC9B,6BAA6B,EAAE,CAAC;wBAChC,wBAAwB,EAAE,CAAC;wBAC3B,2BAA2B,EAAE,EAAE;qBAChC,CAAsB;aACxB;YACD;gBACE,EAAE,EAAE,CAAC;gBACL,IAAI,EAAE,wDAAiB,CAAC,IAAI;gBAC5B,OAAO,EAAE,2DAAoB,CAAC,KAAK;gBACnC,IAAI,EAAE,mBAAmB;gBACzB,iCAAiC,EAAE,CAAC;gBACpC,kCAAkC,EAAE,KAAK;gBACzC,0BAA0B,EAAE,CAAC;gBAC7B,oBAAoB,EAAE,CAAC;gBACvB,uBAAuB,EAAE,CAAC;gBAC1B,iCAAiC,EAAE,CAAC;gBACpC,oCAAoC,EAAE,CAAC;gBACvC,mBAAmB,EAAE,EAAE;gBACvB,aAAa,EAAE,IAAI;gBACnB,OAAO,EAAE,CAAC;wBACR,EAAE,EAAE,CAAC;wBACL,IAAI,EAAE,qDAAc,CAAC,UAAU;wBAC/B,QAAQ,EAAE,yDAAkB,CAAC,0BAA0B;wBACvD,IAAI,EAAE,wDAAiB,CAAC,IAAI;wBAC5B,aAAa,EAAE,KAAK;wBACpB,cAAc,EAAE,GAAG;wBACnB,iBAAiB,EAAE,CAAC;wBACpB,YAAY,EAAE,EAAE;wBAChB,eAAe,EAAE,CAAC;wBAClB,0BAA0B,EAAE,EAAE;wBAC9B,6BAA6B,EAAE,CAAC;wBAChC,wBAAwB,EAAE,CAAC;wBAC3B,2BAA2B,EAAE,EAAE;qBAChC,CAAsB;aACxB;YACD,SAAS;YACT;gBACE,EAAE,EAAE,CAAC;gBACL,IAAI,EAAE,wDAAiB,CAAC,GAAG;gBAC3B,OAAO,EAAE,2DAAoB,CAAC,eAAe;gBAC7C,IAAI,EAAE,qCAAqC;gBAC3C,iCAAiC,EAAE,CAAC;gBACpC,kCAAkC,EAAE,KAAK;gBACzC,0BAA0B,EAAE,CAAC;gBAC7B,oBAAoB,EAAE,CAAC;gBACvB,uBAAuB,EAAE,CAAC;gBAC1B,iCAAiC,EAAE,CAAC;gBACpC,oCAAoC,EAAE,CAAC;gBACvC,mBAAmB,EAAE,EAAE;gBACvB,aAAa,EAAE,IAAI;gBACnB,OAAO,EAAE;oBACP;wBACE,EAAE,EAAE,CAAC;wBACL,IAAI,EAAE,qDAAc,CAAC,kBAAkB;wBACvC,QAAQ,EAAE,yDAAkB,CAAC,IAAI;wBACjC,IAAI,EAAE,wDAAiB,CAAC,KAAK;wBAC7B,aAAa,EAAE,KAAK;wBACpB,cAAc,EAAE,GAAG;wBACnB,iBAAiB,EAAE,CAAC;wBACpB,YAAY,EAAE,EAAE;wBAChB,eAAe,EAAE,CAAC;wBAClB,0BAA0B,EAAE,EAAE;wBAC9B,6BAA6B,EAAE,CAAC;wBAChC,wBAAwB,EAAE,CAAC;wBAC3B,2BAA2B,EAAE,EAAE;qBAChC;oBACD;wBACE,EAAE,EAAE,CAAC;wBACL,IAAI,EAAE,qDAAc,CAAC,kBAAkB;wBACvC,QAAQ,EAAE,yDAAkB,CAAC,IAAI;wBACjC,IAAI,EAAE,wDAAiB,CAAC,KAAK;wBAC7B,aAAa,EAAE,KAAK;wBACpB,cAAc,EAAE,GAAG;wBACnB,iBAAiB,EAAE,CAAC;wBACpB,YAAY,EAAE,EAAE;wBAChB,eAAe,EAAE,CAAC;wBAClB,0BAA0B,EAAE,EAAE;wBAC9B,6BAA6B,EAAE,CAAC;wBAChC,wBAAwB,EAAE,CAAC;wBAC3B,2BAA2B,EAAE,EAAE;wBAC/B,mBAAmB,EAAE,EAAE;wBACvB,aAAa,EAAE,IAAI;qBACpB,EAAE;wBACD,EAAE,EAAE,CAAC;wBACL,IAAI,EAAE,qDAAc,CAAC,kBAAkB;wBACvC,QAAQ,EAAE,yDAAkB,CAAC,IAAI;wBACjC,IAAI,EAAE,wDAAiB,CAAC,KAAK;wBAC7B,aAAa,EAAE,KAAK;wBACpB,cAAc,EAAE,GAAG;wBACnB,iBAAiB,EAAE,CAAC;wBACpB,YAAY,EAAE,EAAE;wBAChB,eAAe,EAAE,CAAC;wBAClB,0BAA0B,EAAE,EAAE;wBAC9B,6BAA6B,EAAE,CAAC;wBAChC,wBAAwB,EAAE,CAAC;wBAC3B,2BAA2B,EAAE,EAAE;wBAC/B,mBAAmB,EAAE,EAAE;wBACvB,aAAa,EAAE,IAAI;qBACpB,EAAE;wBACD,EAAE,EAAE,CAAC;wBACL,IAAI,EAAE,qDAAc,CAAC,kBAAkB;wBACvC,QAAQ,EAAE,yDAAkB,CAAC,IAAI;wBACjC,IAAI,EAAE,wDAAiB,CAAC,KAAK;wBAC7B,aAAa,EAAE,KAAK;wBACpB,cAAc,EAAE,GAAG;wBACnB,iBAAiB,EAAE,CAAC;wBACpB,YAAY,EAAE,EAAE;wBAChB,eAAe,EAAE,CAAC;wBAClB,0BAA0B,EAAE,EAAE;wBAC9B,6BAA6B,EAAE,CAAC;wBAChC,wBAAwB,EAAE,CAAC;wBAC3B,2BAA2B,EAAE,EAAE;qBAChC,EAAE;wBACD,EAAE,EAAE,CAAC;wBACL,IAAI,EAAE,qDAAc,CAAC,kBAAkB;wBACvC,QAAQ,EAAE,yDAAkB,CAAC,IAAI;wBACjC,IAAI,EAAE,wDAAiB,CAAC,KAAK;wBAC7B,aAAa,EAAE,KAAK;wBACpB,cAAc,EAAE,GAAG;wBACnB,iBAAiB,EAAE,CAAC;wBACpB,YAAY,EAAE,EAAE;wBAChB,eAAe,EAAE,CAAC;wBAClB,0BAA0B,EAAE,EAAE;wBAC9B,6BAA6B,EAAE,CAAC;wBAChC,wBAAwB,EAAE,CAAC;wBAC3B,2BAA2B,EAAE,EAAE;qBAChC,EAAE;wBACD,EAAE,EAAE,CAAC;wBACL,IAAI,EAAE,qDAAc,CAAC,kBAAkB;wBACvC,QAAQ,EAAE,yDAAkB,CAAC,IAAI;wBACjC,IAAI,EAAE,wDAAiB,CAAC,KAAK;wBAC7B,aAAa,EAAE,KAAK;wBACpB,cAAc,EAAE,GAAG;wBACnB,iBAAiB,EAAE,CAAC;wBACpB,YAAY,EAAE,EAAE;wBAChB,eAAe,EAAE,CAAC;wBAClB,0BAA0B,EAAE,EAAE;wBAC9B,6BAA6B,EAAE,CAAC;wBAChC,wBAAwB,EAAE,CAAC;wBAC3B,2BAA2B,EAAE,EAAE;qBAChC,EAAE;wBACD,EAAE,EAAE,CAAC;wBACL,IAAI,EAAE,qDAAc,CAAC,mBAAmB;wBACxC,QAAQ,EAAE,yDAAkB,CAAC,IAAI;wBACjC,IAAI,EAAE,wDAAiB,CAAC,KAAK;wBAC7B,aAAa,EAAE,KAAK;wBACpB,cAAc,EAAE,GAAG;wBACnB,iBAAiB,EAAE,CAAC;wBACpB,YAAY,EAAE,EAAE;wBAChB,eAAe,EAAE,CAAC;wBAClB,0BAA0B,EAAE,EAAE;wBAC9B,6BAA6B,EAAE,CAAC;wBAChC,wBAAwB,EAAE,CAAC;wBAC3B,2BAA2B,EAAE,EAAE;qBAChC,EAAE;wBACD,EAAE,EAAE,CAAC;wBACL,IAAI,EAAE,qDAAc,CAAC,mBAAmB;wBACxC,QAAQ,EAAE,yDAAkB,CAAC,IAAI;wBACjC,IAAI,EAAE,wDAAiB,CAAC,KAAK;wBAC7B,aAAa,EAAE,KAAK;wBACpB,cAAc,EAAE,GAAG;wBACnB,iBAAiB,EAAE,CAAC;wBACpB,YAAY,EAAE,EAAE;wBAChB,eAAe,EAAE,CAAC;wBAClB,0BAA0B,EAAE,EAAE;wBAC9B,6BAA6B,EAAE,CAAC;wBAChC,wBAAwB,EAAE,CAAC;wBAC3B,2BAA2B,EAAE,EAAE;qBAChC,EAAE;wBACD,EAAE,EAAE,CAAC;wBACL,IAAI,EAAE,qDAAc,CAAC,mBAAmB;wBACxC,QAAQ,EAAE,yDAAkB,CAAC,IAAI;wBACjC,IAAI,EAAE,wDAAiB,CAAC,KAAK;wBAC7B,aAAa,EAAE,KAAK;wBACpB,cAAc,EAAE,GAAG;wBACnB,iBAAiB,EAAE,CAAC;wBACpB,YAAY,EAAE,EAAE;wBAChB,eAAe,EAAE,CAAC;wBAClB,0BAA0B,EAAE,EAAE;wBAC9B,6BAA6B,EAAE,CAAC;wBAChC,wBAAwB,EAAE,CAAC;wBAC3B,2BAA2B,EAAE,EAAE;qBAChC,EAAE;wBACD,EAAE,EAAE,EAAE;wBACN,IAAI,EAAE,qDAAc,CAAC,mBAAmB;wBACxC,QAAQ,EAAE,yDAAkB,CAAC,IAAI;wBACjC,IAAI,EAAE,wDAAiB,CAAC,KAAK;wBAC7B,aAAa,EAAE,KAAK;wBACpB,cAAc,EAAE,GAAG;wBACnB,iBAAiB,EAAE,CAAC;wBACpB,YAAY,EAAE,EAAE;wBAChB,eAAe,EAAE,CAAC;wBAClB,0BAA0B,EAAE,EAAE;wBAC9B,6BAA6B,EAAE,CAAC;wBAChC,wBAAwB,EAAE,CAAC;wBAC3B,2BAA2B,EAAE,EAAE;qBAChC,EAAE;wBACD,EAAE,EAAE,EAAE;wBACN,IAAI,EAAE,qDAAc,CAAC,KAAK;wBAC1B,QAAQ,EAAE,yDAAkB,CAAC,eAAe;wBAC5C,IAAI,EAAE,wDAAiB,CAAC,IAAI;wBAC5B,aAAa,EAAE,KAAK;wBACpB,cAAc,EAAE,GAAG;wBACnB,iBAAiB,EAAE,CAAC;wBACpB,YAAY,EAAE,EAAE;wBAChB,eAAe,EAAE,CAAC;wBAClB,0BAA0B,EAAE,EAAE;wBAC9B,6BAA6B,EAAE,CAAC;wBAChC,wBAAwB,EAAE,CAAC;wBAC3B,2BAA2B,EAAE,EAAE;qBAChC,EAAE;wBACD,EAAE,EAAE,EAAE;wBACN,IAAI,EAAE,qDAAc,CAAC,kBAAkB;wBACvC,QAAQ,EAAE,yDAAkB,CAAC,IAAI;wBACjC,IAAI,EAAE,wDAAiB,CAAC,KAAK;wBAC7B,aAAa,EAAE,KAAK;wBACpB,cAAc,EAAE,GAAG;wBACnB,iBAAiB,EAAE,CAAC;wBACpB,YAAY,EAAE,EAAE;wBAChB,eAAe,EAAE,CAAC;wBAClB,0BAA0B,EAAE,EAAE;wBAC9B,6BAA6B,EAAE,CAAC;wBAChC,wBAAwB,EAAE,CAAC;wBAC3B,2BAA2B,EAAE,EAAE;qBAChC,EAAE;wBACD,EAAE,EAAE,EAAE;wBACN,IAAI,EAAE,qDAAc,CAAC,kBAAkB;wBACvC,QAAQ,EAAE,yDAAkB,CAAC,IAAI;wBACjC,IAAI,EAAE,wDAAiB,CAAC,KAAK;wBAC7B,aAAa,EAAE,KAAK;wBACpB,cAAc,EAAE,GAAG;wBACnB,iBAAiB,EAAE,CAAC;wBACpB,YAAY,EAAE,EAAE;wBAChB,eAAe,EAAE,CAAC;wBAClB,0BAA0B,EAAE,EAAE;wBAC9B,6BAA6B,EAAE,CAAC;wBAChC,wBAAwB,EAAE,CAAC;wBAC3B,2BAA2B,EAAE,EAAE;qBAChC,EAAE;wBACD,EAAE,EAAE,EAAE;wBACN,IAAI,EAAE,qDAAc,CAAC,uBAAuB;wBAC5C,QAAQ,EAAE,yDAAkB,CAAC,IAAI;wBACjC,IAAI,EAAE,wDAAiB,CAAC,KAAK;wBAC7B,aAAa,EAAE,KAAK;wBACpB,cAAc,EAAE,GAAG;wBACnB,iBAAiB,EAAE,CAAC;wBACpB,YAAY,EAAE,EAAE;wBAChB,eAAe,EAAE,CAAC;wBAClB,0BAA0B,EAAE,EAAE;wBAC9B,6BAA6B,EAAE,CAAC;wBAChC,wBAAwB,EAAE,CAAC;wBAC3B,2BAA2B,EAAE,EAAE;qBAChC,EAAE;wBACD,EAAE,EAAE,EAAE;wBACN,IAAI,EAAE,qDAAc,CAAC,uBAAuB;wBAC5C,QAAQ,EAAE,yDAAkB,CAAC,IAAI;wBACjC,IAAI,EAAE,wDAAiB,CAAC,KAAK;wBAC7B,aAAa,EAAE,KAAK;wBACpB,cAAc,EAAE,GAAG;wBACnB,iBAAiB,EAAE,CAAC;wBACpB,YAAY,EAAE,EAAE;wBAChB,eAAe,EAAE,CAAC;wBAClB,0BAA0B,EAAE,EAAE;wBAC9B,6BAA6B,EAAE,CAAC;wBAChC,wBAAwB,EAAE,CAAC;wBAC3B,2BAA2B,EAAE,EAAE;qBAChC;oBACD;wBACE,EAAE,EAAE,EAAE;wBACN,IAAI,EAAE,qDAAc,CAAC,cAAc;wBACnC,QAAQ,EAAE,yDAAkB,CAAC,eAAe;wBAC5C,IAAI,EAAE,wDAAiB,CAAC,IAAI;wBAC5B,aAAa,EAAE,KAAK;wBACpB,cAAc,EAAE,GAAG;wBACnB,iBAAiB,EAAE,CAAC;wBACpB,YAAY,EAAE,EAAE;wBAChB,eAAe,EAAE,CAAC;wBAClB,0BAA0B,EAAE,IAAI;wBAChC,6BAA6B,EAAE,IAAI;wBACnC,wBAAwB,EAAE,IAAI;wBAC9B,2BAA2B,EAAE,IAAI;qBAClC;oBACD;wBACE,EAAE,EAAE,EAAE;wBACN,IAAI,EAAE,qDAAc,CAAC,iBAAiB;wBACtC,QAAQ,EAAE,yDAAkB,CAAC,eAAe;wBAC5C,IAAI,EAAE,wDAAiB,CAAC,IAAI;wBAC5B,aAAa,EAAE,KAAK;wBACpB,cAAc,EAAE,GAAG;wBACnB,iBAAiB,EAAE,CAAC;wBACpB,YAAY,EAAE,EAAE;wBAChB,eAAe,EAAE,CAAC;wBAClB,0BAA0B,EAAE,IAAI;wBAChC,6BAA6B,EAAE,IAAI;wBACnC,wBAAwB,EAAE,IAAI;wBAC9B,2BAA2B,EAAE,IAAI;qBAClC;oBACD;wBACE,EAAE,EAAE,EAAE;wBACN,IAAI,EAAE,qDAAc,CAAC,SAAS;wBAC9B,QAAQ,EAAE,yDAAkB,CAAC,KAAK;wBAClC,IAAI,EAAE,wDAAiB,CAAC,IAAI;wBAC5B,aAAa,EAAE,KAAK;wBACpB,cAAc,EAAE,GAAG;wBACnB,iBAAiB,EAAE,CAAC;wBACpB,YAAY,EAAE,EAAE;wBAChB,eAAe,EAAE,CAAC;wBAClB,0BAA0B,EAAE,IAAI;wBAChC,6BAA6B,EAAE,IAAI;wBACnC,wBAAwB,EAAE,IAAI;wBAC9B,2BAA2B,EAAE,IAAI;qBAClC;oBACD;wBACE,EAAE,EAAE,EAAE;wBACN,IAAI,EAAE,qDAAc,CAAC,SAAS;wBAC9B,QAAQ,EAAE,yDAAkB,CAAC,KAAK;wBAClC,IAAI,EAAE,wDAAiB,CAAC,IAAI;wBAC5B,aAAa,EAAE,KAAK;wBACpB,cAAc,EAAE,GAAG;wBACnB,iBAAiB,EAAE,CAAC;wBACpB,YAAY,EAAE,EAAE;wBAChB,eAAe,EAAE,CAAC;wBAClB,0BAA0B,EAAE,IAAI;wBAChC,6BAA6B,EAAE,IAAI;wBACnC,wBAAwB,EAAE,IAAI;wBAC9B,2BAA2B,EAAE,IAAI;qBAClC;iBACmB;aACvB;YACD;gBACE,EAAE,EAAE,CAAC;gBACL,IAAI,EAAE,wDAAiB,CAAC,GAAG;gBAC3B,OAAO,EAAE,2DAAoB,CAAC,kBAAkB;gBAChD,IAAI,EAAE,wCAAwC;gBAC9C,iCAAiC,EAAE,CAAC;gBACpC,kCAAkC,EAAE,KAAK;gBACzC,0BAA0B,EAAE,CAAC;gBAC7B,oBAAoB,EAAE,CAAC;gBACvB,uBAAuB,EAAE,CAAC;gBAC1B,iCAAiC,EAAE,CAAC;gBACpC,oCAAoC,EAAE,CAAC;gBACvC,OAAO,EAAE,CAAC;wBACR,EAAE,EAAE,CAAC;wBACL,IAAI,EAAE,qDAAc,CAAC,kBAAkB;wBACvC,QAAQ,EAAE,yDAAkB,CAAC,IAAI;wBACjC,IAAI,EAAE,wDAAiB,CAAC,KAAK;wBAC7B,aAAa,EAAE,KAAK;wBACpB,cAAc,EAAE,GAAG;wBACnB,iBAAiB,EAAE,CAAC;wBACpB,YAAY,EAAE,EAAE;wBAChB,eAAe,EAAE,CAAC;wBAClB,0BAA0B,EAAE,EAAE;wBAC9B,6BAA6B,EAAE,CAAC;wBAChC,wBAAwB,EAAE,CAAC;wBAC3B,2BAA2B,EAAE,EAAE;qBAChC,EAAE;wBACD,EAAE,EAAE,CAAC;wBACL,IAAI,EAAE,qDAAc,CAAC,kBAAkB;wBACvC,QAAQ,EAAE,yDAAkB,CAAC,IAAI;wBACjC,IAAI,EAAE,wDAAiB,CAAC,KAAK;wBAC7B,aAAa,EAAE,KAAK;wBACpB,cAAc,EAAE,GAAG;wBACnB,iBAAiB,EAAE,CAAC;wBACpB,YAAY,EAAE,EAAE;wBAChB,eAAe,EAAE,CAAC;wBAClB,0BAA0B,EAAE,EAAE;wBAC9B,6BAA6B,EAAE,CAAC;wBAChC,wBAAwB,EAAE,CAAC;wBAC3B,2BAA2B,EAAE,EAAE;qBAChC,EAAE;wBACD,EAAE,EAAE,CAAC;wBACL,IAAI,EAAE,qDAAc,CAAC,kBAAkB;wBACvC,QAAQ,EAAE,yDAAkB,CAAC,IAAI;wBACjC,IAAI,EAAE,wDAAiB,CAAC,KAAK;wBAC7B,aAAa,EAAE,KAAK;wBACpB,cAAc,EAAE,GAAG;wBACnB,iBAAiB,EAAE,CAAC;wBACpB,YAAY,EAAE,EAAE;wBAChB,eAAe,EAAE,CAAC;wBAClB,0BAA0B,EAAE,EAAE;wBAC9B,6BAA6B,EAAE,CAAC;wBAChC,wBAAwB,EAAE,CAAC;wBAC3B,2BAA2B,EAAE,EAAE;qBAChC,EAAE;wBACD,EAAE,EAAE,CAAC;wBACL,IAAI,EAAE,qDAAc,CAAC,kBAAkB;wBACvC,QAAQ,EAAE,yDAAkB,CAAC,IAAI;wBACjC,IAAI,EAAE,wDAAiB,CAAC,KAAK;wBAC7B,aAAa,EAAE,KAAK;wBACpB,cAAc,EAAE,GAAG;wBACnB,iBAAiB,EAAE,CAAC;wBACpB,YAAY,EAAE,EAAE;wBAChB,eAAe,EAAE,CAAC;wBAClB,0BAA0B,EAAE,EAAE;wBAC9B,6BAA6B,EAAE,CAAC;wBAChC,wBAAwB,EAAE,CAAC;wBAC3B,2BAA2B,EAAE,EAAE;qBAChC,EAAE;wBACD,EAAE,EAAE,CAAC;wBACL,IAAI,EAAE,qDAAc,CAAC,mBAAmB;wBACxC,QAAQ,EAAE,yDAAkB,CAAC,IAAI;wBACjC,IAAI,EAAE,wDAAiB,CAAC,KAAK;wBAC7B,aAAa,EAAE,KAAK;wBACpB,cAAc,EAAE,GAAG;wBACnB,iBAAiB,EAAE,CAAC;wBACpB,YAAY,EAAE,EAAE;wBAChB,eAAe,EAAE,CAAC;wBAClB,0BAA0B,EAAE,EAAE;wBAC9B,6BAA6B,EAAE,CAAC;wBAChC,wBAAwB,EAAE,CAAC;wBAC3B,2BAA2B,EAAE,EAAE;qBAChC,EAAE;wBACD,EAAE,EAAE,CAAC;wBACL,IAAI,EAAE,qDAAc,CAAC,mBAAmB;wBACxC,QAAQ,EAAE,yDAAkB,CAAC,IAAI;wBACjC,IAAI,EAAE,wDAAiB,CAAC,KAAK;wBAC7B,aAAa,EAAE,KAAK;wBACpB,cAAc,EAAE,GAAG;wBACnB,iBAAiB,EAAE,CAAC;wBACpB,YAAY,EAAE,EAAE;wBAChB,eAAe,EAAE,CAAC;wBAClB,0BAA0B,EAAE,EAAE;wBAC9B,6BAA6B,EAAE,CAAC;wBAChC,wBAAwB,EAAE,CAAC;wBAC3B,2BAA2B,EAAE,EAAE;qBAChC,EAAE;wBACD,EAAE,EAAE,CAAC;wBACL,IAAI,EAAE,qDAAc,CAAC,mBAAmB;wBACxC,QAAQ,EAAE,yDAAkB,CAAC,IAAI;wBACjC,IAAI,EAAE,wDAAiB,CAAC,KAAK;wBAC7B,aAAa,EAAE,KAAK;wBACpB,cAAc,EAAE,GAAG;wBACnB,iBAAiB,EAAE,CAAC;wBACpB,YAAY,EAAE,EAAE;wBAChB,eAAe,EAAE,CAAC;wBAClB,0BAA0B,EAAE,EAAE;wBAC9B,6BAA6B,EAAE,CAAC;wBAChC,wBAAwB,EAAE,CAAC;wBAC3B,2BAA2B,EAAE,EAAE;qBAChC,EAAE;wBACD,EAAE,EAAE,EAAE;wBACN,IAAI,EAAE,qDAAc,CAAC,mBAAmB;wBACxC,QAAQ,EAAE,yDAAkB,CAAC,IAAI;wBACjC,IAAI,EAAE,wDAAiB,CAAC,KAAK;wBAC7B,aAAa,EAAE,KAAK;wBACpB,cAAc,EAAE,GAAG;wBACnB,iBAAiB,EAAE,CAAC;wBACpB,YAAY,EAAE,EAAE;wBAChB,eAAe,EAAE,CAAC;wBAClB,0BAA0B,EAAE,EAAE;wBAC9B,6BAA6B,EAAE,CAAC;wBAChC,wBAAwB,EAAE,CAAC;wBAC3B,2BAA2B,EAAE,EAAE;qBAChC,EAAE;wBACD,EAAE,EAAE,EAAE;wBACN,IAAI,EAAE,qDAAc,CAAC,KAAK;wBAC1B,QAAQ,EAAE,yDAAkB,CAAC,eAAe;wBAC5C,IAAI,EAAE,wDAAiB,CAAC,IAAI;wBAC5B,aAAa,EAAE,KAAK;wBACpB,cAAc,EAAE,GAAG;wBACnB,iBAAiB,EAAE,CAAC;wBACpB,YAAY,EAAE,EAAE;wBAChB,eAAe,EAAE,CAAC;wBAClB,0BAA0B,EAAE,EAAE;wBAC9B,6BAA6B,EAAE,CAAC;wBAChC,wBAAwB,EAAE,CAAC;wBAC3B,2BAA2B,EAAE,EAAE;qBAChC,EAAE;wBACD,EAAE,EAAE,EAAE;wBACN,IAAI,EAAE,qDAAc,CAAC,kBAAkB;wBACvC,QAAQ,EAAE,yDAAkB,CAAC,IAAI;wBACjC,IAAI,EAAE,wDAAiB,CAAC,KAAK;wBAC7B,aAAa,EAAE,KAAK;wBACpB,cAAc,EAAE,GAAG;wBACnB,iBAAiB,EAAE,CAAC;wBACpB,YAAY,EAAE,EAAE;wBAChB,eAAe,EAAE,CAAC;wBAClB,0BAA0B,EAAE,EAAE;wBAC9B,6BAA6B,EAAE,CAAC;wBAChC,wBAAwB,EAAE,CAAC;wBAC3B,2BAA2B,EAAE,EAAE;qBAChC,EAAE;wBACD,EAAE,EAAE,EAAE;wBACN,IAAI,EAAE,qDAAc,CAAC,kBAAkB;wBACvC,QAAQ,EAAE,yDAAkB,CAAC,IAAI;wBACjC,IAAI,EAAE,wDAAiB,CAAC,KAAK;wBAC7B,aAAa,EAAE,KAAK;wBACpB,cAAc,EAAE,GAAG;wBACnB,iBAAiB,EAAE,CAAC;wBACpB,YAAY,EAAE,EAAE;wBAChB,eAAe,EAAE,CAAC;wBAClB,0BAA0B,EAAE,EAAE;wBAC9B,6BAA6B,EAAE,CAAC;wBAChC,wBAAwB,EAAE,CAAC;wBAC3B,2BAA2B,EAAE,EAAE;qBAChC,EAAE;wBACD,EAAE,EAAE,EAAE;wBACN,IAAI,EAAE,qDAAc,CAAC,uBAAuB;wBAC5C,QAAQ,EAAE,yDAAkB,CAAC,IAAI;wBACjC,IAAI,EAAE,wDAAiB,CAAC,KAAK;wBAC7B,aAAa,EAAE,KAAK;wBACpB,cAAc,EAAE,GAAG;wBACnB,iBAAiB,EAAE,CAAC;wBACpB,YAAY,EAAE,EAAE;wBAChB,eAAe,EAAE,CAAC;wBAClB,0BAA0B,EAAE,EAAE;wBAC9B,6BAA6B,EAAE,CAAC;wBAChC,wBAAwB,EAAE,CAAC;wBAC3B,2BAA2B,EAAE,EAAE;qBAChC,EAAE;wBACD,EAAE,EAAE,EAAE;wBACN,IAAI,EAAE,qDAAc,CAAC,uBAAuB;wBAC5C,QAAQ,EAAE,yDAAkB,CAAC,IAAI;wBACjC,IAAI,EAAE,wDAAiB,CAAC,KAAK;wBAC7B,aAAa,EAAE,KAAK;wBACpB,cAAc,EAAE,GAAG;wBACnB,iBAAiB,EAAE,CAAC;wBACpB,YAAY,EAAE,EAAE;wBAChB,eAAe,EAAE,CAAC;wBAClB,0BAA0B,EAAE,EAAE;wBAC9B,6BAA6B,EAAE,CAAC;wBAChC,wBAAwB,EAAE,CAAC;wBAC3B,2BAA2B,EAAE,EAAE;qBAChC;oBACD;wBACE,EAAE,EAAE,EAAE;wBACN,IAAI,EAAE,qDAAc,CAAC,cAAc;wBACnC,QAAQ,EAAE,yDAAkB,CAAC,eAAe;wBAC5C,IAAI,EAAE,wDAAiB,CAAC,IAAI;wBAC5B,aAAa,EAAE,KAAK;wBACpB,cAAc,EAAE,GAAG;wBACnB,iBAAiB,EAAE,CAAC;wBACpB,YAAY,EAAE,EAAE;wBAChB,eAAe,EAAE,CAAC;wBAClB,0BAA0B,EAAE,IAAI;wBAChC,6BAA6B,EAAE,IAAI;wBACnC,wBAAwB,EAAE,IAAI;wBAC9B,2BAA2B,EAAE,IAAI;qBAClC;oBACD;wBACE,EAAE,EAAE,EAAE;wBACN,IAAI,EAAE,qDAAc,CAAC,iBAAiB;wBACtC,QAAQ,EAAE,yDAAkB,CAAC,eAAe;wBAC5C,IAAI,EAAE,wDAAiB,CAAC,IAAI;wBAC5B,aAAa,EAAE,KAAK;wBACpB,cAAc,EAAE,GAAG;wBACnB,iBAAiB,EAAE,CAAC;wBACpB,YAAY,EAAE,EAAE;wBAChB,eAAe,EAAE,CAAC;wBAClB,0BAA0B,EAAE,IAAI;wBAChC,6BAA6B,EAAE,IAAI;wBACnC,wBAAwB,EAAE,IAAI;wBAC9B,2BAA2B,EAAE,IAAI;qBAClC;oBACD;wBACE,EAAE,EAAE,EAAE;wBACN,IAAI,EAAE,qDAAc,CAAC,SAAS;wBAC9B,QAAQ,EAAE,yDAAkB,CAAC,KAAK;wBAClC,IAAI,EAAE,wDAAiB,CAAC,IAAI;wBAC5B,aAAa,EAAE,KAAK;wBACpB,cAAc,EAAE,GAAG;wBACnB,iBAAiB,EAAE,CAAC;wBACpB,YAAY,EAAE,EAAE;wBAChB,eAAe,EAAE,CAAC;wBAClB,0BAA0B,EAAE,IAAI;wBAChC,6BAA6B,EAAE,IAAI;wBACnC,wBAAwB,EAAE,IAAI;wBAC9B,2BAA2B,EAAE,IAAI;qBAClC;oBACD;wBACE,EAAE,EAAE,EAAE;wBACN,IAAI,EAAE,qDAAc,CAAC,SAAS;wBAC9B,QAAQ,EAAE,yDAAkB,CAAC,KAAK;wBAClC,IAAI,EAAE,wDAAiB,CAAC,IAAI;wBAC5B,aAAa,EAAE,KAAK;wBACpB,cAAc,EAAE,GAAG;wBACnB,iBAAiB,EAAE,CAAC;wBACpB,YAAY,EAAE,EAAE;wBAChB,eAAe,EAAE,CAAC;wBAClB,0BAA0B,EAAE,IAAI;wBAChC,6BAA6B,EAAE,IAAI;wBACnC,wBAAwB,EAAE,IAAI;wBAC9B,2BAA2B,EAAE,IAAI;qBAClC;iBACqB;aACvB;YACD,cAAc;YACd;gBACE,EAAE,EAAE,CAAC;gBACL,IAAI,EAAE,wDAAiB,CAAC,QAAQ;gBAChC,OAAO,EAAE,2DAAoB,CAAC,IAAI;gBAClC,IAAI,EAAE,6BAA6B;gBACnC,iCAAiC,EAAE,CAAC;gBACpC,kCAAkC,EAAE,KAAK;gBACzC,0BAA0B,EAAE,CAAC;gBAC7B,oBAAoB,EAAE,CAAC;gBACvB,uBAAuB,EAAE,CAAC;gBAC1B,iCAAiC,EAAE,CAAC;gBACpC,oCAAoC,EAAE,CAAC;gBACvC,OAAO,EAAE,CAAC;wBACR,EAAE,EAAE,CAAC;wBACL,IAAI,EAAE,qDAAc,CAAC,kBAAkB;wBACvC,QAAQ,EAAE,yDAAkB,CAAC,IAAI;wBACjC,IAAI,EAAE,wDAAiB,CAAC,KAAK;wBAC7B,aAAa,EAAE,KAAK;wBACpB,cAAc,EAAE,GAAG;wBACnB,iBAAiB,EAAE,CAAC;wBACpB,YAAY,EAAE,EAAE;wBAChB,eAAe,EAAE,CAAC;wBAClB,0BAA0B,EAAE,EAAE;wBAC9B,6BAA6B,EAAE,CAAC;wBAChC,wBAAwB,EAAE,CAAC;wBAC3B,2BAA2B,EAAE,EAAE;qBAChC,EAAE;wBACD,EAAE,EAAE,CAAC;wBACL,IAAI,EAAE,qDAAc,CAAC,kBAAkB;wBACvC,QAAQ,EAAE,yDAAkB,CAAC,IAAI;wBACjC,IAAI,EAAE,wDAAiB,CAAC,KAAK;wBAC7B,aAAa,EAAE,KAAK;wBACpB,cAAc,EAAE,GAAG;wBACnB,iBAAiB,EAAE,CAAC;wBACpB,YAAY,EAAE,EAAE;wBAChB,eAAe,EAAE,CAAC;wBAClB,0BAA0B,EAAE,EAAE;wBAC9B,6BAA6B,EAAE,CAAC;wBAChC,wBAAwB,EAAE,CAAC;wBAC3B,2BAA2B,EAAE,EAAE;qBAChC,EAAE;wBACD,EAAE,EAAE,CAAC;wBACL,IAAI,EAAE,qDAAc,CAAC,kBAAkB;wBACvC,QAAQ,EAAE,yDAAkB,CAAC,IAAI;wBACjC,IAAI,EAAE,wDAAiB,CAAC,KAAK;wBAC7B,aAAa,EAAE,KAAK;wBACpB,cAAc,EAAE,GAAG;wBACnB,iBAAiB,EAAE,CAAC;wBACpB,YAAY,EAAE,EAAE;wBAChB,eAAe,EAAE,CAAC;wBAClB,0BAA0B,EAAE,EAAE;wBAC9B,6BAA6B,EAAE,CAAC;wBAChC,wBAAwB,EAAE,CAAC;wBAC3B,2BAA2B,EAAE,EAAE;qBAChC,EAAE;wBACD,EAAE,EAAE,CAAC;wBACL,IAAI,EAAE,qDAAc,CAAC,kBAAkB;wBACvC,QAAQ,EAAE,yDAAkB,CAAC,IAAI;wBACjC,IAAI,EAAE,wDAAiB,CAAC,KAAK;wBAC7B,aAAa,EAAE,KAAK;wBACpB,cAAc,EAAE,GAAG;wBACnB,iBAAiB,EAAE,CAAC;wBACpB,YAAY,EAAE,EAAE;wBAChB,eAAe,EAAE,CAAC;wBAClB,0BAA0B,EAAE,EAAE;wBAC9B,6BAA6B,EAAE,CAAC;wBAChC,wBAAwB,EAAE,CAAC;wBAC3B,2BAA2B,EAAE,EAAE;qBAChC,EAAE;wBACD,EAAE,EAAE,CAAC;wBACL,IAAI,EAAE,qDAAc,CAAC,KAAK;wBAC1B,QAAQ,EAAE,yDAAkB,CAAC,eAAe;wBAC5C,IAAI,EAAE,wDAAiB,CAAC,IAAI;wBAC5B,aAAa,EAAE,KAAK;wBACpB,cAAc,EAAE,GAAG;wBACnB,iBAAiB,EAAE,CAAC;wBACpB,YAAY,EAAE,EAAE;wBAChB,eAAe,EAAE,CAAC;wBAClB,0BAA0B,EAAE,EAAE;wBAC9B,6BAA6B,EAAE,CAAC;wBAChC,wBAAwB,EAAE,CAAC;wBAC3B,2BAA2B,EAAE,EAAE;qBAChC;oBACD;wBACE,EAAE,EAAE,EAAE;wBACN,IAAI,EAAE,qDAAc,CAAC,cAAc;wBACnC,QAAQ,EAAE,yDAAkB,CAAC,eAAe;wBAC5C,IAAI,EAAE,wDAAiB,CAAC,IAAI;wBAC5B,aAAa,EAAE,KAAK;wBACpB,cAAc,EAAE,GAAG;wBACnB,iBAAiB,EAAE,CAAC;wBACpB,YAAY,EAAE,EAAE;wBAChB,eAAe,EAAE,CAAC;wBAClB,0BAA0B,EAAE,IAAI;wBAChC,6BAA6B,EAAE,IAAI;wBACnC,wBAAwB,EAAE,IAAI;wBAC9B,2BAA2B,EAAE,IAAI;qBAClC;oBACD;wBACE,EAAE,EAAE,EAAE;wBACN,IAAI,EAAE,qDAAc,CAAC,iBAAiB;wBACtC,QAAQ,EAAE,yDAAkB,CAAC,eAAe;wBAC5C,IAAI,EAAE,wDAAiB,CAAC,IAAI;wBAC5B,aAAa,EAAE,KAAK;wBACpB,cAAc,EAAE,GAAG;wBACnB,iBAAiB,EAAE,CAAC;wBACpB,YAAY,EAAE,EAAE;wBAChB,eAAe,EAAE,CAAC;wBAClB,0BAA0B,EAAE,IAAI;wBAChC,6BAA6B,EAAE,IAAI;wBACnC,wBAAwB,EAAE,IAAI;wBAC9B,2BAA2B,EAAE,IAAI;qBAClC;oBACD;wBACE,EAAE,EAAE,EAAE;wBACN,IAAI,EAAE,qDAAc,CAAC,SAAS;wBAC9B,QAAQ,EAAE,yDAAkB,CAAC,KAAK;wBAClC,IAAI,EAAE,wDAAiB,CAAC,IAAI;wBAC5B,aAAa,EAAE,KAAK;wBACpB,cAAc,EAAE,GAAG;wBACnB,iBAAiB,EAAE,CAAC;wBACpB,YAAY,EAAE,EAAE;wBAChB,eAAe,EAAE,CAAC;wBAClB,0BAA0B,EAAE,IAAI;wBAChC,6BAA6B,EAAE,IAAI;wBACnC,wBAAwB,EAAE,IAAI;wBAC9B,2BAA2B,EAAE,IAAI;qBAClC;oBACD;wBACE,EAAE,EAAE,EAAE;wBACN,IAAI,EAAE,qDAAc,CAAC,SAAS;wBAC9B,QAAQ,EAAE,yDAAkB,CAAC,KAAK;wBAClC,IAAI,EAAE,wDAAiB,CAAC,IAAI;wBAC5B,aAAa,EAAE,KAAK;wBACpB,cAAc,EAAE,GAAG;wBACnB,iBAAiB,EAAE,CAAC;wBACpB,YAAY,EAAE,EAAE;wBAChB,eAAe,EAAE,CAAC;wBAClB,0BAA0B,EAAE,IAAI;wBAChC,6BAA6B,EAAE,IAAI;wBACnC,wBAAwB,EAAE,IAAI;wBAC9B,2BAA2B,EAAE,IAAI;qBAClC;iBACqB;aACvB;YACD;gBACE,EAAE,EAAE,CAAC;gBACL,IAAI,EAAE,wDAAiB,CAAC,QAAQ;gBAChC,OAAO,EAAE,2DAAoB,CAAC,IAAI;gBAClC,IAAI,EAAE,6BAA6B;gBACnC,iCAAiC,EAAE,CAAC;gBACpC,kCAAkC,EAAE,KAAK;gBACzC,0BAA0B,EAAE,CAAC;gBAC7B,oBAAoB,EAAE,CAAC;gBACvB,uBAAuB,EAAE,CAAC;gBAC1B,iCAAiC,EAAE,CAAC;gBACpC,oCAAoC,EAAE,CAAC;gBACvC,OAAO,EAAE,CAAC;wBACR,EAAE,EAAE,CAAC;wBACL,IAAI,EAAE,qDAAc,CAAC,kBAAkB;wBACvC,QAAQ,EAAE,yDAAkB,CAAC,IAAI;wBACjC,IAAI,EAAE,wDAAiB,CAAC,KAAK;wBAC7B,aAAa,EAAE,KAAK;wBACpB,cAAc,EAAE,GAAG;wBACnB,iBAAiB,EAAE,CAAC;wBACpB,YAAY,EAAE,EAAE;wBAChB,eAAe,EAAE,CAAC;wBAClB,0BAA0B,EAAE,EAAE;wBAC9B,6BAA6B,EAAE,CAAC;wBAChC,wBAAwB,EAAE,CAAC;wBAC3B,2BAA2B,EAAE,EAAE;qBAChC,EAAE;wBACD,EAAE,EAAE,CAAC;wBACL,IAAI,EAAE,qDAAc,CAAC,kBAAkB;wBACvC,QAAQ,EAAE,yDAAkB,CAAC,IAAI;wBACjC,IAAI,EAAE,wDAAiB,CAAC,KAAK;wBAC7B,aAAa,EAAE,KAAK;wBACpB,cAAc,EAAE,GAAG;wBACnB,iBAAiB,EAAE,CAAC;wBACpB,YAAY,EAAE,EAAE;wBAChB,eAAe,EAAE,CAAC;wBAClB,0BAA0B,EAAE,EAAE;wBAC9B,6BAA6B,EAAE,CAAC;wBAChC,wBAAwB,EAAE,CAAC;wBAC3B,2BAA2B,EAAE,EAAE;qBAChC,EAAE;wBACD,EAAE,EAAE,CAAC;wBACL,IAAI,EAAE,qDAAc,CAAC,kBAAkB;wBACvC,QAAQ,EAAE,yDAAkB,CAAC,IAAI;wBACjC,IAAI,EAAE,wDAAiB,CAAC,KAAK;wBAC7B,aAAa,EAAE,KAAK;wBACpB,cAAc,EAAE,GAAG;wBACnB,iBAAiB,EAAE,CAAC;wBACpB,YAAY,EAAE,EAAE;wBAChB,eAAe,EAAE,CAAC;wBAClB,0BAA0B,EAAE,EAAE;wBAC9B,6BAA6B,EAAE,CAAC;wBAChC,wBAAwB,EAAE,CAAC;wBAC3B,2BAA2B,EAAE,EAAE;qBAChC,EAAE;wBACD,EAAE,EAAE,CAAC;wBACL,IAAI,EAAE,qDAAc,CAAC,kBAAkB;wBACvC,QAAQ,EAAE,yDAAkB,CAAC,IAAI;wBACjC,IAAI,EAAE,wDAAiB,CAAC,KAAK;wBAC7B,aAAa,EAAE,KAAK;wBACpB,cAAc,EAAE,GAAG;wBACnB,iBAAiB,EAAE,CAAC;wBACpB,YAAY,EAAE,EAAE;wBAChB,eAAe,EAAE,CAAC;wBAClB,0BAA0B,EAAE,EAAE;wBAC9B,6BAA6B,EAAE,CAAC;wBAChC,wBAAwB,EAAE,CAAC;wBAC3B,2BAA2B,EAAE,EAAE;qBAChC,EAAE;wBACD,EAAE,EAAE,CAAC;wBACL,IAAI,EAAE,qDAAc,CAAC,kBAAkB;wBACvC,QAAQ,EAAE,yDAAkB,CAAC,QAAQ;wBACrC,IAAI,EAAE,wDAAiB,CAAC,KAAK;wBAC7B,aAAa,EAAE,KAAK;wBACpB,cAAc,EAAE,GAAG;wBACnB,iBAAiB,EAAE,CAAC;wBACpB,YAAY,EAAE,EAAE;wBAChB,eAAe,EAAE,CAAC;wBAClB,0BAA0B,EAAE,EAAE;wBAC9B,6BAA6B,EAAE,CAAC;wBAChC,wBAAwB,EAAE,CAAC;wBAC3B,2BAA2B,EAAE,EAAE;qBAChC,EAAE;wBACD,EAAE,EAAE,CAAC;wBACL,IAAI,EAAE,qDAAc,CAAC,kBAAkB;wBACvC,QAAQ,EAAE,yDAAkB,CAAC,QAAQ;wBACrC,IAAI,EAAE,wDAAiB,CAAC,KAAK;wBAC7B,aAAa,EAAE,KAAK;wBACpB,cAAc,EAAE,GAAG;wBACnB,iBAAiB,EAAE,CAAC;wBACpB,YAAY,EAAE,EAAE;wBAChB,eAAe,EAAE,CAAC;wBAClB,0BAA0B,EAAE,EAAE;wBAC9B,6BAA6B,EAAE,CAAC;wBAChC,wBAAwB,EAAE,CAAC;wBAC3B,2BAA2B,EAAE,EAAE;qBAChC,EAAE;wBACD,EAAE,EAAE,CAAC;wBACL,IAAI,EAAE,qDAAc,CAAC,kBAAkB;wBACvC,QAAQ,EAAE,yDAAkB,CAAC,QAAQ;wBACrC,IAAI,EAAE,wDAAiB,CAAC,KAAK;wBAC7B,aAAa,EAAE,KAAK;wBACpB,cAAc,EAAE,GAAG;wBACnB,iBAAiB,EAAE,CAAC;wBACpB,YAAY,EAAE,EAAE;wBAChB,eAAe,EAAE,CAAC;wBAClB,0BAA0B,EAAE,EAAE;wBAC9B,6BAA6B,EAAE,CAAC;wBAChC,wBAAwB,EAAE,CAAC;wBAC3B,2BAA2B,EAAE,EAAE;qBAChC,EAAE;wBACD,EAAE,EAAE,CAAC;wBACL,IAAI,EAAE,qDAAc,CAAC,kBAAkB;wBACvC,QAAQ,EAAE,yDAAkB,CAAC,QAAQ;wBACrC,IAAI,EAAE,wDAAiB,CAAC,KAAK;wBAC7B,aAAa,EAAE,KAAK;wBACpB,cAAc,EAAE,GAAG;wBACnB,iBAAiB,EAAE,CAAC;wBACpB,YAAY,EAAE,EAAE;wBAChB,eAAe,EAAE,CAAC;wBAClB,0BAA0B,EAAE,EAAE;wBAC9B,6BAA6B,EAAE,CAAC;wBAChC,wBAAwB,EAAE,CAAC;wBAC3B,2BAA2B,EAAE,EAAE;qBAChC,EAAE;wBACD,EAAE,EAAE,CAAC;wBACL,IAAI,EAAE,qDAAc,CAAC,kBAAkB;wBACvC,QAAQ,EAAE,yDAAkB,CAAC,QAAQ;wBACrC,IAAI,EAAE,wDAAiB,CAAC,KAAK;wBAC7B,aAAa,EAAE,KAAK;wBACpB,cAAc,EAAE,GAAG;wBACnB,iBAAiB,EAAE,CAAC;wBACpB,YAAY,EAAE,EAAE;wBAChB,eAAe,EAAE,CAAC;wBAClB,0BAA0B,EAAE,EAAE;wBAC9B,6BAA6B,EAAE,CAAC;wBAChC,wBAAwB,EAAE,CAAC;wBAC3B,2BAA2B,EAAE,EAAE;qBAChC,EAAE;wBACD,EAAE,EAAE,EAAE;wBACN,IAAI,EAAE,qDAAc,CAAC,kBAAkB;wBACvC,QAAQ,EAAE,yDAAkB,CAAC,QAAQ;wBACrC,IAAI,EAAE,wDAAiB,CAAC,KAAK;wBAC7B,aAAa,EAAE,KAAK;wBACpB,cAAc,EAAE,GAAG;wBACnB,iBAAiB,EAAE,CAAC;wBACpB,YAAY,EAAE,EAAE;wBAChB,eAAe,EAAE,CAAC;wBAClB,0BAA0B,EAAE,EAAE;wBAC9B,6BAA6B,EAAE,CAAC;wBAChC,wBAAwB,EAAE,CAAC;wBAC3B,2BAA2B,EAAE,EAAE;qBAChC,EAAE;wBACD,EAAE,EAAE,EAAE;wBACN,IAAI,EAAE,qDAAc,CAAC,kBAAkB;wBACvC,QAAQ,EAAE,yDAAkB,CAAC,QAAQ;wBACrC,IAAI,EAAE,wDAAiB,CAAC,KAAK;wBAC7B,aAAa,EAAE,KAAK;wBACpB,cAAc,EAAE,GAAG;wBACnB,iBAAiB,EAAE,CAAC;wBACpB,YAAY,EAAE,EAAE;wBAChB,eAAe,EAAE,CAAC;wBAClB,0BAA0B,EAAE,EAAE;wBAC9B,6BAA6B,EAAE,CAAC;wBAChC,wBAAwB,EAAE,CAAC;wBAC3B,2BAA2B,EAAE,EAAE;qBAChC,EAAE;wBACD,EAAE,EAAE,EAAE;wBACN,IAAI,EAAE,qDAAc,CAAC,kBAAkB;wBACvC,QAAQ,EAAE,yDAAkB,CAAC,QAAQ;wBACrC,IAAI,EAAE,wDAAiB,CAAC,KAAK;wBAC7B,aAAa,EAAE,KAAK;wBACpB,cAAc,EAAE,GAAG;wBACnB,iBAAiB,EAAE,CAAC;wBACpB,YAAY,EAAE,EAAE;wBAChB,eAAe,EAAE,CAAC;wBAClB,0BAA0B,EAAE,EAAE;wBAC9B,6BAA6B,EAAE,CAAC;wBAChC,wBAAwB,EAAE,CAAC;wBAC3B,2BAA2B,EAAE,EAAE;qBAChC,EAAE;wBACD,EAAE,EAAE,EAAE;wBACN,IAAI,EAAE,qDAAc,CAAC,kBAAkB;wBACvC,QAAQ,EAAE,yDAAkB,CAAC,QAAQ;wBACrC,IAAI,EAAE,wDAAiB,CAAC,KAAK;wBAC7B,aAAa,EAAE,KAAK;wBACpB,cAAc,EAAE,GAAG;wBACnB,iBAAiB,EAAE,CAAC;wBACpB,YAAY,EAAE,EAAE;wBAChB,eAAe,EAAE,CAAC;wBAClB,0BAA0B,EAAE,EAAE;wBAC9B,6BAA6B,EAAE,CAAC;wBAChC,wBAAwB,EAAE,CAAC;wBAC3B,2BAA2B,EAAE,EAAE;qBAChC,EAAE;wBACD,EAAE,EAAE,EAAE;wBACN,IAAI,EAAE,qDAAc,CAAC,kBAAkB;wBACvC,QAAQ,EAAE,yDAAkB,CAAC,QAAQ;wBACrC,IAAI,EAAE,wDAAiB,CAAC,KAAK;wBAC7B,aAAa,EAAE,KAAK;wBACpB,cAAc,EAAE,GAAG;wBACnB,iBAAiB,EAAE,CAAC;wBACpB,YAAY,EAAE,EAAE;wBAChB,eAAe,EAAE,CAAC;wBAClB,0BAA0B,EAAE,EAAE;wBAC9B,6BAA6B,EAAE,CAAC;wBAChC,wBAAwB,EAAE,CAAC;wBAC3B,2BAA2B,EAAE,EAAE;qBAChC,EAAE;wBACD,EAAE,EAAE,EAAE;wBACN,IAAI,EAAE,qDAAc,CAAC,kBAAkB;wBACvC,QAAQ,EAAE,yDAAkB,CAAC,QAAQ;wBACrC,IAAI,EAAE,wDAAiB,CAAC,KAAK;wBAC7B,aAAa,EAAE,KAAK;wBACpB,cAAc,EAAE,GAAG;wBACnB,iBAAiB,EAAE,CAAC;wBACpB,YAAY,EAAE,EAAE;wBAChB,eAAe,EAAE,CAAC;wBAClB,0BAA0B,EAAE,EAAE;wBAC9B,6BAA6B,EAAE,CAAC;wBAChC,wBAAwB,EAAE,CAAC;wBAC3B,2BAA2B,EAAE,EAAE;qBAChC,EAAE;wBACD,EAAE,EAAE,EAAE;wBACN,IAAI,EAAE,qDAAc,CAAC,kBAAkB;wBACvC,QAAQ,EAAE,yDAAkB,CAAC,QAAQ;wBACrC,IAAI,EAAE,wDAAiB,CAAC,KAAK;wBAC7B,aAAa,EAAE,KAAK;wBACpB,cAAc,EAAE,GAAG;wBACnB,iBAAiB,EAAE,CAAC;wBACpB,YAAY,EAAE,EAAE;wBAChB,eAAe,EAAE,CAAC;wBAClB,0BAA0B,EAAE,EAAE;wBAC9B,6BAA6B,EAAE,CAAC;wBAChC,wBAAwB,EAAE,CAAC;wBAC3B,2BAA2B,EAAE,EAAE;qBAChC,EAAE;wBACD,EAAE,EAAE,EAAE;wBACN,IAAI,EAAE,qDAAc,CAAC,kBAAkB;wBACvC,QAAQ,EAAE,yDAAkB,CAAC,gBAAgB;wBAC7C,IAAI,EAAE,wDAAiB,CAAC,KAAK;wBAC7B,aAAa,EAAE,KAAK;wBACpB,cAAc,EAAE,GAAG;wBACnB,iBAAiB,EAAE,CAAC;wBACpB,YAAY,EAAE,EAAE;wBAChB,eAAe,EAAE,CAAC;wBAClB,0BAA0B,EAAE,EAAE;wBAC9B,6BAA6B,EAAE,CAAC;wBAChC,wBAAwB,EAAE,CAAC;wBAC3B,2BAA2B,EAAE,EAAE;qBAChC,EAAE;wBACD,EAAE,EAAE,EAAE;wBACN,IAAI,EAAE,qDAAc,CAAC,kBAAkB;wBACvC,QAAQ,EAAE,yDAAkB,CAAC,gBAAgB;wBAC7C,IAAI,EAAE,wDAAiB,CAAC,KAAK;wBAC7B,aAAa,EAAE,KAAK;wBACpB,cAAc,EAAE,GAAG;wBACnB,iBAAiB,EAAE,CAAC;wBACpB,YAAY,EAAE,EAAE;wBAChB,eAAe,EAAE,CAAC;wBAClB,0BAA0B,EAAE,EAAE;wBAC9B,6BAA6B,EAAE,CAAC;wBAChC,wBAAwB,EAAE,CAAC;wBAC3B,2BAA2B,EAAE,EAAE;qBAChC,EAAE;wBACD,EAAE,EAAE,EAAE;wBACN,IAAI,EAAE,qDAAc,CAAC,kBAAkB;wBACvC,QAAQ,EAAE,yDAAkB,CAAC,gBAAgB;wBAC7C,IAAI,EAAE,wDAAiB,CAAC,KAAK;wBAC7B,aAAa,EAAE,KAAK;wBACpB,cAAc,EAAE,GAAG;wBACnB,iBAAiB,EAAE,CAAC;wBACpB,YAAY,EAAE,EAAE;wBAChB,eAAe,EAAE,CAAC;wBAClB,0BAA0B,EAAE,EAAE;wBAC9B,6BAA6B,EAAE,CAAC;wBAChC,wBAAwB,EAAE,CAAC;wBAC3B,2BAA2B,EAAE,EAAE;qBAChC,EAAE;wBACD,EAAE,EAAE,EAAE;wBACN,IAAI,EAAE,qDAAc,CAAC,kBAAkB;wBACvC,QAAQ,EAAE,yDAAkB,CAAC,gBAAgB;wBAC7C,IAAI,EAAE,wDAAiB,CAAC,KAAK;wBAC7B,aAAa,EAAE,KAAK;wBACpB,cAAc,EAAE,GAAG;wBACnB,iBAAiB,EAAE,CAAC;wBACpB,YAAY,EAAE,EAAE;wBAChB,eAAe,EAAE,CAAC;wBAClB,0BAA0B,EAAE,EAAE;wBAC9B,6BAA6B,EAAE,CAAC;wBAChC,wBAAwB,EAAE,CAAC;wBAC3B,2BAA2B,EAAE,EAAE;qBAChC,EAAE;wBACD,EAAE,EAAE,EAAE;wBACN,IAAI,EAAE,qDAAc,CAAC,kBAAkB;wBACvC,QAAQ,EAAE,yDAAkB,CAAC,gBAAgB;wBAC7C,IAAI,EAAE,wDAAiB,CAAC,KAAK;wBAC7B,aAAa,EAAE,KAAK;wBACpB,cAAc,EAAE,GAAG;wBACnB,iBAAiB,EAAE,CAAC;wBACpB,YAAY,EAAE,EAAE;wBAChB,eAAe,EAAE,CAAC;wBAClB,0BAA0B,EAAE,EAAE;wBAC9B,6BAA6B,EAAE,CAAC;wBAChC,wBAAwB,EAAE,CAAC;wBAC3B,2BAA2B,EAAE,EAAE;qBAChC,EAAE;wBACD,EAAE,EAAE,EAAE;wBACN,IAAI,EAAE,qDAAc,CAAC,kBAAkB;wBACvC,QAAQ,EAAE,yDAAkB,CAAC,gBAAgB;wBAC7C,IAAI,EAAE,wDAAiB,CAAC,KAAK;wBAC7B,aAAa,EAAE,KAAK;wBACpB,cAAc,EAAE,GAAG;wBACnB,iBAAiB,EAAE,CAAC;wBACpB,YAAY,EAAE,EAAE;wBAChB,eAAe,EAAE,CAAC;wBAClB,0BAA0B,EAAE,EAAE;wBAC9B,6BAA6B,EAAE,CAAC;wBAChC,wBAAwB,EAAE,CAAC;wBAC3B,2BAA2B,EAAE,EAAE;qBAChC,EAAE;wBACD,EAAE,EAAE,EAAE;wBACN,IAAI,EAAE,qDAAc,CAAC,kBAAkB;wBACvC,QAAQ,EAAE,yDAAkB,CAAC,gBAAgB;wBAC7C,IAAI,EAAE,wDAAiB,CAAC,KAAK;wBAC7B,aAAa,EAAE,KAAK;wBACpB,cAAc,EAAE,GAAG;wBACnB,iBAAiB,EAAE,CAAC;wBACpB,YAAY,EAAE,EAAE;wBAChB,eAAe,EAAE,CAAC;wBAClB,0BAA0B,EAAE,EAAE;wBAC9B,6BAA6B,EAAE,CAAC;wBAChC,wBAAwB,EAAE,CAAC;wBAC3B,2BAA2B,EAAE,EAAE;qBAChC,EAAE;wBACD,EAAE,EAAE,EAAE;wBACN,IAAI,EAAE,qDAAc,CAAC,kBAAkB;wBACvC,QAAQ,EAAE,yDAAkB,CAAC,gBAAgB;wBAC7C,IAAI,EAAE,wDAAiB,CAAC,KAAK;wBAC7B,aAAa,EAAE,KAAK;wBACpB,cAAc,EAAE,GAAG;wBACnB,iBAAiB,EAAE,CAAC;wBACpB,YAAY,EAAE,EAAE;wBAChB,eAAe,EAAE,CAAC;wBAClB,0BAA0B,EAAE,EAAE;wBAC9B,6BAA6B,EAAE,CAAC;wBAChC,wBAAwB,EAAE,CAAC;wBAC3B,2BAA2B,EAAE,EAAE;qBAChC,EAAE;wBACD,EAAE,EAAE,EAAE;wBACN,IAAI,EAAE,qDAAc,CAAC,mBAAmB;wBACxC,QAAQ,EAAE,yDAAkB,CAAC,IAAI;wBACjC,IAAI,EAAE,wDAAiB,CAAC,KAAK;wBAC7B,aAAa,EAAE,KAAK;wBACpB,cAAc,EAAE,GAAG;wBACnB,iBAAiB,EAAE,CAAC;wBACpB,YAAY,EAAE,EAAE;wBAChB,eAAe,EAAE,CAAC;wBAClB,0BAA0B,EAAE,EAAE;wBAC9B,6BAA6B,EAAE,CAAC;wBAChC,wBAAwB,EAAE,CAAC;wBAC3B,2BAA2B,EAAE,EAAE;qBAChC,EAAE;wBACD,EAAE,EAAE,EAAE;wBACN,IAAI,EAAE,qDAAc,CAAC,mBAAmB;wBACxC,QAAQ,EAAE,yDAAkB,CAAC,IAAI;wBACjC,IAAI,EAAE,wDAAiB,CAAC,KAAK;wBAC7B,aAAa,EAAE,KAAK;wBACpB,cAAc,EAAE,GAAG;wBACnB,iBAAiB,EAAE,CAAC;wBACpB,YAAY,EAAE,EAAE;wBAChB,eAAe,EAAE,CAAC;wBAClB,0BAA0B,EAAE,EAAE;wBAC9B,6BAA6B,EAAE,CAAC;wBAChC,wBAAwB,EAAE,CAAC;wBAC3B,2BAA2B,EAAE,EAAE;qBAChC,EAAE;wBACD,EAAE,EAAE,EAAE;wBACN,IAAI,EAAE,qDAAc,CAAC,mBAAmB;wBACxC,QAAQ,EAAE,yDAAkB,CAAC,IAAI;wBACjC,IAAI,EAAE,wDAAiB,CAAC,KAAK;wBAC7B,aAAa,EAAE,KAAK;wBACpB,cAAc,EAAE,GAAG;wBACnB,iBAAiB,EAAE,CAAC;wBACpB,YAAY,EAAE,EAAE;wBAChB,eAAe,EAAE,CAAC;wBAClB,0BAA0B,EAAE,EAAE;wBAC9B,6BAA6B,EAAE,CAAC;wBAChC,wBAAwB,EAAE,CAAC;wBAC3B,2BAA2B,EAAE,EAAE;qBAChC,EAAE;wBACD,EAAE,EAAE,EAAE;wBACN,IAAI,EAAE,qDAAc,CAAC,mBAAmB;wBACxC,QAAQ,EAAE,yDAAkB,CAAC,IAAI;wBACjC,IAAI,EAAE,wDAAiB,CAAC,KAAK;wBAC7B,aAAa,EAAE,KAAK;wBACpB,cAAc,EAAE,GAAG;wBACnB,iBAAiB,EAAE,CAAC;wBACpB,YAAY,EAAE,EAAE;wBAChB,eAAe,EAAE,CAAC;wBAClB,0BAA0B,EAAE,EAAE;wBAC9B,6BAA6B,EAAE,CAAC;wBAChC,wBAAwB,EAAE,CAAC;wBAC3B,2BAA2B,EAAE,EAAE;qBAChC,EAAE;wBACD,EAAE,EAAE,EAAE;wBACN,IAAI,EAAE,qDAAc,CAAC,mBAAmB;wBACxC,QAAQ,EAAE,yDAAkB,CAAC,QAAQ;wBACrC,IAAI,EAAE,wDAAiB,CAAC,KAAK;wBAC7B,aAAa,EAAE,KAAK;wBACpB,cAAc,EAAE,GAAG;wBACnB,iBAAiB,EAAE,CAAC;wBACpB,YAAY,EAAE,EAAE;wBAChB,eAAe,EAAE,CAAC;wBAClB,0BAA0B,EAAE,EAAE;wBAC9B,6BAA6B,EAAE,CAAC;wBAChC,wBAAwB,EAAE,CAAC;wBAC3B,2BAA2B,EAAE,EAAE;qBAChC,EAAE;wBACD,EAAE,EAAE,EAAE;wBACN,IAAI,EAAE,qDAAc,CAAC,mBAAmB;wBACxC,QAAQ,EAAE,yDAAkB,CAAC,QAAQ;wBACrC,IAAI,EAAE,wDAAiB,CAAC,KAAK;wBAC7B,aAAa,EAAE,KAAK;wBACpB,cAAc,EAAE,GAAG;wBACnB,iBAAiB,EAAE,CAAC;wBACpB,YAAY,EAAE,EAAE;wBAChB,eAAe,EAAE,CAAC;wBAClB,0BAA0B,EAAE,EAAE;wBAC9B,6BAA6B,EAAE,CAAC;wBAChC,wBAAwB,EAAE,CAAC;wBAC3B,2BAA2B,EAAE,EAAE;qBAChC,EAAE;wBACD,EAAE,EAAE,EAAE;wBACN,IAAI,EAAE,qDAAc,CAAC,mBAAmB;wBACxC,QAAQ,EAAE,yDAAkB,CAAC,QAAQ;wBACrC,IAAI,EAAE,wDAAiB,CAAC,KAAK;wBAC7B,aAAa,EAAE,KAAK;wBACpB,cAAc,EAAE,GAAG;wBACnB,iBAAiB,EAAE,CAAC;wBACpB,YAAY,EAAE,EAAE;wBAChB,eAAe,EAAE,CAAC;wBAClB,0BAA0B,EAAE,EAAE;wBAC9B,6BAA6B,EAAE,CAAC;wBAChC,wBAAwB,EAAE,CAAC;wBAC3B,2BAA2B,EAAE,EAAE;qBAChC,EAAE;wBACD,EAAE,EAAE,EAAE;wBACN,IAAI,EAAE,qDAAc,CAAC,mBAAmB;wBACxC,QAAQ,EAAE,yDAAkB,CAAC,QAAQ;wBACrC,IAAI,EAAE,wDAAiB,CAAC,KAAK;wBAC7B,aAAa,EAAE,KAAK;wBACpB,cAAc,EAAE,GAAG;wBACnB,iBAAiB,EAAE,CAAC;wBACpB,YAAY,EAAE,EAAE;wBAChB,eAAe,EAAE,CAAC;wBAClB,0BAA0B,EAAE,EAAE;wBAC9B,6BAA6B,EAAE,CAAC;wBAChC,wBAAwB,EAAE,CAAC;wBAC3B,2BAA2B,EAAE,EAAE;qBAChC,EAAE;wBACD,EAAE,EAAE,EAAE;wBACN,IAAI,EAAE,qDAAc,CAAC,mBAAmB;wBACxC,QAAQ,EAAE,yDAAkB,CAAC,QAAQ;wBACrC,IAAI,EAAE,wDAAiB,CAAC,KAAK;wBAC7B,aAAa,EAAE,KAAK;wBACpB,cAAc,EAAE,GAAG;wBACnB,iBAAiB,EAAE,CAAC;wBACpB,YAAY,EAAE,EAAE;wBAChB,eAAe,EAAE,CAAC;wBAClB,0BAA0B,EAAE,EAAE;wBAC9B,6BAA6B,EAAE,CAAC;wBAChC,wBAAwB,EAAE,CAAC;wBAC3B,2BAA2B,EAAE,EAAE;qBAChC,EAAE;wBACD,EAAE,EAAE,EAAE;wBACN,IAAI,EAAE,qDAAc,CAAC,mBAAmB;wBACxC,QAAQ,EAAE,yDAAkB,CAAC,QAAQ;wBACrC,IAAI,EAAE,wDAAiB,CAAC,KAAK;wBAC7B,aAAa,EAAE,KAAK;wBACpB,cAAc,EAAE,GAAG;wBACnB,iBAAiB,EAAE,CAAC;wBACpB,YAAY,EAAE,EAAE;wBAChB,eAAe,EAAE,CAAC;wBAClB,0BAA0B,EAAE,EAAE;wBAC9B,6BAA6B,EAAE,CAAC;wBAChC,wBAAwB,EAAE,CAAC;wBAC3B,2BAA2B,EAAE,EAAE;qBAChC,EAAE;wBACD,EAAE,EAAE,EAAE;wBACN,IAAI,EAAE,qDAAc,CAAC,mBAAmB;wBACxC,QAAQ,EAAE,yDAAkB,CAAC,QAAQ;wBACrC,IAAI,EAAE,wDAAiB,CAAC,KAAK;wBAC7B,aAAa,EAAE,KAAK;wBACpB,cAAc,EAAE,GAAG;wBACnB,iBAAiB,EAAE,CAAC;wBACpB,YAAY,EAAE,EAAE;wBAChB,eAAe,EAAE,CAAC;wBAClB,0BAA0B,EAAE,EAAE;wBAC9B,6BAA6B,EAAE,CAAC;wBAChC,wBAAwB,EAAE,CAAC;wBAC3B,2BAA2B,EAAE,EAAE;qBAChC,EAAE;wBACD,EAAE,EAAE,EAAE;wBACN,IAAI,EAAE,qDAAc,CAAC,mBAAmB;wBACxC,QAAQ,EAAE,yDAAkB,CAAC,QAAQ;wBACrC,IAAI,EAAE,wDAAiB,CAAC,KAAK;wBAC7B,aAAa,EAAE,KAAK;wBACpB,cAAc,EAAE,GAAG;wBACnB,iBAAiB,EAAE,CAAC;wBACpB,YAAY,EAAE,EAAE;wBAChB,eAAe,EAAE,CAAC;wBAClB,0BAA0B,EAAE,EAAE;wBAC9B,6BAA6B,EAAE,CAAC;wBAChC,wBAAwB,EAAE,CAAC;wBAC3B,2BAA2B,EAAE,EAAE;qBAChC,EAAE;wBACD,EAAE,EAAE,EAAE;wBACN,IAAI,EAAE,qDAAc,CAAC,mBAAmB;wBACxC,QAAQ,EAAE,yDAAkB,CAAC,QAAQ;wBACrC,IAAI,EAAE,wDAAiB,CAAC,KAAK;wBAC7B,aAAa,EAAE,KAAK;wBACpB,cAAc,EAAE,GAAG;wBACnB,iBAAiB,EAAE,CAAC;wBACpB,YAAY,EAAE,EAAE;wBAChB,eAAe,EAAE,CAAC;wBAClB,0BAA0B,EAAE,EAAE;wBAC9B,6BAA6B,EAAE,CAAC;wBAChC,wBAAwB,EAAE,CAAC;wBAC3B,2BAA2B,EAAE,EAAE;qBAChC,EAAE;wBACD,EAAE,EAAE,EAAE;wBACN,IAAI,EAAE,qDAAc,CAAC,mBAAmB;wBACxC,QAAQ,EAAE,yDAAkB,CAAC,QAAQ;wBACrC,IAAI,EAAE,wDAAiB,CAAC,KAAK;wBAC7B,aAAa,EAAE,KAAK;wBACpB,cAAc,EAAE,GAAG;wBACnB,iBAAiB,EAAE,CAAC;wBACpB,YAAY,EAAE,EAAE;wBAChB,eAAe,EAAE,CAAC;wBAClB,0BAA0B,EAAE,EAAE;wBAC9B,6BAA6B,EAAE,CAAC;wBAChC,wBAAwB,EAAE,CAAC;wBAC3B,2BAA2B,EAAE,EAAE;qBAChC,EAAE;wBACD,EAAE,EAAE,EAAE;wBACN,IAAI,EAAE,qDAAc,CAAC,mBAAmB;wBACxC,QAAQ,EAAE,yDAAkB,CAAC,QAAQ;wBACrC,IAAI,EAAE,wDAAiB,CAAC,KAAK;wBAC7B,aAAa,EAAE,KAAK;wBACpB,cAAc,EAAE,GAAG;wBACnB,iBAAiB,EAAE,CAAC;wBACpB,YAAY,EAAE,EAAE;wBAChB,eAAe,EAAE,CAAC;wBAClB,0BAA0B,EAAE,EAAE;wBAC9B,6BAA6B,EAAE,CAAC;wBAChC,wBAAwB,EAAE,CAAC;wBAC3B,2BAA2B,EAAE,EAAE;qBAChC,EAAE;wBACD,EAAE,EAAE,EAAE;wBACN,IAAI,EAAE,qDAAc,CAAC,mBAAmB;wBACxC,QAAQ,EAAE,yDAAkB,CAAC,QAAQ;wBACrC,IAAI,EAAE,wDAAiB,CAAC,KAAK;wBAC7B,aAAa,EAAE,KAAK;wBACpB,cAAc,EAAE,GAAG;wBACnB,iBAAiB,EAAE,CAAC;wBACpB,YAAY,EAAE,EAAE;wBAChB,eAAe,EAAE,CAAC;wBAClB,0BAA0B,EAAE,EAAE;wBAC9B,6BAA6B,EAAE,CAAC;wBAChC,wBAAwB,EAAE,CAAC;wBAC3B,2BAA2B,EAAE,EAAE;qBAChC,EAAE;wBACD,EAAE,EAAE,EAAE;wBACN,IAAI,EAAE,qDAAc,CAAC,KAAK;wBAC1B,QAAQ,EAAE,yDAAkB,CAAC,eAAe;wBAC5C,IAAI,EAAE,wDAAiB,CAAC,IAAI;wBAC5B,aAAa,EAAE,KAAK;wBACpB,cAAc,EAAE,GAAG;wBACnB,iBAAiB,EAAE,CAAC;wBACpB,YAAY,EAAE,EAAE;wBAChB,eAAe,EAAE,CAAC;wBAClB,0BAA0B,EAAE,EAAE;wBAC9B,6BAA6B,EAAE,CAAC;wBAChC,wBAAwB,EAAE,CAAC;wBAC3B,2BAA2B,EAAE,EAAE;qBAChC;oBACD;wBACE,EAAE,EAAE,EAAE;wBACN,IAAI,EAAE,qDAAc,CAAC,cAAc;wBACnC,QAAQ,EAAE,yDAAkB,CAAC,eAAe;wBAC5C,IAAI,EAAE,wDAAiB,CAAC,IAAI;wBAC5B,aAAa,EAAE,KAAK;wBACpB,cAAc,EAAE,GAAG;wBACnB,iBAAiB,EAAE,CAAC;wBACpB,YAAY,EAAE,EAAE;wBAChB,eAAe,EAAE,CAAC;wBAClB,0BAA0B,EAAE,IAAI;wBAChC,6BAA6B,EAAE,IAAI;wBACnC,wBAAwB,EAAE,IAAI;wBAC9B,2BAA2B,EAAE,IAAI;qBAClC;oBACD;wBACE,EAAE,EAAE,EAAE;wBACN,IAAI,EAAE,qDAAc,CAAC,iBAAiB;wBACtC,QAAQ,EAAE,yDAAkB,CAAC,eAAe;wBAC5C,IAAI,EAAE,wDAAiB,CAAC,IAAI;wBAC5B,aAAa,EAAE,KAAK;wBACpB,cAAc,EAAE,GAAG;wBACnB,iBAAiB,EAAE,CAAC;wBACpB,YAAY,EAAE,EAAE;wBAChB,eAAe,EAAE,CAAC;wBAClB,0BAA0B,EAAE,IAAI;wBAChC,6BAA6B,EAAE,IAAI;wBACnC,wBAAwB,EAAE,IAAI;wBAC9B,2BAA2B,EAAE,IAAI;qBAClC;oBACD;wBACE,EAAE,EAAE,EAAE;wBACN,IAAI,EAAE,qDAAc,CAAC,SAAS;wBAC9B,QAAQ,EAAE,yDAAkB,CAAC,KAAK;wBAClC,IAAI,EAAE,wDAAiB,CAAC,IAAI;wBAC5B,aAAa,EAAE,KAAK;wBACpB,cAAc,EAAE,GAAG;wBACnB,iBAAiB,EAAE,CAAC;wBACpB,YAAY,EAAE,EAAE;wBAChB,eAAe,EAAE,CAAC;wBAClB,0BAA0B,EAAE,IAAI;wBAChC,6BAA6B,EAAE,IAAI;wBACnC,wBAAwB,EAAE,IAAI;wBAC9B,2BAA2B,EAAE,IAAI;qBAClC;oBACD;wBACE,EAAE,EAAE,EAAE;wBACN,IAAI,EAAE,qDAAc,CAAC,SAAS;wBAC9B,QAAQ,EAAE,yDAAkB,CAAC,KAAK;wBAClC,IAAI,EAAE,wDAAiB,CAAC,IAAI;wBAC5B,aAAa,EAAE,KAAK;wBACpB,cAAc,EAAE,GAAG;wBACnB,iBAAiB,EAAE,CAAC;wBACpB,YAAY,EAAE,EAAE;wBAChB,eAAe,EAAE,CAAC;wBAClB,0BAA0B,EAAE,IAAI;wBAChC,6BAA6B,EAAE,IAAI;wBACnC,wBAAwB,EAAE,IAAI;wBAC9B,2BAA2B,EAAE,IAAI;qBAClC;iBACqB;aACvB;YACD;gBACE,EAAE,EAAE,CAAC;gBACL,IAAI,EAAE,wDAAiB,CAAC,QAAQ;gBAChC,OAAO,EAAE,2DAAoB,CAAC,KAAK;gBACnC,IAAI,EAAE,uBAAuB;gBAC7B,iCAAiC,EAAE,CAAC;gBACpC,kCAAkC,EAAE,KAAK;gBACzC,0BAA0B,EAAE,CAAC;gBAC7B,oBAAoB,EAAE,CAAC;gBACvB,uBAAuB,EAAE,CAAC;gBAC1B,iCAAiC,EAAE,CAAC;gBACpC,oCAAoC,EAAE,CAAC;gBACvC,OAAO,EAAE,CAAC;wBACR,EAAE,EAAE,CAAC;wBACL,IAAI,EAAE,qDAAc,CAAC,kBAAkB;wBACvC,QAAQ,EAAE,yDAAkB,CAAC,IAAI;wBACjC,IAAI,EAAE,wDAAiB,CAAC,IAAI;wBAC5B,aAAa,EAAE,KAAK;wBACpB,cAAc,EAAE,GAAG;wBACnB,iBAAiB,EAAE,CAAC;wBACpB,YAAY,EAAE,EAAE;wBAChB,eAAe,EAAE,CAAC;wBAClB,0BAA0B,EAAE,EAAE;wBAC9B,6BAA6B,EAAE,CAAC;wBAChC,wBAAwB,EAAE,CAAC;wBAC3B,2BAA2B,EAAE,EAAE;qBAChC,EAAE;wBACD,EAAE,EAAE,CAAC;wBACL,IAAI,EAAE,qDAAc,CAAC,kBAAkB;wBACvC,QAAQ,EAAE,yDAAkB,CAAC,IAAI;wBACjC,IAAI,EAAE,wDAAiB,CAAC,IAAI;wBAC5B,aAAa,EAAE,KAAK;wBACpB,cAAc,EAAE,GAAG;wBACnB,iBAAiB,EAAE,CAAC;wBACpB,YAAY,EAAE,EAAE;wBAChB,eAAe,EAAE,CAAC;wBAClB,0BAA0B,EAAE,EAAE;wBAC9B,6BAA6B,EAAE,CAAC;wBAChC,wBAAwB,EAAE,CAAC;wBAC3B,2BAA2B,EAAE,EAAE;qBAChC,EAAE;wBACD,EAAE,EAAE,CAAC;wBACL,IAAI,EAAE,qDAAc,CAAC,KAAK;wBAC1B,QAAQ,EAAE,yDAAkB,CAAC,eAAe;wBAC5C,IAAI,EAAE,wDAAiB,CAAC,IAAI;wBAC5B,aAAa,EAAE,KAAK;wBACpB,cAAc,EAAE,GAAG;wBACnB,iBAAiB,EAAE,CAAC;wBACpB,YAAY,EAAE,EAAE;wBAChB,eAAe,EAAE,CAAC;wBAClB,0BAA0B,EAAE,EAAE;wBAC9B,6BAA6B,EAAE,CAAC;wBAChC,wBAAwB,EAAE,CAAC;wBAC3B,2BAA2B,EAAE,EAAE;qBAChC;oBACD;wBACE,EAAE,EAAE,CAAC;wBACL,IAAI,EAAE,qDAAc,CAAC,cAAc;wBACnC,QAAQ,EAAE,yDAAkB,CAAC,eAAe;wBAC5C,IAAI,EAAE,wDAAiB,CAAC,IAAI;wBAC5B,aAAa,EAAE,KAAK;wBACpB,cAAc,EAAE,GAAG;wBACnB,iBAAiB,EAAE,CAAC;wBACpB,YAAY,EAAE,EAAE;wBAChB,eAAe,EAAE,CAAC;wBAClB,0BAA0B,EAAE,IAAI;wBAChC,6BAA6B,EAAE,IAAI;wBACnC,wBAAwB,EAAE,IAAI;wBAC9B,2BAA2B,EAAE,IAAI;qBAClC;oBACD;wBACE,EAAE,EAAE,CAAC;wBACL,IAAI,EAAE,qDAAc,CAAC,iBAAiB;wBACtC,QAAQ,EAAE,yDAAkB,CAAC,eAAe;wBAC5C,IAAI,EAAE,wDAAiB,CAAC,IAAI;wBAC5B,aAAa,EAAE,KAAK;wBACpB,cAAc,EAAE,GAAG;wBACnB,iBAAiB,EAAE,CAAC;wBACpB,YAAY,EAAE,EAAE;wBAChB,eAAe,EAAE,CAAC;wBAClB,0BAA0B,EAAE,IAAI;wBAChC,6BAA6B,EAAE,IAAI;wBACnC,wBAAwB,EAAE,IAAI;wBAC9B,2BAA2B,EAAE,IAAI;qBAClC;oBACD;wBACE,EAAE,EAAE,CAAC;wBACL,IAAI,EAAE,qDAAc,CAAC,SAAS;wBAC9B,QAAQ,EAAE,yDAAkB,CAAC,KAAK;wBAClC,IAAI,EAAE,wDAAiB,CAAC,IAAI;wBAC5B,aAAa,EAAE,KAAK;wBACpB,cAAc,EAAE,GAAG;wBACnB,iBAAiB,EAAE,CAAC;wBACpB,YAAY,EAAE,EAAE;wBAChB,eAAe,EAAE,CAAC;wBAClB,0BAA0B,EAAE,IAAI;wBAChC,6BAA6B,EAAE,IAAI;wBACnC,wBAAwB,EAAE,IAAI;wBAC9B,2BAA2B,EAAE,IAAI;qBAClC;oBACD;wBACE,EAAE,EAAE,CAAC;wBACL,IAAI,EAAE,qDAAc,CAAC,SAAS;wBAC9B,QAAQ,EAAE,yDAAkB,CAAC,KAAK;wBAClC,IAAI,EAAE,wDAAiB,CAAC,IAAI;wBAC5B,aAAa,EAAE,KAAK;wBACpB,cAAc,EAAE,GAAG;wBACnB,iBAAiB,EAAE,CAAC;wBACpB,YAAY,EAAE,EAAE;wBAChB,eAAe,EAAE,CAAC;wBAClB,0BAA0B,EAAE,IAAI;wBAChC,6BAA6B,EAAE,IAAI;wBACnC,wBAAwB,EAAE,IAAI;wBAC9B,2BAA2B,EAAE,IAAI;qBAClC;iBACqB;aACvB;YACD;gBACE,EAAE,EAAE,CAAC;gBACL,IAAI,EAAE,wDAAiB,CAAC,GAAG;gBAC3B,OAAO,EAAE,2DAAoB,CAAC,eAAe;gBAC7C,IAAI,EAAE,mCAAmC;gBACzC,iCAAiC,EAAE,CAAC;gBACpC,kCAAkC,EAAE,KAAK;gBACzC,0BAA0B,EAAE,CAAC;gBAC7B,oBAAoB,EAAE,CAAC;gBACvB,uBAAuB,EAAE,CAAC;gBAC1B,iCAAiC,EAAE,CAAC;gBACpC,oCAAoC,EAAE,CAAC;gBACvC,OAAO,EAAE,CAAC;wBACR,EAAE,EAAE,CAAC;wBACL,IAAI,EAAE,qDAAc,CAAC,kBAAkB;wBACvC,QAAQ,EAAE,yDAAkB,CAAC,IAAI;wBACjC,IAAI,EAAE,wDAAiB,CAAC,IAAI;wBAC5B,aAAa,EAAE,KAAK;wBACpB,cAAc,EAAE,GAAG;wBACnB,iBAAiB,EAAE,CAAC;wBACpB,YAAY,EAAE,EAAE;wBAChB,eAAe,EAAE,CAAC;wBAClB,0BAA0B,EAAE,EAAE;wBAC9B,6BAA6B,EAAE,CAAC;wBAChC,wBAAwB,EAAE,CAAC;wBAC3B,2BAA2B,EAAE,EAAE;qBAChC,EAAE;wBACD,EAAE,EAAE,CAAC;wBACL,IAAI,EAAE,qDAAc,CAAC,kBAAkB;wBACvC,QAAQ,EAAE,yDAAkB,CAAC,IAAI;wBACjC,IAAI,EAAE,wDAAiB,CAAC,IAAI;wBAC5B,aAAa,EAAE,KAAK;wBACpB,cAAc,EAAE,GAAG;wBACnB,iBAAiB,EAAE,CAAC;wBACpB,YAAY,EAAE,EAAE;wBAChB,eAAe,EAAE,CAAC;wBAClB,0BAA0B,EAAE,EAAE;wBAC9B,6BAA6B,EAAE,CAAC;wBAChC,wBAAwB,EAAE,CAAC;wBAC3B,2BAA2B,EAAE,EAAE;qBAChC,EAAE;wBACD,EAAE,EAAE,CAAC;wBACL,IAAI,EAAE,qDAAc,CAAC,kBAAkB;wBACvC,QAAQ,EAAE,yDAAkB,CAAC,IAAI;wBACjC,IAAI,EAAE,wDAAiB,CAAC,IAAI;wBAC5B,aAAa,EAAE,KAAK;wBACpB,cAAc,EAAE,GAAG;wBACnB,iBAAiB,EAAE,CAAC;wBACpB,YAAY,EAAE,EAAE;wBAChB,eAAe,EAAE,CAAC;wBAClB,0BAA0B,EAAE,EAAE;wBAC9B,6BAA6B,EAAE,CAAC;wBAChC,wBAAwB,EAAE,CAAC;wBAC3B,2BAA2B,EAAE,EAAE;qBAChC,EAAE;wBACD,EAAE,EAAE,CAAC;wBACL,IAAI,EAAE,qDAAc,CAAC,kBAAkB;wBACvC,QAAQ,EAAE,yDAAkB,CAAC,IAAI;wBACjC,IAAI,EAAE,wDAAiB,CAAC,IAAI;wBAC5B,aAAa,EAAE,KAAK;wBACpB,cAAc,EAAE,GAAG;wBACnB,iBAAiB,EAAE,CAAC;wBACpB,YAAY,EAAE,EAAE;wBAChB,eAAe,EAAE,CAAC;wBAClB,0BAA0B,EAAE,EAAE;wBAC9B,6BAA6B,EAAE,CAAC;wBAChC,wBAAwB,EAAE,CAAC;wBAC3B,2BAA2B,EAAE,EAAE;qBAChC,EAAE;wBACD,EAAE,EAAE,CAAC;wBACL,IAAI,EAAE,qDAAc,CAAC,kBAAkB;wBACvC,QAAQ,EAAE,yDAAkB,CAAC,IAAI;wBACjC,IAAI,EAAE,wDAAiB,CAAC,IAAI;wBAC5B,aAAa,EAAE,KAAK;wBACpB,cAAc,EAAE,GAAG;wBACnB,iBAAiB,EAAE,CAAC;wBACpB,YAAY,EAAE,EAAE;wBAChB,eAAe,EAAE,CAAC;wBAClB,0BAA0B,EAAE,EAAE;wBAC9B,6BAA6B,EAAE,CAAC;wBAChC,wBAAwB,EAAE,CAAC;wBAC3B,2BAA2B,EAAE,EAAE;qBAChC,EAAE;wBACD,EAAE,EAAE,CAAC;wBACL,IAAI,EAAE,qDAAc,CAAC,kBAAkB;wBACvC,QAAQ,EAAE,yDAAkB,CAAC,IAAI;wBACjC,IAAI,EAAE,wDAAiB,CAAC,IAAI;wBAC5B,aAAa,EAAE,KAAK;wBACpB,cAAc,EAAE,GAAG;wBACnB,iBAAiB,EAAE,CAAC;wBACpB,YAAY,EAAE,EAAE;wBAChB,eAAe,EAAE,CAAC;wBAClB,0BAA0B,EAAE,EAAE;wBAC9B,6BAA6B,EAAE,CAAC;wBAChC,wBAAwB,EAAE,CAAC;wBAC3B,2BAA2B,EAAE,EAAE;qBAChC,EAAE;wBACD,EAAE,EAAE,CAAC;wBACL,IAAI,EAAE,qDAAc,CAAC,mBAAmB;wBACxC,QAAQ,EAAE,yDAAkB,CAAC,IAAI;wBACjC,IAAI,EAAE,wDAAiB,CAAC,IAAI;wBAC5B,aAAa,EAAE,KAAK;wBACpB,cAAc,EAAE,GAAG;wBACnB,iBAAiB,EAAE,CAAC;wBACpB,YAAY,EAAE,EAAE;wBAChB,eAAe,EAAE,CAAC;wBAClB,0BAA0B,EAAE,EAAE;wBAC9B,6BAA6B,EAAE,CAAC;wBAChC,wBAAwB,EAAE,CAAC;wBAC3B,2BAA2B,EAAE,EAAE;qBAChC,EAAE;wBACD,EAAE,EAAE,CAAC;wBACL,IAAI,EAAE,qDAAc,CAAC,mBAAmB;wBACxC,QAAQ,EAAE,yDAAkB,CAAC,IAAI;wBACjC,IAAI,EAAE,wDAAiB,CAAC,IAAI;wBAC5B,aAAa,EAAE,KAAK;wBACpB,cAAc,EAAE,GAAG;wBACnB,iBAAiB,EAAE,CAAC;wBACpB,YAAY,EAAE,EAAE;wBAChB,eAAe,EAAE,CAAC;wBAClB,0BAA0B,EAAE,EAAE;wBAC9B,6BAA6B,EAAE,CAAC;wBAChC,wBAAwB,EAAE,CAAC;wBAC3B,2BAA2B,EAAE,EAAE;qBAChC,EAAE;wBACD,EAAE,EAAE,CAAC;wBACL,IAAI,EAAE,qDAAc,CAAC,mBAAmB;wBACxC,QAAQ,EAAE,yDAAkB,CAAC,IAAI;wBACjC,IAAI,EAAE,wDAAiB,CAAC,IAAI;wBAC5B,aAAa,EAAE,KAAK;wBACpB,cAAc,EAAE,GAAG;wBACnB,iBAAiB,EAAE,CAAC;wBACpB,YAAY,EAAE,EAAE;wBAChB,eAAe,EAAE,CAAC;wBAClB,0BAA0B,EAAE,EAAE;wBAC9B,6BAA6B,EAAE,CAAC;wBAChC,wBAAwB,EAAE,CAAC;wBAC3B,2BAA2B,EAAE,EAAE;qBAChC,EAAE;wBACD,EAAE,EAAE,EAAE;wBACN,IAAI,EAAE,qDAAc,CAAC,mBAAmB;wBACxC,QAAQ,EAAE,yDAAkB,CAAC,IAAI;wBACjC,IAAI,EAAE,wDAAiB,CAAC,IAAI;wBAC5B,aAAa,EAAE,KAAK;wBACpB,cAAc,EAAE,GAAG;wBACnB,iBAAiB,EAAE,CAAC;wBACpB,YAAY,EAAE,EAAE;wBAChB,eAAe,EAAE,CAAC;wBAClB,0BAA0B,EAAE,EAAE;wBAC9B,6BAA6B,EAAE,CAAC;wBAChC,wBAAwB,EAAE,CAAC;wBAC3B,2BAA2B,EAAE,EAAE;qBAChC,EAAE;wBACD,EAAE,EAAE,EAAE;wBACN,IAAI,EAAE,qDAAc,CAAC,KAAK;wBAC1B,QAAQ,EAAE,yDAAkB,CAAC,eAAe;wBAC5C,IAAI,EAAE,wDAAiB,CAAC,IAAI;wBAC5B,aAAa,EAAE,KAAK;wBACpB,cAAc,EAAE,GAAG;wBACnB,iBAAiB,EAAE,CAAC;wBACpB,YAAY,EAAE,EAAE;wBAChB,eAAe,EAAE,CAAC;wBAClB,0BAA0B,EAAE,EAAE;wBAC9B,6BAA6B,EAAE,CAAC;wBAChC,wBAAwB,EAAE,CAAC;wBAC3B,2BAA2B,EAAE,EAAE;qBAChC,EAAE;wBACD,EAAE,EAAE,EAAE;wBACN,IAAI,EAAE,qDAAc,CAAC,kBAAkB;wBACvC,QAAQ,EAAE,yDAAkB,CAAC,IAAI;wBACjC,IAAI,EAAE,wDAAiB,CAAC,IAAI;wBAC5B,aAAa,EAAE,KAAK;wBACpB,cAAc,EAAE,GAAG;wBACnB,iBAAiB,EAAE,CAAC;wBACpB,YAAY,EAAE,EAAE;wBAChB,eAAe,EAAE,CAAC;wBAClB,0BAA0B,EAAE,EAAE;wBAC9B,6BAA6B,EAAE,CAAC;wBAChC,wBAAwB,EAAE,CAAC;wBAC3B,2BAA2B,EAAE,EAAE;qBAChC,EAAE;wBACD,EAAE,EAAE,EAAE;wBACN,IAAI,EAAE,qDAAc,CAAC,kBAAkB;wBACvC,QAAQ,EAAE,yDAAkB,CAAC,IAAI;wBACjC,IAAI,EAAE,wDAAiB,CAAC,IAAI;wBAC5B,aAAa,EAAE,KAAK;wBACpB,cAAc,EAAE,GAAG;wBACnB,iBAAiB,EAAE,CAAC;wBACpB,YAAY,EAAE,EAAE;wBAChB,eAAe,EAAE,CAAC;wBAClB,0BAA0B,EAAE,EAAE;wBAC9B,6BAA6B,EAAE,CAAC;wBAChC,wBAAwB,EAAE,CAAC;wBAC3B,2BAA2B,EAAE,EAAE;qBAChC,EAAE;wBACD,EAAE,EAAE,EAAE;wBACN,IAAI,EAAE,qDAAc,CAAC,uBAAuB;wBAC5C,QAAQ,EAAE,yDAAkB,CAAC,IAAI;wBACjC,IAAI,EAAE,wDAAiB,CAAC,IAAI;wBAC5B,aAAa,EAAE,KAAK;wBACpB,cAAc,EAAE,GAAG;wBACnB,iBAAiB,EAAE,CAAC;wBACpB,YAAY,EAAE,EAAE;wBAChB,eAAe,EAAE,CAAC;wBAClB,0BAA0B,EAAE,EAAE;wBAC9B,6BAA6B,EAAE,CAAC;wBAChC,wBAAwB,EAAE,CAAC;wBAC3B,2BAA2B,EAAE,EAAE;qBAChC,EAAE;wBACD,EAAE,EAAE,EAAE;wBACN,IAAI,EAAE,qDAAc,CAAC,uBAAuB;wBAC5C,QAAQ,EAAE,yDAAkB,CAAC,IAAI;wBACjC,IAAI,EAAE,wDAAiB,CAAC,IAAI;wBAC5B,aAAa,EAAE,KAAK;wBACpB,cAAc,EAAE,GAAG;wBACnB,iBAAiB,EAAE,CAAC;wBACpB,YAAY,EAAE,EAAE;wBAChB,eAAe,EAAE,CAAC;wBAClB,0BAA0B,EAAE,EAAE;wBAC9B,6BAA6B,EAAE,CAAC;wBAChC,wBAAwB,EAAE,CAAC;wBAC3B,2BAA2B,EAAE,EAAE;qBAChC;oBACD;wBACE,EAAE,EAAE,EAAE;wBACN,IAAI,EAAE,qDAAc,CAAC,cAAc;wBACnC,QAAQ,EAAE,yDAAkB,CAAC,eAAe;wBAC5C,IAAI,EAAE,wDAAiB,CAAC,IAAI;wBAC5B,aAAa,EAAE,KAAK;wBACpB,cAAc,EAAE,GAAG;wBACnB,iBAAiB,EAAE,CAAC;wBACpB,YAAY,EAAE,EAAE;wBAChB,eAAe,EAAE,CAAC;wBAClB,0BAA0B,EAAE,IAAI;wBAChC,6BAA6B,EAAE,IAAI;wBACnC,wBAAwB,EAAE,IAAI;wBAC9B,2BAA2B,EAAE,IAAI;qBAClC;oBACD;wBACE,EAAE,EAAE,EAAE;wBACN,IAAI,EAAE,qDAAc,CAAC,iBAAiB;wBACtC,QAAQ,EAAE,yDAAkB,CAAC,eAAe;wBAC5C,IAAI,EAAE,wDAAiB,CAAC,IAAI;wBAC5B,aAAa,EAAE,KAAK;wBACpB,cAAc,EAAE,GAAG;wBACnB,iBAAiB,EAAE,CAAC;wBACpB,YAAY,EAAE,EAAE;wBAChB,eAAe,EAAE,CAAC;wBAClB,0BAA0B,EAAE,IAAI;wBAChC,6BAA6B,EAAE,IAAI;wBACnC,wBAAwB,EAAE,IAAI;wBAC9B,2BAA2B,EAAE,IAAI;qBAClC;oBACD;wBACE,EAAE,EAAE,EAAE;wBACN,IAAI,EAAE,qDAAc,CAAC,SAAS;wBAC9B,QAAQ,EAAE,yDAAkB,CAAC,KAAK;wBAClC,IAAI,EAAE,wDAAiB,CAAC,IAAI;wBAC5B,aAAa,EAAE,KAAK;wBACpB,cAAc,EAAE,GAAG;wBACnB,iBAAiB,EAAE,CAAC;wBACpB,YAAY,EAAE,EAAE;wBAChB,eAAe,EAAE,CAAC;wBAClB,0BAA0B,EAAE,IAAI;wBAChC,6BAA6B,EAAE,IAAI;wBACnC,wBAAwB,EAAE,IAAI;wBAC9B,2BAA2B,EAAE,IAAI;qBAClC;oBACD;wBACE,EAAE,EAAE,EAAE;wBACN,IAAI,EAAE,qDAAc,CAAC,SAAS;wBAC9B,QAAQ,EAAE,yDAAkB,CAAC,KAAK;wBAClC,IAAI,EAAE,wDAAiB,CAAC,IAAI;wBAC5B,aAAa,EAAE,KAAK;wBACpB,cAAc,EAAE,GAAG;wBACnB,iBAAiB,EAAE,CAAC;wBACpB,YAAY,EAAE,EAAE;wBAChB,eAAe,EAAE,CAAC;wBAClB,0BAA0B,EAAE,IAAI;wBAChC,6BAA6B,EAAE,IAAI;wBACnC,wBAAwB,EAAE,IAAI;wBAC9B,2BAA2B,EAAE,IAAI;qBAClC;iBACqB;aACvB;YACD;gBACE,EAAE,EAAE,EAAE;gBACN,IAAI,EAAE,wDAAiB,CAAC,GAAG;gBAC3B,OAAO,EAAE,2DAAoB,CAAC,kBAAkB;gBAChD,IAAI,EAAE,sCAAsC;gBAC5C,iCAAiC,EAAE,CAAC;gBACpC,kCAAkC,EAAE,KAAK;gBACzC,0BAA0B,EAAE,CAAC;gBAC7B,oBAAoB,EAAE,CAAC;gBACvB,uBAAuB,EAAE,CAAC;gBAC1B,iCAAiC,EAAE,CAAC;gBACpC,oCAAoC,EAAE,CAAC;gBACvC,OAAO,EAAE,CAAC;wBACR,EAAE,EAAE,CAAC;wBACL,IAAI,EAAE,qDAAc,CAAC,kBAAkB;wBACvC,QAAQ,EAAE,yDAAkB,CAAC,IAAI;wBACjC,IAAI,EAAE,wDAAiB,CAAC,IAAI;wBAC5B,aAAa,EAAE,KAAK;wBACpB,cAAc,EAAE,GAAG;wBACnB,iBAAiB,EAAE,CAAC;wBACpB,YAAY,EAAE,EAAE;wBAChB,eAAe,EAAE,CAAC;wBAClB,0BAA0B,EAAE,EAAE;wBAC9B,6BAA6B,EAAE,CAAC;wBAChC,wBAAwB,EAAE,CAAC;wBAC3B,2BAA2B,EAAE,EAAE;qBAChC,EAAE;wBACD,EAAE,EAAE,CAAC;wBACL,IAAI,EAAE,qDAAc,CAAC,kBAAkB;wBACvC,QAAQ,EAAE,yDAAkB,CAAC,IAAI;wBACjC,IAAI,EAAE,wDAAiB,CAAC,IAAI;wBAC5B,aAAa,EAAE,KAAK;wBACpB,cAAc,EAAE,GAAG;wBACnB,iBAAiB,EAAE,CAAC;wBACpB,YAAY,EAAE,EAAE;wBAChB,eAAe,EAAE,CAAC;wBAClB,0BAA0B,EAAE,EAAE;wBAC9B,6BAA6B,EAAE,CAAC;wBAChC,wBAAwB,EAAE,CAAC;wBAC3B,2BAA2B,EAAE,EAAE;qBAChC,EAAE;wBACD,EAAE,EAAE,CAAC;wBACL,IAAI,EAAE,qDAAc,CAAC,kBAAkB;wBACvC,QAAQ,EAAE,yDAAkB,CAAC,IAAI;wBACjC,IAAI,EAAE,wDAAiB,CAAC,IAAI;wBAC5B,aAAa,EAAE,KAAK;wBACpB,cAAc,EAAE,GAAG;wBACnB,iBAAiB,EAAE,CAAC;wBACpB,YAAY,EAAE,EAAE;wBAChB,eAAe,EAAE,CAAC;wBAClB,0BAA0B,EAAE,EAAE;wBAC9B,6BAA6B,EAAE,CAAC;wBAChC,wBAAwB,EAAE,CAAC;wBAC3B,2BAA2B,EAAE,EAAE;qBAChC,EAAE;wBACD,EAAE,EAAE,CAAC;wBACL,IAAI,EAAE,qDAAc,CAAC,kBAAkB;wBACvC,QAAQ,EAAE,yDAAkB,CAAC,IAAI;wBACjC,IAAI,EAAE,wDAAiB,CAAC,IAAI;wBAC5B,aAAa,EAAE,KAAK;wBACpB,cAAc,EAAE,GAAG;wBACnB,iBAAiB,EAAE,CAAC;wBACpB,YAAY,EAAE,EAAE;wBAChB,eAAe,EAAE,CAAC;wBAClB,0BAA0B,EAAE,EAAE;wBAC9B,6BAA6B,EAAE,CAAC;wBAChC,wBAAwB,EAAE,CAAC;wBAC3B,2BAA2B,EAAE,EAAE;qBAChC,EAAE;wBACD,EAAE,EAAE,CAAC;wBACL,IAAI,EAAE,qDAAc,CAAC,mBAAmB;wBACxC,QAAQ,EAAE,yDAAkB,CAAC,IAAI;wBACjC,IAAI,EAAE,wDAAiB,CAAC,IAAI;wBAC5B,aAAa,EAAE,KAAK;wBACpB,cAAc,EAAE,GAAG;wBACnB,iBAAiB,EAAE,CAAC;wBACpB,YAAY,EAAE,EAAE;wBAChB,eAAe,EAAE,CAAC;wBAClB,0BAA0B,EAAE,EAAE;wBAC9B,6BAA6B,EAAE,CAAC;wBAChC,wBAAwB,EAAE,CAAC;wBAC3B,2BAA2B,EAAE,EAAE;qBAChC,EAAE;wBACD,EAAE,EAAE,CAAC;wBACL,IAAI,EAAE,qDAAc,CAAC,mBAAmB;wBACxC,QAAQ,EAAE,yDAAkB,CAAC,IAAI;wBACjC,IAAI,EAAE,wDAAiB,CAAC,IAAI;wBAC5B,aAAa,EAAE,KAAK;wBACpB,cAAc,EAAE,GAAG;wBACnB,iBAAiB,EAAE,CAAC;wBACpB,YAAY,EAAE,EAAE;wBAChB,eAAe,EAAE,CAAC;wBAClB,0BAA0B,EAAE,EAAE;wBAC9B,6BAA6B,EAAE,CAAC;wBAChC,wBAAwB,EAAE,CAAC;wBAC3B,2BAA2B,EAAE,EAAE;qBAChC,EAAE;wBACD,EAAE,EAAE,CAAC;wBACL,IAAI,EAAE,qDAAc,CAAC,mBAAmB;wBACxC,QAAQ,EAAE,yDAAkB,CAAC,IAAI;wBACjC,IAAI,EAAE,wDAAiB,CAAC,IAAI;wBAC5B,aAAa,EAAE,KAAK;wBACpB,cAAc,EAAE,GAAG;wBACnB,iBAAiB,EAAE,CAAC;wBACpB,YAAY,EAAE,EAAE;wBAChB,eAAe,EAAE,CAAC;wBAClB,0BAA0B,EAAE,EAAE;wBAC9B,6BAA6B,EAAE,CAAC;wBAChC,wBAAwB,EAAE,CAAC;wBAC3B,2BAA2B,EAAE,EAAE;qBAChC,EAAE;wBACD,EAAE,EAAE,EAAE;wBACN,IAAI,EAAE,qDAAc,CAAC,mBAAmB;wBACxC,QAAQ,EAAE,yDAAkB,CAAC,IAAI;wBACjC,IAAI,EAAE,wDAAiB,CAAC,IAAI;wBAC5B,aAAa,EAAE,KAAK;wBACpB,cAAc,EAAE,GAAG;wBACnB,iBAAiB,EAAE,CAAC;wBACpB,YAAY,EAAE,EAAE;wBAChB,eAAe,EAAE,CAAC;wBAClB,0BAA0B,EAAE,EAAE;wBAC9B,6BAA6B,EAAE,CAAC;wBAChC,wBAAwB,EAAE,CAAC;wBAC3B,2BAA2B,EAAE,EAAE;qBAChC,EAAE;wBACD,EAAE,EAAE,EAAE;wBACN,IAAI,EAAE,qDAAc,CAAC,KAAK;wBAC1B,QAAQ,EAAE,yDAAkB,CAAC,eAAe;wBAC5C,IAAI,EAAE,wDAAiB,CAAC,IAAI;wBAC5B,aAAa,EAAE,KAAK;wBACpB,cAAc,EAAE,GAAG;wBACnB,iBAAiB,EAAE,CAAC;wBACpB,YAAY,EAAE,EAAE;wBAChB,eAAe,EAAE,CAAC;wBAClB,0BAA0B,EAAE,EAAE;wBAC9B,6BAA6B,EAAE,CAAC;wBAChC,wBAAwB,EAAE,CAAC;wBAC3B,2BAA2B,EAAE,EAAE;qBAChC,EAAE;wBACD,EAAE,EAAE,EAAE;wBACN,IAAI,EAAE,qDAAc,CAAC,kBAAkB;wBACvC,QAAQ,EAAE,yDAAkB,CAAC,IAAI;wBACjC,IAAI,EAAE,wDAAiB,CAAC,IAAI;wBAC5B,aAAa,EAAE,KAAK;wBACpB,cAAc,EAAE,GAAG;wBACnB,iBAAiB,EAAE,CAAC;wBACpB,YAAY,EAAE,EAAE;wBAChB,eAAe,EAAE,CAAC;wBAClB,0BAA0B,EAAE,EAAE;wBAC9B,6BAA6B,EAAE,CAAC;wBAChC,wBAAwB,EAAE,CAAC;wBAC3B,2BAA2B,EAAE,EAAE;qBAChC,EAAE;wBACD,EAAE,EAAE,EAAE;wBACN,IAAI,EAAE,qDAAc,CAAC,kBAAkB;wBACvC,QAAQ,EAAE,yDAAkB,CAAC,IAAI;wBACjC,IAAI,EAAE,wDAAiB,CAAC,IAAI;wBAC5B,aAAa,EAAE,KAAK;wBACpB,cAAc,EAAE,GAAG;wBACnB,iBAAiB,EAAE,CAAC;wBACpB,YAAY,EAAE,EAAE;wBAChB,eAAe,EAAE,CAAC;wBAClB,0BAA0B,EAAE,EAAE;wBAC9B,6BAA6B,EAAE,CAAC;wBAChC,wBAAwB,EAAE,CAAC;wBAC3B,2BAA2B,EAAE,EAAE;qBAChC,EAAE;wBACD,EAAE,EAAE,EAAE;wBACN,IAAI,EAAE,qDAAc,CAAC,uBAAuB;wBAC5C,QAAQ,EAAE,yDAAkB,CAAC,IAAI;wBACjC,IAAI,EAAE,wDAAiB,CAAC,IAAI;wBAC5B,aAAa,EAAE,KAAK;wBACpB,cAAc,EAAE,GAAG;wBACnB,iBAAiB,EAAE,CAAC;wBACpB,YAAY,EAAE,EAAE;wBAChB,eAAe,EAAE,CAAC;wBAClB,0BAA0B,EAAE,EAAE;wBAC9B,6BAA6B,EAAE,CAAC;wBAChC,wBAAwB,EAAE,CAAC;wBAC3B,2BAA2B,EAAE,EAAE;qBAChC,EAAE;wBACD,EAAE,EAAE,EAAE;wBACN,IAAI,EAAE,qDAAc,CAAC,uBAAuB;wBAC5C,QAAQ,EAAE,yDAAkB,CAAC,IAAI;wBACjC,IAAI,EAAE,wDAAiB,CAAC,IAAI;wBAC5B,aAAa,EAAE,KAAK;wBACpB,cAAc,EAAE,GAAG;wBACnB,iBAAiB,EAAE,CAAC;wBACpB,YAAY,EAAE,EAAE;wBAChB,eAAe,EAAE,CAAC;wBAClB,0BAA0B,EAAE,EAAE;wBAC9B,6BAA6B,EAAE,CAAC;wBAChC,wBAAwB,EAAE,CAAC;wBAC3B,2BAA2B,EAAE,EAAE;qBAChC;oBACD;wBACE,EAAE,EAAE,EAAE;wBACN,IAAI,EAAE,qDAAc,CAAC,cAAc;wBACnC,QAAQ,EAAE,yDAAkB,CAAC,eAAe;wBAC5C,IAAI,EAAE,wDAAiB,CAAC,IAAI;wBAC5B,aAAa,EAAE,KAAK;wBACpB,cAAc,EAAE,GAAG;wBACnB,iBAAiB,EAAE,CAAC;wBACpB,YAAY,EAAE,EAAE;wBAChB,eAAe,EAAE,CAAC;wBAClB,0BAA0B,EAAE,IAAI;wBAChC,6BAA6B,EAAE,IAAI;wBACnC,wBAAwB,EAAE,IAAI;wBAC9B,2BAA2B,EAAE,IAAI;qBAClC;oBACD;wBACE,EAAE,EAAE,EAAE;wBACN,IAAI,EAAE,qDAAc,CAAC,iBAAiB;wBACtC,QAAQ,EAAE,yDAAkB,CAAC,eAAe;wBAC5C,IAAI,EAAE,wDAAiB,CAAC,IAAI;wBAC5B,aAAa,EAAE,KAAK;wBACpB,cAAc,EAAE,GAAG;wBACnB,iBAAiB,EAAE,CAAC;wBACpB,YAAY,EAAE,EAAE;wBAChB,eAAe,EAAE,CAAC;wBAClB,0BAA0B,EAAE,IAAI;wBAChC,6BAA6B,EAAE,IAAI;wBACnC,wBAAwB,EAAE,IAAI;wBAC9B,2BAA2B,EAAE,IAAI;qBAClC;oBACD;wBACE,EAAE,EAAE,EAAE;wBACN,IAAI,EAAE,qDAAc,CAAC,SAAS;wBAC9B,QAAQ,EAAE,yDAAkB,CAAC,KAAK;wBAClC,IAAI,EAAE,wDAAiB,CAAC,IAAI;wBAC5B,aAAa,EAAE,KAAK;wBACpB,cAAc,EAAE,GAAG;wBACnB,iBAAiB,EAAE,CAAC;wBACpB,YAAY,EAAE,EAAE;wBAChB,eAAe,EAAE,CAAC;wBAClB,0BAA0B,EAAE,IAAI;wBAChC,6BAA6B,EAAE,IAAI;wBACnC,wBAAwB,EAAE,IAAI;wBAC9B,2BAA2B,EAAE,IAAI;qBAClC;oBACD;wBACE,EAAE,EAAE,EAAE;wBACN,IAAI,EAAE,qDAAc,CAAC,SAAS;wBAC9B,QAAQ,EAAE,yDAAkB,CAAC,KAAK;wBAClC,IAAI,EAAE,wDAAiB,CAAC,IAAI;wBAC5B,aAAa,EAAE,KAAK;wBACpB,cAAc,EAAE,GAAG;wBACnB,iBAAiB,EAAE,CAAC;wBACpB,YAAY,EAAE,EAAE;wBAChB,eAAe,EAAE,CAAC;wBAClB,0BAA0B,EAAE,IAAI;wBAChC,6BAA6B,EAAE,IAAI;wBACnC,wBAAwB,EAAE,IAAI;wBAC9B,2BAA2B,EAAE,IAAI;qBAClC;iBACqB;aACvB;YACD,cAAc;YACd;gBACE,EAAE,EAAE,EAAE;gBACN,IAAI,EAAE,wDAAiB,CAAC,QAAQ;gBAChC,OAAO,EAAE,2DAAoB,CAAC,IAAI;gBAClC,IAAI,EAAE,2BAA2B;gBACjC,iCAAiC,EAAE,CAAC;gBACpC,kCAAkC,EAAE,KAAK;gBACzC,0BAA0B,EAAE,CAAC;gBAC7B,oBAAoB,EAAE,CAAC;gBACvB,uBAAuB,EAAE,CAAC;gBAC1B,iCAAiC,EAAE,CAAC;gBACpC,oCAAoC,EAAE,CAAC;gBACvC,OAAO,EAAE,CAAC;wBACR,EAAE,EAAE,CAAC;wBACL,IAAI,EAAE,qDAAc,CAAC,kBAAkB;wBACvC,QAAQ,EAAE,yDAAkB,CAAC,IAAI;wBACjC,IAAI,EAAE,wDAAiB,CAAC,IAAI;wBAC5B,aAAa,EAAE,KAAK;wBACpB,cAAc,EAAE,GAAG;wBACnB,iBAAiB,EAAE,CAAC;wBACpB,YAAY,EAAE,EAAE;wBAChB,eAAe,EAAE,CAAC;wBAClB,0BAA0B,EAAE,EAAE;wBAC9B,6BAA6B,EAAE,CAAC;wBAChC,wBAAwB,EAAE,CAAC;wBAC3B,2BAA2B,EAAE,EAAE;qBAChC,EAAE;wBACD,EAAE,EAAE,CAAC;wBACL,IAAI,EAAE,qDAAc,CAAC,kBAAkB;wBACvC,QAAQ,EAAE,yDAAkB,CAAC,IAAI;wBACjC,IAAI,EAAE,wDAAiB,CAAC,IAAI;wBAC5B,aAAa,EAAE,KAAK;wBACpB,cAAc,EAAE,GAAG;wBACnB,iBAAiB,EAAE,CAAC;wBACpB,YAAY,EAAE,EAAE;wBAChB,eAAe,EAAE,CAAC;wBAClB,0BAA0B,EAAE,EAAE;wBAC9B,6BAA6B,EAAE,CAAC;wBAChC,wBAAwB,EAAE,CAAC;wBAC3B,2BAA2B,EAAE,EAAE;qBAChC,EAAE;wBACD,EAAE,EAAE,CAAC;wBACL,IAAI,EAAE,qDAAc,CAAC,kBAAkB;wBACvC,QAAQ,EAAE,yDAAkB,CAAC,IAAI;wBACjC,IAAI,EAAE,wDAAiB,CAAC,IAAI;wBAC5B,aAAa,EAAE,KAAK;wBACpB,cAAc,EAAE,GAAG;wBACnB,iBAAiB,EAAE,CAAC;wBACpB,YAAY,EAAE,EAAE;wBAChB,eAAe,EAAE,CAAC;wBAClB,0BAA0B,EAAE,EAAE;wBAC9B,6BAA6B,EAAE,CAAC;wBAChC,wBAAwB,EAAE,CAAC;wBAC3B,2BAA2B,EAAE,EAAE;qBAChC,EAAE;wBACD,EAAE,EAAE,CAAC;wBACL,IAAI,EAAE,qDAAc,CAAC,kBAAkB;wBACvC,QAAQ,EAAE,yDAAkB,CAAC,IAAI;wBACjC,IAAI,EAAE,wDAAiB,CAAC,IAAI;wBAC5B,aAAa,EAAE,KAAK;wBACpB,cAAc,EAAE,GAAG;wBACnB,iBAAiB,EAAE,CAAC;wBACpB,YAAY,EAAE,EAAE;wBAChB,eAAe,EAAE,CAAC;wBAClB,0BAA0B,EAAE,EAAE;wBAC9B,6BAA6B,EAAE,CAAC;wBAChC,wBAAwB,EAAE,CAAC;wBAC3B,2BAA2B,EAAE,EAAE;qBAChC,EAAE;wBACD,EAAE,EAAE,CAAC;wBACL,IAAI,EAAE,qDAAc,CAAC,KAAK;wBAC1B,QAAQ,EAAE,yDAAkB,CAAC,eAAe;wBAC5C,IAAI,EAAE,wDAAiB,CAAC,IAAI;wBAC5B,aAAa,EAAE,KAAK;wBACpB,cAAc,EAAE,GAAG;wBACnB,iBAAiB,EAAE,CAAC;wBACpB,YAAY,EAAE,EAAE;wBAChB,eAAe,EAAE,CAAC;wBAClB,0BAA0B,EAAE,EAAE;wBAC9B,6BAA6B,EAAE,CAAC;wBAChC,wBAAwB,EAAE,CAAC;wBAC3B,2BAA2B,EAAE,EAAE;qBAChC;oBACD;wBACE,EAAE,EAAE,CAAC;wBACL,IAAI,EAAE,qDAAc,CAAC,cAAc;wBACnC,QAAQ,EAAE,yDAAkB,CAAC,eAAe;wBAC5C,IAAI,EAAE,wDAAiB,CAAC,IAAI;wBAC5B,aAAa,EAAE,KAAK;wBACpB,cAAc,EAAE,GAAG;wBACnB,iBAAiB,EAAE,CAAC;wBACpB,YAAY,EAAE,EAAE;wBAChB,eAAe,EAAE,CAAC;wBAClB,0BAA0B,EAAE,IAAI;wBAChC,6BAA6B,EAAE,IAAI;wBACnC,wBAAwB,EAAE,IAAI;wBAC9B,2BAA2B,EAAE,IAAI;qBAClC;oBACD;wBACE,EAAE,EAAE,CAAC;wBACL,IAAI,EAAE,qDAAc,CAAC,iBAAiB;wBACtC,QAAQ,EAAE,yDAAkB,CAAC,eAAe;wBAC5C,IAAI,EAAE,wDAAiB,CAAC,IAAI;wBAC5B,aAAa,EAAE,KAAK;wBACpB,cAAc,EAAE,GAAG;wBACnB,iBAAiB,EAAE,CAAC;wBACpB,YAAY,EAAE,EAAE;wBAChB,eAAe,EAAE,CAAC;wBAClB,0BAA0B,EAAE,IAAI;wBAChC,6BAA6B,EAAE,IAAI;wBACnC,wBAAwB,EAAE,IAAI;wBAC9B,2BAA2B,EAAE,IAAI;qBAClC;oBACD;wBACE,EAAE,EAAE,CAAC;wBACL,IAAI,EAAE,qDAAc,CAAC,SAAS;wBAC9B,QAAQ,EAAE,yDAAkB,CAAC,KAAK;wBAClC,IAAI,EAAE,wDAAiB,CAAC,IAAI;wBAC5B,aAAa,EAAE,KAAK;wBACpB,cAAc,EAAE,GAAG;wBACnB,iBAAiB,EAAE,CAAC;wBACpB,YAAY,EAAE,EAAE;wBAChB,eAAe,EAAE,CAAC;wBAClB,0BAA0B,EAAE,IAAI;wBAChC,6BAA6B,EAAE,IAAI;wBACnC,wBAAwB,EAAE,IAAI;wBAC9B,2BAA2B,EAAE,IAAI;qBAClC;oBACD;wBACE,EAAE,EAAE,CAAC;wBACL,IAAI,EAAE,qDAAc,CAAC,SAAS;wBAC9B,QAAQ,EAAE,yDAAkB,CAAC,KAAK;wBAClC,IAAI,EAAE,wDAAiB,CAAC,IAAI;wBAC5B,aAAa,EAAE,KAAK;wBACpB,cAAc,EAAE,GAAG;wBACnB,iBAAiB,EAAE,CAAC;wBACpB,YAAY,EAAE,EAAE;wBAChB,eAAe,EAAE,CAAC;wBAClB,0BAA0B,EAAE,IAAI;wBAChC,6BAA6B,EAAE,IAAI;wBACnC,wBAAwB,EAAE,IAAI;wBAC9B,2BAA2B,EAAE,IAAI;qBAClC;iBACqB;aACvB;YACD;gBACE,EAAE,EAAE,EAAE;gBACN,IAAI,EAAE,wDAAiB,CAAC,QAAQ;gBAChC,OAAO,EAAE,2DAAoB,CAAC,IAAI;gBAClC,IAAI,EAAE,2BAA2B;gBACjC,iCAAiC,EAAE,CAAC;gBACpC,kCAAkC,EAAE,KAAK;gBACzC,0BAA0B,EAAE,CAAC;gBAC7B,oBAAoB,EAAE,CAAC;gBACvB,uBAAuB,EAAE,CAAC;gBAC1B,iCAAiC,EAAE,CAAC;gBACpC,oCAAoC,EAAE,CAAC;gBACvC,OAAO,EAAE,CAAC;wBACR,EAAE,EAAE,CAAC;wBACL,IAAI,EAAE,qDAAc,CAAC,kBAAkB;wBACvC,QAAQ,EAAE,yDAAkB,CAAC,IAAI;wBACjC,IAAI,EAAE,wDAAiB,CAAC,IAAI;wBAC5B,aAAa,EAAE,KAAK;wBACpB,cAAc,EAAE,GAAG;wBACnB,iBAAiB,EAAE,CAAC;wBACpB,YAAY,EAAE,EAAE;wBAChB,eAAe,EAAE,CAAC;wBAClB,0BAA0B,EAAE,EAAE;wBAC9B,6BAA6B,EAAE,CAAC;wBAChC,wBAAwB,EAAE,CAAC;wBAC3B,2BAA2B,EAAE,EAAE;qBAChC,EAAE;wBACD,EAAE,EAAE,CAAC;wBACL,IAAI,EAAE,qDAAc,CAAC,kBAAkB;wBACvC,QAAQ,EAAE,yDAAkB,CAAC,IAAI;wBACjC,IAAI,EAAE,wDAAiB,CAAC,IAAI;wBAC5B,aAAa,EAAE,KAAK;wBACpB,cAAc,EAAE,GAAG;wBACnB,iBAAiB,EAAE,CAAC;wBACpB,YAAY,EAAE,EAAE;wBAChB,eAAe,EAAE,CAAC;wBAClB,0BAA0B,EAAE,EAAE;wBAC9B,6BAA6B,EAAE,CAAC;wBAChC,wBAAwB,EAAE,CAAC;wBAC3B,2BAA2B,EAAE,EAAE;qBAChC,EAAE;wBACD,EAAE,EAAE,CAAC;wBACL,IAAI,EAAE,qDAAc,CAAC,kBAAkB;wBACvC,QAAQ,EAAE,yDAAkB,CAAC,IAAI;wBACjC,IAAI,EAAE,wDAAiB,CAAC,IAAI;wBAC5B,aAAa,EAAE,KAAK;wBACpB,cAAc,EAAE,GAAG;wBACnB,iBAAiB,EAAE,CAAC;wBACpB,YAAY,EAAE,EAAE;wBAChB,eAAe,EAAE,CAAC;wBAClB,0BAA0B,EAAE,EAAE;wBAC9B,6BAA6B,EAAE,CAAC;wBAChC,wBAAwB,EAAE,CAAC;wBAC3B,2BAA2B,EAAE,EAAE;qBAChC,EAAE;wBACD,EAAE,EAAE,CAAC;wBACL,IAAI,EAAE,qDAAc,CAAC,kBAAkB;wBACvC,QAAQ,EAAE,yDAAkB,CAAC,IAAI;wBACjC,IAAI,EAAE,wDAAiB,CAAC,IAAI;wBAC5B,aAAa,EAAE,KAAK;wBACpB,cAAc,EAAE,GAAG;wBACnB,iBAAiB,EAAE,CAAC;wBACpB,YAAY,EAAE,EAAE;wBAChB,eAAe,EAAE,CAAC;wBAClB,0BAA0B,EAAE,EAAE;wBAC9B,6BAA6B,EAAE,CAAC;wBAChC,wBAAwB,EAAE,CAAC;wBAC3B,2BAA2B,EAAE,EAAE;qBAChC,EAAE;wBACD,EAAE,EAAE,CAAC;wBACL,IAAI,EAAE,qDAAc,CAAC,kBAAkB;wBACvC,QAAQ,EAAE,yDAAkB,CAAC,QAAQ;wBACrC,IAAI,EAAE,wDAAiB,CAAC,IAAI;wBAC5B,aAAa,EAAE,KAAK;wBACpB,cAAc,EAAE,GAAG;wBACnB,iBAAiB,EAAE,CAAC;wBACpB,YAAY,EAAE,EAAE;wBAChB,eAAe,EAAE,CAAC;wBAClB,0BAA0B,EAAE,EAAE;wBAC9B,6BAA6B,EAAE,CAAC;wBAChC,wBAAwB,EAAE,CAAC;wBAC3B,2BAA2B,EAAE,EAAE;qBAChC,EAAE;wBACD,EAAE,EAAE,CAAC;wBACL,IAAI,EAAE,qDAAc,CAAC,kBAAkB;wBACvC,QAAQ,EAAE,yDAAkB,CAAC,QAAQ;wBACrC,IAAI,EAAE,wDAAiB,CAAC,IAAI;wBAC5B,aAAa,EAAE,KAAK;wBACpB,cAAc,EAAE,GAAG;wBACnB,iBAAiB,EAAE,CAAC;wBACpB,YAAY,EAAE,EAAE;wBAChB,eAAe,EAAE,CAAC;wBAClB,0BAA0B,EAAE,EAAE;wBAC9B,6BAA6B,EAAE,CAAC;wBAChC,wBAAwB,EAAE,CAAC;wBAC3B,2BAA2B,EAAE,EAAE;qBAChC,EAAE;wBACD,EAAE,EAAE,CAAC;wBACL,IAAI,EAAE,qDAAc,CAAC,kBAAkB;wBACvC,QAAQ,EAAE,yDAAkB,CAAC,QAAQ;wBACrC,IAAI,EAAE,wDAAiB,CAAC,IAAI;wBAC5B,aAAa,EAAE,KAAK;wBACpB,cAAc,EAAE,GAAG;wBACnB,iBAAiB,EAAE,CAAC;wBACpB,YAAY,EAAE,EAAE;wBAChB,eAAe,EAAE,CAAC;wBAClB,0BAA0B,EAAE,EAAE;wBAC9B,6BAA6B,EAAE,CAAC;wBAChC,wBAAwB,EAAE,CAAC;wBAC3B,2BAA2B,EAAE,EAAE;qBAChC,EAAE;wBACD,EAAE,EAAE,CAAC;wBACL,IAAI,EAAE,qDAAc,CAAC,kBAAkB;wBACvC,QAAQ,EAAE,yDAAkB,CAAC,QAAQ;wBACrC,IAAI,EAAE,wDAAiB,CAAC,IAAI;wBAC5B,aAAa,EAAE,KAAK;wBACpB,cAAc,EAAE,GAAG;wBACnB,iBAAiB,EAAE,CAAC;wBACpB,YAAY,EAAE,EAAE;wBAChB,eAAe,EAAE,CAAC;wBAClB,0BAA0B,EAAE,EAAE;wBAC9B,6BAA6B,EAAE,CAAC;wBAChC,wBAAwB,EAAE,CAAC;wBAC3B,2BAA2B,EAAE,EAAE;qBAChC,EAAE;wBACD,EAAE,EAAE,CAAC;wBACL,IAAI,EAAE,qDAAc,CAAC,kBAAkB;wBACvC,QAAQ,EAAE,yDAAkB,CAAC,QAAQ;wBACrC,IAAI,EAAE,wDAAiB,CAAC,IAAI;wBAC5B,aAAa,EAAE,KAAK;wBACpB,cAAc,EAAE,GAAG;wBACnB,iBAAiB,EAAE,CAAC;wBACpB,YAAY,EAAE,EAAE;wBAChB,eAAe,EAAE,CAAC;wBAClB,0BAA0B,EAAE,EAAE;wBAC9B,6BAA6B,EAAE,CAAC;wBAChC,wBAAwB,EAAE,CAAC;wBAC3B,2BAA2B,EAAE,EAAE;qBAChC,EAAE;wBACD,EAAE,EAAE,EAAE;wBACN,IAAI,EAAE,qDAAc,CAAC,kBAAkB;wBACvC,QAAQ,EAAE,yDAAkB,CAAC,QAAQ;wBACrC,IAAI,EAAE,wDAAiB,CAAC,IAAI;wBAC5B,aAAa,EAAE,KAAK;wBACpB,cAAc,EAAE,GAAG;wBACnB,iBAAiB,EAAE,CAAC;wBACpB,YAAY,EAAE,EAAE;wBAChB,eAAe,EAAE,CAAC;wBAClB,0BAA0B,EAAE,EAAE;wBAC9B,6BAA6B,EAAE,CAAC;wBAChC,wBAAwB,EAAE,CAAC;wBAC3B,2BAA2B,EAAE,EAAE;qBAChC,EAAE;wBACD,EAAE,EAAE,EAAE;wBACN,IAAI,EAAE,qDAAc,CAAC,kBAAkB;wBACvC,QAAQ,EAAE,yDAAkB,CAAC,QAAQ;wBACrC,IAAI,EAAE,wDAAiB,CAAC,IAAI;wBAC5B,aAAa,EAAE,KAAK;wBACpB,cAAc,EAAE,GAAG;wBACnB,iBAAiB,EAAE,CAAC;wBACpB,YAAY,EAAE,EAAE;wBAChB,eAAe,EAAE,CAAC;wBAClB,0BAA0B,EAAE,EAAE;wBAC9B,6BAA6B,EAAE,CAAC;wBAChC,wBAAwB,EAAE,CAAC;wBAC3B,2BAA2B,EAAE,EAAE;qBAChC,EAAE;wBACD,EAAE,EAAE,EAAE;wBACN,IAAI,EAAE,qDAAc,CAAC,kBAAkB;wBACvC,QAAQ,EAAE,yDAAkB,CAAC,QAAQ;wBACrC,IAAI,EAAE,wDAAiB,CAAC,IAAI;wBAC5B,aAAa,EAAE,KAAK;wBACpB,cAAc,EAAE,GAAG;wBACnB,iBAAiB,EAAE,CAAC;wBACpB,YAAY,EAAE,EAAE;wBAChB,eAAe,EAAE,CAAC;wBAClB,0BAA0B,EAAE,EAAE;wBAC9B,6BAA6B,EAAE,CAAC;wBAChC,wBAAwB,EAAE,CAAC;wBAC3B,2BAA2B,EAAE,EAAE;qBAChC,EAAE;wBACD,EAAE,EAAE,EAAE;wBACN,IAAI,EAAE,qDAAc,CAAC,kBAAkB;wBACvC,QAAQ,EAAE,yDAAkB,CAAC,QAAQ;wBACrC,IAAI,EAAE,wDAAiB,CAAC,IAAI;wBAC5B,aAAa,EAAE,KAAK;wBACpB,cAAc,EAAE,GAAG;wBACnB,iBAAiB,EAAE,CAAC;wBACpB,YAAY,EAAE,EAAE;wBAChB,eAAe,EAAE,CAAC;wBAClB,0BAA0B,EAAE,EAAE;wBAC9B,6BAA6B,EAAE,CAAC;wBAChC,wBAAwB,EAAE,CAAC;wBAC3B,2BAA2B,EAAE,EAAE;qBAChC,EAAE;wBACD,EAAE,EAAE,EAAE;wBACN,IAAI,EAAE,qDAAc,CAAC,kBAAkB;wBACvC,QAAQ,EAAE,yDAAkB,CAAC,QAAQ;wBACrC,IAAI,EAAE,wDAAiB,CAAC,IAAI;wBAC5B,aAAa,EAAE,KAAK;wBACpB,cAAc,EAAE,GAAG;wBACnB,iBAAiB,EAAE,CAAC;wBACpB,YAAY,EAAE,EAAE;wBAChB,eAAe,EAAE,CAAC;wBAClB,0BAA0B,EAAE,EAAE;wBAC9B,6BAA6B,EAAE,CAAC;wBAChC,wBAAwB,EAAE,CAAC;wBAC3B,2BAA2B,EAAE,EAAE;qBAChC,EAAE;wBACD,EAAE,EAAE,EAAE;wBACN,IAAI,EAAE,qDAAc,CAAC,kBAAkB;wBACvC,QAAQ,EAAE,yDAAkB,CAAC,QAAQ;wBACrC,IAAI,EAAE,wDAAiB,CAAC,IAAI;wBAC5B,aAAa,EAAE,KAAK;wBACpB,cAAc,EAAE,GAAG;wBACnB,iBAAiB,EAAE,CAAC;wBACpB,YAAY,EAAE,EAAE;wBAChB,eAAe,EAAE,CAAC;wBAClB,0BAA0B,EAAE,EAAE;wBAC9B,6BAA6B,EAAE,CAAC;wBAChC,wBAAwB,EAAE,CAAC;wBAC3B,2BAA2B,EAAE,EAAE;qBAChC,EAAE;wBACD,EAAE,EAAE,EAAE;wBACN,IAAI,EAAE,qDAAc,CAAC,kBAAkB;wBACvC,QAAQ,EAAE,yDAAkB,CAAC,QAAQ;wBACrC,IAAI,EAAE,wDAAiB,CAAC,IAAI;wBAC5B,aAAa,EAAE,KAAK;wBACpB,cAAc,EAAE,GAAG;wBACnB,iBAAiB,EAAE,CAAC;wBACpB,YAAY,EAAE,EAAE;wBAChB,eAAe,EAAE,CAAC;wBAClB,0BAA0B,EAAE,EAAE;wBAC9B,6BAA6B,EAAE,CAAC;wBAChC,wBAAwB,EAAE,CAAC;wBAC3B,2BAA2B,EAAE,EAAE;qBAChC,EAAE;wBACD,EAAE,EAAE,EAAE;wBACN,IAAI,EAAE,qDAAc,CAAC,kBAAkB;wBACvC,QAAQ,EAAE,yDAAkB,CAAC,gBAAgB;wBAC7C,IAAI,EAAE,wDAAiB,CAAC,IAAI;wBAC5B,aAAa,EAAE,KAAK;wBACpB,cAAc,EAAE,GAAG;wBACnB,iBAAiB,EAAE,CAAC;wBACpB,YAAY,EAAE,EAAE;wBAChB,eAAe,EAAE,CAAC;wBAClB,0BAA0B,EAAE,EAAE;wBAC9B,6BAA6B,EAAE,CAAC;wBAChC,wBAAwB,EAAE,CAAC;wBAC3B,2BAA2B,EAAE,EAAE;qBAChC,EAAE;wBACD,EAAE,EAAE,EAAE;wBACN,IAAI,EAAE,qDAAc,CAAC,kBAAkB;wBACvC,QAAQ,EAAE,yDAAkB,CAAC,gBAAgB;wBAC7C,IAAI,EAAE,wDAAiB,CAAC,IAAI;wBAC5B,aAAa,EAAE,KAAK;wBACpB,cAAc,EAAE,GAAG;wBACnB,iBAAiB,EAAE,CAAC;wBACpB,YAAY,EAAE,EAAE;wBAChB,eAAe,EAAE,CAAC;wBAClB,0BAA0B,EAAE,EAAE;wBAC9B,6BAA6B,EAAE,CAAC;wBAChC,wBAAwB,EAAE,CAAC;wBAC3B,2BAA2B,EAAE,EAAE;qBAChC,EAAE;wBACD,EAAE,EAAE,EAAE;wBACN,IAAI,EAAE,qDAAc,CAAC,kBAAkB;wBACvC,QAAQ,EAAE,yDAAkB,CAAC,gBAAgB;wBAC7C,IAAI,EAAE,wDAAiB,CAAC,IAAI;wBAC5B,aAAa,EAAE,KAAK;wBACpB,cAAc,EAAE,GAAG;wBACnB,iBAAiB,EAAE,CAAC;wBACpB,YAAY,EAAE,EAAE;wBAChB,eAAe,EAAE,CAAC;wBAClB,0BAA0B,EAAE,EAAE;wBAC9B,6BAA6B,EAAE,CAAC;wBAChC,wBAAwB,EAAE,CAAC;wBAC3B,2BAA2B,EAAE,EAAE;qBAChC,EAAE;wBACD,EAAE,EAAE,EAAE;wBACN,IAAI,EAAE,qDAAc,CAAC,kBAAkB;wBACvC,QAAQ,EAAE,yDAAkB,CAAC,gBAAgB;wBAC7C,IAAI,EAAE,wDAAiB,CAAC,IAAI;wBAC5B,aAAa,EAAE,KAAK;wBACpB,cAAc,EAAE,GAAG;wBACnB,iBAAiB,EAAE,CAAC;wBACpB,YAAY,EAAE,EAAE;wBAChB,eAAe,EAAE,CAAC;wBAClB,0BAA0B,EAAE,EAAE;wBAC9B,6BAA6B,EAAE,CAAC;wBAChC,wBAAwB,EAAE,CAAC;wBAC3B,2BAA2B,EAAE,EAAE;qBAChC,EAAE;wBACD,EAAE,EAAE,EAAE;wBACN,IAAI,EAAE,qDAAc,CAAC,kBAAkB;wBACvC,QAAQ,EAAE,yDAAkB,CAAC,gBAAgB;wBAC7C,IAAI,EAAE,wDAAiB,CAAC,IAAI;wBAC5B,aAAa,EAAE,KAAK;wBACpB,cAAc,EAAE,GAAG;wBACnB,iBAAiB,EAAE,CAAC;wBACpB,YAAY,EAAE,EAAE;wBAChB,eAAe,EAAE,CAAC;wBAClB,0BAA0B,EAAE,EAAE;wBAC9B,6BAA6B,EAAE,CAAC;wBAChC,wBAAwB,EAAE,CAAC;wBAC3B,2BAA2B,EAAE,EAAE;qBAChC,EAAE;wBACD,EAAE,EAAE,EAAE;wBACN,IAAI,EAAE,qDAAc,CAAC,kBAAkB;wBACvC,QAAQ,EAAE,yDAAkB,CAAC,gBAAgB;wBAC7C,IAAI,EAAE,wDAAiB,CAAC,IAAI;wBAC5B,aAAa,EAAE,KAAK;wBACpB,cAAc,EAAE,GAAG;wBACnB,iBAAiB,EAAE,CAAC;wBACpB,YAAY,EAAE,EAAE;wBAChB,eAAe,EAAE,CAAC;wBAClB,0BAA0B,EAAE,EAAE;wBAC9B,6BAA6B,EAAE,CAAC;wBAChC,wBAAwB,EAAE,CAAC;wBAC3B,2BAA2B,EAAE,EAAE;qBAChC,EAAE;wBACD,EAAE,EAAE,EAAE;wBACN,IAAI,EAAE,qDAAc,CAAC,kBAAkB;wBACvC,QAAQ,EAAE,yDAAkB,CAAC,gBAAgB;wBAC7C,IAAI,EAAE,wDAAiB,CAAC,IAAI;wBAC5B,aAAa,EAAE,KAAK;wBACpB,cAAc,EAAE,GAAG;wBACnB,iBAAiB,EAAE,CAAC;wBACpB,YAAY,EAAE,EAAE;wBAChB,eAAe,EAAE,CAAC;wBAClB,0BAA0B,EAAE,EAAE;wBAC9B,6BAA6B,EAAE,CAAC;wBAChC,wBAAwB,EAAE,CAAC;wBAC3B,2BAA2B,EAAE,EAAE;qBAChC,EAAE;wBACD,EAAE,EAAE,EAAE;wBACN,IAAI,EAAE,qDAAc,CAAC,kBAAkB;wBACvC,QAAQ,EAAE,yDAAkB,CAAC,gBAAgB;wBAC7C,IAAI,EAAE,wDAAiB,CAAC,IAAI;wBAC5B,aAAa,EAAE,KAAK;wBACpB,cAAc,EAAE,GAAG;wBACnB,iBAAiB,EAAE,CAAC;wBACpB,YAAY,EAAE,EAAE;wBAChB,eAAe,EAAE,CAAC;wBAClB,0BAA0B,EAAE,EAAE;wBAC9B,6BAA6B,EAAE,CAAC;wBAChC,wBAAwB,EAAE,CAAC;wBAC3B,2BAA2B,EAAE,EAAE;qBAChC,EAAE;wBACD,EAAE,EAAE,EAAE;wBACN,IAAI,EAAE,qDAAc,CAAC,mBAAmB;wBACxC,QAAQ,EAAE,yDAAkB,CAAC,IAAI;wBACjC,IAAI,EAAE,wDAAiB,CAAC,IAAI;wBAC5B,aAAa,EAAE,KAAK;wBACpB,cAAc,EAAE,GAAG;wBACnB,iBAAiB,EAAE,CAAC;wBACpB,YAAY,EAAE,EAAE;wBAChB,eAAe,EAAE,CAAC;wBAClB,0BAA0B,EAAE,EAAE;wBAC9B,6BAA6B,EAAE,CAAC;wBAChC,wBAAwB,EAAE,CAAC;wBAC3B,2BAA2B,EAAE,EAAE;qBAChC,EAAE;wBACD,EAAE,EAAE,EAAE;wBACN,IAAI,EAAE,qDAAc,CAAC,mBAAmB;wBACxC,QAAQ,EAAE,yDAAkB,CAAC,IAAI;wBACjC,IAAI,EAAE,wDAAiB,CAAC,IAAI;wBAC5B,aAAa,EAAE,KAAK;wBACpB,cAAc,EAAE,GAAG;wBACnB,iBAAiB,EAAE,CAAC;wBACpB,YAAY,EAAE,EAAE;wBAChB,eAAe,EAAE,CAAC;wBAClB,0BAA0B,EAAE,EAAE;wBAC9B,6BAA6B,EAAE,CAAC;wBAChC,wBAAwB,EAAE,CAAC;wBAC3B,2BAA2B,EAAE,EAAE;qBAChC,EAAE;wBACD,EAAE,EAAE,EAAE;wBACN,IAAI,EAAE,qDAAc,CAAC,mBAAmB;wBACxC,QAAQ,EAAE,yDAAkB,CAAC,IAAI;wBACjC,IAAI,EAAE,wDAAiB,CAAC,IAAI;wBAC5B,aAAa,EAAE,KAAK;wBACpB,cAAc,EAAE,GAAG;wBACnB,iBAAiB,EAAE,CAAC;wBACpB,YAAY,EAAE,EAAE;wBAChB,eAAe,EAAE,CAAC;wBAClB,0BAA0B,EAAE,EAAE;wBAC9B,6BAA6B,EAAE,CAAC;wBAChC,wBAAwB,EAAE,CAAC;wBAC3B,2BAA2B,EAAE,EAAE;qBAChC,EAAE;wBACD,EAAE,EAAE,EAAE;wBACN,IAAI,EAAE,qDAAc,CAAC,mBAAmB;wBACxC,QAAQ,EAAE,yDAAkB,CAAC,IAAI;wBACjC,IAAI,EAAE,wDAAiB,CAAC,IAAI;wBAC5B,aAAa,EAAE,KAAK;wBACpB,cAAc,EAAE,GAAG;wBACnB,iBAAiB,EAAE,CAAC;wBACpB,YAAY,EAAE,EAAE;wBAChB,eAAe,EAAE,CAAC;wBAClB,0BAA0B,EAAE,EAAE;wBAC9B,6BAA6B,EAAE,CAAC;wBAChC,wBAAwB,EAAE,CAAC;wBAC3B,2BAA2B,EAAE,EAAE;qBAChC,EAAE;wBACD,EAAE,EAAE,EAAE;wBACN,IAAI,EAAE,qDAAc,CAAC,mBAAmB;wBACxC,QAAQ,EAAE,yDAAkB,CAAC,QAAQ;wBACrC,IAAI,EAAE,wDAAiB,CAAC,IAAI;wBAC5B,aAAa,EAAE,KAAK;wBACpB,cAAc,EAAE,GAAG;wBACnB,iBAAiB,EAAE,CAAC;wBACpB,YAAY,EAAE,EAAE;wBAChB,eAAe,EAAE,CAAC;wBAClB,0BAA0B,EAAE,EAAE;wBAC9B,6BAA6B,EAAE,CAAC;wBAChC,wBAAwB,EAAE,CAAC;wBAC3B,2BAA2B,EAAE,EAAE;qBAChC,EAAE;wBACD,EAAE,EAAE,EAAE;wBACN,IAAI,EAAE,qDAAc,CAAC,mBAAmB;wBACxC,QAAQ,EAAE,yDAAkB,CAAC,QAAQ;wBACrC,IAAI,EAAE,wDAAiB,CAAC,IAAI;wBAC5B,aAAa,EAAE,KAAK;wBACpB,cAAc,EAAE,GAAG;wBACnB,iBAAiB,EAAE,CAAC;wBACpB,YAAY,EAAE,EAAE;wBAChB,eAAe,EAAE,CAAC;wBAClB,0BAA0B,EAAE,EAAE;wBAC9B,6BAA6B,EAAE,CAAC;wBAChC,wBAAwB,EAAE,CAAC;wBAC3B,2BAA2B,EAAE,EAAE;qBAChC,EAAE;wBACD,EAAE,EAAE,EAAE;wBACN,IAAI,EAAE,qDAAc,CAAC,mBAAmB;wBACxC,QAAQ,EAAE,yDAAkB,CAAC,QAAQ;wBACrC,IAAI,EAAE,wDAAiB,CAAC,IAAI;wBAC5B,aAAa,EAAE,KAAK;wBACpB,cAAc,EAAE,GAAG;wBACnB,iBAAiB,EAAE,CAAC;wBACpB,YAAY,EAAE,EAAE;wBAChB,eAAe,EAAE,CAAC;wBAClB,0BAA0B,EAAE,EAAE;wBAC9B,6BAA6B,EAAE,CAAC;wBAChC,wBAAwB,EAAE,CAAC;wBAC3B,2BAA2B,EAAE,EAAE;qBAChC,EAAE;wBACD,EAAE,EAAE,EAAE;wBACN,IAAI,EAAE,qDAAc,CAAC,mBAAmB;wBACxC,QAAQ,EAAE,yDAAkB,CAAC,QAAQ;wBACrC,IAAI,EAAE,wDAAiB,CAAC,IAAI;wBAC5B,aAAa,EAAE,KAAK;wBACpB,cAAc,EAAE,GAAG;wBACnB,iBAAiB,EAAE,CAAC;wBACpB,YAAY,EAAE,EAAE;wBAChB,eAAe,EAAE,CAAC;wBAClB,0BAA0B,EAAE,EAAE;wBAC9B,6BAA6B,EAAE,CAAC;wBAChC,wBAAwB,EAAE,CAAC;wBAC3B,2BAA2B,EAAE,EAAE;qBAChC,EAAE;wBACD,EAAE,EAAE,EAAE;wBACN,IAAI,EAAE,qDAAc,CAAC,mBAAmB;wBACxC,QAAQ,EAAE,yDAAkB,CAAC,QAAQ;wBACrC,IAAI,EAAE,wDAAiB,CAAC,IAAI;wBAC5B,aAAa,EAAE,KAAK;wBACpB,cAAc,EAAE,GAAG;wBACnB,iBAAiB,EAAE,CAAC;wBACpB,YAAY,EAAE,EAAE;wBAChB,eAAe,EAAE,CAAC;wBAClB,0BAA0B,EAAE,EAAE;wBAC9B,6BAA6B,EAAE,CAAC;wBAChC,wBAAwB,EAAE,CAAC;wBAC3B,2BAA2B,EAAE,EAAE;qBAChC,EAAE;wBACD,EAAE,EAAE,EAAE;wBACN,IAAI,EAAE,qDAAc,CAAC,mBAAmB;wBACxC,QAAQ,EAAE,yDAAkB,CAAC,QAAQ;wBACrC,IAAI,EAAE,wDAAiB,CAAC,IAAI;wBAC5B,aAAa,EAAE,KAAK;wBACpB,cAAc,EAAE,GAAG;wBACnB,iBAAiB,EAAE,CAAC;wBACpB,YAAY,EAAE,EAAE;wBAChB,eAAe,EAAE,CAAC;wBAClB,0BAA0B,EAAE,EAAE;wBAC9B,6BAA6B,EAAE,CAAC;wBAChC,wBAAwB,EAAE,CAAC;wBAC3B,2BAA2B,EAAE,EAAE;qBAChC,EAAE;wBACD,EAAE,EAAE,EAAE;wBACN,IAAI,EAAE,qDAAc,CAAC,mBAAmB;wBACxC,QAAQ,EAAE,yDAAkB,CAAC,QAAQ;wBACrC,IAAI,EAAE,wDAAiB,CAAC,IAAI;wBAC5B,aAAa,EAAE,KAAK;wBACpB,cAAc,EAAE,GAAG;wBACnB,iBAAiB,EAAE,CAAC;wBACpB,YAAY,EAAE,EAAE;wBAChB,eAAe,EAAE,CAAC;wBAClB,0BAA0B,EAAE,EAAE;wBAC9B,6BAA6B,EAAE,CAAC;wBAChC,wBAAwB,EAAE,CAAC;wBAC3B,2BAA2B,EAAE,EAAE;qBAChC,EAAE;wBACD,EAAE,EAAE,EAAE;wBACN,IAAI,EAAE,qDAAc,CAAC,mBAAmB;wBACxC,QAAQ,EAAE,yDAAkB,CAAC,QAAQ;wBACrC,IAAI,EAAE,wDAAiB,CAAC,IAAI;wBAC5B,aAAa,EAAE,KAAK;wBACpB,cAAc,EAAE,GAAG;wBACnB,iBAAiB,EAAE,CAAC;wBACpB,YAAY,EAAE,EAAE;wBAChB,eAAe,EAAE,CAAC;wBAClB,0BAA0B,EAAE,EAAE;wBAC9B,6BAA6B,EAAE,CAAC;wBAChC,wBAAwB,EAAE,CAAC;wBAC3B,2BAA2B,EAAE,EAAE;qBAChC,EAAE;wBACD,EAAE,EAAE,EAAE;wBACN,IAAI,EAAE,qDAAc,CAAC,mBAAmB;wBACxC,QAAQ,EAAE,yDAAkB,CAAC,QAAQ;wBACrC,IAAI,EAAE,wDAAiB,CAAC,IAAI;wBAC5B,aAAa,EAAE,KAAK;wBACpB,cAAc,EAAE,GAAG;wBACnB,iBAAiB,EAAE,CAAC;wBACpB,YAAY,EAAE,EAAE;wBAChB,eAAe,EAAE,CAAC;wBAClB,0BAA0B,EAAE,EAAE;wBAC9B,6BAA6B,EAAE,CAAC;wBAChC,wBAAwB,EAAE,CAAC;wBAC3B,2BAA2B,EAAE,EAAE;qBAChC,EAAE;wBACD,EAAE,EAAE,EAAE;wBACN,IAAI,EAAE,qDAAc,CAAC,mBAAmB;wBACxC,QAAQ,EAAE,yDAAkB,CAAC,QAAQ;wBACrC,IAAI,EAAE,wDAAiB,CAAC,IAAI;wBAC5B,aAAa,EAAE,KAAK;wBACpB,cAAc,EAAE,GAAG;wBACnB,iBAAiB,EAAE,CAAC;wBACpB,YAAY,EAAE,EAAE;wBAChB,eAAe,EAAE,CAAC;wBAClB,0BAA0B,EAAE,EAAE;wBAC9B,6BAA6B,EAAE,CAAC;wBAChC,wBAAwB,EAAE,CAAC;wBAC3B,2BAA2B,EAAE,EAAE;qBAChC,EAAE;wBACD,EAAE,EAAE,EAAE;wBACN,IAAI,EAAE,qDAAc,CAAC,mBAAmB;wBACxC,QAAQ,EAAE,yDAAkB,CAAC,QAAQ;wBACrC,IAAI,EAAE,wDAAiB,CAAC,IAAI;wBAC5B,aAAa,EAAE,KAAK;wBACpB,cAAc,EAAE,GAAG;wBACnB,iBAAiB,EAAE,CAAC;wBACpB,YAAY,EAAE,EAAE;wBAChB,eAAe,EAAE,CAAC;wBAClB,0BAA0B,EAAE,EAAE;wBAC9B,6BAA6B,EAAE,CAAC;wBAChC,wBAAwB,EAAE,CAAC;wBAC3B,2BAA2B,EAAE,EAAE;qBAChC,EAAE;wBACD,EAAE,EAAE,EAAE;wBACN,IAAI,EAAE,qDAAc,CAAC,mBAAmB;wBACxC,QAAQ,EAAE,yDAAkB,CAAC,QAAQ;wBACrC,IAAI,EAAE,wDAAiB,CAAC,IAAI;wBAC5B,aAAa,EAAE,KAAK;wBACpB,cAAc,EAAE,GAAG;wBACnB,iBAAiB,EAAE,CAAC;wBACpB,YAAY,EAAE,EAAE;wBAChB,eAAe,EAAE,CAAC;wBAClB,0BAA0B,EAAE,EAAE;wBAC9B,6BAA6B,EAAE,CAAC;wBAChC,wBAAwB,EAAE,CAAC;wBAC3B,2BAA2B,EAAE,EAAE;qBAChC,EAAE;wBACD,EAAE,EAAE,EAAE;wBACN,IAAI,EAAE,qDAAc,CAAC,KAAK;wBAC1B,QAAQ,EAAE,yDAAkB,CAAC,eAAe;wBAC5C,IAAI,EAAE,wDAAiB,CAAC,IAAI;wBAC5B,aAAa,EAAE,KAAK;wBACpB,cAAc,EAAE,GAAG;wBACnB,iBAAiB,EAAE,CAAC;wBACpB,YAAY,EAAE,EAAE;wBAChB,eAAe,EAAE,CAAC;wBAClB,0BAA0B,EAAE,EAAE;wBAC9B,6BAA6B,EAAE,CAAC;wBAChC,wBAAwB,EAAE,CAAC;wBAC3B,2BAA2B,EAAE,EAAE;qBAChC;oBACD;wBACE,EAAE,EAAE,EAAE;wBACN,IAAI,EAAE,qDAAc,CAAC,cAAc;wBACnC,QAAQ,EAAE,yDAAkB,CAAC,eAAe;wBAC5C,IAAI,EAAE,wDAAiB,CAAC,IAAI;wBAC5B,aAAa,EAAE,KAAK;wBACpB,cAAc,EAAE,GAAG;wBACnB,iBAAiB,EAAE,CAAC;wBACpB,YAAY,EAAE,EAAE;wBAChB,eAAe,EAAE,CAAC;wBAClB,0BAA0B,EAAE,IAAI;wBAChC,6BAA6B,EAAE,IAAI;wBACnC,wBAAwB,EAAE,IAAI;wBAC9B,2BAA2B,EAAE,IAAI;qBAClC;oBACD;wBACE,EAAE,EAAE,EAAE;wBACN,IAAI,EAAE,qDAAc,CAAC,iBAAiB;wBACtC,QAAQ,EAAE,yDAAkB,CAAC,eAAe;wBAC5C,IAAI,EAAE,wDAAiB,CAAC,IAAI;wBAC5B,aAAa,EAAE,KAAK;wBACpB,cAAc,EAAE,GAAG;wBACnB,iBAAiB,EAAE,CAAC;wBACpB,YAAY,EAAE,EAAE;wBAChB,eAAe,EAAE,CAAC;wBAClB,0BAA0B,EAAE,IAAI;wBAChC,6BAA6B,EAAE,IAAI;wBACnC,wBAAwB,EAAE,IAAI;wBAC9B,2BAA2B,EAAE,IAAI;qBAClC;oBACD;wBACE,EAAE,EAAE,EAAE;wBACN,IAAI,EAAE,qDAAc,CAAC,SAAS;wBAC9B,QAAQ,EAAE,yDAAkB,CAAC,KAAK;wBAClC,IAAI,EAAE,wDAAiB,CAAC,IAAI;wBAC5B,aAAa,EAAE,KAAK;wBACpB,cAAc,EAAE,GAAG;wBACnB,iBAAiB,EAAE,CAAC;wBACpB,YAAY,EAAE,EAAE;wBAChB,eAAe,EAAE,CAAC;wBAClB,0BAA0B,EAAE,IAAI;wBAChC,6BAA6B,EAAE,IAAI;wBACnC,wBAAwB,EAAE,IAAI;wBAC9B,2BAA2B,EAAE,IAAI;qBAClC;oBACD;wBACE,EAAE,EAAE,EAAE;wBACN,IAAI,EAAE,qDAAc,CAAC,SAAS;wBAC9B,QAAQ,EAAE,yDAAkB,CAAC,KAAK;wBAClC,IAAI,EAAE,wDAAiB,CAAC,IAAI;wBAC5B,aAAa,EAAE,KAAK;wBACpB,cAAc,EAAE,GAAG;wBACnB,iBAAiB,EAAE,CAAC;wBACpB,YAAY,EAAE,EAAE;wBAChB,eAAe,EAAE,CAAC;wBAClB,0BAA0B,EAAE,IAAI;wBAChC,6BAA6B,EAAE,IAAI;wBACnC,wBAAwB,EAAE,IAAI;wBAC9B,2BAA2B,EAAE,IAAI;qBAClC;iBACqB;aACvB;YACD;gBACE,EAAE,EAAE,EAAE;gBACN,IAAI,EAAE,wDAAiB,CAAC,QAAQ;gBAChC,OAAO,EAAE,2DAAoB,CAAC,KAAK;gBACnC,IAAI,EAAE,uBAAuB;gBAC7B,iCAAiC,EAAE,CAAC;gBACpC,kCAAkC,EAAE,KAAK;gBACzC,0BAA0B,EAAE,CAAC;gBAC7B,oBAAoB,EAAE,CAAC;gBACvB,uBAAuB,EAAE,CAAC;gBAC1B,iCAAiC,EAAE,CAAC;gBACpC,oCAAoC,EAAE,CAAC;gBACvC,OAAO,EAAE,CAAC;wBACR,EAAE,EAAE,CAAC;wBACL,IAAI,EAAE,qDAAc,CAAC,kBAAkB;wBACvC,QAAQ,EAAE,yDAAkB,CAAC,IAAI;wBACjC,IAAI,EAAE,wDAAiB,CAAC,IAAI;wBAC5B,aAAa,EAAE,KAAK;wBACpB,cAAc,EAAE,GAAG;wBACnB,iBAAiB,EAAE,CAAC;wBACpB,YAAY,EAAE,EAAE;wBAChB,eAAe,EAAE,CAAC;wBAClB,0BAA0B,EAAE,EAAE;wBAC9B,6BAA6B,EAAE,CAAC;wBAChC,wBAAwB,EAAE,CAAC;wBAC3B,2BAA2B,EAAE,EAAE;qBAChC,EAAE;wBACD,EAAE,EAAE,CAAC;wBACL,IAAI,EAAE,qDAAc,CAAC,kBAAkB;wBACvC,QAAQ,EAAE,yDAAkB,CAAC,IAAI;wBACjC,IAAI,EAAE,wDAAiB,CAAC,IAAI;wBAC5B,aAAa,EAAE,KAAK;wBACpB,cAAc,EAAE,GAAG;wBACnB,iBAAiB,EAAE,CAAC;wBACpB,YAAY,EAAE,EAAE;wBAChB,eAAe,EAAE,CAAC;wBAClB,0BAA0B,EAAE,EAAE;wBAC9B,6BAA6B,EAAE,CAAC;wBAChC,wBAAwB,EAAE,CAAC;wBAC3B,2BAA2B,EAAE,EAAE;qBAChC,EAAE;wBACD,EAAE,EAAE,CAAC;wBACL,IAAI,EAAE,qDAAc,CAAC,KAAK;wBAC1B,QAAQ,EAAE,yDAAkB,CAAC,eAAe;wBAC5C,IAAI,EAAE,wDAAiB,CAAC,IAAI;wBAC5B,aAAa,EAAE,KAAK;wBACpB,cAAc,EAAE,GAAG;wBACnB,iBAAiB,EAAE,CAAC;wBACpB,YAAY,EAAE,EAAE;wBAChB,eAAe,EAAE,CAAC;wBAClB,0BAA0B,EAAE,EAAE;wBAC9B,6BAA6B,EAAE,CAAC;wBAChC,wBAAwB,EAAE,CAAC;wBAC3B,2BAA2B,EAAE,EAAE;qBAChC;oBACD;wBACE,EAAE,EAAE,CAAC;wBACL,IAAI,EAAE,qDAAc,CAAC,cAAc;wBACnC,QAAQ,EAAE,yDAAkB,CAAC,eAAe;wBAC5C,IAAI,EAAE,wDAAiB,CAAC,IAAI;wBAC5B,aAAa,EAAE,KAAK;wBACpB,cAAc,EAAE,GAAG;wBACnB,iBAAiB,EAAE,CAAC;wBACpB,YAAY,EAAE,EAAE;wBAChB,eAAe,EAAE,CAAC;wBAClB,0BAA0B,EAAE,IAAI;wBAChC,6BAA6B,EAAE,IAAI;wBACnC,wBAAwB,EAAE,IAAI;wBAC9B,2BAA2B,EAAE,IAAI;qBAClC;oBACD;wBACE,EAAE,EAAE,CAAC;wBACL,IAAI,EAAE,qDAAc,CAAC,iBAAiB;wBACtC,QAAQ,EAAE,yDAAkB,CAAC,eAAe;wBAC5C,IAAI,EAAE,wDAAiB,CAAC,IAAI;wBAC5B,aAAa,EAAE,KAAK;wBACpB,cAAc,EAAE,GAAG;wBACnB,iBAAiB,EAAE,CAAC;wBACpB,YAAY,EAAE,EAAE;wBAChB,eAAe,EAAE,CAAC;wBAClB,0BAA0B,EAAE,IAAI;wBAChC,6BAA6B,EAAE,IAAI;wBACnC,wBAAwB,EAAE,IAAI;wBAC9B,2BAA2B,EAAE,IAAI;qBAClC;oBACD;wBACE,EAAE,EAAE,CAAC;wBACL,IAAI,EAAE,qDAAc,CAAC,SAAS;wBAC9B,QAAQ,EAAE,yDAAkB,CAAC,KAAK;wBAClC,IAAI,EAAE,wDAAiB,CAAC,IAAI;wBAC5B,aAAa,EAAE,KAAK;wBACpB,cAAc,EAAE,GAAG;wBACnB,iBAAiB,EAAE,CAAC;wBACpB,YAAY,EAAE,EAAE;wBAChB,eAAe,EAAE,CAAC;wBAClB,0BAA0B,EAAE,IAAI;wBAChC,6BAA6B,EAAE,IAAI;wBACnC,wBAAwB,EAAE,IAAI;wBAC9B,2BAA2B,EAAE,IAAI;qBAClC;oBACD;wBACE,EAAE,EAAE,CAAC;wBACL,IAAI,EAAE,qDAAc,CAAC,SAAS;wBAC9B,QAAQ,EAAE,yDAAkB,CAAC,KAAK;wBAClC,IAAI,EAAE,wDAAiB,CAAC,IAAI;wBAC5B,aAAa,EAAE,KAAK;wBACpB,cAAc,EAAE,GAAG;wBACnB,iBAAiB,EAAE,CAAC;wBACpB,YAAY,EAAE,EAAE;wBAChB,eAAe,EAAE,CAAC;wBAClB,0BAA0B,EAAE,IAAI;wBAChC,6BAA6B,EAAE,IAAI;wBACnC,wBAAwB,EAAE,IAAI;wBAC9B,2BAA2B,EAAE,IAAI;qBAClC;iBACqB;aACvB;YACD;gBACE,EAAE,EAAE,EAAE;gBACN,IAAI,EAAE,wDAAiB,CAAC,QAAQ;gBAChC,OAAO,EAAE,2DAAoB,CAAC,WAAW;gBACzC,IAAI,EAAE,mCAAmC;gBACzC,iCAAiC,EAAE,CAAC;gBACpC,kCAAkC,EAAE,KAAK;gBACzC,0BAA0B,EAAE,CAAC;gBAC7B,oBAAoB,EAAE,CAAC;gBACvB,uBAAuB,EAAE,CAAC;gBAC1B,iCAAiC,EAAE,CAAC;gBACpC,oCAAoC,EAAE,CAAC;gBACvC,OAAO,EAAE,CAAC;wBACR,EAAE,EAAE,CAAC;wBACL,IAAI,EAAE,qDAAc,CAAC,kBAAkB;wBACvC,QAAQ,EAAE,yDAAkB,CAAC,IAAI;wBACjC,IAAI,EAAE,wDAAiB,CAAC,IAAI;wBAC5B,aAAa,EAAE,KAAK;wBACpB,cAAc,EAAE,GAAG;wBACnB,iBAAiB,EAAE,CAAC;wBACpB,YAAY,EAAE,EAAE;wBAChB,eAAe,EAAE,CAAC;wBAClB,0BAA0B,EAAE,EAAE;wBAC9B,6BAA6B,EAAE,CAAC;wBAChC,wBAAwB,EAAE,CAAC;wBAC3B,2BAA2B,EAAE,EAAE;qBAChC,EAAE;wBACD,EAAE,EAAE,CAAC;wBACL,IAAI,EAAE,qDAAc,CAAC,kBAAkB;wBACvC,QAAQ,EAAE,yDAAkB,CAAC,IAAI;wBACjC,IAAI,EAAE,wDAAiB,CAAC,IAAI;wBAC5B,aAAa,EAAE,KAAK;wBACpB,cAAc,EAAE,GAAG;wBACnB,iBAAiB,EAAE,CAAC;wBACpB,YAAY,EAAE,EAAE;wBAChB,eAAe,EAAE,CAAC;wBAClB,0BAA0B,EAAE,EAAE;wBAC9B,6BAA6B,EAAE,CAAC;wBAChC,wBAAwB,EAAE,CAAC;wBAC3B,2BAA2B,EAAE,EAAE;qBAChC,EAAE;wBACD,EAAE,EAAE,CAAC;wBACL,IAAI,EAAE,qDAAc,CAAC,kBAAkB;wBACvC,QAAQ,EAAE,yDAAkB,CAAC,IAAI;wBACjC,IAAI,EAAE,wDAAiB,CAAC,IAAI;wBAC5B,aAAa,EAAE,KAAK;wBACpB,cAAc,EAAE,GAAG;wBACnB,iBAAiB,EAAE,CAAC;wBACpB,YAAY,EAAE,EAAE;wBAChB,eAAe,EAAE,CAAC;wBAClB,0BAA0B,EAAE,EAAE;wBAC9B,6BAA6B,EAAE,CAAC;wBAChC,wBAAwB,EAAE,CAAC;wBAC3B,2BAA2B,EAAE,EAAE;qBAChC,EAAE;wBACD,EAAE,EAAE,CAAC;wBACL,IAAI,EAAE,qDAAc,CAAC,kBAAkB;wBACvC,QAAQ,EAAE,yDAAkB,CAAC,IAAI;wBACjC,IAAI,EAAE,wDAAiB,CAAC,IAAI;wBAC5B,aAAa,EAAE,KAAK;wBACpB,cAAc,EAAE,GAAG;wBACnB,iBAAiB,EAAE,CAAC;wBACpB,YAAY,EAAE,EAAE;wBAChB,eAAe,EAAE,CAAC;wBAClB,0BAA0B,EAAE,EAAE;wBAC9B,6BAA6B,EAAE,CAAC;wBAChC,wBAAwB,EAAE,CAAC;wBAC3B,2BAA2B,EAAE,EAAE;qBAChC,EAAE;wBACD,EAAE,EAAE,CAAC;wBACL,IAAI,EAAE,qDAAc,CAAC,mBAAmB;wBACxC,QAAQ,EAAE,yDAAkB,CAAC,IAAI;wBACjC,IAAI,EAAE,wDAAiB,CAAC,IAAI;wBAC5B,aAAa,EAAE,KAAK;wBACpB,cAAc,EAAE,GAAG;wBACnB,iBAAiB,EAAE,CAAC;wBACpB,YAAY,EAAE,EAAE;wBAChB,eAAe,EAAE,CAAC;wBAClB,0BAA0B,EAAE,EAAE;wBAC9B,6BAA6B,EAAE,CAAC;wBAChC,wBAAwB,EAAE,CAAC;wBAC3B,2BAA2B,EAAE,EAAE;qBAChC,EAAE;wBACD,EAAE,EAAE,CAAC;wBACL,IAAI,EAAE,qDAAc,CAAC,mBAAmB;wBACxC,QAAQ,EAAE,yDAAkB,CAAC,IAAI;wBACjC,IAAI,EAAE,wDAAiB,CAAC,IAAI;wBAC5B,aAAa,EAAE,KAAK;wBACpB,cAAc,EAAE,GAAG;wBACnB,iBAAiB,EAAE,CAAC;wBACpB,YAAY,EAAE,EAAE;wBAChB,eAAe,EAAE,CAAC;wBAClB,0BAA0B,EAAE,EAAE;wBAC9B,6BAA6B,EAAE,CAAC;wBAChC,wBAAwB,EAAE,CAAC;wBAC3B,2BAA2B,EAAE,EAAE;qBAChC,EAAE;wBACD,EAAE,EAAE,CAAC;wBACL,IAAI,EAAE,qDAAc,CAAC,mBAAmB;wBACxC,QAAQ,EAAE,yDAAkB,CAAC,IAAI;wBACjC,IAAI,EAAE,wDAAiB,CAAC,IAAI;wBAC5B,aAAa,EAAE,KAAK;wBACpB,cAAc,EAAE,GAAG;wBACnB,iBAAiB,EAAE,CAAC;wBACpB,YAAY,EAAE,EAAE;wBAChB,eAAe,EAAE,CAAC;wBAClB,0BAA0B,EAAE,EAAE;wBAC9B,6BAA6B,EAAE,CAAC;wBAChC,wBAAwB,EAAE,CAAC;wBAC3B,2BAA2B,EAAE,EAAE;qBAChC,EAAE;wBACD,EAAE,EAAE,CAAC;wBACL,IAAI,EAAE,qDAAc,CAAC,mBAAmB;wBACxC,QAAQ,EAAE,yDAAkB,CAAC,IAAI;wBACjC,IAAI,EAAE,wDAAiB,CAAC,IAAI;wBAC5B,aAAa,EAAE,KAAK;wBACpB,cAAc,EAAE,GAAG;wBACnB,iBAAiB,EAAE,CAAC;wBACpB,YAAY,EAAE,EAAE;wBAChB,eAAe,EAAE,CAAC;wBAClB,0BAA0B,EAAE,EAAE;wBAC9B,6BAA6B,EAAE,CAAC;wBAChC,wBAAwB,EAAE,CAAC;wBAC3B,2BAA2B,EAAE,EAAE;qBAChC,EAAE;wBACD,EAAE,EAAE,CAAC;wBACL,IAAI,EAAE,qDAAc,CAAC,KAAK;wBAC1B,QAAQ,EAAE,yDAAkB,CAAC,eAAe;wBAC5C,IAAI,EAAE,wDAAiB,CAAC,IAAI;wBAC5B,aAAa,EAAE,KAAK;wBACpB,cAAc,EAAE,GAAG;wBACnB,iBAAiB,EAAE,CAAC;wBACpB,YAAY,EAAE,EAAE;wBAChB,eAAe,EAAE,CAAC;wBAClB,0BAA0B,EAAE,EAAE;wBAC9B,6BAA6B,EAAE,CAAC;wBAChC,wBAAwB,EAAE,CAAC;wBAC3B,2BAA2B,EAAE,EAAE;qBAChC,EAAE;wBACD,EAAE,EAAE,EAAE;wBACN,IAAI,EAAE,qDAAc,CAAC,oBAAoB;wBACzC,QAAQ,EAAE,yDAAkB,CAAC,IAAI;wBACjC,IAAI,EAAE,wDAAiB,CAAC,IAAI;wBAC5B,aAAa,EAAE,KAAK;wBACpB,cAAc,EAAE,GAAG;wBACnB,iBAAiB,EAAE,CAAC;wBACpB,YAAY,EAAE,EAAE;wBAChB,eAAe,EAAE,CAAC;wBAClB,0BAA0B,EAAE,EAAE;wBAC9B,6BAA6B,EAAE,CAAC;wBAChC,wBAAwB,EAAE,CAAC;wBAC3B,2BAA2B,EAAE,EAAE;qBAChC,EAAE;wBACD,EAAE,EAAE,EAAE;wBACN,IAAI,EAAE,qDAAc,CAAC,oBAAoB;wBACzC,QAAQ,EAAE,yDAAkB,CAAC,IAAI;wBACjC,IAAI,EAAE,wDAAiB,CAAC,IAAI;wBAC5B,aAAa,EAAE,KAAK;wBACpB,cAAc,EAAE,GAAG;wBACnB,iBAAiB,EAAE,CAAC;wBACpB,YAAY,EAAE,EAAE;wBAChB,eAAe,EAAE,CAAC;wBAClB,0BAA0B,EAAE,EAAE;wBAC9B,6BAA6B,EAAE,CAAC;wBAChC,wBAAwB,EAAE,CAAC;wBAC3B,2BAA2B,EAAE,EAAE;qBAChC,EAAE;wBACD,EAAE,EAAE,EAAE;wBACN,IAAI,EAAE,qDAAc,CAAC,oBAAoB;wBACzC,QAAQ,EAAE,yDAAkB,CAAC,IAAI;wBACjC,IAAI,EAAE,wDAAiB,CAAC,IAAI;wBAC5B,aAAa,EAAE,KAAK;wBACpB,cAAc,EAAE,GAAG;wBACnB,iBAAiB,EAAE,CAAC;wBACpB,YAAY,EAAE,EAAE;wBAChB,eAAe,EAAE,CAAC;wBAClB,0BAA0B,EAAE,EAAE;wBAC9B,6BAA6B,EAAE,CAAC;wBAChC,wBAAwB,EAAE,CAAC;wBAC3B,2BAA2B,EAAE,EAAE;qBAChC,EAAE;wBACD,EAAE,EAAE,EAAE;wBACN,IAAI,EAAE,qDAAc,CAAC,oBAAoB;wBACzC,QAAQ,EAAE,yDAAkB,CAAC,IAAI;wBACjC,IAAI,EAAE,wDAAiB,CAAC,IAAI;wBAC5B,aAAa,EAAE,KAAK;wBACpB,cAAc,EAAE,GAAG;wBACnB,iBAAiB,EAAE,CAAC;wBACpB,YAAY,EAAE,EAAE;wBAChB,eAAe,EAAE,CAAC;wBAClB,0BAA0B,EAAE,EAAE;wBAC9B,6BAA6B,EAAE,CAAC;wBAChC,wBAAwB,EAAE,CAAC;wBAC3B,2BAA2B,EAAE,EAAE;qBAChC;oBACD;wBACE,EAAE,EAAE,EAAE;wBACN,IAAI,EAAE,qDAAc,CAAC,cAAc;wBACnC,QAAQ,EAAE,yDAAkB,CAAC,eAAe;wBAC5C,IAAI,EAAE,wDAAiB,CAAC,IAAI;wBAC5B,aAAa,EAAE,KAAK;wBACpB,cAAc,EAAE,GAAG;wBACnB,iBAAiB,EAAE,CAAC;wBACpB,YAAY,EAAE,EAAE;wBAChB,eAAe,EAAE,CAAC;wBAClB,0BAA0B,EAAE,IAAI;wBAChC,6BAA6B,EAAE,IAAI;wBACnC,wBAAwB,EAAE,IAAI;wBAC9B,2BAA2B,EAAE,IAAI;qBAClC;oBACD;wBACE,EAAE,EAAE,EAAE;wBACN,IAAI,EAAE,qDAAc,CAAC,iBAAiB;wBACtC,QAAQ,EAAE,yDAAkB,CAAC,eAAe;wBAC5C,IAAI,EAAE,wDAAiB,CAAC,IAAI;wBAC5B,aAAa,EAAE,KAAK;wBACpB,cAAc,EAAE,GAAG;wBACnB,iBAAiB,EAAE,CAAC;wBACpB,YAAY,EAAE,EAAE;wBAChB,eAAe,EAAE,CAAC;wBAClB,0BAA0B,EAAE,IAAI;wBAChC,6BAA6B,EAAE,IAAI;wBACnC,wBAAwB,EAAE,IAAI;wBAC9B,2BAA2B,EAAE,IAAI;qBAClC;oBACD;wBACE,EAAE,EAAE,EAAE;wBACN,IAAI,EAAE,qDAAc,CAAC,SAAS;wBAC9B,QAAQ,EAAE,yDAAkB,CAAC,KAAK;wBAClC,IAAI,EAAE,wDAAiB,CAAC,IAAI;wBAC5B,aAAa,EAAE,KAAK;wBACpB,cAAc,EAAE,GAAG;wBACnB,iBAAiB,EAAE,CAAC;wBACpB,YAAY,EAAE,EAAE;wBAChB,eAAe,EAAE,CAAC;wBAClB,0BAA0B,EAAE,IAAI;wBAChC,6BAA6B,EAAE,IAAI;wBACnC,wBAAwB,EAAE,IAAI;wBAC9B,2BAA2B,EAAE,IAAI;qBAClC;oBACD;wBACE,EAAE,EAAE,EAAE;wBACN,IAAI,EAAE,qDAAc,CAAC,SAAS;wBAC9B,QAAQ,EAAE,yDAAkB,CAAC,KAAK;wBAClC,IAAI,EAAE,wDAAiB,CAAC,IAAI;wBAC5B,aAAa,EAAE,KAAK;wBACpB,cAAc,EAAE,GAAG;wBACnB,iBAAiB,EAAE,CAAC;wBACpB,YAAY,EAAE,EAAE;wBAChB,eAAe,EAAE,CAAC;wBAClB,0BAA0B,EAAE,IAAI;wBAChC,6BAA6B,EAAE,IAAI;wBACnC,wBAAwB,EAAE,IAAI;wBAC9B,2BAA2B,EAAE,IAAI;qBAClC;iBACA;aACF,EAAE;gBACD,EAAE,EAAE,EAAE;gBACN,IAAI,EAAE,wDAAiB,CAAC,QAAQ;gBAChC,OAAO,EAAE,2DAAoB,CAAC,WAAW;gBACzC,IAAI,EAAE,qCAAqC;gBAC3C,iCAAiC,EAAE,CAAC;gBACpC,kCAAkC,EAAE,KAAK;gBACzC,0BAA0B,EAAE,CAAC;gBAC7B,oBAAoB,EAAE,CAAC;gBACvB,uBAAuB,EAAE,CAAC;gBAC1B,iCAAiC,EAAE,CAAC;gBACpC,oCAAoC,EAAE,CAAC;gBACvC,OAAO,EAAE,CAAC;wBACR,EAAE,EAAE,CAAC;wBACL,IAAI,EAAE,qDAAc,CAAC,kBAAkB;wBACvC,QAAQ,EAAE,yDAAkB,CAAC,IAAI;wBACjC,IAAI,EAAE,wDAAiB,CAAC,KAAK;wBAC7B,aAAa,EAAE,KAAK;wBACpB,cAAc,EAAE,GAAG;wBACnB,iBAAiB,EAAE,CAAC;wBACpB,YAAY,EAAE,EAAE;wBAChB,eAAe,EAAE,CAAC;wBAClB,0BAA0B,EAAE,EAAE;wBAC9B,6BAA6B,EAAE,CAAC;wBAChC,wBAAwB,EAAE,CAAC;wBAC3B,2BAA2B,EAAE,EAAE;qBAChC,EAAE;wBACD,EAAE,EAAE,CAAC;wBACL,IAAI,EAAE,qDAAc,CAAC,kBAAkB;wBACvC,QAAQ,EAAE,yDAAkB,CAAC,IAAI;wBACjC,IAAI,EAAE,wDAAiB,CAAC,KAAK;wBAC7B,aAAa,EAAE,KAAK;wBACpB,cAAc,EAAE,GAAG;wBACnB,iBAAiB,EAAE,CAAC;wBACpB,YAAY,EAAE,EAAE;wBAChB,eAAe,EAAE,CAAC;wBAClB,0BAA0B,EAAE,EAAE;wBAC9B,6BAA6B,EAAE,CAAC;wBAChC,wBAAwB,EAAE,CAAC;wBAC3B,2BAA2B,EAAE,EAAE;qBAChC,EAAE;wBACD,EAAE,EAAE,CAAC;wBACL,IAAI,EAAE,qDAAc,CAAC,kBAAkB;wBACvC,QAAQ,EAAE,yDAAkB,CAAC,IAAI;wBACjC,IAAI,EAAE,wDAAiB,CAAC,KAAK;wBAC7B,aAAa,EAAE,KAAK;wBACpB,cAAc,EAAE,GAAG;wBACnB,iBAAiB,EAAE,CAAC;wBACpB,YAAY,EAAE,EAAE;wBAChB,eAAe,EAAE,CAAC;wBAClB,0BAA0B,EAAE,EAAE;wBAC9B,6BAA6B,EAAE,CAAC;wBAChC,wBAAwB,EAAE,CAAC;wBAC3B,2BAA2B,EAAE,EAAE;qBAChC,EAAE;wBACD,EAAE,EAAE,CAAC;wBACL,IAAI,EAAE,qDAAc,CAAC,kBAAkB;wBACvC,QAAQ,EAAE,yDAAkB,CAAC,IAAI;wBACjC,IAAI,EAAE,wDAAiB,CAAC,KAAK;wBAC7B,aAAa,EAAE,KAAK;wBACpB,cAAc,EAAE,GAAG;wBACnB,iBAAiB,EAAE,CAAC;wBACpB,YAAY,EAAE,EAAE;wBAChB,eAAe,EAAE,CAAC;wBAClB,0BAA0B,EAAE,EAAE;wBAC9B,6BAA6B,EAAE,CAAC;wBAChC,wBAAwB,EAAE,CAAC;wBAC3B,2BAA2B,EAAE,EAAE;qBAChC,EAAE;wBACD,EAAE,EAAE,CAAC;wBACL,IAAI,EAAE,qDAAc,CAAC,mBAAmB;wBACxC,QAAQ,EAAE,yDAAkB,CAAC,IAAI;wBACjC,IAAI,EAAE,wDAAiB,CAAC,KAAK;wBAC7B,aAAa,EAAE,KAAK;wBACpB,cAAc,EAAE,GAAG;wBACnB,iBAAiB,EAAE,CAAC;wBACpB,YAAY,EAAE,EAAE;wBAChB,eAAe,EAAE,CAAC;wBAClB,0BAA0B,EAAE,EAAE;wBAC9B,6BAA6B,EAAE,CAAC;wBAChC,wBAAwB,EAAE,CAAC;wBAC3B,2BAA2B,EAAE,EAAE;qBAChC,EAAE;wBACD,EAAE,EAAE,CAAC;wBACL,IAAI,EAAE,qDAAc,CAAC,mBAAmB;wBACxC,QAAQ,EAAE,yDAAkB,CAAC,IAAI;wBACjC,IAAI,EAAE,wDAAiB,CAAC,KAAK;wBAC7B,aAAa,EAAE,KAAK;wBACpB,cAAc,EAAE,GAAG;wBACnB,iBAAiB,EAAE,CAAC;wBACpB,YAAY,EAAE,EAAE;wBAChB,eAAe,EAAE,CAAC;wBAClB,0BAA0B,EAAE,EAAE;wBAC9B,6BAA6B,EAAE,CAAC;wBAChC,wBAAwB,EAAE,CAAC;wBAC3B,2BAA2B,EAAE,EAAE;qBAChC,EAAE;wBACD,EAAE,EAAE,CAAC;wBACL,IAAI,EAAE,qDAAc,CAAC,mBAAmB;wBACxC,QAAQ,EAAE,yDAAkB,CAAC,IAAI;wBACjC,IAAI,EAAE,wDAAiB,CAAC,KAAK;wBAC7B,aAAa,EAAE,KAAK;wBACpB,cAAc,EAAE,GAAG;wBACnB,iBAAiB,EAAE,CAAC;wBACpB,YAAY,EAAE,EAAE;wBAChB,eAAe,EAAE,CAAC;wBAClB,0BAA0B,EAAE,EAAE;wBAC9B,6BAA6B,EAAE,CAAC;wBAChC,wBAAwB,EAAE,CAAC;wBAC3B,2BAA2B,EAAE,EAAE;qBAChC,EAAE;wBACD,EAAE,EAAE,CAAC;wBACL,IAAI,EAAE,qDAAc,CAAC,mBAAmB;wBACxC,QAAQ,EAAE,yDAAkB,CAAC,IAAI;wBACjC,IAAI,EAAE,wDAAiB,CAAC,KAAK;wBAC7B,aAAa,EAAE,KAAK;wBACpB,cAAc,EAAE,GAAG;wBACnB,iBAAiB,EAAE,CAAC;wBACpB,YAAY,EAAE,EAAE;wBAChB,eAAe,EAAE,CAAC;wBAClB,0BAA0B,EAAE,EAAE;wBAC9B,6BAA6B,EAAE,CAAC;wBAChC,wBAAwB,EAAE,CAAC;wBAC3B,2BAA2B,EAAE,EAAE;qBAChC,EAAE;wBACD,EAAE,EAAE,CAAC;wBACL,IAAI,EAAE,qDAAc,CAAC,KAAK;wBAC1B,QAAQ,EAAE,yDAAkB,CAAC,eAAe;wBAC5C,IAAI,EAAE,wDAAiB,CAAC,IAAI;wBAC5B,aAAa,EAAE,KAAK;wBACpB,cAAc,EAAE,GAAG;wBACnB,iBAAiB,EAAE,CAAC;wBACpB,YAAY,EAAE,EAAE;wBAChB,eAAe,EAAE,CAAC;wBAClB,0BAA0B,EAAE,EAAE;wBAC9B,6BAA6B,EAAE,CAAC;wBAChC,wBAAwB,EAAE,CAAC;wBAC3B,2BAA2B,EAAE,EAAE;qBAChC,EAAE;wBACD,EAAE,EAAE,EAAE;wBACN,IAAI,EAAE,qDAAc,CAAC,oBAAoB;wBACzC,QAAQ,EAAE,yDAAkB,CAAC,IAAI;wBACjC,IAAI,EAAE,wDAAiB,CAAC,KAAK;wBAC7B,aAAa,EAAE,KAAK;wBACpB,cAAc,EAAE,GAAG;wBACnB,iBAAiB,EAAE,CAAC;wBACpB,YAAY,EAAE,EAAE;wBAChB,eAAe,EAAE,CAAC;wBAClB,0BAA0B,EAAE,EAAE;wBAC9B,6BAA6B,EAAE,CAAC;wBAChC,wBAAwB,EAAE,CAAC;wBAC3B,2BAA2B,EAAE,EAAE;qBAChC,EAAE;wBACD,EAAE,EAAE,EAAE;wBACN,IAAI,EAAE,qDAAc,CAAC,oBAAoB;wBACzC,QAAQ,EAAE,yDAAkB,CAAC,IAAI;wBACjC,IAAI,EAAE,wDAAiB,CAAC,KAAK;wBAC7B,aAAa,EAAE,KAAK;wBACpB,cAAc,EAAE,GAAG;wBACnB,iBAAiB,EAAE,CAAC;wBACpB,YAAY,EAAE,EAAE;wBAChB,eAAe,EAAE,CAAC;wBAClB,0BAA0B,EAAE,EAAE;wBAC9B,6BAA6B,EAAE,CAAC;wBAChC,wBAAwB,EAAE,CAAC;wBAC3B,2BAA2B,EAAE,EAAE;qBAChC,EAAE;wBACD,EAAE,EAAE,EAAE;wBACN,IAAI,EAAE,qDAAc,CAAC,oBAAoB;wBACzC,QAAQ,EAAE,yDAAkB,CAAC,IAAI;wBACjC,IAAI,EAAE,wDAAiB,CAAC,KAAK;wBAC7B,aAAa,EAAE,KAAK;wBACpB,cAAc,EAAE,GAAG;wBACnB,iBAAiB,EAAE,CAAC;wBACpB,YAAY,EAAE,EAAE;wBAChB,eAAe,EAAE,CAAC;wBAClB,0BAA0B,EAAE,EAAE;wBAC9B,6BAA6B,EAAE,CAAC;wBAChC,wBAAwB,EAAE,CAAC;wBAC3B,2BAA2B,EAAE,EAAE;qBAChC,EAAE;wBACD,EAAE,EAAE,EAAE;wBACN,IAAI,EAAE,qDAAc,CAAC,oBAAoB;wBACzC,QAAQ,EAAE,yDAAkB,CAAC,IAAI;wBACjC,IAAI,EAAE,wDAAiB,CAAC,KAAK;wBAC7B,aAAa,EAAE,KAAK;wBACpB,cAAc,EAAE,GAAG;wBACnB,iBAAiB,EAAE,CAAC;wBACpB,YAAY,EAAE,EAAE;wBAChB,eAAe,EAAE,CAAC;wBAClB,0BAA0B,EAAE,EAAE;wBAC9B,6BAA6B,EAAE,CAAC;wBAChC,wBAAwB,EAAE,CAAC;wBAC3B,2BAA2B,EAAE,EAAE;qBAChC;oBACD;wBACE,EAAE,EAAE,EAAE;wBACN,IAAI,EAAE,qDAAc,CAAC,cAAc;wBACnC,QAAQ,EAAE,yDAAkB,CAAC,eAAe;wBAC5C,IAAI,EAAE,wDAAiB,CAAC,IAAI;wBAC5B,aAAa,EAAE,KAAK;wBACpB,cAAc,EAAE,GAAG;wBACnB,iBAAiB,EAAE,CAAC;wBACpB,YAAY,EAAE,EAAE;wBAChB,eAAe,EAAE,CAAC;wBAClB,0BAA0B,EAAE,IAAI;wBAChC,6BAA6B,EAAE,IAAI;wBACnC,wBAAwB,EAAE,IAAI;wBAC9B,2BAA2B,EAAE,IAAI;qBAClC;oBACD;wBACE,EAAE,EAAE,EAAE;wBACN,IAAI,EAAE,qDAAc,CAAC,iBAAiB;wBACtC,QAAQ,EAAE,yDAAkB,CAAC,eAAe;wBAC5C,IAAI,EAAE,wDAAiB,CAAC,IAAI;wBAC5B,aAAa,EAAE,KAAK;wBACpB,cAAc,EAAE,GAAG;wBACnB,iBAAiB,EAAE,CAAC;wBACpB,YAAY,EAAE,EAAE;wBAChB,eAAe,EAAE,CAAC;wBAClB,0BAA0B,EAAE,IAAI;wBAChC,6BAA6B,EAAE,IAAI;wBACnC,wBAAwB,EAAE,IAAI;wBAC9B,2BAA2B,EAAE,IAAI;qBAClC;oBACD;wBACE,EAAE,EAAE,EAAE;wBACN,IAAI,EAAE,qDAAc,CAAC,SAAS;wBAC9B,QAAQ,EAAE,yDAAkB,CAAC,KAAK;wBAClC,IAAI,EAAE,wDAAiB,CAAC,IAAI;wBAC5B,aAAa,EAAE,KAAK;wBACpB,cAAc,EAAE,GAAG;wBACnB,iBAAiB,EAAE,CAAC;wBACpB,YAAY,EAAE,EAAE;wBAChB,eAAe,EAAE,CAAC;wBAClB,0BAA0B,EAAE,IAAI;wBAChC,6BAA6B,EAAE,IAAI;wBACnC,wBAAwB,EAAE,IAAI;wBAC9B,2BAA2B,EAAE,IAAI;qBAClC;oBACD;wBACE,EAAE,EAAE,EAAE;wBACN,IAAI,EAAE,qDAAc,CAAC,SAAS;wBAC9B,QAAQ,EAAE,yDAAkB,CAAC,KAAK;wBAClC,IAAI,EAAE,wDAAiB,CAAC,IAAI;wBAC5B,aAAa,EAAE,KAAK;wBACpB,cAAc,EAAE,GAAG;wBACnB,iBAAiB,EAAE,CAAC;wBACpB,YAAY,EAAE,EAAE;wBAChB,eAAe,EAAE,CAAC;wBAClB,0BAA0B,EAAE,IAAI;wBAChC,6BAA6B,EAAE,IAAI;wBACnC,wBAAwB,EAAE,IAAI;wBAC9B,2BAA2B,EAAE,IAAI;qBAClC;iBACA;aACF,EAAE;gBACD,EAAE,EAAE,EAAE;gBACN,IAAI,EAAE,wDAAiB,CAAC,OAAO;gBAC/B,OAAO,EAAE,2DAAoB,CAAC,IAAI;gBAClC,IAAI,EAAE,uBAAuB;gBAC7B,iCAAiC,EAAE,CAAC;gBACpC,kCAAkC,EAAE,KAAK;gBACzC,0BAA0B,EAAE,CAAC;gBAC7B,oBAAoB,EAAE,CAAC;gBACvB,uBAAuB,EAAE,CAAC;gBAC1B,iCAAiC,EAAE,CAAC;gBACpC,oCAAoC,EAAE,CAAC;gBACvC,OAAO,EAAE,CAAC;wBACR,EAAE,EAAE,CAAC;wBACL,IAAI,EAAE,qDAAc,CAAC,kBAAkB;wBACvC,QAAQ,EAAE,yDAAkB,CAAC,KAAK;wBAClC,IAAI,EAAE,wDAAiB,CAAC,KAAK;wBAC7B,aAAa,EAAE,KAAK;wBACpB,cAAc,EAAE,GAAG;wBACnB,iBAAiB,EAAE,CAAC;wBACpB,YAAY,EAAE,EAAE;wBAChB,eAAe,EAAE,CAAC;wBAClB,0BAA0B,EAAE,EAAE;wBAC9B,6BAA6B,EAAE,CAAC;wBAChC,wBAAwB,EAAE,CAAC;wBAC3B,2BAA2B,EAAE,EAAE;qBAChC,EAAE;wBACD,EAAE,EAAE,CAAC;wBACL,IAAI,EAAE,qDAAc,CAAC,kBAAkB;wBACvC,QAAQ,EAAE,yDAAkB,CAAC,KAAK;wBAClC,IAAI,EAAE,wDAAiB,CAAC,KAAK;wBAC7B,aAAa,EAAE,KAAK;wBACpB,cAAc,EAAE,GAAG;wBACnB,iBAAiB,EAAE,CAAC;wBACpB,YAAY,EAAE,EAAE;wBAChB,eAAe,EAAE,CAAC;wBAClB,0BAA0B,EAAE,EAAE;wBAC9B,6BAA6B,EAAE,CAAC;wBAChC,wBAAwB,EAAE,CAAC;wBAC3B,2BAA2B,EAAE,EAAE;qBAChC,EAAE;wBACD,EAAE,EAAE,CAAC;wBACL,IAAI,EAAE,qDAAc,CAAC,kBAAkB;wBACvC,QAAQ,EAAE,yDAAkB,CAAC,KAAK;wBAClC,IAAI,EAAE,wDAAiB,CAAC,KAAK;wBAC7B,aAAa,EAAE,KAAK;wBACpB,cAAc,EAAE,GAAG;wBACnB,iBAAiB,EAAE,CAAC;wBACpB,YAAY,EAAE,EAAE;wBAChB,eAAe,EAAE,CAAC;wBAClB,0BAA0B,EAAE,EAAE;wBAC9B,6BAA6B,EAAE,CAAC;wBAChC,wBAAwB,EAAE,CAAC;wBAC3B,2BAA2B,EAAE,EAAE;qBAChC,EAAE;wBACD,EAAE,EAAE,CAAC;wBACL,IAAI,EAAE,qDAAc,CAAC,kBAAkB;wBACvC,QAAQ,EAAE,yDAAkB,CAAC,KAAK;wBAClC,IAAI,EAAE,wDAAiB,CAAC,KAAK;wBAC7B,aAAa,EAAE,KAAK;wBACpB,cAAc,EAAE,GAAG;wBACnB,iBAAiB,EAAE,CAAC;wBACpB,YAAY,EAAE,EAAE;wBAChB,eAAe,EAAE,CAAC;wBAClB,0BAA0B,EAAE,EAAE;wBAC9B,6BAA6B,EAAE,CAAC;wBAChC,wBAAwB,EAAE,CAAC;wBAC3B,2BAA2B,EAAE,EAAE;qBAChC,EAAE;wBACD,EAAE,EAAE,CAAC;wBACL,IAAI,EAAE,qDAAc,CAAC,mBAAmB;wBACxC,QAAQ,EAAE,yDAAkB,CAAC,GAAG;wBAChC,IAAI,EAAE,wDAAiB,CAAC,KAAK;wBAC7B,aAAa,EAAE,KAAK;wBACpB,cAAc,EAAE,GAAG;wBACnB,iBAAiB,EAAE,CAAC;wBACpB,YAAY,EAAE,EAAE;wBAChB,eAAe,EAAE,CAAC;wBAClB,0BAA0B,EAAE,EAAE;wBAC9B,6BAA6B,EAAE,CAAC;wBAChC,wBAAwB,EAAE,CAAC;wBAC3B,2BAA2B,EAAE,EAAE;qBAChC,EAAE;wBACD,EAAE,EAAE,CAAC;wBACL,IAAI,EAAE,qDAAc,CAAC,mBAAmB;wBACxC,QAAQ,EAAE,yDAAkB,CAAC,GAAG;wBAChC,IAAI,EAAE,wDAAiB,CAAC,KAAK;wBAC7B,aAAa,EAAE,KAAK;wBACpB,cAAc,EAAE,GAAG;wBACnB,iBAAiB,EAAE,CAAC;wBACpB,YAAY,EAAE,EAAE;wBAChB,eAAe,EAAE,CAAC;wBAClB,0BAA0B,EAAE,EAAE;wBAC9B,6BAA6B,EAAE,CAAC;wBAChC,wBAAwB,EAAE,CAAC;wBAC3B,2BAA2B,EAAE,EAAE;qBAChC,CAAC;aACH,EAAE;gBACD,EAAE,EAAE,EAAE;gBACN,IAAI,EAAE,wDAAiB,CAAC,OAAO;gBAC/B,OAAO,EAAE,2DAAoB,CAAC,IAAI;gBAClC,IAAI,EAAE,qBAAqB;gBAC3B,iCAAiC,EAAE,CAAC;gBACpC,kCAAkC,EAAE,KAAK;gBACzC,0BAA0B,EAAE,CAAC;gBAC7B,oBAAoB,EAAE,CAAC;gBACvB,uBAAuB,EAAE,CAAC;gBAC1B,iCAAiC,EAAE,CAAC;gBACpC,oCAAoC,EAAE,CAAC;gBACvC,OAAO,EAAE,CAAC;wBACR,EAAE,EAAE,CAAC;wBACL,IAAI,EAAE,qDAAc,CAAC,kBAAkB;wBACvC,QAAQ,EAAE,yDAAkB,CAAC,KAAK;wBAClC,IAAI,EAAE,wDAAiB,CAAC,IAAI;wBAC5B,aAAa,EAAE,KAAK;wBACpB,cAAc,EAAE,GAAG;wBACnB,iBAAiB,EAAE,CAAC;wBACpB,YAAY,EAAE,EAAE;wBAChB,eAAe,EAAE,CAAC;wBAClB,0BAA0B,EAAE,EAAE;wBAC9B,6BAA6B,EAAE,CAAC;wBAChC,wBAAwB,EAAE,CAAC;wBAC3B,2BAA2B,EAAE,EAAE;qBAChC,EAAE;wBACD,EAAE,EAAE,CAAC;wBACL,IAAI,EAAE,qDAAc,CAAC,kBAAkB;wBACvC,QAAQ,EAAE,yDAAkB,CAAC,KAAK;wBAClC,IAAI,EAAE,wDAAiB,CAAC,IAAI;wBAC5B,aAAa,EAAE,KAAK;wBACpB,cAAc,EAAE,GAAG;wBACnB,iBAAiB,EAAE,CAAC;wBACpB,YAAY,EAAE,EAAE;wBAChB,eAAe,EAAE,CAAC;wBAClB,0BAA0B,EAAE,EAAE;wBAC9B,6BAA6B,EAAE,CAAC;wBAChC,wBAAwB,EAAE,CAAC;wBAC3B,2BAA2B,EAAE,EAAE;qBAChC,EAAE;wBACD,EAAE,EAAE,CAAC;wBACL,IAAI,EAAE,qDAAc,CAAC,kBAAkB;wBACvC,QAAQ,EAAE,yDAAkB,CAAC,KAAK;wBAClC,IAAI,EAAE,wDAAiB,CAAC,IAAI;wBAC5B,aAAa,EAAE,KAAK;wBACpB,cAAc,EAAE,GAAG;wBACnB,iBAAiB,EAAE,CAAC;wBACpB,YAAY,EAAE,EAAE;wBAChB,eAAe,EAAE,CAAC;wBAClB,0BAA0B,EAAE,EAAE;wBAC9B,6BAA6B,EAAE,CAAC;wBAChC,wBAAwB,EAAE,CAAC;wBAC3B,2BAA2B,EAAE,EAAE;qBAChC,EAAE;wBACD,EAAE,EAAE,CAAC;wBACL,IAAI,EAAE,qDAAc,CAAC,kBAAkB;wBACvC,QAAQ,EAAE,yDAAkB,CAAC,KAAK;wBAClC,IAAI,EAAE,wDAAiB,CAAC,IAAI;wBAC5B,aAAa,EAAE,KAAK;wBACpB,cAAc,EAAE,GAAG;wBACnB,iBAAiB,EAAE,CAAC;wBACpB,YAAY,EAAE,EAAE;wBAChB,eAAe,EAAE,CAAC;wBAClB,0BAA0B,EAAE,EAAE;wBAC9B,6BAA6B,EAAE,CAAC;wBAChC,wBAAwB,EAAE,CAAC;wBAC3B,2BAA2B,EAAE,EAAE;qBAChC,EAAE;wBACD,EAAE,EAAE,CAAC;wBACL,IAAI,EAAE,qDAAc,CAAC,mBAAmB;wBACxC,QAAQ,EAAE,yDAAkB,CAAC,GAAG;wBAChC,IAAI,EAAE,wDAAiB,CAAC,IAAI;wBAC5B,aAAa,EAAE,KAAK;wBACpB,cAAc,EAAE,GAAG;wBACnB,iBAAiB,EAAE,CAAC;wBACpB,YAAY,EAAE,EAAE;wBAChB,eAAe,EAAE,CAAC;wBAClB,0BAA0B,EAAE,EAAE;wBAC9B,6BAA6B,EAAE,CAAC;wBAChC,wBAAwB,EAAE,CAAC;wBAC3B,2BAA2B,EAAE,EAAE;qBAChC,EAAE;wBACD,EAAE,EAAE,CAAC;wBACL,IAAI,EAAE,qDAAc,CAAC,mBAAmB;wBACxC,QAAQ,EAAE,yDAAkB,CAAC,GAAG;wBAChC,IAAI,EAAE,wDAAiB,CAAC,IAAI;wBAC5B,aAAa,EAAE,KAAK;wBACpB,cAAc,EAAE,GAAG;wBACnB,iBAAiB,EAAE,CAAC;wBACpB,YAAY,EAAE,EAAE;wBAChB,eAAe,EAAE,CAAC;wBAClB,0BAA0B,EAAE,EAAE;wBAC9B,6BAA6B,EAAE,CAAC;wBAChC,wBAAwB,EAAE,CAAC;wBAC3B,2BAA2B,EAAE,EAAE;qBAChC,CAAC;aACH;YACD;gBACE,EAAE,EAAE,EAAE;gBACN,IAAI,EAAE,wDAAiB,CAAC,GAAG;gBAC3B,OAAO,EAAE,2DAAoB,CAAC,WAAW;gBACzC,IAAI,EAAE,yBAAyB;gBAC/B,iCAAiC,EAAE,CAAC;gBACpC,kCAAkC,EAAE,KAAK;gBACzC,0BAA0B,EAAE,CAAC;gBAC7B,oBAAoB,EAAE,CAAC;gBACvB,uBAAuB,EAAE,CAAC;gBAC1B,iCAAiC,EAAE,CAAC;gBACpC,oCAAoC,EAAE,CAAC;gBACvC,OAAO,EAAE;oBACP;wBACE,EAAE,EAAE,CAAC;wBACL,IAAI,EAAE,qDAAc,CAAC,kBAAkB;wBACvC,QAAQ,EAAE,yDAAkB,CAAC,KAAK;wBAClC,IAAI,EAAE,wDAAiB,CAAC,IAAI;wBAC5B,aAAa,EAAE,KAAK;wBACpB,cAAc,EAAE,GAAG;wBACnB,iBAAiB,EAAE,CAAC;wBACpB,YAAY,EAAE,EAAE;wBAChB,eAAe,EAAE,CAAC;wBAClB,0BAA0B,EAAE,EAAE;wBAC9B,6BAA6B,EAAE,CAAC;wBAChC,wBAAwB,EAAE,CAAC;wBAC3B,2BAA2B,EAAE,EAAE;qBAChC;oBACD;wBACE,EAAE,EAAE,CAAC;wBACL,IAAI,EAAE,qDAAc,CAAC,kBAAkB;wBACvC,QAAQ,EAAE,yDAAkB,CAAC,KAAK;wBAClC,IAAI,EAAE,wDAAiB,CAAC,IAAI;wBAC5B,aAAa,EAAE,KAAK;wBACpB,cAAc,EAAE,GAAG;wBACnB,iBAAiB,EAAE,CAAC;wBACpB,YAAY,EAAE,EAAE;wBAChB,eAAe,EAAE,CAAC;wBAClB,0BAA0B,EAAE,EAAE;wBAC9B,6BAA6B,EAAE,CAAC;wBAChC,wBAAwB,EAAE,CAAC;wBAC3B,2BAA2B,EAAE,EAAE;qBAChC;oBACD;wBACE,EAAE,EAAE,CAAC;wBACL,IAAI,EAAE,qDAAc,CAAC,KAAK;wBAC1B,QAAQ,EAAE,yDAAkB,CAAC,eAAe;wBAC5C,IAAI,EAAE,wDAAiB,CAAC,IAAI;wBAC5B,aAAa,EAAE,KAAK;wBACpB,cAAc,EAAE,GAAG;wBACnB,iBAAiB,EAAE,CAAC;wBACpB,YAAY,EAAE,EAAE;wBAChB,eAAe,EAAE,CAAC;wBAClB,0BAA0B,EAAE,EAAE;wBAC9B,6BAA6B,EAAE,CAAC;wBAChC,wBAAwB,EAAE,CAAC;wBAC3B,2BAA2B,EAAE,EAAE;qBAChC;oBACD;wBACE,EAAE,EAAE,CAAC;wBACL,IAAI,EAAE,qDAAc,CAAC,cAAc;wBACnC,QAAQ,EAAE,yDAAkB,CAAC,eAAe;wBAC5C,IAAI,EAAE,wDAAiB,CAAC,IAAI;wBAC5B,aAAa,EAAE,KAAK;wBACpB,cAAc,EAAE,GAAG;wBACnB,iBAAiB,EAAE,CAAC;wBACpB,YAAY,EAAE,EAAE;wBAChB,eAAe,EAAE,CAAC;wBAClB,0BAA0B,EAAE,IAAI;wBAChC,6BAA6B,EAAE,IAAI;wBACnC,wBAAwB,EAAE,IAAI;wBAC9B,2BAA2B,EAAE,IAAI;qBAClC;oBACD;wBACE,EAAE,EAAE,CAAC;wBACL,IAAI,EAAE,qDAAc,CAAC,iBAAiB;wBACtC,QAAQ,EAAE,yDAAkB,CAAC,eAAe;wBAC5C,IAAI,EAAE,wDAAiB,CAAC,IAAI;wBAC5B,aAAa,EAAE,KAAK;wBACpB,cAAc,EAAE,GAAG;wBACnB,iBAAiB,EAAE,CAAC;wBACpB,YAAY,EAAE,EAAE;wBAChB,eAAe,EAAE,CAAC;wBAClB,0BAA0B,EAAE,IAAI;wBAChC,6BAA6B,EAAE,IAAI;wBACnC,wBAAwB,EAAE,IAAI;wBAC9B,2BAA2B,EAAE,IAAI;qBAClC;oBACD;wBACE,EAAE,EAAE,CAAC;wBACL,IAAI,EAAE,qDAAc,CAAC,SAAS;wBAC9B,QAAQ,EAAE,yDAAkB,CAAC,KAAK;wBAClC,IAAI,EAAE,wDAAiB,CAAC,IAAI;wBAC5B,aAAa,EAAE,KAAK;wBACpB,cAAc,EAAE,GAAG;wBACnB,iBAAiB,EAAE,CAAC;wBACpB,YAAY,EAAE,EAAE;wBAChB,eAAe,EAAE,CAAC;wBAClB,0BAA0B,EAAE,IAAI;wBAChC,6BAA6B,EAAE,IAAI;wBACnC,wBAAwB,EAAE,IAAI;wBAC9B,2BAA2B,EAAE,IAAI;qBAClC;oBACD;wBACE,EAAE,EAAE,CAAC;wBACL,IAAI,EAAE,qDAAc,CAAC,SAAS;wBAC9B,QAAQ,EAAE,yDAAkB,CAAC,KAAK;wBAClC,IAAI,EAAE,wDAAiB,CAAC,IAAI;wBAC5B,aAAa,EAAE,KAAK;wBACpB,cAAc,EAAE,GAAG;wBACnB,iBAAiB,EAAE,CAAC;wBACpB,YAAY,EAAE,EAAE;wBAChB,eAAe,EAAE,CAAC;wBAClB,0BAA0B,EAAE,IAAI;wBAChC,6BAA6B,EAAE,IAAI;wBACnC,wBAAwB,EAAE,IAAI;wBAC9B,2BAA2B,EAAE,IAAI;qBAClC;iBACF;aACF;YACD;gBACE,EAAE,EAAE,EAAE;gBACN,IAAI,EAAE,wDAAiB,CAAC,GAAG;gBAC3B,OAAO,EAAE,2DAAoB,CAAC,SAAS;gBACvC,IAAI,EAAE,uBAAuB;gBAC7B,iCAAiC,EAAE,CAAC;gBACpC,kCAAkC,EAAE,KAAK;gBACzC,0BAA0B,EAAE,CAAC;gBAC7B,oBAAoB,EAAE,CAAC;gBACvB,uBAAuB,EAAE,CAAC;gBAC1B,iCAAiC,EAAE,CAAC;gBACpC,oCAAoC,EAAE,CAAC;gBACvC,OAAO,EAAE;oBACP;wBACE,EAAE,EAAE,CAAC;wBACL,IAAI,EAAE,qDAAc,CAAC,kBAAkB;wBACvC,QAAQ,EAAE,yDAAkB,CAAC,UAAU;wBACvC,IAAI,EAAE,wDAAiB,CAAC,IAAI;wBAC5B,aAAa,EAAE,KAAK;wBACpB,cAAc,EAAE,GAAG;wBACnB,iBAAiB,EAAE,CAAC;wBACpB,YAAY,EAAE,EAAE;wBAChB,eAAe,EAAE,CAAC;wBAClB,0BAA0B,EAAE,EAAE;wBAC9B,6BAA6B,EAAE,CAAC;wBAChC,wBAAwB,EAAE,CAAC;wBAC3B,2BAA2B,EAAE,EAAE;qBAChC;oBACD;wBACE,EAAE,EAAE,CAAC;wBACL,IAAI,EAAE,qDAAc,CAAC,kBAAkB;wBACvC,QAAQ,EAAE,yDAAkB,CAAC,UAAU;wBACvC,IAAI,EAAE,wDAAiB,CAAC,IAAI;wBAC5B,aAAa,EAAE,KAAK;wBACpB,cAAc,EAAE,GAAG;wBACnB,iBAAiB,EAAE,CAAC;wBACpB,YAAY,EAAE,EAAE;wBAChB,eAAe,EAAE,CAAC;wBAClB,0BAA0B,EAAE,EAAE;wBAC9B,6BAA6B,EAAE,CAAC;wBAChC,wBAAwB,EAAE,CAAC;wBAC3B,2BAA2B,EAAE,EAAE;qBAChC;oBACD;wBACE,EAAE,EAAE,CAAC;wBACL,IAAI,EAAE,qDAAc,CAAC,kBAAkB;wBACvC,QAAQ,EAAE,yDAAkB,CAAC,UAAU;wBACvC,IAAI,EAAE,wDAAiB,CAAC,IAAI;wBAC5B,aAAa,EAAE,KAAK;wBACpB,cAAc,EAAE,GAAG;wBACnB,iBAAiB,EAAE,CAAC;wBACpB,YAAY,EAAE,EAAE;wBAChB,eAAe,EAAE,CAAC;wBAClB,0BAA0B,EAAE,EAAE;wBAC9B,6BAA6B,EAAE,CAAC;wBAChC,wBAAwB,EAAE,CAAC;wBAC3B,2BAA2B,EAAE,EAAE;qBAChC;oBACD;wBACE,EAAE,EAAE,CAAC;wBACL,IAAI,EAAE,qDAAc,CAAC,kBAAkB;wBACvC,QAAQ,EAAE,yDAAkB,CAAC,UAAU;wBACvC,IAAI,EAAE,wDAAiB,CAAC,IAAI;wBAC5B,aAAa,EAAE,KAAK;wBACpB,cAAc,EAAE,GAAG;wBACnB,iBAAiB,EAAE,CAAC;wBACpB,YAAY,EAAE,EAAE;wBAChB,eAAe,EAAE,CAAC;wBAClB,0BAA0B,EAAE,EAAE;wBAC9B,6BAA6B,EAAE,CAAC;wBAChC,wBAAwB,EAAE,CAAC;wBAC3B,2BAA2B,EAAE,EAAE;qBAChC;oBACD;wBACE,EAAE,EAAE,CAAC;wBACL,IAAI,EAAE,qDAAc,CAAC,KAAK;wBAC1B,QAAQ,EAAE,yDAAkB,CAAC,eAAe;wBAC5C,IAAI,EAAE,wDAAiB,CAAC,IAAI;wBAC5B,aAAa,EAAE,KAAK;wBACpB,cAAc,EAAE,GAAG;wBACnB,iBAAiB,EAAE,CAAC;wBACpB,YAAY,EAAE,EAAE;wBAChB,eAAe,EAAE,CAAC;wBAClB,0BAA0B,EAAE,EAAE;wBAC9B,6BAA6B,EAAE,CAAC;wBAChC,wBAAwB,EAAE,CAAC;wBAC3B,2BAA2B,EAAE,EAAE;qBAChC;oBACD;wBACE,EAAE,EAAE,CAAC;wBACL,IAAI,EAAE,qDAAc,CAAC,cAAc;wBACnC,QAAQ,EAAE,yDAAkB,CAAC,eAAe;wBAC5C,IAAI,EAAE,wDAAiB,CAAC,IAAI;wBAC5B,aAAa,EAAE,KAAK;wBACpB,cAAc,EAAE,GAAG;wBACnB,iBAAiB,EAAE,CAAC;wBACpB,YAAY,EAAE,EAAE;wBAChB,eAAe,EAAE,CAAC;wBAClB,0BAA0B,EAAE,IAAI;wBAChC,6BAA6B,EAAE,IAAI;wBACnC,wBAAwB,EAAE,IAAI;wBAC9B,2BAA2B,EAAE,IAAI;qBAClC;oBACD;wBACE,EAAE,EAAE,CAAC;wBACL,IAAI,EAAE,qDAAc,CAAC,iBAAiB;wBACtC,QAAQ,EAAE,yDAAkB,CAAC,eAAe;wBAC5C,IAAI,EAAE,wDAAiB,CAAC,IAAI;wBAC5B,aAAa,EAAE,KAAK;wBACpB,cAAc,EAAE,GAAG;wBACnB,iBAAiB,EAAE,CAAC;wBACpB,YAAY,EAAE,EAAE;wBAChB,eAAe,EAAE,CAAC;wBAClB,0BAA0B,EAAE,IAAI;wBAChC,6BAA6B,EAAE,IAAI;wBACnC,wBAAwB,EAAE,IAAI;wBAC9B,2BAA2B,EAAE,IAAI;qBAClC;oBACD;wBACE,EAAE,EAAE,CAAC;wBACL,IAAI,EAAE,qDAAc,CAAC,SAAS;wBAC9B,QAAQ,EAAE,yDAAkB,CAAC,KAAK;wBAClC,IAAI,EAAE,wDAAiB,CAAC,IAAI;wBAC5B,aAAa,EAAE,KAAK;wBACpB,cAAc,EAAE,GAAG;wBACnB,iBAAiB,EAAE,CAAC;wBACpB,YAAY,EAAE,EAAE;wBAChB,eAAe,EAAE,CAAC;wBAClB,0BAA0B,EAAE,IAAI;wBAChC,6BAA6B,EAAE,IAAI;wBACnC,wBAAwB,EAAE,IAAI;wBAC9B,2BAA2B,EAAE,IAAI;qBAClC;oBACD;wBACE,EAAE,EAAE,CAAC;wBACL,IAAI,EAAE,qDAAc,CAAC,SAAS;wBAC9B,QAAQ,EAAE,yDAAkB,CAAC,KAAK;wBAClC,IAAI,EAAE,wDAAiB,CAAC,IAAI;wBAC5B,aAAa,EAAE,KAAK;wBACpB,cAAc,EAAE,GAAG;wBACnB,iBAAiB,EAAE,CAAC;wBACpB,YAAY,EAAE,EAAE;wBAChB,eAAe,EAAE,CAAC;wBAClB,0BAA0B,EAAE,IAAI;wBAChC,6BAA6B,EAAE,IAAI;wBACnC,wBAAwB,EAAE,IAAI;wBAC9B,2BAA2B,EAAE,IAAI;qBAClC;iBACF;aACF;SACsB,CAAC;QAE1B,MAAM,iBAAiB,GAAG;YACxB,QAAQ,EAAE,QAAQ;YAClB,UAAU;SACsB;QAElC,OAAO,iBAAiB,CAAC;IAC3B,CAAC;IAEa,gBAAgB,CAAC,UAAoB;;YACjD,IAAI,aAAa,GAAG,EAAE,CAAC;YACvB,IAAI,SAAsC,CAAC;YAC3C,UAAU,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE;gBAC3B,SAAS,GAAG;oBACV,EAAE,EAAE,OAAO;oBACX,KAAK,EAAE,EAAE,GAAG,OAAO;oBACnB,SAAS,EAAE,UAAU,GAAG,OAAO;oBAC/B,MAAM,EAAE,IAAI,CAAC,yBAAyB,CAAC,6DAAsB,CAAC;iBAC/D,CAAC;gBAEF,aAAa,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YAChC,CAAC,CAAC,CAAC;YAEH,OAAO,aAAa,CAAC;QACvB,CAAC;KAAA;IAEO,yBAAyB,CAAI,MAAS;QAC5C,MAAM,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC;aACnC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;aAC5B,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAA4B;QAC3D,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,UAAU,CAAC,MAAM,CAAC;QACjE,MAAM,eAAe,GAAG,UAAU,CAAC,WAAW,CAAC;QAC/C,OAAO,eAAe,CAAC;IACzB,CAAC;IAEO,kBAAkB,CAAC,MAA8B;QACvD,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;QAC1C,QAAQ,MAAM,EAAE;YACd,KAAK,6DAAsB,CAAC,IAAI;gBAC9B,OAAO,6DAAsB,CAAC,IAAI,CAAC;YACrC,KAAK,6DAAsB,CAAC,KAAK;gBAC/B,OAAO,6DAAsB,CAAC,KAAK,CAAC;YACtC,KAAK,6DAAsB,CAAC,KAAK;gBAC/B,OAAO,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,6DAAsB,CAAC,KAAK,CAAC,CAAC,CAAC,6DAAsB,CAAC,iBAAiB,CAAC;YAC7F,KAAK,6DAAsB,CAAC,OAAO;gBACjC,OAAO,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,6DAAsB,CAAC,OAAO,CAAC,CAAC,CAAC,6DAAsB,CAAC,mBAAmB,CAAC;SAClG;IACH,CAAC;CACF;;YAhkIyB,mDAAW;YAChB,sDAAM;;AAHd,mBAAmB;IAD/B,gEAAU,EAAE;qCAGa,mDAAW;QAChB,sDAAM;GAHd,mBAAmB,CAkkI/B;AAlkI+B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACZW;AACF;AAEiB;AACd;AAW3B;AAKjB,IAAa,eAAe,GAA5B,MAAa,eAAe;IAC1B,YAAoB,YAAyB,EAAU,OAAe;QAAlD,iBAAY,GAAZ,YAAY,CAAa;QAAU,YAAO,GAAP,OAAO,CAAQ;IAAI,CAAC;IAE9D,cAAc,CACzB,KAAgC;;YAEhC,IAAI;gBACF,IAAI,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,EAAE;oBAC/C,OAAO,IAAI,CAAC,cAAc,EAAE,CAAC;iBAC9B;gBAED,MAAM,MAAM,GAAG,CAAC,MAAM,IAAI,CAAC,YAAY,CAAC,IAAI,CAC1C,oDAAS,CAAC,YAAY,CAAC,yBAAyB,EAChD,KAAK,CACN,CAA0B,CAAC;gBAE5B,OAAO,MAAM,CAAC;aACf;YAAC,OAAO,KAAK,EAAE;gBACd,OAAO,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;aACjC;QACH,CAAC;KAAA;IAEY,cAAc,CACzB,KAAgC;;YAEhC,IAAI;gBACF,IAAI,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,EAAE;oBAC/C,OAAO,IAAI,CAAC,cAAc,EAAE,CAAC;iBAC9B;gBAED,MAAM,MAAM,GAAG,CAAC,MAAM,IAAI,CAAC,YAAY,CAAC,IAAI,CAC1C,oDAAS,CAAC,YAAY,CAAC,yBAAyB,EAChD,KAAK,CACN,CAA0B,CAAC;gBAE5B,OAAO,MAAM,CAAC;aACf;YAAC,OAAO,KAAK,EAAE;gBACd,OAAO,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;aACjC;QACH,CAAC;KAAA;IAEY,cAAc,CACzB,KAAgC;;YAEhC,IAAI;gBACF,IAAI,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,EAAE;oBAC/C,OAAO,IAAI,CAAC,cAAc,EAAE,CAAC;iBAC9B;gBAED,MAAM,MAAM,GAAG,CAAC,MAAM,IAAI,CAAC,YAAY,CAAC,IAAI,CAC1C,oDAAS,CAAC,YAAY,CAAC,yBAAyB,EAChD,KAAK,CACN,CAA0B,CAAC;gBAE5B,OAAO,MAAM,CAAC;aACf;YAAC,OAAO,KAAK,EAAE;gBACd,OAAO,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;aACjC;QACH,CAAC;KAAA;IAEO,YAAY,CAAC,KAAU;QAC7B,IAAI,KAAK,YAAY,kDAAU,EAAE;YAC/B,OAAO,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;SAC9B;QAED,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QAEnB,OAAO,IAAI,CAAC;IACd,CAAC;IAEO,cAAc;QACpB,IAAI,MAAM,GAAG;YACX;gBACE,OAAO,EAAE,CAAC;gBACV,KAAK,EAAE,aAAa;gBACpB,IAAI,EAAE,qLAAqL;gBAC3L,0BAA0B,EAAE,IAAI,CAAC,GAAG,EAAE;gBACtC,yBAAyB,EAAE,IAAI,CAAC,GAAG,EAAE;gBACrC,UAAU,EAAE,EAAE,YAAY,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE;aAC5D;YACD;gBACE,OAAO,EAAE,CAAC;gBACV,KAAK,EAAE,eAAe;gBACtB,IAAI,EAAE,qBAAqB;gBAC3B,0BAA0B,EAAE,IAAI,CAAC,GAAG,EAAE;gBACtC,yBAAyB,EAAE,IAAI,CAAC,GAAG,EAAE;gBACrC,UAAU,EAAE,EAAE,YAAY,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE;aAC5D;YACD;gBACE,OAAO,EAAE,CAAC;gBACV,KAAK,EAAE,aAAa;gBACpB,IAAI,EAAE,oBAAoB;gBAC1B,0BAA0B,EAAE,IAAI,CAAC,GAAG,EAAE;gBACtC,yBAAyB,EAAE,IAAI,CAAC,GAAG,EAAE;gBACrC,UAAU,EAAE,EAAE,YAAY,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE;aAC/C;SACoB,CAAC;QAExB,IAAI,OAAO,GAAG,IAAI,6DAAqB,EAAE,CAAC;QAC1C,OAAO,CAAC,MAAM,GAAG,MAAM,CAAC;QACxB,OAAO,CAAC,YAAY,GAAG,EAAE,CAAC;QAC1B,OAAO,CAAC,UAAU,GAAG,CAAC,CAAC;QAEvB,OAAO,OAAO,CAAC;IACjB,CAAC;IAEO,cAAc;QACpB,MAAM,MAAM,GAAuB;YACjC;gBACE,OAAO,EAAE,CAAC;gBACV,KAAK,EAAE,aAAa;gBACpB,IAAI,EAAE,qLAAqL;gBAC3L,0BAA0B,EAAE,IAAI,CAAC,GAAG,EAAE;gBACtC,yBAAyB,EAAE,IAAI,CAAC,GAAG,EAAE;gBACrC,OAAO,EAAE,IAAI;gBACb,UAAU,EAAE,CAAC;gBACb,UAAU,EAAE;oBACV,OAAO,EAAE,UAAU;oBACnB,QAAQ,EAAE,WAAW;oBACrB,YAAY,EAAE,eAAe;oBAC7B,iBAAiB,EAAE,IAAI,CAAC,GAAG,EAAE;oBAC7B,KAAK,EAAE,CAAC;iBACT;aACF;YACD;gBACE,OAAO,EAAE,CAAC;gBACV,KAAK,EAAE,YAAY;gBACnB,IAAI,EAAE,kBAAkB;gBACxB,0BAA0B,EAAE,IAAI,CAAC,GAAG,EAAE;gBACtC,yBAAyB,EAAE,IAAI,CAAC,GAAG,EAAE;gBACrC,OAAO,EAAE,KAAK;gBACd,UAAU,EAAE,CAAC;gBACb,UAAU,EAAE;oBACV,OAAO,EAAE,UAAU;oBACnB,QAAQ,EAAE,WAAW;oBACrB,YAAY,EAAE,eAAe;oBAC7B,iBAAiB,EAAE,IAAI,CAAC,GAAG,EAAE;oBAC7B,KAAK,EAAE,IAAI;iBACZ;aACF;SACF,CAAC;QAEF,MAAM,OAAO,GAAG,IAAI,6DAAqB,EAAE,CAAC;QAC5C,OAAO,CAAC,MAAM,GAAG,MAAM,CAAC;QACxB,OAAO,CAAC,YAAY,GAAG,EAAE,CAAC;QAC1B,OAAO,CAAC,UAAU,GAAG,CAAC,CAAC;QAEvB,OAAO,OAAO,CAAC;IACjB,CAAC;IAEO,cAAc;QACpB,MAAM,MAAM,GAAuB,EAAE,CAAC;QACtC,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,EAAE,EAAE,KAAK,EAAE,EAAE;YACvC,MAAM,CAAC,IAAI,CACT;gBACE,OAAO,EAAE,KAAK;gBACd,KAAK,EAAE,iBAAiB,KAAK,EAAE;gBAC/B,IAAI,EAAE,qLAAqL;gBAC3L,0BAA0B,EAAE,IAAI,CAAC,GAAG,EAAE;gBACtC,yBAAyB,EAAE,IAAI,CAAC,GAAG,EAAE;gBACrC,OAAO,EAAE,IAAI;gBACb,UAAU,EAAE,CAAC;gBACb,UAAU,EAAE,EAAE,WAAW,EAAE,KAAK,EAAE,aAAa,EAAE,gBAAgB,KAAK,EAAE,EAAE;aAC3E,CACF,CAAC;SAEH;QAED,MAAM,OAAO,GAAG,IAAI,6DAAqB,EAAE,CAAC;QAC5C,OAAO,CAAC,MAAM,GAAG,MAAM,CAAC;QACxB,OAAO,CAAC,YAAY,GAAG,EAAE,CAAC;QAC1B,OAAO,CAAC,UAAU,GAAG,CAAC,CAAC;QAEvB,OAAO,OAAO,CAAC;IACjB,CAAC;CACF;;YA9KmC,mDAAW;YAAmB,sDAAM;;AAD3D,eAAe;IAH3B,gEAAU,CAAC;QACV,UAAU,EAAE,MAAM;KACnB,CAAC;qCAEkC,mDAAW,EAAmB,sDAAM;GAD3D,eAAe,CA+K3B;AA/K2B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACpB6B;AAC6C;AAE9C;AACT;AACiB;AAiEV;AAqEtD,IAAa,UAAU,GAAvB,MAAa,UAAU;IAiFrB,YACU,mBAAuC,EACvC,oBAAyC;QADzC,wBAAmB,GAAnB,mBAAmB,CAAoB;QACvC,yBAAoB,GAApB,oBAAoB,CAAqB;QAjF3C,uBAAkB,GAAG,KAAK,CAAC;QAEnC,WAAW;QACJ,kBAAa,GAAG,IAAI,0DAAY,EAA2B,CAAC;QAC5D,oBAAe,GAAG,IAAI,0DAAY,EAA6B,CAAC;QAChE,qBAAgB,GAAG,IAAI,0DAAY,EAA8B,CAAC;QAClE,oBAAe,GAAG,IAAI,0DAAY,EAA6B,CAAC;QACvE,cAAc;QACP,qBAAgB,GAAG,IAAI,0DAAY,EAA8B,CAAC;QAClE,uBAAkB,GAAG,IAAI,0DAAY,EAAgC,CAAC;QACtE,wBAAmB,GAAG,IAAI,0DAAY,EAAiC,CAAC;QACxE,uBAAkB,GAAG,IAAI,0DAAY,EAAgC,CAAC;QACtE,kCAA6B,GAAG,IAAI,0DAAY,EAAwC,CAAC;QACzF,iCAA4B,GAAG,IAAI,0DAAY,EAAuC,CAAC;QACvF,sCAAiC,GAAG,IAAI,0DAAY,EAA4C,CAAC;QACjG,iCAA4B,GAAG,IAAI,0DAAY,EAAuC,CAAC;QAC9F,WAAW;QACJ,iBAAY,GAAG,IAAI,0DAAY,EAA0B,CAAC;QAC1D,mBAAc,GAAG,IAAI,0DAAY,EAA4B,CAAC;QAC9D,oBAAe,GAAG,IAAI,0DAAY,EAA6B,CAAC;QAChE,mBAAc,GAAG,IAAI,0DAAY,EAA4B,CAAC;QACrE,eAAe;QACR,qBAAgB,GAAG,IAAI,0DAAY,EAA8B,CAAC;QAClE,uBAAkB,GAAG,IAAI,0DAAY,EAAgC,CAAC;QACtE,wBAAmB,GAAG,IAAI,0DAAY,EAAiC,CAAC;QACxE,uBAAkB,GAAG,IAAI,0DAAY,EAAgC,CAAC;QAC7E,aAAa;QACN,mBAAc,GAAG,IAAI,0DAAY,EAA4B,CAAC;QAC9D,qBAAgB,GAAG,IAAI,0DAAY,EAA8B,CAAC;QAClE,sBAAiB,GAAG,IAAI,0DAAY,EAA+B,CAAC;QACpE,qBAAgB,GAAG,IAAI,0DAAY,EAA8B,CAAC;QACzE,eAAe;QACR,qBAAgB,GAAG,IAAI,0DAAY,EAA8B,CAAC;QAClE,uBAAkB,GAAG,IAAI,0DAAY,EAAgC,CAAC;QACtE,wBAAmB,GAAG,IAAI,0DAAY,EAAiC,CAAC;QACxE,uBAAkB,GAAG,IAAI,0DAAY,EAAgC,CAAC;QAC7E,gBAAgB;QACT,sBAAiB,GAAG,IAAI,0DAAY,EAA+B,CAAC;QACpE,wBAAmB,GAAG,IAAI,0DAAY,EAAiC,CAAC;QACxE,yBAAoB,GAAG,IAAI,0DAAY,EAAkC,CAAC;QAC1E,wBAAmB,GAAG,IAAI,0DAAY,EAAiC,CAAC;QAC/E,SAAS;QACF,gBAAW,GAAG,IAAI,0DAAY,EAAyB,CAAC;QACxD,kBAAa,GAAG,IAAI,0DAAY,EAA2B,CAAC;QAC5D,mBAAc,GAAG,IAAI,0DAAY,EAA4B,CAAC;QAC9D,kBAAa,GAAG,IAAI,0DAAY,EAA2B,CAAC;QACnE,cAAc;QACP,qBAAgB,GAAG,IAAI,0DAAY,EAA8B,CAAC;QAClE,wBAAmB,GAAG,IAAI,0DAAY,EAAiC,CAAC;QACxE,uBAAkB,GAAG,IAAI,0DAAY,EAAgC,CAAC;QACtE,uBAAkB,GAAG,IAAI,0DAAY,EAAgC,CAAC;QACtE,4BAAuB,GAAG,IAAI,0DAAY,EAAqC,CAAC;QAChF,2BAAsB,GAAG,IAAI,0DAAY,EAAoC,CAAC;QAC9E,sCAAiC,GAAG,IAAI,0DAAY,EAA+C,CAAC;QACpG,iCAA4B,GAAG,IAAI,0DAAY,EAA0C,CAAC;QACjG,sBAAsB;QACf,4BAAuB,GAAG,IAAI,0DAAY,EAAgD,CAAC;QAClG,eAAe;QACR,yBAAoB,GAAG,IAAI,0DAAY,EAA6C,CAAC;QACrF,6BAAwB,GAAG,IAAI,0DAAY,EAAuC,CAAC;QACnF,uBAAkB,GAAG,IAAI,0DAAY,EAAgC,CAAC;QACtE,qBAAgB,GAAG,IAAI,0DAAY,EAA8B,CAAC;QAClE,wBAAmB,GAAG,IAAI,0DAAY,EAAiC,CAAC;QACxE,uBAAkB,GAAG,IAAI,0DAAY,EAAgC,CAAC;QACtE,sCAAiC,GAAG,IAAI,0DAAY,EAA+C,CAAC;QACpG,iCAA4B,GAAG,IAAI,0DAAY,EAA0C,CAAC;QACjG,SAAS;QACF,gBAAW,GAAG,IAAI,0DAAY,EAAyB,CAAC;QACxD,mBAAc,GAAG,IAAI,0DAAY,EAA4B,CAAC;QAC9D,kBAAa,GAAG,IAAI,0DAAY,EAA2B,CAAC;QAC5D,kBAAa,GAAG,IAAI,0DAAY,EAA2B,CAAC;QAC5D,qBAAgB,GAAG,IAAI,0DAAY,EAA8B,CAAC;QAClE,wBAAmB,GAAG,IAAI,0DAAY,EAAiC,CAAC;QACxE,uBAAkB,GAAG,IAAI,0DAAY,EAAgC,CAAC;QACtE,uBAAkB,GAAG,IAAI,0DAAY,EAAgC,CAAC;QAE7E,SAAS;QACF,iCAA4B,GAAG,IAAI,0DAAY,EAA0C,CAAC;IAMjG,CAAC;IAEM,OAAO;QACZ,IAAI,CAAC,cAAc,GAAG,IAAI,uEAAoB,EAAE;aAC7C,OAAO,CAAC,oDAAS,CAAC,GAAG,EAAE;YACtB,SAAS,EAAE,oEAAiB,CAAC,WAAW;YACxC,kBAAkB,EAAE,IAAI,CAAC,mBAAmB,CAAC,8BAA8B,CAAC,IAAI,CAAC,IAAI,CAAC,mBAAmB,CAAC;SAC3G,CAAC;aACD,sBAAsB,EAAE;aACxB,gBAAgB,CAAC,2DAAQ,CAAC,IAAI,CAAC;aAC/B,KAAK,EAAE,CAAC;QAEX,IAAI,CAAC,uBAAuB,EAAE,CAAC;QAE/B,IAAI,CAAC,cAAc;aAChB,KAAK,EAAE;aACP,IAAI,CAAC,GAAS,EAAE;YACf,OAAO,CAAC,GAAG,CAAC,gCAAgC,CAAC,CAAC;YAC9C,MAAM,SAAS,GAAG,IAAI,CAAC,oBAAoB,CAAC,YAAY,EAAE,CAAC;YAC3D,IAAI,SAAS,CAAC,IAAI,KAAK,oDAAY,CAAC,YAAY,EAAE;gBAChD,MAAM,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,oDAAS,CAAC,GAAG,CAAC,8BAA8B,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;aACnG;QACH,CAAC,EAAC;aACD,KAAK,CAAC,GAAG,CAAC,EAAE;YACX,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC;QAC9B,CAAC,CAAC,CAAC;QAEL,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC;IACjC,CAAC;IAEY,SAAS,CAAC,MAAc,EAAE,WAAwB;;YAC7D,MAAM,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,oDAAS,CAAC,GAAG,CAAC,SAAS,EAAE,MAAM,EAAE,WAAW,CAAC,CAAC;QAC/E,CAAC;KAAA;IAEY,qBAAqB,CAAC,MAAc,EAAE,WAAwB;;YACzE,MAAM,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,oDAAS,CAAC,GAAG,CAAC,qBAAqB,EAAE,MAAM,EAAE,WAAW,CAAC,CAAC;QAC3F,CAAC;KAAA;IAEY,qCAAqC,CAAC,MAAc,EAAE,SAAiB,EAAE,WAAwB;;YAC5G,MAAM,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,oDAAS,CAAC,GAAG,CAAC,qCAAqC,EAAE,MAAM,EAAE,SAAS,EAAE,WAAW,CAAC,CAAC;QACtH,CAAC;KAAA;IAEY,mCAAmC,CAAC,MAAc,EAAE,WAAwB;;YACvF,MAAM,SAAS,GAAG,IAAI,CAAC,oBAAoB,CAAC,YAAY,EAAE,CAAC;YAC3D,MAAM,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,oDAAS,CAAC,GAAG,CAAC,mBAAmB,EAAE,MAAM,EAAE,SAAS,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC;QAC9G,CAAC;KAAA;IAEO,iBAAiB,CAAC,GAAU;QAClC,OAAO,CAAC,GAAG,CAAC,SAAS,GAAG,EAAE,CAAC,CAAC;QAC5B,OAAO,CAAC,GAAG,CAAC,wCAAwC,CAAC,CAAC;QACtD,UAAU,CAAC,GAAG,EAAE;YACd,IAAI,CAAC,OAAO,EAAE,CAAC;QACjB,CAAC,EAAE,IAAI,CAAC,CAAC;IACX,CAAC;IAEO,uBAAuB;QAC7B,WAAW;QACX,IAAI,CAAC,cAAc,CAAC,EAAE,CAAC,qDAAU,CAAC,QAAQ,CAAC,aAAa,EAAE,CAAC,WAAoC,EAAE,EAAE;YACjG,OAAO,CAAC,GAAG,CAAC,qDAAU,CAAC,QAAQ,CAAC,aAAa,EAAE,WAAW,CAAC,CAAC;YAC5D,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QACvC,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,cAAc,CAAC,EAAE,CAAC,qDAAU,CAAC,QAAQ,CAAC,eAAe,EAAE,CAAC,WAAsC,EAAE,EAAE;YACrG,OAAO,CAAC,GAAG,CAAC,qDAAU,CAAC,QAAQ,CAAC,eAAe,EAAE,WAAW,CAAC,CAAC;YAC9D,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QACzC,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,cAAc,CAAC,EAAE,CAAC,qDAAU,CAAC,QAAQ,CAAC,gBAAgB,EAAE,CAAC,WAAuC,EAAE,EAAE;YACvG,OAAO,CAAC,GAAG,CAAC,qDAAU,CAAC,QAAQ,CAAC,gBAAgB,EAAE,WAAW,CAAC,CAAC;YAC/D,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QAC1C,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,cAAc,CAAC,EAAE,CAAC,qDAAU,CAAC,QAAQ,CAAC,eAAe,EAAE,CAAC,WAAsC,EAAE,EAAE;YACrG,OAAO,CAAC,GAAG,CAAC,qDAAU,CAAC,QAAQ,CAAC,eAAe,EAAE,WAAW,CAAC,CAAC;YAC9D,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QACzC,CAAC,CAAC,CAAC;QAEH,cAAc;QACd,IAAI,CAAC,cAAc,CAAC,EAAE,CAAC,qDAAU,CAAC,WAAW,CAAC,6BAA6B,EAAE,CAAC,WAAiD,EAAE,EAAE;YACjI,OAAO,CAAC,GAAG,CAAC,qDAAU,CAAC,WAAW,CAAC,6BAA6B,EAAE,WAAW,CAAC,CAAC;YAC/E,IAAI,CAAC,6BAA6B,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QACvD,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,cAAc,CAAC,EAAE,CAAC,qDAAU,CAAC,WAAW,CAAC,mBAAmB,EAAE,CAAC,WAA0C,EAAE,EAAE;YAChH,OAAO,CAAC,GAAG,CAAC,qDAAU,CAAC,WAAW,CAAC,mBAAmB,EAAE,WAAW,CAAC,CAAC;YACrE,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QAC7C,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,cAAc,CAAC,EAAE,CAAC,qDAAU,CAAC,WAAW,CAAC,gBAAgB,EAAE,CAAC,WAAuC,EAAE,EAAE;YAC1G,OAAO,CAAC,GAAG,CAAC,qDAAU,CAAC,WAAW,CAAC,gBAAgB,EAAE,WAAW,CAAC,CAAC;YAClE,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QAC1C,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,cAAc,CAAC,EAAE,CAAC,qDAAU,CAAC,WAAW,CAAC,kBAAkB,EAAE,CAAC,WAAyC,EAAE,EAAE;YAC9G,OAAO,CAAC,GAAG,CAAC,qDAAU,CAAC,WAAW,CAAC,kBAAkB,EAAE,WAAW,CAAC,CAAC;YACpE,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QAC5C,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,cAAc,CAAC,EAAE,CAAC,qDAAU,CAAC,WAAW,CAAC,6BAA6B,EAAE,CAAC,WAAiD,EAAE,EAAE;YACjI,OAAO,CAAC,GAAG,CAAC,qDAAU,CAAC,WAAW,CAAC,6BAA6B,EAAE,WAAW,CAAC,CAAC;YAC/E,IAAI,CAAC,6BAA6B,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QACvD,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,cAAc,CAAC,EAAE,CAAC,qDAAU,CAAC,WAAW,CAAC,4BAA4B,EAAE,CAAC,WAAgD,EAAE,EAAE;YAC/H,OAAO,CAAC,GAAG,CAAC,qDAAU,CAAC,WAAW,CAAC,4BAA4B,EAAE,WAAW,CAAC,CAAC;YAC9E,IAAI,CAAC,4BAA4B,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QACtD,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,cAAc,CAAC,EAAE,CAAC,qDAAU,CAAC,WAAW,CAAC,kBAAkB,EAAE,CAAC,WAAyC,EAAE,EAAE;YAC9G,OAAO,CAAC,GAAG,CAAC,qDAAU,CAAC,WAAW,CAAC,kBAAkB,EAAE,WAAW,CAAC,CAAC;YACpE,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QAC5C,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,cAAc,CAAC,EAAE,CAAC,qDAAU,CAAC,WAAW,CAAC,iCAAiC,EAAE,CAAC,WAAqD,EAAE,EAAE;YACzI,OAAO,CAAC,GAAG,CAAC,qDAAU,CAAC,WAAW,CAAC,iCAAiC,EAAE,WAAW,CAAC,CAAC;YACnF,IAAI,CAAC,iCAAiC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QAC3D,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,cAAc,CAAC,EAAE,CAAC,qDAAU,CAAC,WAAW,CAAC,4BAA4B,EAAE,CAAC,WAAgD,EAAE,EAAE;YAC/H,OAAO,CAAC,GAAG,CAAC,qDAAU,CAAC,WAAW,CAAC,4BAA4B,EAAE,WAAW,CAAC,CAAC;YAC9E,IAAI,CAAC,4BAA4B,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QACtD,CAAC,CAAC,CAAC;QAEH,WAAW;QACX,IAAI,CAAC,cAAc,CAAC,EAAE,CAAC,qDAAU,CAAC,WAAW,CAAC,kBAAkB,EAAE,CAAC,WAAyC,EAAE,EAAE;YAC9G,OAAO,CAAC,GAAG,CAAC,qDAAU,CAAC,QAAQ,CAAC,aAAa,EAAE,WAAW,CAAC,CAAC;YAC5D,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QAC5C,CAAC,CAAC,CAAC;QAEH,WAAW;QACX,IAAI,CAAC,cAAc,CAAC,EAAE,CAAC,qDAAU,CAAC,OAAO,CAAC,YAAY,EAAE,CAAC,WAAmC,EAAE,EAAE;YAC9F,OAAO,CAAC,GAAG,CAAC,qDAAU,CAAC,OAAO,CAAC,YAAY,EAAE,WAAW,CAAC,CAAC;YAC1D,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QACtC,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,cAAc,CAAC,EAAE,CAAC,qDAAU,CAAC,OAAO,CAAC,cAAc,EAAE,CAAC,WAAqC,EAAE,EAAE;YAClG,OAAO,CAAC,GAAG,CAAC,qDAAU,CAAC,OAAO,CAAC,cAAc,EAAE,WAAW,CAAC,CAAC;YAC5D,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QACxC,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,cAAc,CAAC,EAAE,CAAC,qDAAU,CAAC,OAAO,CAAC,eAAe,EAAE,CAAC,WAAsC,EAAE,EAAE;YACpG,OAAO,CAAC,GAAG,CAAC,qDAAU,CAAC,OAAO,CAAC,eAAe,EAAE,WAAW,CAAC,CAAC;YAC7D,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QACzC,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,cAAc,CAAC,EAAE,CAAC,qDAAU,CAAC,OAAO,CAAC,cAAc,EAAE,CAAC,WAAqC,EAAE,EAAE;YAClG,OAAO,CAAC,GAAG,CAAC,qDAAU,CAAC,OAAO,CAAC,cAAc,EAAE,WAAW,CAAC,CAAC;YAC5D,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QACxC,CAAC,CAAC,CAAC;QAEH,eAAe;QACf,IAAI,CAAC,cAAc,CAAC,EAAE,CAAC,qDAAU,CAAC,WAAW,CAAC,gBAAgB,EAAE,CAAC,WAAuC,EAAE,EAAE;YAC1G,OAAO,CAAC,GAAG,CAAC,qDAAU,CAAC,WAAW,CAAC,gBAAgB,EAAE,WAAW,CAAC,CAAC;YAClE,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QAC1C,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,cAAc,CAAC,EAAE,CAAC,qDAAU,CAAC,WAAW,CAAC,kBAAkB,EAAE,CAAC,WAAyC,EAAE,EAAE;YAC9G,OAAO,CAAC,GAAG,CAAC,qDAAU,CAAC,WAAW,CAAC,kBAAkB,EAAE,WAAW,CAAC,CAAC;YACpE,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QAC5C,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,cAAc,CAAC,EAAE,CAAC,qDAAU,CAAC,WAAW,CAAC,mBAAmB,EAAE,CAAC,WAA0C,EAAE,EAAE;YAChH,OAAO,CAAC,GAAG,CAAC,qDAAU,CAAC,WAAW,CAAC,mBAAmB,EAAE,WAAW,CAAC,CAAC;YACrE,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QAC7C,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,cAAc,CAAC,EAAE,CAAC,qDAAU,CAAC,WAAW,CAAC,kBAAkB,EAAE,CAAC,WAAyC,EAAE,EAAE;YAC9G,OAAO,CAAC,GAAG,CAAC,qDAAU,CAAC,WAAW,CAAC,kBAAkB,EAAE,WAAW,CAAC,CAAC;YACpE,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QAC5C,CAAC,CAAC,CAAC;QAEH,aAAa;QACb,IAAI,CAAC,cAAc,CAAC,EAAE,CAAC,qDAAU,CAAC,SAAS,CAAC,cAAc,EAAE,CAAC,WAAqC,EAAE,EAAE;YACpG,OAAO,CAAC,GAAG,CAAC,qDAAU,CAAC,SAAS,CAAC,cAAc,EAAE,WAAW,CAAC,CAAC;YAC9D,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QACxC,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,cAAc,CAAC,EAAE,CAAC,qDAAU,CAAC,SAAS,CAAC,gBAAgB,EAAE,CAAC,WAAuC,EAAE,EAAE;YACxG,OAAO,CAAC,GAAG,CAAC,qDAAU,CAAC,SAAS,CAAC,gBAAgB,EAAE,WAAW,CAAC,CAAC;YAChE,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QAC1C,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,cAAc,CAAC,EAAE,CAAC,qDAAU,CAAC,SAAS,CAAC,iBAAiB,EAAE,CAAC,WAAwC,EAAE,EAAE;YAC1G,OAAO,CAAC,GAAG,CAAC,qDAAU,CAAC,SAAS,CAAC,iBAAiB,EAAE,WAAW,CAAC,CAAC;YACjE,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QAC3C,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,cAAc,CAAC,EAAE,CAAC,qDAAU,CAAC,SAAS,CAAC,gBAAgB,EAAE,CAAC,WAAuC,EAAE,EAAE;YACxG,OAAO,CAAC,GAAG,CAAC,qDAAU,CAAC,SAAS,CAAC,gBAAgB,EAAE,WAAW,CAAC,CAAC;YAChE,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QAC1C,CAAC,CAAC,CAAC;QAEH,eAAe;QACf,IAAI,CAAC,cAAc,CAAC,EAAE,CAAC,qDAAU,CAAC,WAAW,CAAC,gBAAgB,EAAE,CAAC,WAAuC,EAAE,EAAE;YAC1G,OAAO,CAAC,GAAG,CAAC,qDAAU,CAAC,WAAW,CAAC,gBAAgB,EAAE,WAAW,CAAC,CAAC;YAClE,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QAC1C,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,cAAc,CAAC,EAAE,CAAC,qDAAU,CAAC,WAAW,CAAC,kBAAkB,EAAE,CAAC,WAAyC,EAAE,EAAE;YAC9G,OAAO,CAAC,GAAG,CAAC,qDAAU,CAAC,WAAW,CAAC,kBAAkB,EAAE,WAAW,CAAC,CAAC;YACpE,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QAC5C,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,cAAc,CAAC,EAAE,CAAC,qDAAU,CAAC,WAAW,CAAC,mBAAmB,EAAE,CAAC,WAA0C,EAAE,EAAE;YAChH,OAAO,CAAC,GAAG,CAAC,qDAAU,CAAC,WAAW,CAAC,mBAAmB,EAAE,WAAW,CAAC,CAAC;YACrE,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QAC7C,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,cAAc,CAAC,EAAE,CAAC,qDAAU,CAAC,WAAW,CAAC,kBAAkB,EAAE,CAAC,WAAyC,EAAE,EAAE;YAC9G,OAAO,CAAC,GAAG,CAAC,qDAAU,CAAC,WAAW,CAAC,kBAAkB,EAAE,WAAW,CAAC,CAAC;YACpE,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QAC5C,CAAC,CAAC,CAAC;QAEH,gBAAgB;QAChB,IAAI,CAAC,cAAc,CAAC,EAAE,CAAC,qDAAU,CAAC,YAAY,CAAC,iBAAiB,EAAE,CAAC,WAAwC,EAAE,EAAE;YAC7G,OAAO,CAAC,GAAG,CAAC,qDAAU,CAAC,YAAY,CAAC,iBAAiB,EAAE,WAAW,CAAC,CAAC;YACpE,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QAC3C,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,cAAc,CAAC,EAAE,CAAC,qDAAU,CAAC,YAAY,CAAC,mBAAmB,EAAE,CAAC,WAA0C,EAAE,EAAE;YACjH,OAAO,CAAC,GAAG,CAAC,qDAAU,CAAC,YAAY,CAAC,mBAAmB,EAAE,WAAW,CAAC,CAAC;YACtE,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QAC7C,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,cAAc,CAAC,EAAE,CAAC,qDAAU,CAAC,YAAY,CAAC,oBAAoB,EAAE,CAAC,WAA2C,EAAE,EAAE;YACnH,OAAO,CAAC,GAAG,CAAC,qDAAU,CAAC,YAAY,CAAC,oBAAoB,EAAE,WAAW,CAAC,CAAC;YACvE,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QAC9C,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,cAAc,CAAC,EAAE,CAAC,qDAAU,CAAC,YAAY,CAAC,mBAAmB,EAAE,CAAC,WAA0C,EAAE,EAAE;YACjH,OAAO,CAAC,GAAG,CAAC,qDAAU,CAAC,YAAY,CAAC,mBAAmB,EAAE,WAAW,CAAC,CAAC;YACtE,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QAC7C,CAAC,CAAC,CAAC;QAEH,QAAQ;QACR,IAAI,CAAC,cAAc,CAAC,EAAE,CAAC,qDAAU,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC,WAAkC,EAAE,EAAE;YAC3F,OAAO,CAAC,GAAG,CAAC,qDAAU,CAAC,MAAM,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC;YACxD,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QACrC,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,cAAc,CAAC,EAAE,CAAC,qDAAU,CAAC,MAAM,CAAC,aAAa,EAAE,CAAC,WAAoC,EAAE,EAAE;YAC/F,OAAO,CAAC,GAAG,CAAC,qDAAU,CAAC,WAAW,CAAC,kBAAkB,EAAE,WAAW,CAAC,CAAC;YACpE,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QACvC,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,cAAc,CAAC,EAAE,CAAC,qDAAU,CAAC,MAAM,CAAC,cAAc,EAAE,CAAC,WAAqC,EAAE,EAAE;YACjG,OAAO,CAAC,GAAG,CAAC,qDAAU,CAAC,WAAW,CAAC,mBAAmB,EAAE,WAAW,CAAC,CAAC;YACrE,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QACxC,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,cAAc,CAAC,EAAE,CAAC,qDAAU,CAAC,MAAM,CAAC,aAAa,EAAE,CAAC,WAAoC,EAAE,EAAE;YAC/F,OAAO,CAAC,GAAG,CAAC,qDAAU,CAAC,MAAM,CAAC,aAAa,EAAE,WAAW,CAAC,CAAC;YAC1D,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QACvC,CAAC,CAAC,CAAC;QAEH,eAAe;QACf,IAAI,CAAC,cAAc,CAAC,EAAE,CAAC,qDAAU,CAAC,WAAW,CAAC,gBAAgB,EAAE,CAAC,WAAuC,EAAE,EAAE;YAC1G,OAAO,CAAC,GAAG,CAAC,qDAAU,CAAC,WAAW,CAAC,gBAAgB,EAAE,WAAW,CAAC,CAAC;YAClE,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QAC1C,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,cAAc,CAAC,EAAE,CAAC,qDAAU,CAAC,WAAW,CAAC,mBAAmB,EAAE,CAAC,WAA0C,EAAE,EAAE;YAChH,OAAO,CAAC,GAAG,CAAC,qDAAU,CAAC,WAAW,CAAC,mBAAmB,EAAE,WAAW,CAAC,CAAC;YACrE,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QAC7C,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,cAAc,CAAC,EAAE,CAAC,qDAAU,CAAC,WAAW,CAAC,kBAAkB,EAAE,CAAC,WAAyC,EAAE,EAAE;YAC9G,OAAO,CAAC,GAAG,CAAC,qDAAU,CAAC,WAAW,CAAC,kBAAkB,EAAE,WAAW,CAAC,CAAC;YACpE,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QAC5C,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,cAAc,CAAC,EAAE,CAAC,qDAAU,CAAC,WAAW,CAAC,kBAAkB,EAAE,CAAC,WAAyC,EAAE,EAAE;YAC9G,OAAO,CAAC,GAAG,CAAC,qDAAU,CAAC,WAAW,CAAC,kBAAkB,EAAE,WAAW,CAAC,CAAC;YACpE,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QAC5C,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,cAAc,CAAC,EAAE,CAAC,qDAAU,CAAC,WAAW,CAAC,uBAAuB,EAAE,CAAC,WAA8C,EAAE,EAAE;YACxH,OAAO,CAAC,GAAG,CAAC,qDAAU,CAAC,WAAW,CAAC,uBAAuB,EAAE,WAAW,CAAC,CAAC;YACzE,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QACjD,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,cAAc,CAAC,EAAE,CAAC,qDAAU,CAAC,WAAW,CAAC,sBAAsB,EAAE,CAAC,WAA6C,EAAE,EAAE;YACtH,OAAO,CAAC,GAAG,CAAC,qDAAU,CAAC,WAAW,CAAC,sBAAsB,EAAE,WAAW,CAAC,CAAC;YACxE,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QAChD,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,cAAc,CAAC,EAAE,CAAC,qDAAU,CAAC,WAAW,CAAC,iCAAiC,EAAE,CAAC,WAAwD,EAAE,EAAE;YAC5I,OAAO,CAAC,GAAG,CAAC,qDAAU,CAAC,WAAW,CAAC,iCAAiC,EAAE,WAAW,CAAC,CAAC;YACnF,IAAI,CAAC,iCAAiC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QAC3D,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,cAAc,CAAC,EAAE,CAAC,qDAAU,CAAC,WAAW,CAAC,4BAA4B,EAAE,CAAC,WAAmD,EAAE,EAAE;YAClI,OAAO,CAAC,GAAG,CAAC,qDAAU,CAAC,WAAW,CAAC,4BAA4B,EAAE,WAAW,CAAC,CAAC;YAC9E,IAAI,CAAC,4BAA4B,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QACtD,CAAC,CAAC,CAAC;QAEH,sBAAsB;QACtB,IAAI,CAAC,cAAc,CAAC,EAAE,CAAC,qDAAU,CAAC,WAAW,CAAC,kCAAkC,EAAE,CAAC,WAAyD,EAAE,EAAE;YAC9I,OAAO,CAAC,GAAG,CAAC,qDAAU,CAAC,WAAW,CAAC,kCAAkC,EAAE,WAAW,CAAC,CAAC;YACpF,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QACjD,CAAC,CAAC,CAAC;QAEH,eAAe;QACf,IAAI,CAAC,cAAc,CAAC,EAAE,CAAC,qDAAU,CAAC,WAAW,CAAC,mBAAmB,EAAE,CAAC,WAA0C,EAAE,EAAE;YAChH,OAAO,CAAC,GAAG,CAAC,qDAAU,CAAC,WAAW,CAAC,mBAAmB,EAAE,WAAW,CAAC,CAAC;YACrE,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QAC7C,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,cAAc,CAAC,EAAE,CAAC,qDAAU,CAAC,WAAW,CAAC,kBAAkB,EAAE,CAAC,WAAyC,EAAE,EAAE;YAC9G,OAAO,CAAC,GAAG,CAAC,qDAAU,CAAC,WAAW,CAAC,kBAAkB,EAAE,WAAW,CAAC,CAAC;YACpE,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QAC5C,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,cAAc,CAAC,EAAE,CAAC,qDAAU,CAAC,WAAW,CAAC,+BAA+B,EAAE,CAAC,WAAsD,EAAE,EAAE;YACxI,OAAO,CAAC,GAAG,CAAC,qDAAU,CAAC,WAAW,CAAC,+BAA+B,EAAE,WAAW,CAAC,CAAC;YACjF,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QAC9C,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,cAAc,CAAC,EAAE,CAAC,qDAAU,CAAC,WAAW,CAAC,gBAAgB,EAAE,CAAC,WAAuC,EAAE,EAAE;YAC1G,OAAO,CAAC,GAAG,CAAC,qDAAU,CAAC,WAAW,CAAC,gBAAgB,EAAE,WAAW,CAAC,CAAC;YAClE,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QAC1C,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,cAAc,CAAC,EAAE,CAAC,qDAAU,CAAC,WAAW,CAAC,kBAAkB,EAAE,CAAC,WAAyC,EAAE,EAAE;YAC9G,OAAO,CAAC,GAAG,CAAC,qDAAU,CAAC,WAAW,CAAC,kBAAkB,EAAE,WAAW,CAAC,CAAC;YACpE,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QAC5C,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,cAAc,CAAC,EAAE,CAAC,qDAAU,CAAC,WAAW,CAAC,wBAAwB,EAAE,CAAC,WAAgD,EAAE,EAAE;YAC3H,OAAO,CAAC,GAAG,CAAC,qDAAU,CAAC,WAAW,CAAC,wBAAwB,EAAE,WAAW,CAAC,CAAC;YAC1E,IAAI,CAAC,wBAAwB,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QAClD,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,cAAc,CAAC,EAAE,CAAC,qDAAU,CAAC,WAAW,CAAC,iCAAiC,EAAE,CAAC,WAAwD,EAAE,EAAE;YAC5I,OAAO,CAAC,GAAG,CAAC,qDAAU,CAAC,WAAW,CAAC,iCAAiC,EAAE,WAAW,CAAC,CAAC;YACnF,IAAI,CAAC,iCAAiC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QAC3D,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,cAAc,CAAC,EAAE,CAAC,qDAAU,CAAC,WAAW,CAAC,4BAA4B,EAAE,CAAC,WAAmD,EAAE,EAAE;YAClI,OAAO,CAAC,GAAG,CAAC,qDAAU,CAAC,WAAW,CAAC,4BAA4B,EAAE,WAAW,CAAC,CAAC;YAC9E,IAAI,CAAC,4BAA4B,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QACtD,CAAC,CAAC,CAAC;QAEH,SAAS;QACT,IAAI,CAAC,cAAc,CAAC,EAAE,CAAC,qDAAU,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC,WAAkC,EAAE,EAAE;YAC3F,OAAO,CAAC,GAAG,CAAC,qDAAU,CAAC,MAAM,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC;YACxD,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QACrC,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,cAAc,CAAC,EAAE,CAAC,qDAAU,CAAC,MAAM,CAAC,cAAc,EAAE,CAAC,WAAqC,EAAE,EAAE;YACjG,OAAO,CAAC,GAAG,CAAC,qDAAU,CAAC,MAAM,CAAC,cAAc,EAAE,WAAW,CAAC,CAAC;YAC3D,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QACxC,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,cAAc,CAAC,EAAE,CAAC,qDAAU,CAAC,MAAM,CAAC,aAAa,EAAE,CAAC,WAAoC,EAAE,EAAE;YAC/F,OAAO,CAAC,GAAG,CAAC,qDAAU,CAAC,MAAM,CAAC,aAAa,EAAE,WAAW,CAAC,CAAC;YAC1D,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QACvC,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,cAAc,CAAC,EAAE,CAAC,qDAAU,CAAC,MAAM,CAAC,aAAa,EAAE,CAAC,WAAoC,EAAE,EAAE;YAC/F,OAAO,CAAC,GAAG,CAAC,qDAAU,CAAC,MAAM,CAAC,aAAa,EAAE,WAAW,CAAC,CAAC;YAC1D,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QACvC,CAAC,CAAC,CAAC;QACH,eAAe;QACf,IAAI,CAAC,cAAc,CAAC,EAAE,CAAC,qDAAU,CAAC,MAAM,CAAC,kBAAkB,EAAE,CAAC,WAAyC,EAAE,EAAE;YACzG,OAAO,CAAC,GAAG,CAAC,qDAAU,CAAC,MAAM,CAAC,kBAAkB,EAAE,WAAW,CAAC,CAAC;YAC/D,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QAC5C,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,cAAc,CAAC,EAAE,CAAC,qDAAU,CAAC,MAAM,CAAC,gBAAgB,EAAE,CAAC,WAAuC,EAAE,EAAE;YACrG,OAAO,CAAC,GAAG,CAAC,qDAAU,CAAC,MAAM,CAAC,gBAAgB,EAAE,WAAW,CAAC,CAAC;YAC7D,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QAC1C,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,cAAc,CAAC,EAAE,CAAC,qDAAU,CAAC,MAAM,CAAC,mBAAmB,EAAE,CAAC,WAA0C,EAAE,EAAE;YAC3G,OAAO,CAAC,GAAG,CAAC,qDAAU,CAAC,MAAM,CAAC,mBAAmB,EAAE,WAAW,CAAC,CAAC;YAChE,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QAC7C,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,cAAc,CAAC,EAAE,CAAC,qDAAU,CAAC,MAAM,CAAC,kBAAkB,EAAE,CAAC,WAAyC,EAAE,EAAE;YACzG,OAAO,CAAC,GAAG,CAAC,qDAAU,CAAC,MAAM,CAAC,kBAAkB,EAAE,WAAW,CAAC,CAAC;YAC/D,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QAC5C,CAAC,CAAC,CAAC;QAEH,SAAS;QACT,IAAI,CAAC,cAAc,CAAC,EAAE,CAAC,qDAAU,CAAC,OAAO,CAAC,4BAA4B,EAAE,CAAC,WAAmD,EAAE,EAAE;YAC9H,OAAO,CAAC,GAAG,CAAC,qDAAU,CAAC,OAAO,CAAC,4BAA4B,EAAE,WAAW,CAAC,CAAC;YAC1E,IAAI,CAAC,4BAA4B,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QACtD,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,CAAO,KAAK,EAAE,EAAE;YAC1C,IAAI,IAAI,CAAC,kBAAkB,EAAE;gBAC3B,IAAI,CAAC,iBAAiB,CAAC,IAAI,KAAK,CAAC,yBAAyB,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC;aAC3F;QACH,CAAC,EAAC,CAAC;IACL,CAAC;IAEM,SAAS;QACd,IAAI,IAAI,CAAC,cAAc,EAAE;YACvB,IAAI,CAAC,kBAAkB,GAAG,KAAK,CAAC;YAChC,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE,CAAC;YAC3B,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;SAC5B;IACH,CAAC;CACF;;YAtWgC,wEAAkB;YACjB,2DAAmB;;AAnFxC,UAAU;IADtB,gEAAU,EAAE;qCAmFoB,wEAAkB;QACjB,2DAAmB;GAnFxC,UAAU,CAwbtB;AAxbsB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC3IiB;AACA;AACK;AACD;AACJ;AACI;AACd;AACc;AACA;AACV;AACG;AACO;AACN;AACF;AACC;AACC;AACI;AACI;AACL;AACC;AACM;AACP;AACG;AACH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACvBE;AACF;AAEiB;AACd;AACkF;AAKxG;AAKtB,IAAa,gBAAgB,GAA7B,MAAa,gBAAgB;IAE3B,YACU,YAAyB,EACzB,OAAe;QADf,iBAAY,GAAZ,YAAY,CAAa;QACzB,YAAO,GAAP,OAAO,CAAQ;IAAI,CAAC;IAEjB,sBAAsB,CAAC,UAAkB;;YACpD,IAAI;gBACF,IAAI,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,EAAE;oBAC/C,OAAO,IAAI,CAAC,WAAW,EAAE,CAAC;iBAC3B;gBACD,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,oDAAS,CAAC,MAAM,CAAC,sBAAsB,EAAE,EAAE,UAAU,EAAE,UAAU,EAAE,CAAC,CAAC;gBAChH,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;oBACzB,OAAO,sDAAc,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;gBAC1C,CAAC,CAAC,CAAC;aACJ;YAAC,OAAO,KAAK,EAAE;gBACd,OAAO,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;aACjC;QACH,CAAC;KAAA;IAEY,kBAAkB,CAAC,eAAoC;;YAClE,IAAI;gBACF,IAAI,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,EAAE;oBAC/C,OAAO,IAAI,CAAC,qBAAqB,EAAE,CAAC;iBACrC;gBACD,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,oDAAS,CAAC,MAAM,CAAC,kBAAkB,EAAE,eAAe,CAAC,CAAC;gBAClG,OAAO,MAAM,CAAC;aACf;YAAC,OAAO,KAAK,EAAE;gBACd,OAAO,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;aACjC;QAEH,CAAC;KAAA;IAEY,GAAG,CAAC,SAAyB;;YACxC,IAAI;gBACF,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,oDAAS,CAAC,MAAM,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;gBAC7E,MAAM,MAAM,GAAG,sDAAc,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;gBAClD,OAAO,MAAM,CAAC;aACf;YAAC,OAAO,KAAK,EAAE;gBACd,OAAO,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;aACjC;QACH,CAAC;KAAA;IAEY,IAAI,CAAC,UAA2B;;YAC3C,IAAI;gBACF,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,oDAAS,CAAC,MAAM,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;gBAC/E,MAAM,MAAM,GAAG,sDAAc,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;gBAClD,OAAO,MAAM,CAAC;aACf;YAAC,OAAO,KAAK,EAAE;gBACd,OAAO,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;aACjC;QACH,CAAC;KAAA;IAEY,MAAM,CAAC,QAAgB;;YAClC,IAAI;gBACF,MAAM,MAAM,GAAG,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,oDAAS,CAAC,MAAM,CAAC,MAAM,EAAE,EAAE,QAAQ,EAAE,CAAC,CAAC;gBAC/E,OAAO,MAAM,CAAC;aACf;YAAC,OAAO,KAAK,EAAE;gBACd,OAAO,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;aACjC;QACH,CAAC;KAAA;IAEY,QAAQ,CAAC,KAAqB;;YACzC,IAAI;gBAEF,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,oDAAS,CAAC,MAAM,CAAC,QAAQ,EAAE,KAAK,CAAC;gBAC7E,IAAI,KAAK,GAAG,MAAwB,CAAC;gBACrC,OAAO,KAAK,CAAC;aACd;YAAC,OAAO,KAAK,EAAE;gBACd,OAAO,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;aACjC;QACH,CAAC;KAAA;IAEY,SAAS,CAAC,KAAqB;;YAC1C,IAAI;gBACF,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,oDAAS,CAAC,MAAM,CAAC,SAAS,EAAE,KAAK,CAAC;gBAC9E,IAAI,KAAK,GAAG,MAAwB,CAAC;gBACrC,OAAO,KAAK,CAAC;aACd;YAAC,OAAO,KAAK,EAAE;gBACd,OAAO,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;aACjC;QACH,CAAC;KAAA;IAEY,WAAW,CAAC,OAAe;;YACtC,IAAI;gBACF,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,oDAAS,CAAC,MAAM,CAAC,WAAW,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC;gBACzF,OAAO,MAAM,CAAC;aACf;YAAC,OAAO,KAAK,EAAE;gBACd,OAAO,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;aACjC;QACH,CAAC;KAAA;IAEO,YAAY,CAAC,KAAU;QAC7B,IAAI,KAAK,YAAY,kDAAU,EAAE;YAC/B,OAAO,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;SAC9B;QACD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QACnB,OAAO,IAAI,CAAC;IACd,CAAC;IAEY,oBAAoB,CAAC,iBAA0C;;YAC1E,IAAI;gBACF,IAAI,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,EAAE;oBAC/C,OAAO,IAAI,CAAC,gBAAgB,EAAE,CAAC;iBAChC;gBACD,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,oDAAS,CAAC,MAAM,CAAC,oBAAoB,EAAE,iBAAiB,CAAC,CAAC;gBACtG,OAAO,MAAM,CAAC;aACf;YAAC,OAAO,KAAK,EAAE;gBACd,OAAO,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;aACjC;QACH,CAAC;KAAA;IAEY,yBAAyB;;YACpC,IAAI;gBACF,IAAI,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,EAAE;oBAC/C,OAAO,IAAI,CAAC,qBAAqB,EAAE,CAAC;iBACrC;gBACD,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,oDAAS,CAAC,MAAM,CAAC,0BAA0B,CAAC,CAAC;gBACxF,OAAO,MAAM,CAAC;aACf;YAAC,OAAO,KAAK,EAAE;gBACd,OAAO,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;aACjC;QACH,CAAC;KAAA;IAEY,wBAAwB;;YACnC,IAAI;gBACF,IAAI,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,EAAE;oBAC/C,OAAO,IAAI,CAAC,sBAAsB,EAAE,CAAC;iBACtC;gBACD,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,oDAAS,CAAC,MAAM,CAAC,wBAAwB,CAAC,CAAC;gBACtF,OAAO,MAAM,CAAC;aACf;YAAC,OAAO,KAAK,EAAE;gBACd,OAAO,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;aACjC;QACH,CAAC;KAAA;IAEY,kBAAkB,CAAC,IAAc;;YAC5C,IAAI;gBACF,IAAI,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,EAAE;oBAC/C,OAAO,IAAI,CAAC,eAAe,EAAE,CAAC;iBAC/B;gBACD,IAAI,MAAM,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,oDAAS,CAAC,MAAM,CAAC,kBAAkB,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;gBACxF,MAAM,GAAG,MAA+B;gBACxC,IAAI,EAAwB,CAAC;gBAC7B,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;oBACnB,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;oBAC5B,GAAG,CAAC,MAAM,GAAG,EAAE,CAAC;oBAChB,GAAG,CAAC,aAAa,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,qBAAqB,CAAC,CAAC;gBAC5D,CAAC,CAAC,CAAC;gBACH,OAAO,MAAM,CAAC;aACf;YAAC,OAAO,KAAK,EAAE;gBACd,OAAO,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;aACjC;QACH,CAAC;KAAA;IAEY,SAAS,CAAC,UAAoC;;YACzD,IAAI;gBACF,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,oDAAS,CAAC,MAAM,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;gBACnF,MAAM,MAAM,GAAG,sDAAc,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;gBAClD,OAAO,MAAM,CAAC;aACf;YAAC,OAAO,KAAK,EAAE;gBACd,OAAO,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;aACjC;QACH,CAAC;KAAA;IAEY,iBAAiB,CAAC,KAAa;;YAC1C,IAAI;gBACF,IAAI,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,EAAE;oBAC/C,OAAO,qEAA6B,CAAC,sBAAsB,CAAC,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC,CAAC;iBAC7F;gBACD,IAAI,MAAM,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,oDAAS,CAAC,MAAM,CAAC,oCAAoC,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC;gBAClH,MAAM,GAAG,MAAuC,CAAC;gBACjD,MAAM,CAAC,SAAS,CAAC,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;gBAC9D,OAAO,qEAA6B,CAAC,sBAAsB,CAAC,MAAM,CAAC,CAAC;aACrE;YAAC,OAAO,KAAK,EAAE;gBACd,OAAO,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;aACjC;QACH,CAAC;KAAA;IAEO,qBAAqB;QAC3B,IAAI,IAAI,GAAG;YACT,EAAE,EAAE,CAAC,EAAE,gBAAgB,EAAE,uDAAgB,CAAC,GAAG,EAAE,kBAAkB,EAAE,uDAAgB,CAAC,GAAG,EAAE,kBAAkB,EAAE,6DAAsB,CAAC,OAAO;YAC3I,WAAW,EAAE,sDAAe,CAAC,EAAE;SACb,CAAC;QACrB,OAAO,IAAI,CAAC;IACd,CAAC;IAEO,kBAAkB,CAAC,KAAa;QACtC,IAAI,WAAW,GAAG,IAAI,qEAA6B,EAAE,CAAC;QACtD,WAAW,CAAC,cAAc,GAAG,IAAI,CAAC,qBAAqB,EAAE,CAAC;QAC1D,WAAW,CAAC,MAAM,GAAG;YACnB,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,UAAU,EAAE,UAAU,EAAE,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,QAAQ,EAAE,OAAO,EAAE,aAAa,EAAE,EAAE,EAAE,YAAY,EAAE,uDAAgB,CAAC,IAAI,EAAE,aAAa,EAAE,CAAC,EAAE,OAAO,EAAE,qDAAc,CAAC,WAAW,EAAE,SAAS,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI;YAC9O,SAAS,EAAE,EAAE,EAAE,WAAW,EAAE,sDAAe,CAAC,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,cAAc,EAAE,CAAC,EAAE,aAAa,EAAE,CAAC,EAAE,qBAAqB,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,cAAc,EAAE,CAAC,EAAE,aAAa,EAAE,CAAC,EAAE,qBAAqB,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,cAAc,EAAE,CAAC,EAAE,aAAa,EAAE,CAAC,EAAE,qBAAqB,EAAE,CAAC,EAAE,CAAqB;SACjV,CAAC;QACF,WAAW,CAAC,SAAS,GAAG;YACtB,EAAE,EAAE,CAAC,EAAE,YAAY,EAAE,EAAE,EAAE,mBAAmB,EAAE,EAAE,EAAE,cAAc,EAAE,EAAE,EAAE,kBAAkB,EAAE,EAAE,EAAE,MAAM,EAAE;gBACpG,EAAE,OAAO,EAAE,GAAG,EAAE,WAAW,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,WAAW,EAAE,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,aAAa,EAAE,CAAC,EAAE,qBAAqB,EAAE,EAAE,EAAE,qBAAqB,EAAE,IAAI,EAAwB;gBAC/K,EAAE,OAAO,EAAE,GAAG,EAAE,WAAW,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,WAAW,EAAE,EAAE,EAAE,QAAQ,EAAE,CAAC,EAAE,aAAa,EAAE,CAAC,EAAE,qBAAqB,EAAE,EAAE,EAAwB;gBACjJ,EAAE,OAAO,EAAE,GAAG,EAAE,WAAW,EAAE,CAAC,CAAC,EAAE,SAAS,EAAE,EAAE,EAAE,WAAW,EAAE,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,aAAa,EAAE,CAAC,EAAE,qBAAqB,EAAE,CAAC,EAAwB;aAClJ,EAAE,sBAAsB,EAAE,MAAM,EAAE,2BAA2B,EAAE,MAAM,EAAE,oBAAoB,EAAE,EAAE,EAAE,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,QAAQ,EAAE;SACjG;QAEnC,OAAO,WAAW,CAAC;IACrB,CAAC;IAEO,WAAW;QACjB,IAAI,IAAI,GAAG;YACT;gBACE,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,UAAU,EAAE,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,aAAa,EAAE,EAAE,EAAE,YAAY,EAAE,uDAAgB,CAAC,IAAI,EAAE,aAAa,EAAE,CAAC,EAAE,OAAO,EAAE,qDAAc,CAAC,gBAAgB;gBAC9M,SAAS,EAAE,EAAE,EAAE,WAAW,EAAE,sDAAe,CAAC,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,cAAc,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,cAAc,EAAE,CAAC,EAAE,aAAa,EAAE,IAAI,EAAE,qBAAqB,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,cAAc,EAAE,CAAC,EAAE,aAAa,EAAE,IAAI,EAAE,qBAAqB,EAAE,IAAI,EAAE,CAAqB,EAAE,sBAAsB,EAAE,KAAK;aAC9U;YACD;gBACE,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,UAAU,EAAE,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,aAAa,EAAE,EAAE,EAAE,YAAY,EAAE,uDAAgB,CAAC,GAAG,EAAE,aAAa,EAAE,CAAC,EAAE,OAAO,EAAE,qDAAc,CAAC,oBAAoB;gBAC/M,SAAS,EAAE,EAAE,EAAE,WAAW,EAAE,sDAAe,CAAC,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,cAAc,EAAE,CAAC,EAAE,aAAa,EAAE,IAAI,EAAE,qBAAqB,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,cAAc,EAAE,CAAC,EAAE,aAAa,EAAE,IAAI,EAAE,qBAAqB,EAAE,IAAI,EAAE,CAAqB,EAAE,sBAAsB,EAAE,KAAK;aACpS;YACD;gBACE,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,UAAU,EAAE,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,QAAQ,EAAE,OAAO,EAAE,aAAa,EAAE,EAAE,EAAE,YAAY,EAAE,uDAAgB,CAAC,IAAI,EAAE,aAAa,EAAE,CAAC,EAAE,OAAO,EAAE,qDAAc,CAAC,WAAW,EAAE,SAAS,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI;gBAC1O,SAAS,EAAE,EAAE,EAAE,WAAW,EAAE,sDAAe,CAAC,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,cAAc,EAAE,CAAC,EAAE,aAAa,EAAE,CAAC,EAAE,qBAAqB,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,cAAc,EAAE,CAAC,EAAE,aAAa,EAAE,CAAC,EAAE,qBAAqB,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,cAAc,EAAE,CAAC,EAAE,aAAa,EAAE,CAAC,EAAE,qBAAqB,EAAE,CAAC,EAAE,CAAqB,EAAE,sBAAsB,EAAE,KAAK;aAChX;SACmB;QACtB,OAAO,IAAI,CAAC;IACd,CAAC;IAEO,gBAAgB;QACtB,IAAI,IAAI,GAAG;YACT,qBAAqB,EAAE;gBACrB;oBACE,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,sBAAsB,EAAE,UAAU,EAAE,CAAC,EAAE,YAAY,EAAE,WAAW,EAAE,SAAS,EAAE,CAAC,EAAE,WAAW,EAAE,wBAAwB,EAAE,OAAO,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC;oBAC3J,QAAQ,EAAE,KAAK,EAAE,aAAa,EAAE,EAAE,EAAE,YAAY,EAAE,CAAC;iBACpD;gBACD;oBACE,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,eAAe,EAAE,UAAU,EAAE,CAAC,EAAE,YAAY,EAAE,WAAW,EAAE,SAAS,EAAE,CAAC,EAAE,WAAW,EAAE,wBAAwB,EAAE,OAAO,EAAE,CAAC;oBACvI,QAAQ,EAAE,CAAC,EAAE,QAAQ,EAAE,QAAQ,EAAE,aAAa,EAAE,GAAG,EAAE,YAAY,EAAE,CAAC;iBACrE;gBACD;oBACE,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,UAAU,EAAE,CAAC,EAAE,YAAY,EAAE,sBAAsB,EAAE,SAAS,EAAE,CAAC,EAAE,WAAW,EAAE,wBAAwB,EAAE,OAAO,EAAE,CAAC;oBAC5I,QAAQ,EAAE,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,aAAa,EAAE,GAAG,EAAE,YAAY,EAAE,CAAC;iBACnE;gBAED;oBACE,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,uBAAuB,EAAE,UAAU,EAAE,CAAC,EAAE,YAAY,EAAE,WAAW,EAAE,SAAS,EAAE,CAAC,EAAE,WAAW,EAAE,wBAAwB,EAAE,OAAO,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC;oBAC5J,QAAQ,EAAE,KAAK,EAAE,aAAa,EAAE,GAAG,EAAE,YAAY,EAAE,CAAC;iBACrD;gBACD;oBACE,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,eAAe,EAAE,UAAU,EAAE,CAAC,EAAE,YAAY,EAAE,WAAW,EAAE,SAAS,EAAE,CAAC,EAAE,WAAW,EAAE,wBAAwB,EAAE,OAAO,EAAE,CAAC;oBACvI,QAAQ,EAAE,CAAC,EAAE,QAAQ,EAAE,QAAQ,EAAE,aAAa,EAAE,GAAG,EAAE,YAAY,EAAE,CAAC;iBACrE;gBACD;oBACE,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,UAAU,EAAE,CAAC,EAAE,YAAY,EAAE,sBAAsB,EAAE,SAAS,EAAE,CAAC,EAAE,WAAW,EAAE,wBAAwB,EAAE,OAAO,EAAE,CAAC;oBAC5I,QAAQ,EAAE,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,aAAa,EAAE,GAAG,EAAE,YAAY,EAAE,CAAC;iBACnE;gBAED;oBACE,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,YAAY,EAAE,UAAU,EAAE,CAAC,EAAE,YAAY,EAAE,WAAW,EAAE,SAAS,EAAE,CAAC,EAAE,WAAW,EAAE,wBAAwB,EAAE,OAAO,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC;oBACjJ,QAAQ,EAAE,KAAK,EAAE,aAAa,EAAE,CAAC,EAAE,YAAY,EAAE,CAAC;iBACnD;gBACD;oBACE,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,eAAe,EAAE,UAAU,EAAE,CAAC,EAAE,YAAY,EAAE,WAAW,EAAE,SAAS,EAAE,CAAC,EAAE,WAAW,EAAE,wBAAwB,EAAE,OAAO,EAAE,CAAC;oBACvI,QAAQ,EAAE,CAAC,EAAE,QAAQ,EAAE,QAAQ,EAAE,aAAa,EAAE,CAAC,EAAE,YAAY,EAAE,CAAC;iBACnE;gBACD;oBACE,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,UAAU,EAAE,CAAC,EAAE,YAAY,EAAE,sBAAsB,EAAE,SAAS,EAAE,CAAC,EAAE,WAAW,EAAE,wBAAwB,EAAE,OAAO,EAAE,CAAC;oBAC5I,QAAQ,EAAE,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,aAAa,EAAE,CAAC,EAAE,YAAY,EAAE,CAAC;iBACjE;gBAED;oBACE,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,YAAY,EAAE,UAAU,EAAE,CAAC,EAAE,YAAY,EAAE,WAAW,EAAE,SAAS,EAAE,CAAC,EAAE,WAAW,EAAE,wBAAwB,EAAE,OAAO,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC;oBACjJ,QAAQ,EAAE,KAAK,EAAE,aAAa,EAAE,CAAC,EAAE,YAAY,EAAE,CAAC;iBACnD;gBACD;oBACE,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,eAAe,EAAE,UAAU,EAAE,CAAC,EAAE,YAAY,EAAE,WAAW,EAAE,SAAS,EAAE,CAAC,EAAE,WAAW,EAAE,wBAAwB,EAAE,OAAO,EAAE,EAAE;oBACzI,QAAQ,EAAE,CAAC,EAAE,QAAQ,EAAE,QAAQ,EAAE,aAAa,EAAE,CAAC,EAAE,YAAY,EAAE,CAAC;iBACnE;gBACD;oBACE,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,UAAU,EAAE,CAAC,EAAE,YAAY,EAAE,sBAAsB,EAAE,SAAS,EAAE,CAAC,EAAE,WAAW,EAAE,wBAAwB,EAAE,OAAO,EAAE,EAAE;oBAC9I,QAAQ,EAAE,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,aAAa,EAAE,CAAC,EAAE,YAAY,EAAE,CAAC;iBACjE;aACF;YACD,kBAAkB,EAAE,EAAE;SAEF;QACtB,OAAO,IAAI,CAAC;IACd,CAAC;IAEO,eAAe;QACrB,IAAI,IAAI,GAAG,CAAC;gBACV,EAAE,EAAE,CAAC,EAAE,YAAY,EAAE,EAAE,EAAE,mBAAmB,EAAE,EAAE,EAAE,cAAc,EAAE,EAAE,EAAE,kBAAkB,EAAE,EAAE,EAAE,MAAM,EAAE;oBACpG,EAAE,OAAO,EAAE,GAAG,EAAE,WAAW,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,WAAW,EAAE,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,aAAa,EAAE,CAAC,EAAE,qBAAqB,EAAE,EAAE,EAAwB;oBAClJ,EAAE,OAAO,EAAE,GAAG,EAAE,WAAW,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,WAAW,EAAE,EAAE,EAAE,QAAQ,EAAE,CAAC,EAAE,aAAa,EAAE,CAAC,EAAE,qBAAqB,EAAE,EAAE,EAAwB;oBACjJ,EAAE,OAAO,EAAE,GAAG,EAAE,WAAW,EAAE,CAAC,CAAC,EAAE,SAAS,EAAE,EAAE,EAAE,WAAW,EAAE,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,aAAa,EAAE,CAAC,EAAE,qBAAqB,EAAE,CAAC,EAAwB;iBAClJ,EAAE,sBAAsB,EAAE,MAAM,EAAE,2BAA2B,EAAE,MAAM,EAAE,oBAAoB,EAAE,EAAE,EAAE,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,QAAQ,EAAE;aACjG;YACnC;gBACE,EAAE,EAAE,CAAC,EAAE,YAAY,EAAE,EAAE,EAAE,mBAAmB,EAAE,EAAE,EAAE,cAAc,EAAE,EAAE,EAAE,kBAAkB,EAAE,EAAE,EAAE,MAAM,EAAE;oBACpG,EAAE,OAAO,EAAE,EAAE,EAAE,WAAW,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,WAAW,EAAE,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,aAAa,EAAE,CAAC,EAAE,qBAAqB,EAAE,EAAE,EAAwB;oBACjJ,EAAE,OAAO,EAAE,EAAE,EAAE,WAAW,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,WAAW,EAAE,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,aAAa,EAAE,CAAC,EAAE,qBAAqB,EAAE,EAAE,EAAwB;oBACjJ,EAAE,OAAO,EAAE,EAAE,EAAE,WAAW,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,WAAW,EAAE,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,aAAa,EAAE,CAAC,EAAE,qBAAqB,EAAE,CAAC,EAAwB;iBACjJ,EAAE,sBAAsB,EAAE,MAAM,EAAE,2BAA2B,EAAE,KAAK,EAAE,oBAAoB,EAAE,EAAE,EAAE,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,QAAQ,EAAE;aAChG;YACnC;gBACE,EAAE,EAAE,CAAC,EAAE,YAAY,EAAE,GAAG,EAAE,mBAAmB,EAAE,GAAG,EAAE,cAAc,EAAE,EAAE,EAAE,kBAAkB,EAAE,EAAE,EAAE,MAAM,EAAE;oBACtG,EAAE,OAAO,EAAE,CAAC,EAAE,WAAW,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,WAAW,EAAE,EAAE,EAAE,QAAQ,EAAE,GAAG,EAAE,aAAa,EAAE,CAAC,EAAE,qBAAqB,EAAE,EAAE,EAAwB;oBACjJ,EAAE,OAAO,EAAE,CAAC,EAAE,WAAW,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,WAAW,EAAE,EAAE,EAAE,QAAQ,EAAE,GAAG,EAAE,aAAa,EAAE,CAAC,EAAE,qBAAqB,EAAE,EAAE,EAAwB;oBACjJ,EAAE,OAAO,EAAE,CAAC,EAAE,WAAW,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,WAAW,EAAE,EAAE,EAAE,QAAQ,EAAE,GAAG,EAAE,aAAa,EAAE,CAAC,EAAE,qBAAqB,EAAE,CAAC,EAAwB;iBACjJ,EAAE,sBAAsB,EAAE,MAAM,EAAE,2BAA2B,EAAE,KAAK,EAAE,oBAAoB,EAAE,EAAE,EAAE,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,QAAQ,EAAE;aAChG;YACnC;gBACE,EAAE,EAAE,CAAC,EAAE,YAAY,EAAE,EAAE,EAAE,mBAAmB,EAAE,EAAE,EAAE,cAAc,EAAE,EAAE,EAAE,kBAAkB,EAAE,EAAE,EAAE,MAAM,EAAE;oBACpG,EAAE,OAAO,EAAE,GAAG,EAAE,WAAW,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,WAAW,EAAE,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,aAAa,EAAE,CAAC,EAAE,qBAAqB,EAAE,EAAE,EAAwB;oBAClJ,EAAE,OAAO,EAAE,GAAG,EAAE,WAAW,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,WAAW,EAAE,EAAE,EAAE,QAAQ,EAAE,CAAC,EAAE,aAAa,EAAE,CAAC,EAAE,qBAAqB,EAAE,EAAE,EAAwB;oBACjJ,EAAE,OAAO,EAAE,GAAG,EAAE,WAAW,EAAE,CAAC,CAAC,EAAE,SAAS,EAAE,EAAE,EAAE,WAAW,EAAE,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,aAAa,EAAE,CAAC,EAAE,qBAAqB,EAAE,CAAC,EAAwB;iBAClJ,EAAE,sBAAsB,EAAE,MAAM,EAAE,2BAA2B,EAAE,MAAM,EAAE,oBAAoB,EAAE,EAAE,EAAE,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,QAAQ,EAAE;aACjG;YACnC;gBACE,EAAE,EAAE,CAAC,EAAE,YAAY,EAAE,EAAE,EAAE,mBAAmB,EAAE,EAAE,EAAE,cAAc,EAAE,EAAE,EAAE,kBAAkB,EAAE,EAAE,EAAE,MAAM,EAAE;oBACpG,EAAE,OAAO,EAAE,EAAE,EAAE,WAAW,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,WAAW,EAAE,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,aAAa,EAAE,CAAC,EAAE,qBAAqB,EAAE,EAAE,EAAwB;oBACjJ,EAAE,OAAO,EAAE,EAAE,EAAE,WAAW,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,WAAW,EAAE,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,aAAa,EAAE,CAAC,EAAE,qBAAqB,EAAE,EAAE,EAAwB;oBACjJ,EAAE,OAAO,EAAE,EAAE,EAAE,WAAW,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,WAAW,EAAE,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,aAAa,EAAE,CAAC,EAAE,qBAAqB,EAAE,CAAC,EAAwB;iBACjJ,EAAE,sBAAsB,EAAE,MAAM,EAAE,2BAA2B,EAAE,MAAM,EAAE,oBAAoB,EAAE,EAAE,EAAE,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,QAAQ,EAAE;aACjG;YACnC;gBACE,EAAE,EAAE,CAAC,EAAE,YAAY,EAAE,GAAG,EAAE,mBAAmB,EAAE,GAAG,EAAE,cAAc,EAAE,EAAE,EAAE,kBAAkB,EAAE,EAAE,EAAE,MAAM,EAAE;oBACtG,EAAE,OAAO,EAAE,CAAC,EAAE,WAAW,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,WAAW,EAAE,EAAE,EAAE,QAAQ,EAAE,GAAG,EAAE,aAAa,EAAE,CAAC,EAAE,qBAAqB,EAAE,EAAE,EAAwB;oBACjJ,EAAE,OAAO,EAAE,CAAC,EAAE,WAAW,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,WAAW,EAAE,EAAE,EAAE,QAAQ,EAAE,GAAG,EAAE,aAAa,EAAE,CAAC,EAAE,qBAAqB,EAAE,EAAE,EAAwB;oBACjJ,EAAE,OAAO,EAAE,CAAC,EAAE,WAAW,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,WAAW,EAAE,EAAE,EAAE,QAAQ,EAAE,GAAG,EAAE,aAAa,EAAE,CAAC,EAAE,qBAAqB,EAAE,EAAE,EAAwB;iBAClJ,EAAE,sBAAsB,EAAE,OAAO,EAAE,2BAA2B,EAAE,MAAM,EAAE,oBAAoB,EAAE,EAAE,EAAE,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,QAAQ,EAAE;aAClG;YACnC;gBACE,EAAE,EAAE,CAAC,EAAE,YAAY,EAAE,EAAE,EAAE,mBAAmB,EAAE,EAAE,EAAE,cAAc,EAAE,EAAE,EAAE,kBAAkB,EAAE,EAAE,EAAE,MAAM,EAAE;oBACpG,EAAE,OAAO,EAAE,GAAG,EAAE,WAAW,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,WAAW,EAAE,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAwB;oBACrG,EAAE,OAAO,EAAE,GAAG,EAAE,WAAW,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,WAAW,EAAE,EAAE,EAAE,QAAQ,EAAE,CAAC,EAAwB;oBACpG,EAAE,OAAO,EAAE,GAAG,EAAE,WAAW,EAAE,CAAC,CAAC,EAAE,SAAS,EAAE,EAAE,EAAE,WAAW,EAAE,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAwB;iBACtG,EAAE,sBAAsB,EAAE,CAAC,EAAE,2BAA2B,EAAE,CAAC,EAAE,oBAAoB,EAAE,CAAC,EAAE,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,QAAQ,EAAE;aACtF;YACnC;gBACE,EAAE,EAAE,CAAC,EAAE,YAAY,EAAE,EAAE,EAAE,mBAAmB,EAAE,EAAE,EAAE,cAAc,EAAE,EAAE,EAAE,kBAAkB,EAAE,EAAE,EAAE,MAAM,EAAE;oBACpG,EAAE,OAAO,EAAE,EAAE,EAAE,WAAW,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,WAAW,EAAE,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAwB;oBACpG,EAAE,OAAO,EAAE,EAAE,EAAE,WAAW,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,WAAW,EAAE,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAwB;oBACpG,EAAE,OAAO,EAAE,EAAE,EAAE,WAAW,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,WAAW,EAAE,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAwB;iBACrG,EAAE,sBAAsB,EAAE,CAAC,EAAE,2BAA2B,EAAE,CAAC,EAAE,oBAAoB,EAAE,CAAC,EAAE,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,QAAQ,EAAE;aACtF;YACnC;gBACE,EAAE,EAAE,CAAC,EAAE,YAAY,EAAE,GAAG,EAAE,mBAAmB,EAAE,GAAG,EAAE,cAAc,EAAE,EAAE,EAAE,kBAAkB,EAAE,EAAE,EAAE,MAAM,EAAE;oBACtG,EAAE,OAAO,EAAE,CAAC,EAAE,WAAW,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,WAAW,EAAE,EAAE,EAAE,QAAQ,EAAE,GAAG,EAAwB;oBACpG,EAAE,OAAO,EAAE,CAAC,EAAE,WAAW,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,WAAW,EAAE,EAAE,EAAE,QAAQ,EAAE,GAAG,EAAwB;oBACpG,EAAE,OAAO,EAAE,CAAC,EAAE,WAAW,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,WAAW,EAAE,EAAE,EAAE,QAAQ,EAAE,GAAG,EAAwB;iBACrG,EAAE,sBAAsB,EAAE,CAAC,EAAE,2BAA2B,EAAE,CAAC,EAAE,oBAAoB,EAAE,CAAC,EAAE,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,QAAQ,EAAE;aACtF;YACnC;gBACE,EAAE,EAAE,CAAC,EAAE,YAAY,EAAE,EAAE,EAAE,mBAAmB,EAAE,EAAE,EAAE,cAAc,EAAE,EAAE,EAAE,kBAAkB,EAAE,EAAE,EAAE,MAAM,EAAE;oBACpG,EAAE,OAAO,EAAE,GAAG,EAAE,WAAW,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,WAAW,EAAE,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAwB;oBACrG,EAAE,OAAO,EAAE,GAAG,EAAE,WAAW,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,WAAW,EAAE,EAAE,EAAE,QAAQ,EAAE,CAAC,EAAwB;oBACpG,EAAE,OAAO,EAAE,GAAG,EAAE,WAAW,EAAE,CAAC,CAAC,EAAE,SAAS,EAAE,EAAE,EAAE,WAAW,EAAE,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAwB;iBACtG,EAAE,sBAAsB,EAAE,CAAC,EAAE,2BAA2B,EAAE,CAAC,EAAE,oBAAoB,EAAE,CAAC,EAAE,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,QAAQ,EAAE;aACtF;YACnC;gBACE,EAAE,EAAE,EAAE,EAAE,YAAY,EAAE,EAAE,EAAE,mBAAmB,EAAE,EAAE,EAAE,cAAc,EAAE,EAAE,EAAE,kBAAkB,EAAE,EAAE,EAAE,MAAM,EAAE;oBACrG,EAAE,OAAO,EAAE,EAAE,EAAE,WAAW,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,WAAW,EAAE,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAwB;oBACpG,EAAE,OAAO,EAAE,EAAE,EAAE,WAAW,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,WAAW,EAAE,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAwB;oBACpG,EAAE,OAAO,EAAE,EAAE,EAAE,WAAW,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,WAAW,EAAE,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAwB;iBACrG,EAAE,sBAAsB,EAAE,CAAC,EAAE,2BAA2B,EAAE,CAAC,EAAE,oBAAoB,EAAE,CAAC,EAAE,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,QAAQ,EAAE;aACtF;YACnC;gBACE,EAAE,EAAE,EAAE,EAAE,YAAY,EAAE,GAAG,EAAE,mBAAmB,EAAE,GAAG,EAAE,cAAc,EAAE,EAAE,EAAE,kBAAkB,EAAE,EAAE,EAAE,MAAM,EAAE;oBACvG,EAAE,OAAO,EAAE,CAAC,EAAE,WAAW,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,WAAW,EAAE,EAAE,EAAE,QAAQ,EAAE,GAAG,EAAwB;oBACpG,EAAE,OAAO,EAAE,CAAC,EAAE,WAAW,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,WAAW,EAAE,EAAE,EAAE,QAAQ,EAAE,GAAG,EAAwB;oBACpG,EAAE,OAAO,EAAE,CAAC,EAAE,WAAW,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,WAAW,EAAE,EAAE,EAAE,QAAQ,EAAE,GAAG,EAAwB;iBACrG,EAAE,sBAAsB,EAAE,CAAC,EAAE,2BAA2B,EAAE,CAAC,EAAE,oBAAoB,EAAE,CAAC,EAAE,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,QAAQ,EAAE;aACtF;SAClC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAEO,qBAAqB;QAC3B,IAAI,IAAI,GAAG;YACT,sBAAsB,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,gBAAgB,EAAE,CAAC,EAAE,kBAAkB,EAAE,CAAC,EAAE,kBAAkB,EAAE,CAAC,EAAE,WAAW,EAAE,CAAC,EAAqB;YACvI,iBAAiB,EAAE;gBACjB;oBACE,UAAU,EAAE,CAAC,EAAE,YAAY,EAAE,WAAW,EAAE,SAAS,EAAE,CAAC,EAAE,WAAW,EAAE,wBAAwB,EAAE,sBAAsB,EAAE;wBACrH,EAAE,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,QAAQ,EAAE,SAAS,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,QAAQ,EAAE,SAAS,EAAE;wBACjG,EAAE,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,QAAQ,EAAE,SAAS,EAAE;qBAAC,EAAE,IAAI,EAAE;wBACxD,EAAE,OAAO,EAAE,qDAAc,CAAC,UAAU,EAAE,EAAE,EAAE,CAAC,EAAE,QAAQ,EAAE,iBAAiB,EAAE,IAAI,EAAE,YAAY,EAAE;wBAC9F,EAAE,OAAO,EAAE,qDAAc,CAAC,OAAO,EAAE,EAAE,EAAE,CAAC,EAAE,QAAQ,EAAE,iBAAiB,EAAE,IAAI,EAAE,YAAY,EAAE;wBAC3F,EAAE,OAAO,EAAE,qDAAc,CAAC,SAAS,EAAE,EAAE,EAAE,CAAC,EAAE,QAAQ,EAAE,iBAAiB,EAAE,IAAI,EAAE,YAAY,EAAE;qBAAE;iBACrE;gBAGhC;oBACE,UAAU,EAAE,CAAC,EAAE,YAAY,EAAE,qBAAqB,EAAE,SAAS,EAAE,CAAC,EAAE,WAAW,EAAE,wBAAwB,EAAE,sBAAsB,EAAE;wBAC/H,EAAE,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,QAAQ,EAAE,SAAS,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,QAAQ,EAAE,SAAS,EAAE;wBACnG,EAAE,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,QAAQ,EAAE,SAAS,EAAE;qBAAC,EAAE,IAAI,EAAE;wBACvD,EAAE,OAAO,EAAE,qDAAc,CAAC,kBAAkB,EAAE,EAAE,EAAE,CAAC,EAAE,QAAQ,EAAE,iBAAiB,EAAE,IAAI,EAAE,YAAY,EAAE;wBACtG,EAAE,OAAO,EAAE,qDAAc,CAAC,gBAAgB,EAAE,EAAE,EAAE,CAAC,EAAE,QAAQ,EAAE,iBAAiB,EAAE,IAAI,EAAE,YAAY,EAAE;wBACpG,EAAE,OAAO,EAAE,qDAAc,CAAC,iBAAiB,EAAE,EAAE,EAAE,CAAC,EAAE,QAAQ,EAAE,iBAAiB,EAAE,IAAI,EAAE,YAAY,EAAE;qBAAE;iBAC7E;gBAEhC;oBACE,UAAU,EAAE,CAAC,EAAE,YAAY,EAAE,sBAAsB,EAAE,SAAS,EAAE,CAAC,EAAE,WAAW,EAAE,wBAAwB,EAAE,sBAAsB,EAAE;wBAChI,EAAE,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,QAAQ,EAAE,SAAS,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,QAAQ,EAAE,SAAS,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,QAAQ,EAAE,SAAS,EAAE;qBAAC,EAAE,IAAI,EAAE;wBAC5J,EAAE,OAAO,EAAE,qDAAc,CAAC,iBAAiB,EAAE,EAAE,EAAE,CAAC,EAAE,QAAQ,EAAE,UAAU,EAAE,IAAI,EAAE,aAAa,EAAE;wBAC/F,EAAE,OAAO,EAAE,qDAAc,CAAC,mBAAmB,EAAE,EAAE,EAAE,CAAC,EAAE,QAAQ,EAAE,SAAS,EAAE,IAAI,EAAE,gBAAgB,EAAE;wBACnG,EAAE,OAAO,EAAE,qDAAc,CAAC,UAAU,EAAE,EAAE,EAAE,CAAC,EAAE,QAAQ,EAAE,iBAAiB,EAAE,IAAI,EAAE,aAAa,EAAE;qBAAE;iBACtG;aAAC;YACJ,YAAY,EAAE,EAAE;YAChB,2BAA2B,EAAE,CAAC,EAAE,eAAe,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC,EAAqC,EAAE,EAAE,eAAe,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC,EAAqC;gBAC5K,EAAE,eAAe,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC,EAAqC,CAAC;SACxD;QACvB,OAAO,IAAI,CAAC;IACd,CAAC;IAEO,sBAAsB;QAC5B,IAAI,IAAI,GAAG;YACT;gBACE,SAAS,EAAE,CAAC,EAAE,WAAW,EAAE,cAAc,EAAE,UAAU,EAAE,CAAC,EAAE,YAAY,EAAE,gBAAgB,EAAE,OAAO,EAAE;oBACjG;wBACE,EAAE,EAAE,CAAC,EAAE,QAAQ,EAAE,iBAAiB,EAAE,IAAI,EAAE,YAAY,EAAE,OAAO,EAAE,qDAAc,CAAC,UAAU,EAAE,MAAM,EAAE;4BAClG,EAAE,EAAE,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,cAAc,EAAE,GAAG,EAAE,qBAAqB,EAAE,CAAC,EAAE,aAAa,EAAE,2DAAoB,CAAC,IAAI,EAAE;4BAC9G,EAAE,EAAE,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,cAAc,EAAE,GAAG,EAAE,qBAAqB,EAAE,EAAE,EAAE,aAAa,EAAE,2DAAoB,CAAC,MAAM,EAAE;4BACjH,EAAE,EAAE,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,cAAc,EAAE,GAAG,EAAE,qBAAqB,EAAE,EAAE,EAAE,aAAa,EAAE,2DAAoB,CAAC,IAAI,EAAE;yBAChH;qBACF;oBACD;wBACE,EAAE,EAAE,CAAC,EAAE,QAAQ,EAAE,iBAAiB,EAAE,IAAI,EAAE,YAAY,EAAE,OAAO,EAAE,qDAAc,CAAC,OAAO,EAAE,MAAM,EAAE;4BAC/F,EAAE,EAAE,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,cAAc,EAAE,GAAG,EAAE,qBAAqB,EAAE,CAAC,EAAE,aAAa,EAAE,2DAAoB,CAAC,IAAI,EAAE;4BAC9G,EAAE,EAAE,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,cAAc,EAAE,GAAG,EAAE,qBAAqB,EAAE,EAAE,EAAE,aAAa,EAAE,2DAAoB,CAAC,MAAM,EAAE;4BACjH,EAAE,EAAE,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,cAAc,EAAE,GAAG,EAAE,qBAAqB,EAAE,EAAE,EAAE,aAAa,EAAE,2DAAoB,CAAC,IAAI,EAAE;yBAChH;qBACF;iBACF;aACF;YACD;gBACE,SAAS,EAAE,CAAC,EAAE,WAAW,EAAE,cAAc,EAAE,UAAU,EAAE,CAAC,EAAE,YAAY,EAAE,gBAAgB,EAAE,OAAO,EAAE;oBACjG;wBACE,EAAE,EAAE,CAAC,EAAE,QAAQ,EAAE,iBAAiB,EAAE,IAAI,EAAE,YAAY,EAAE,OAAO,EAAE,qDAAc,CAAC,UAAU,EAAE,MAAM,EAAE;4BAClG,EAAE,EAAE,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,cAAc,EAAE,GAAG,EAAE,qBAAqB,EAAE,CAAC,EAAE,aAAa,EAAE,2DAAoB,CAAC,IAAI,EAAE;4BAC9G,EAAE,EAAE,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,cAAc,EAAE,GAAG,EAAE,qBAAqB,EAAE,EAAE,EAAE,aAAa,EAAE,2DAAoB,CAAC,MAAM,EAAE;4BACjH,EAAE,EAAE,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,cAAc,EAAE,GAAG,EAAE,qBAAqB,EAAE,EAAE,EAAE,aAAa,EAAE,2DAAoB,CAAC,IAAI,EAAE;yBAChH;qBACF;oBACD;wBACE,EAAE,EAAE,CAAC,EAAE,QAAQ,EAAE,iBAAiB,EAAE,IAAI,EAAE,YAAY,EAAE,OAAO,EAAE,qDAAc,CAAC,OAAO,EAAE,MAAM,EAAE;4BAC/F,EAAE,EAAE,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,cAAc,EAAE,GAAG,EAAE,qBAAqB,EAAE,CAAC,EAAE,aAAa,EAAE,2DAAoB,CAAC,IAAI,EAAE;4BAC9G,EAAE,EAAE,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,cAAc,EAAE,GAAG,EAAE,qBAAqB,EAAE,EAAE,EAAE,aAAa,EAAE,2DAAoB,CAAC,MAAM,EAAE;4BACjH,EAAE,EAAE,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,cAAc,EAAE,GAAG,EAAE,qBAAqB,EAAE,EAAE,EAAE,aAAa,EAAE,2DAAoB,CAAC,IAAI,EAAE;yBAChH;qBACF;iBACF;aACF;SAC2B,CAAC;QAE/B,OAAO,IAAI;IACb,CAAC;CACF;;YAjcyB,mDAAW;YAChB,sDAAM;;AAJd,gBAAgB;IAH5B,gEAAU,CAAC;QACV,UAAU,EAAE,MAAM;KACnB,CAAC;qCAIwB,mDAAW;QAChB,sDAAM;GAJd,gBAAgB,CAoc5B;AApc4B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACfc;AACF;AAEiB;AACd;AAgBtB;AACgD;AAGtE,IAAa,sBAAsB,GAAnC,MAAa,sBAAsB;IACjC,YACU,YAAyB,EACzB,OAAe;QADf,iBAAY,GAAZ,YAAY,CAAa;QACzB,YAAO,GAAP,OAAO,CAAQ;IACrB,CAAC;IAEQ,MAAM;;YACjB,IAAI;gBACF,IAAI,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,EAAE;oBAC/C,OAAO,IAAI,CAAC,WAAW,EAAE,CAAC;iBAC3B;gBAED,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,oDAAS,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;gBACzE,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;oBACzB,OAAO,2DAAmB,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;gBAC/C,CAAC,CAAC,CAAC;aACJ;YAAC,OAAO,KAAK,EAAE;gBACd,OAAO,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;aACjC;QACH,CAAC;KAAA;IAEY,gBAAgB,CAAC,SAAiB;;YAC7C,IAAI;gBACF,IAAI,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,EAAE;oBAC/C,OAAO,IAAI,CAAC,WAAW,EAAE,CAAC;iBAC3B;gBAED,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,oDAAS,CAAC,QAAQ,CAAC,gBAAgB,EAAE,EAAE,SAAS,EAAE,SAAS,EAAE,CAAC,CAAC;gBAC1G,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;oBACzB,OAAO,wDAAgB,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;gBAC5C,CAAC,CAAC,CAAC;aACJ;YAAC,OAAO,KAAK,EAAE;gBACd,OAAO,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;aACjC;QACH,CAAC;KAAA;IAEY,GAAG,CAAC,QAA8B;;YAC7C,IAAI;gBACF,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,oDAAS,CAAC,WAAW,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;gBAEjF,MAAM,iBAAiB,GAAG,2DAAmB,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;gBAClE,OAAO,iBAAiB,CAAC;aAC1B;YAAC,OAAO,KAAK,EAAE;gBACd,OAAO,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;aACjC;QACH,CAAC;KAAA;IAEY,IAAI,CAAC,QAA8B;;YAC9C,IAAI;gBACF,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,oDAAS,CAAC,WAAW,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;gBAEjF,MAAM,iBAAiB,GAAG,2DAAmB,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;gBAClE,OAAO,iBAAiB,CAAC;aAC1B;YAAC,OAAO,KAAK,EAAE;gBACd,OAAO,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;aACjC;QACH,CAAC;KAAA;IAEY,6BAA6B,CAAC,UAAkB;;YAC3D,IAAI;gBACF,IAAI,QAAQ,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,oDAAS,CAAC,WAAW,CAAC,6BAA6B,EAAE,UAAU,CAAC,CAAC;gBAE7G,OAAO,QAAQ,CAAC;aACjB;YAAC,OAAO,KAAK,EAAE;gBACd,OAAO,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;aACjC;QACH,CAAC;KAAA;IAEY,sBAAsB,CAAC,UAAkB;;YACpD,IAAI;gBACF,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,cAAc,CAAC,oDAAS,CAAC,WAAW,CAAC,sBAAsB,EAAE,EAAE,UAAU,EAAE,CAAC,CAAC;gBACpH,OAAO,MAAM,CAAC;aACf;YAAC,OAAO,KAAK,EAAE;gBACd,OAAO,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;aACjC;QACH,CAAC;KAAA;IAEY,MAAM,CAAC,UAAkB;;YACpC,IAAI;gBACF,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,oDAAS,CAAC,WAAW,CAAC,MAAM,EAAE,EAAE,UAAU,EAAC,CAAC,CAAC;gBAC3F,OAAO,MAAM,CAAC;aACf;YAAC,OAAO,KAAK,EAAE;gBACd,OAAO,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;aACjC;QACH,CAAC;KAAA;IAEO,YAAY,CAAC,KAAU;QAC7B,IAAI,KAAK,YAAY,kDAAU,EAAE;YAC/B,OAAO,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;SAC9B;QAED,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QACnB,OAAO,IAAI,CAAC;IACd,CAAC;IAEY,YAAY,CAAC,UAAkB;;YAC1C,IAAI;gBACF,IAAI,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,EAAE;oBAC/C,sCAAsC;iBACvC;gBAED,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,oDAAS,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,UAAU,EAAE,CAAC,CAAC;gBAEpF,OAAO,oEAA4B,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;aACzD;YAAC,OAAO,KAAK,EAAE;gBACd,OAAO,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;aACjC;QACH,CAAC;KAAA;IAEY,yBAAyB,CACpC,cAAuB;;YAEvB,IAAI;gBACF,IAAI,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,EAAE;oBAC/C,OAAO,IAAI,CAAC,6BAA6B,EAAE,CAAC;iBAC7C;gBAED,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,GAAG,CACxC,oDAAS,CAAC,WAAW,CAAC,yBAAyB,EAC/C,EAAE,cAAc,EAAE,CACnB,CAAC;gBAEF,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,uDAAe,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC;aAChE;YAAC,OAAO,KAAK,EAAE;gBACd,IAAI,KAAK,YAAY,kDAAU,EAAE;oBAC/B,OAAO,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;iBAC9B;gBAED,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;gBACnB,OAAO,IAAI,CAAC;aACb;QACH,CAAC;KAAA;IAEY,oBAAoB;;YAC/B,IAAI;gBACF,IAAI,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,EAAE;oBAC/C,OAAO,IAAI,CAAC,wBAAwB,EAAE,CAAC;iBACxC;gBAED,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,GAAG,CACxC,oDAAS,CAAC,WAAW,CAAC,oBAAoB,CAC3C,CAAC;gBAEF,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,mEAA2B,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC;aAC5E;YAAC,OAAO,KAAK,EAAE;gBACd,IAAI,KAAK,YAAY,kDAAU,EAAE;oBAC/B,OAAO,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;iBAC9B;gBAED,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;gBACnB,OAAO,IAAI,CAAC;aACb;QACH,CAAC;KAAA;IAEY,8BAA8B,CAAC,cAAwB;;YAClE,IAAI;gBACF,IAAI,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,EAAE;oBAC/C,OAAO,IAAI,CAAC,yCAAyC,EAAE,CAAC;iBACzD;gBAED,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,mBAAmB,CAAC,oDAAS,CAAC,WAAW,CAAC,0BAA0B,EAAE,cAAc,CAAC,CAAC;gBAC7H,OAAO,MAAM,CAAC;aACf;YAAC,OAAO,KAAK,EAAE;gBACd,OAAO,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;aACjC;QACH,CAAC;KAAA;IAEY,4CAA4C,CAAC,qBAA+C;;YACvG,IAAI;gBACF,IAAI,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,EAAE;oBAC/C,OAAO;iBACR;gBAED,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,oDAAS,CAAC,WAAW,CAAC,8BAA8B,EAAE,qBAAqB,CAAC,CAAC;gBACzH,IAAG,MAAM,EAAE;oBACT,OAAO,MAAM,CAAC;iBACf;gBACD,OAAO,IAAI,CAAC;aACb;YAAC,OAAO,KAAK,EAAE;gBACd,OAAO,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;aACjC;QACH,CAAC;KAAA;IAEM,WAAW;QAChB,MAAM,IAAI,GAAG;YACX,EAAE,EAAE,EAAE,CAAC,EAAE,KAAK,EAAE,aAAa,EAAE,OAAO,EAAE,IAAI,EAAE,YAAY,EAAE,eAAe,EAAE,WAAW,EAAE,UAAU,EAAE,eAAe,EAAE,GAAG,EAAE,aAAa,EAAE,IAAI,EAAE;YACjJ,EAAE,EAAE,EAAE,CAAC,EAAE,KAAK,EAAE,aAAa,EAAE,OAAO,EAAE,IAAI,EAAE,YAAY,EAAE,eAAe,EAAE,WAAW,EAAE,UAAU,EAAE,eAAe,EAAE,GAAG,EAAE,aAAa,EAAE,IAAI,EAAE;YACjJ,EAAE,EAAE,EAAE,CAAC,EAAE,KAAK,EAAE,aAAa,EAAE,OAAO,EAAE,IAAI,EAAE,YAAY,EAAE,eAAe,EAAE,WAAW,EAAE,UAAU,EAAE,eAAe,EAAE,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE;SACxH,CAAC;QAC3B,OAAO,IAAI,CAAC;IACd,CAAC;IAEO,6BAA6B;QACnC,MAAM,IAAI,GAAG;YACX;gBACE,EAAE,EAAE,CAAC;gBACL,IAAI,EAAE,UAAU;gBAChB,SAAS,EAAE,CAAC,EAAE,IAAI,EAAE,YAAY,EAAC,UAAU,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,IAAI,EAAC,KAAK,EAAC,EAAC,EAAC,EAAE,EAAC,CAAC,EAAC,IAAI,EAAC,MAAM,EAAC,EAAC,EAAC,EAAE,EAAC,CAAC,EAAC,IAAI,EAAC,MAAM,EAAC,CAAC,EAAE,CAAC;aACzG;YACD;gBACE,EAAE,EAAE,CAAC;gBACL,IAAI,EAAE,UAAU;gBAChB,SAAS,EAAE,CAAC,EAAE,IAAI,EAAE,YAAY,EAAC,UAAU,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,IAAI,EAAC,KAAK,EAAC,EAAC,EAAC,EAAE,EAAC,CAAC,EAAC,IAAI,EAAC,MAAM,EAAC,EAAC,EAAC,EAAE,EAAC,CAAC,EAAC,IAAI,EAAC,MAAM,EAAC,CAAC,EAAE;oBACvG,EAAE,IAAI,EAAE,YAAY,EAAE,UAAU,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,IAAI,EAAC,MAAM,EAAC,EAAC,EAAC,EAAE,EAAC,CAAC,EAAC,IAAI,EAAC,MAAM,EAAC,EAAC,EAAC,EAAE,EAAC,CAAC,EAAC,IAAI,EAAC,MAAM,EAAC,CAAC,EAAG,CAAC;aAChG;YACD;gBACE,EAAE,EAAE,CAAC;gBACL,IAAI,EAAE,UAAU;gBAChB,SAAS,EAAE;oBACT,EAAE,IAAI,EAAE,YAAY,EAAE;oBACtB,EAAE,IAAI,EAAE,YAAY,EAAE;oBACtB,EAAE,IAAI,EAAE,YAAY,EAAE;iBACvB;aACF;YACD;gBACE,EAAE,EAAE,CAAC;gBACL,IAAI,EAAE,UAAU;gBAChB,SAAS,EAAE;oBACT,EAAE,IAAI,EAAE,YAAY,EAAE;oBACtB,EAAE,IAAI,EAAE,YAAY,EAAE;oBACtB,EAAE,IAAI,EAAE,YAAY,EAAE;iBACvB;aACF;YACD,EAAE,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,SAAS,EAAE,CAAC,EAAE,IAAI,EAAE,aAAa,EAAE,CAAC,EAAE;SAC5C,CAAC;QAExB,OAAO,IAAI,CAAC;IACd,CAAC;IAEO,wBAAwB;QAC9B,MAAM,mBAAmB,GAAG;YAC1B;gBACE,EAAE,EAAE,CAAC;gBACL,IAAI,EAAE,wDAAiB,CAAC,IAAI;gBAC5B,OAAO,EAAE,2DAAoB,CAAC,KAAK;gBACnC,IAAI,EAAE,mBAAmB;gBACzB,MAAM,EAAE,CAAC;gBACT,QAAQ,EAAE,CAAC;aACZ;YACD;gBACE,EAAE,EAAE,CAAC;gBACL,IAAI,EAAE,wDAAiB,CAAC,IAAI;gBAC5B,OAAO,EAAE,2DAAoB,CAAC,MAAM;gBACpC,IAAI,EAAE,oBAAoB;gBAC1B,MAAM,EAAE,CAAC;gBACT,QAAQ,EAAE,CAAC;aACZ;YACD;gBACE,EAAE,EAAE,CAAC;gBACL,IAAI,EAAE,wDAAiB,CAAC,IAAI;gBAC5B,OAAO,EAAE,2DAAoB,CAAC,KAAK;gBACnC,IAAI,EAAE,mBAAmB;gBACzB,MAAM,EAAE,CAAC;gBACT,QAAQ,EAAE,CAAC;aACZ;YACD,SAAS;YACT;gBACE,EAAE,EAAE,CAAC;gBACL,IAAI,EAAE,wDAAiB,CAAC,GAAG;gBAC3B,OAAO,EAAE,2DAAoB,CAAC,eAAe;gBAC7C,IAAI,EAAE,qCAAqC;gBAC3C,MAAM,EAAE,CAAC;gBACT,QAAQ,EAAE,CAAC;aACZ;YACD;gBACE,EAAE,EAAE,CAAC;gBACL,IAAI,EAAE,wDAAiB,CAAC,GAAG;gBAC3B,OAAO,EAAE,2DAAoB,CAAC,kBAAkB;gBAChD,IAAI,EAAE,wCAAwC;gBAC9C,MAAM,EAAE,CAAC;gBACT,QAAQ,EAAE,CAAC;aACZ;YACD,cAAc;YACd;gBACE,EAAE,EAAE,CAAC;gBACL,IAAI,EAAE,wDAAiB,CAAC,QAAQ;gBAChC,OAAO,EAAE,2DAAoB,CAAC,IAAI;gBAClC,IAAI,EAAE,6BAA6B;gBACnC,MAAM,EAAE,CAAC;gBACT,QAAQ,EAAE,CAAC;aACZ;YACD;gBACE,EAAE,EAAE,CAAC;gBACL,IAAI,EAAE,wDAAiB,CAAC,QAAQ;gBAChC,OAAO,EAAE,2DAAoB,CAAC,IAAI;gBAClC,IAAI,EAAE,6BAA6B;gBACnC,MAAM,EAAE,CAAC;gBACT,QAAQ,EAAE,CAAC;aACZ;YACD;gBACE,EAAE,EAAE,CAAC;gBACL,IAAI,EAAE,wDAAiB,CAAC,QAAQ;gBAChC,OAAO,EAAE,2DAAoB,CAAC,KAAK;gBACnC,IAAI,EAAE,uBAAuB;gBAC7B,MAAM,EAAE,CAAC;gBACT,QAAQ,EAAE,CAAC;aACZ;YACD;gBACE,EAAE,EAAE,CAAC;gBACL,IAAI,EAAE,wDAAiB,CAAC,GAAG;gBAC3B,OAAO,EAAE,2DAAoB,CAAC,eAAe;gBAC7C,IAAI,EAAE,mCAAmC;gBACzC,MAAM,EAAE,CAAC;gBACT,QAAQ,EAAE,CAAC;aACZ;YACD;gBACE,EAAE,EAAE,EAAE;gBACN,IAAI,EAAE,wDAAiB,CAAC,GAAG;gBAC3B,OAAO,EAAE,2DAAoB,CAAC,kBAAkB;gBAChD,IAAI,EAAE,sCAAsC;gBAC5C,MAAM,EAAE,CAAC;gBACT,QAAQ,EAAE,CAAC;aACZ;YACD,cAAc;YACd;gBACE,EAAE,EAAE,EAAE;gBACN,IAAI,EAAE,wDAAiB,CAAC,QAAQ;gBAChC,OAAO,EAAE,2DAAoB,CAAC,IAAI;gBAClC,IAAI,EAAE,2BAA2B;gBACjC,MAAM,EAAE,CAAC;gBACT,QAAQ,EAAE,CAAC;aACZ;YACD;gBACE,EAAE,EAAE,EAAE;gBACN,IAAI,EAAE,wDAAiB,CAAC,QAAQ;gBAChC,OAAO,EAAE,2DAAoB,CAAC,IAAI;gBAClC,IAAI,EAAE,2BAA2B;gBACjC,MAAM,EAAE,CAAC;gBACT,QAAQ,EAAE,CAAC;aACZ;YACD;gBACE,EAAE,EAAE,EAAE;gBACN,IAAI,EAAE,wDAAiB,CAAC,QAAQ;gBAChC,OAAO,EAAE,2DAAoB,CAAC,KAAK;gBACnC,IAAI,EAAE,uBAAuB;gBAC7B,MAAM,EAAE,CAAC;gBACT,QAAQ,EAAE,CAAC;aACZ;YACD;gBACE,EAAE,EAAE,EAAE;gBACN,IAAI,EAAE,wDAAiB,CAAC,QAAQ;gBAChC,OAAO,EAAE,2DAAoB,CAAC,WAAW;gBACzC,IAAI,EAAE,mCAAmC;gBACzC,MAAM,EAAE,CAAC;gBACT,QAAQ,EAAE,CAAC;aACZ;YACD;gBACE,EAAE,EAAE,EAAE;gBACN,IAAI,EAAE,wDAAiB,CAAC,QAAQ;gBAChC,OAAO,EAAE,2DAAoB,CAAC,WAAW;gBACzC,IAAI,EAAE,qCAAqC;gBAC3C,MAAM,EAAE,CAAC;gBACT,QAAQ,EAAE,CAAC;aACZ;YACD;gBACE,EAAE,EAAE,EAAE;gBACN,IAAI,EAAE,wDAAiB,CAAC,OAAO;gBAC/B,OAAO,EAAE,2DAAoB,CAAC,IAAI;gBAClC,IAAI,EAAE,uBAAuB;gBAC7B,MAAM,EAAE,CAAC;gBACT,QAAQ,EAAE,CAAC;aACZ;YACD;gBACE,EAAE,EAAE,EAAE;gBACN,IAAI,EAAE,wDAAiB,CAAC,OAAO;gBAC/B,OAAO,EAAE,2DAAoB,CAAC,IAAI;gBAClC,IAAI,EAAE,qBAAqB;gBAC3B,MAAM,EAAE,CAAC;gBACT,QAAQ,EAAE,CAAC;aACZ;YACD,KAAK;YACL;gBACE,EAAE,EAAE,EAAE;gBACN,IAAI,EAAE,wDAAiB,CAAC,GAAG;gBAC3B,OAAO,EAAE,2DAAoB,CAAC,WAAW;gBACzC,IAAI,EAAE,yBAAyB;gBAC/B,MAAM,EAAE,CAAC;gBACT,QAAQ,EAAE,CAAC;aACZ;YACD;gBACE,EAAE,EAAE,EAAE;gBACN,IAAI,EAAE,wDAAiB,CAAC,GAAG;gBAC3B,OAAO,EAAE,2DAAoB,CAAC,SAAS;gBACvC,IAAI,EAAE,uBAAuB;gBAC7B,MAAM,EAAE,CAAC;gBACT,QAAQ,EAAE,CAAC;aACZ;SACgC,CAAC;QAGpC,MAAM,mBAAmB,GAAG,mBAAmB,CAAC,GAAG,CACjD,oEAA4B,CAAC,WAAW,CACzC,CAAC;QAEF,MAAM,WAAW,GAAG,mBAAmB,CAAC,MAAM,GAAG,CAAC,CAAC;QAEnD,MAAM,WAAW,GAAG,mBAAmB,CAAC,KAAK,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC;QAC9D,MAAM,WAAW,GAAG,mBAAmB,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,GAAG,WAAW,CAAC,CAAC;QAC5E,MAAM,WAAW,GAAG,mBAAmB,CAAC,KAAK,CAC3C,CAAC,GAAG,WAAW,EACf,CAAC,GAAG,WAAW,CAChB,CAAC;QACF,MAAM,WAAW,GAAG,mBAAmB,CAAC,KAAK,CAAC,CAAC,GAAG,WAAW,CAAC,CAAC;QAE/D,MAAM,SAAS,GAAmC;YAChD,EAAE,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,UAAU,EAAE,WAAW,EAAE;YACrD,EAAE,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,UAAU,EAAE,WAAW,EAAE;YACrD,EAAE,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,UAAU,EAAE,WAAW,EAAE;YACrD,EAAE,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,UAAU,EAAE,WAAW,EAAE;SACtD,CAAC;QAEF,OAAO,SAAS,CAAC;IACnB,CAAC;IAEM,yCAAyC;QAC9C,MAAM,OAAO,GAAG;YACd,KAAK,EAAE,CAAC;YACR,IAAI,EAAE,CAAC;YACP,QAAQ,EAAE,CAAC;YACX,IAAI,EAAE,CAAC;YACP,aAAa,EAAE,KAAK;YACpB,cAAc,EAAE,GAAG;YACnB,iBAAiB,EAAE,CAAC;YACpB,YAAY,EAAE,EAAE;YAChB,eAAe,EAAE,CAAC;YAClB,0BAA0B,EAAE,EAAE;YAC9B,6BAA6B,EAAE,CAAC;YAChC,wBAAwB,EAAE,EAAE;YAC5B,2BAA2B,EAAE,EAAE;SACE,CAAC;QAEpC,MAAM,OAAO,GAAG;YACd,KAAK,EAAE,CAAC;YACR,IAAI,EAAE,CAAC;YACP,QAAQ,EAAE,CAAC;YACX,IAAI,EAAE,CAAC;YACP,aAAa,EAAE,KAAK;YACpB,cAAc,EAAE,GAAG;YACnB,iBAAiB,EAAE,CAAC;YACpB,YAAY,EAAE,EAAE;YAChB,eAAe,EAAE,CAAC;YAClB,0BAA0B,EAAE,EAAE;YAC9B,6BAA6B,EAAE,CAAC;YAChC,wBAAwB,EAAE,EAAE;YAC5B,2BAA2B,EAAE,EAAE;SACE,CAAC;QAEpC,MAAM,OAAO,GAAG;YACd,KAAK,EAAE,CAAC;YACR,IAAI,EAAE,CAAC;YACP,QAAQ,EAAE,CAAC;YACX,IAAI,EAAE,CAAC;YACP,aAAa,EAAE,KAAK;YACpB,cAAc,EAAE,GAAG;YACnB,iBAAiB,EAAE,CAAC;YACpB,YAAY,EAAE,EAAE;YAChB,eAAe,EAAE,CAAC;YAClB,0BAA0B,EAAE,EAAE;YAC9B,6BAA6B,EAAE,CAAC;YAChC,wBAAwB,EAAE,EAAE;YAC5B,2BAA2B,EAAE,EAAE;SACE,CAAC;QAEpC,MAAM,UAAU,GAAG;YACjB,KAAK,EAAE,CAAC;YACR,IAAI,EAAE,CAAC;YACP,OAAO,EAAE,CAAC;YACV,IAAI,EAAE,qCAAqC;YAC3C,iCAAiC,EAAE,CAAC;YACpC,kCAAkC,EAAE,KAAK;YACzC,0BAA0B,EAAE,CAAC;YAC7B,oBAAoB,EAAE,CAAC;YACvB,uBAAuB,EAAE,CAAC;YAC1B,iCAAiC,EAAE,CAAC;YACpC,oCAAoC,EAAE,CAAC;YACvC,oBAAoB,EAAE,EAAE;YACxB,aAAa,EAAE,IAAI;YACnB,OAAO,EAAE,CAAC,OAAO,EAAE,OAAO,CAAC;SACgB,CAAC;QAE9C,MAAM,UAAU,GAAG;YACjB,KAAK,EAAE,CAAC;YACR,IAAI,EAAE,CAAC;YACP,OAAO,EAAE,CAAC;YACV,IAAI,EAAE,sCAAsC;YAC5C,iCAAiC,EAAE,CAAC;YACpC,kCAAkC,EAAE,KAAK;YACzC,0BAA0B,EAAE,CAAC;YAC7B,oBAAoB,EAAE,CAAC;YACvB,uBAAuB,EAAE,CAAC;YAC1B,iCAAiC,EAAE,CAAC;YACpC,oCAAoC,EAAE,CAAC;YACvC,oBAAoB,EAAE,EAAE;YACxB,aAAa,EAAE,IAAI;YACnB,OAAO,EAAE,CAAC,OAAO,CAAC;SACyB,CAAC;QAE9C,MAAM,IAAI,GAAG;YACX,UAAU,EAAE,CAAC;YACb,QAAQ,EAAE,QAAQ;YAClB,UAAU,EAAE,CAAC,UAAU,EAAE,UAAU,CAAC;SACT,CAAC;QAE9B,OAAO,IAAI,CAAC;IACd,CAAC;CACF;;YAvfyB,mDAAW;YAChB,sDAAM;;AAHd,sBAAsB;IADlC,gEAAU,EAAE;qCAGa,mDAAW;QAChB,sDAAM;GAHd,sBAAsB,CAyflC;AAzfkC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACxBQ;AACF;AAEgB;AACb;AAOf;AAK7B,IAAa,sBAAsB,GAAnC,MAAa,sBAAsB;IAEjC,YACU,YAAyB,EACzB,OAAe;QADf,iBAAY,GAAZ,YAAY,CAAa;QACzB,YAAO,GAAP,OAAO,CAAQ;IAAI,CAAC;IAEf,MAAM;;YACjB,IAAI;gBACF,IAAI,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,EAAE;oBAC/C,OAAO,IAAI,CAAC,WAAW,EAAE,CAAC;iBAC3B;gBAED,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,oDAAS,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;gBACzE,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;oBACzB,OAAO,2DAAmB,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;gBAC/C,CAAC,CAAC,CAAC;aACJ;YAAC,OAAO,KAAK,EAAE;gBACd,OAAO,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;aACjC;QACH,CAAC;KAAA;IACU,wBAAwB,CAAC,SAAiB;;YACrD,IAAI;gBACF,IAAI,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,EAAE;oBAC/C,OAAO,IAAI,CAAC,WAAW,EAAE,CAAC;iBAC3B;gBACD,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,oDAAS,CAAC,WAAW,CAAC,8BAA8B,EAAE,EAAE,SAAS,EAAE,SAAS,EAAE,CAAC,CAAC;gBAC3H,OAAO,MAAM,CAAC;aACf;YAAC,OAAO,KAAK,EAAE;gBACd,OAAO,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;aACjC;QACH,CAAC;KAAA;IACO,YAAY,CAAC,KAAU;QAC7B,IAAI,KAAK,YAAY,yDAAU,EAAE;YAC/B,OAAO,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;SAC9B;IACH,CAAC;IAEY,IAAI,CAAC,QAA8B;;YAC9C,IAAI;gBACF,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,oDAAS,CAAC,WAAW,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;gBAElF,MAAM,iBAAiB,GAAG,2DAAmB,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;gBAClE,OAAO,iBAAiB,CAAC;aAC1B;YAAC,OAAO,KAAK,EAAE;gBACd,OAAO,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;aACjC;QACH,CAAC;KAAA;IAEY,GAAG,CAAC,QAA8B;;YAC7C,IAAI;gBACF,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,oDAAS,CAAC,WAAW,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;gBAEjF,MAAM,iBAAiB,GAAG,2DAAmB,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;gBAClE,OAAO,iBAAiB,CAAC;aAC1B;YAAC,OAAO,KAAK,EAAE;gBACd,OAAO,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;aACjC;QACH,CAAC;KAAA;IAEY,MAAM,CAAC,UAAkB;;YACpC,IAAI;gBACF,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,oDAAS,CAAC,WAAW,CAAC,MAAM,EAAE,EAAE,UAAU,EAAC,CAAC,CAAC;gBAC3F,OAAO,MAAM,CAAC;aACf;YAAC,OAAO,KAAK,EAAE;gBACd,OAAO,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;aACjC;QACH,CAAC;KAAA;IAEY,iBAAiB,CAAC,UAAkB;;YAC/C,IAAI;gBACF,IAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,EAAE;oBAC9C,OAAO,IAAI,CAAC,yBAAyB,CAAC,UAAU,CAAC,CAAC;iBACnD;gBACD,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,oDAAS,CAAC,WAAW,CAAC,iBAAiB,EAAE,EAAE,UAAU,EAAE,CAA2B,CAAC;gBAC9H,OAAO,MAAM,CAAC;aACf;YAAC,OAAM,KAAK,EAAE;gBACb,OAAO,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;aACjC;QACH,CAAC;KAAA;IAEY,6BAA6B,CAAC,UAAkB;;YAC3D,IAAI;gBACF,IAAI,QAAQ,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,oDAAS,CAAC,WAAW,CAAC,6BAA6B,EAAE,UAAU,CAAC,CAAC;gBAE7G,OAAO,QAAQ,CAAC;aACjB;YAAC,OAAO,KAAK,EAAE;gBACd,OAAO,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;aACjC;QACH,CAAC;KAAA;IAEY,sBAAsB,CAAC,UAAkB;;YACpD,IAAI;gBACF,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,cAAc,CAAC,oDAAS,CAAC,WAAW,CAAC,sBAAsB,EAAE,EAAE,UAAU,EAAE,CAAC,CAAC;gBACpH,OAAO,MAAM,CAAC;aACf;YAAC,OAAO,KAAK,EAAE;gBACd,OAAO,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;aACjC;QACH,CAAC;KAAA;IAED,yBAAyB,CAAC,UAAkB;QAC1C,MAAM,sBAAsB,GAAG,IAAI,8DAAsB,EAAE,CAAC;QAC5D,sBAAsB,CAAC,UAAU,GAAG,UAAU,CAAC;QAC/C,sBAAsB,CAAC,aAAa,GAAG,IAAI,CAAC;QAC5C,sBAAsB,CAAC,sBAAsB,GAAG,KAAK,CAAC;QACtD,sBAAsB,CAAC,cAAc,GAAG;YACtC,EAAE,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,QAAQ,EAAE,SAAS,EAAE;YAC/C,EAAE,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,QAAQ,EAAE,SAAS,EAAE;YAChD,EAAE,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,QAAQ,EAAE,SAAS,EAAE;YAChD,EAAE,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,QAAQ,EAAE,SAAS,EAAE;YAChD,EAAE,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAC,QAAQ,EAAE,SAAS,EAAE;SACjD;QACD,OAAO,sBAAsB,CAAC;IAChC,CAAC;IACM,WAAW;QAChB,IAAI,IAAI,GAAC;YACP;gBACE,eAAe,EAAE,CAAC,EAAE,WAAW,EAAE,UAAU,EAAE,WAAW,EAAE,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,YAAY,EAAE,WAAW,EAAE,EAAE,EAAE,CAAC,EAAG,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC;gBAC9J,SAAS,EAAE,KAAK,EAAE,OAAO,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,IAAI,EAAC,OAAO,EAAC,EAAC,EAAC,EAAE,EAAC,CAAC,EAAC,IAAI,EAAC,OAAO,EAAC,EAAC,EAAC,EAAE,EAAC,CAAC,EAAC,IAAI,EAAC,OAAO,EAAC,EAAC,EAAC,EAAE,EAAC,CAAC,EAAC,IAAI,EAAC,OAAO,EAAC,CAAC,EAAC,cAAc,EAAC,EAAE,EAAE,uBAAuB,EAAC,KAAK;aAC7J;YACD;gBACE,eAAe,EAAE,CAAC,EAAE,WAAW,EAAE,UAAU,EAAE,WAAW,EAAE,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,YAAY,EAAE,WAAW,EAAE,EAAE,EAAE,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC;gBAC7J,SAAS,EAAE,KAAK,EAAE,OAAO,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,IAAI,EAAC,OAAO,EAAC,EAAC,EAAC,EAAE,EAAC,CAAC,EAAC,IAAI,EAAC,OAAO,EAAC,EAAC,EAAC,EAAE,EAAC,CAAC,EAAC,IAAI,EAAC,OAAO,EAAC,EAAC,EAAC,EAAE,EAAC,CAAC,EAAC,IAAI,EAAC,OAAO,EAAC,CAAC,EAAC,cAAc,EAAC,EAAE,EAAE,uBAAuB,EAAC,KAAK;aAC7J;YACD;gBACE,eAAe,EAAE,EAAE,EAAE,WAAW,EAAE,UAAU,EAAE,WAAW,EAAE,CAAC,EAAE,aAAa,EAAE,IAAI,EAAE,YAAY,EAAE,WAAW,EAAE,EAAE,EAAE,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC;gBAC7J,SAAS,EAAE,KAAK,EAAE,OAAO,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,IAAI,EAAC,OAAO,EAAC,EAAC,EAAC,EAAE,EAAC,CAAC,EAAC,IAAI,EAAC,OAAO,EAAC,EAAC,EAAC,EAAE,EAAC,CAAC,EAAC,IAAI,EAAC,OAAO,EAAC,EAAC,EAAC,EAAE,EAAC,CAAC,EAAC,IAAI,EAAC,OAAO,EAAC,CAAC,EAAC,cAAc,EAAC,EAAE,EAAE,uBAAuB,EAAC,KAAK;aAC7J;YACD;gBACE,eAAe,EAAE,CAAC,EAAE,WAAW,EAAE,UAAU,EAAE,WAAW,EAAE,CAAC,EAAE,aAAa,EAAE,IAAI,EAAE,YAAY,EAAE,WAAW,EAAE,EAAE,EAAE,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC;gBAC5J,SAAS,EAAE,KAAK,EAAE,OAAO,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,IAAI,EAAC,OAAO,EAAC,EAAC,EAAC,EAAE,EAAC,CAAC,EAAC,IAAI,EAAC,OAAO,EAAC,EAAC,EAAC,EAAE,EAAC,CAAC,EAAC,IAAI,EAAC,OAAO,EAAC,EAAC,EAAC,EAAE,EAAC,CAAC,EAAC,IAAI,EAAC,OAAO,EAAC,CAAC,EAAC,cAAc,EAAC,EAAE,EAAE,uBAAuB,EAAC,KAAK;aAC7J;SACwB,CAAC;QAC5B,OAAO,IAAI,CAAC;IACd,CAAC;IAEY,iBAAiB,CAAC,iBAAyC;;YACtE,IAAI;gBACF,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,oDAAS,CAAC,WAAW,CAAC,iBAAiB,EAAE,iBAAiB,CAAC,CAAC;gBACxG,OAAO,MAAM,CAAC;aACf;YAAC,OAAO,KAAK,EAAE;gBACd,OAAO,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;aACjC;QACH,CAAC;KAAA;IAEY,wCAAwC;;YACnD,IAAI;gBACF,IAAI,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,EAAE;oBAC/C,OAAO,IAAI,CAAC,sBAAsB,EAAE,CAAC;iBACtC;gBACD,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,oDAAS,CAAC,WAAW,CAAC,wCAAwC,CAA2B,CAAC;gBACrI,OAAO,MAAM,CAAC;aACf;YAAC,OAAO,KAAK,EAAE;gBACd,OAAO,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;aACjC;QACH,CAAC;KAAA;IAEO,sBAAsB;QAC5B,IAAI,IAAI,GAAC;YACP;gBACE,IAAI,EAAE,WAAW,EAAE,EAAE,EAAE,CAAC,EAAE,IAAI,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,IAAI,EAAC,OAAO,EAAC,EAAC,EAAC,EAAE,EAAC,CAAC,EAAC,IAAI,EAAC,OAAO,EAAC,EAAC,EAAC,EAAE,EAAC,CAAC,EAAC,IAAI,EAAC,OAAO,EAAC,EAAC,EAAC,EAAE,EAAC,CAAC,EAAC,IAAI,EAAC,OAAO,EAAC,CAAC;aACjH;YACD;gBACE,IAAI,EAAE,WAAW,EAAE,EAAE,EAAE,CAAC,EAAE,IAAI,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,IAAI,EAAC,OAAO,EAAC,EAAC,EAAC,EAAE,EAAC,CAAC,EAAC,IAAI,EAAC,OAAO,EAAC,EAAC,EAAC,EAAE,EAAC,CAAC,EAAC,IAAI,EAAC,OAAO,EAAC,EAAC,EAAC,EAAE,EAAC,CAAC,EAAC,IAAI,EAAC,OAAO,EAAC,CAAC;aACjH;YACD;gBACE,IAAI,EAAE,WAAW,EAAE,EAAE,EAAE,CAAC,EAAE,IAAI,EAAC,EAAE;aAClC;YACD;gBACE,IAAI,EAAE,WAAW,EAAE,EAAE,EAAE,CAAC,EAAE,IAAI,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,IAAI,EAAC,OAAO,EAAC,EAAC,EAAC,EAAE,EAAC,EAAE,EAAC,IAAI,EAAC,OAAO,EAAC,EAAC,EAAC,EAAE,EAAC,EAAE,EAAC,IAAI,EAAC,OAAO,EAAC,EAAC,EAAC,EAAE,EAAC,EAAE,EAAC,IAAI,EAAC,OAAO,EAAC,CAAC;aACpH;SACwB,CAAC;QAC5B,OAAO,IAAI,CAAC;IACd,CAAC;CACF;;YA1KyB,0DAAW;YAChB,sDAAM;;AAJd,sBAAsB;IAHlC,gEAAU,CAAC;QACV,UAAU,EAAE,MAAM;KACnB,CAAC;qCAIwB,0DAAW;QAChB,sDAAM;GAJd,sBAAsB,CA6KlC;AA7KkC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AChBQ;AACF;AAEiB;AACD;AAMpC;AA8BC;AAGtB,IAAa,sBAAsB,GAAnC,MAAa,sBAAsB;IACjC,YAAoB,YAAyB,EAAU,OAAe;QAAlD,iBAAY,GAAZ,YAAY,CAAa;QAAU,YAAO,GAAP,OAAO,CAAQ;QAwWtE,eAAU,GAAG,EAAE,CAAC;QAChB,0BAAqB,GAAG,EAAE,CAAC;QAwYnB,iBAAY,GAClB,u9NAAu9N;YACv9N,w9NAAw9N;YACx9N,i+NAAi+N;YACj+N,8+NAA8+N;YAC9+N,o/NAAo/N;YACp/N,+7JAA+7J,CAAC;IAvvBx3J,CAAC;IAE9D,MAAM;;YACjB,IAAI;gBACF,IAAI,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,EAAE;oBAC/C,OAAO,IAAI,CAAC,WAAW,EAAE,CAAC;iBAC3B;gBAED,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,oDAAS,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;gBACzE,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;oBACzB,OAAO,2DAAmB,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;gBAC/C,CAAC,CAAC,CAAC;aACJ;YAAC,OAAO,KAAK,EAAE;gBACd,OAAO,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;aACjC;QACH,CAAC;KAAA;IAEY,SAAS,CACpB,UAAkB,EAAE,iBAA0B,KAAK;;YAEnD,IAAI;gBACF,IAAI,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,EAAE;oBAC/C,OAAO,IAAI,CAAC,qBAAqB,CAAC,UAAU,CAAC,CAAC;iBAC/C;gBACD,MAAM,MAAM,GAAG,CAAC,MAAM,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,oDAAS,CAAC,GAAG,CAAC,SAAS,EAAE;oBACnE,UAAU,EAAE,cAAc;iBAC3B,CAAC,CAA8B,CAAC;gBACjC,OAAO,iEAAyB,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;aACtD;YAAC,OAAO,KAAK,EAAE;gBACd,OAAO,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;aACjC;QACH,CAAC;KAAA;IAEY,gBAAgB,CAAC,QAAiC;;YAC7D,IAAI;gBACF,IAAI,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,EAAE;oBAC/C,OAAO,IAAI,CAAC,oBAAoB,CAAC,QAAQ,CAAC,CAAC;iBAC5C;gBACD,MAAM,MAAM,GAAG,CAAC,MAAM,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,oDAAS,CAAC,GAAG,CAAC,uBAAuB,EAAE,QAAQ,CAAC,CAAiC,CAAC;gBAC/H,OAAO,MAAM,CAAC;aACf;YACD,OAAO,KAAK,EAAE;gBACZ,OAAO,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;aACjC;QACH,CAAC;KAAA;IAGY,YAAY,CACvB,KAAa,EACb,SAAmB;;YAEnB,IAAI;gBACF,IAAI,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,EAAE;oBAC/C,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAC3C,kDAAW,CAAC,WAAW,EAAE,KAAK,EAAE,SAAS,CAAC,CAAC;oBAC7C,OAAO,SAAS,CAAC;iBAClB;gBAED,MAAM,IAAI,GAAG;oBACX,KAAK,EAAE,KAAK;oBACZ,cAAc,EAAE,SAAS;iBAC1B,CAAC;gBAEF,MAAM,MAAM,GAAG,CAAC,MAAM,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,oDAAS,CAAC,GAAG,CAAC,mBAAmB,EAAE,IAAI,CAAC,CAA+B,CAAC;gBACrH,OAAO,MAAM,CAAC;aACf;YAAC,OAAO,KAAK,EAAE;gBACd,OAAO,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;aACjC;QACH,CAAC;KAAA;IAEY,qCAAqC,CAAC,MAAgB,EAAE,aAAqB,EAAE,WAAmB;;YAC7G,IAAI;gBACF,IAAI,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,EAAE;oBAC/C,OAAO,IAAI,CAAC,oCAAoC,CAAC,MAAM,EAAE,aAAa,EAAE,WAAW,CAA4B,CAAC;iBACjH;gBACD,MAAM,IAAI,GAAG;oBACX,MAAM,EAAE,MAAM;oBACd,aAAa,EAAE,aAAa;oBAC5B,WAAW,EAAE,WAAW;iBACzB,CAAC;gBAEF,MAAM,MAAM,GAAG,CAAC,MAAM,IAAI,CAAC,YAAY,CAAC,IAAI,CAC1C,oDAAS,CAAC,iBAAiB,CAAC,qCAAqC,EACjE,IAAI,CACL,CAA4B,CAAC;gBAC9B,OAAO,MAAM,CAAC;aACf;YAAC,OAAO,KAAK,EAAE;gBACd,OAAO,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;aACjC;QACH,CAAC;KAAA;IAEY,YAAY,CAAC,UAAkB,EAAE,KAAa;;YACzD,IAAI;gBACF,IAAI,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,EAAE;oBAC/C,OAAO,IAAI,CAAC,gBAAgB,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC;iBACjD;gBAED,MAAM,MAAM,GAAG,CAAC,MAAM,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,oDAAS,CAAC,GAAG,CAAC,YAAY,EAAE,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC,CAAsB,CAAC;gBACrH,OAAO,yDAAiB,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;aAC7C;YAAC,OAAO,KAAK,EAAE;gBACd,OAAO,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;aACjC;QACH,CAAC;KAAA;IAEY,oBAAoB,CAC/B,UAAkB;;YAElB,IAAI;gBACF,IAAI,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,EAAE;oBAC/C,OAAO,IAAI,CAAC,6BAA6B,CAAC,UAAU,CAAC,CAAC;iBACvD;gBACD,MAAM,MAAM,GAAG,CAAC,MAAM,IAAI,CAAC,YAAY,CAAC,GAAG,CACzC,oDAAS,CAAC,WAAW,CAAC,oBAAoB,EAC1C,EAAE,UAAU,EAAE,CACf,CAA6B,CAAC;gBAC/B,OAAO,gEAAwB,CAAC,gCAAgC,CAAC,MAAM,CAAC,CAAC;aAC1E;YAAC,OAAO,KAAK,EAAE;gBACd,OAAO,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;aACjC;QACH,CAAC;KAAA;IAEY,YAAY,CACvB,KAAa,EACb,OAAoB;;YAEpB,IAAI;gBACF,IAAI,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,EAAE;oBAC/C,MAAM,GAAG,GAAG,KAAK,CAAC,IAAI,CACpB,EAAE,MAAM,EAAE,IAAI,CAAC,UAAU,EAAE,EAC3B,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,CAAC,KAAK,GAAG,CAAC,CACxB,CAAC;oBACF,OAAO,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC;iBACnD;gBAED,MAAM,MAAM,GAAG,CAAC,MAAM,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,oDAAS,CAAC,GAAG,CAAC,YAAY,EAAE;oBACvE,KAAK,EAAE,KAAK;oBACZ,OAAO,EAAE,OAAO;iBACjB,CAAC,CAA+B,CAAC;gBAClC,OAAO,MAAM,CAAC;aACf;YAAC,OAAO,KAAK,EAAE;gBACd,OAAO,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;aACjC;QACH,CAAC;KAAA;IAEY,GAAG,CACd,QAA8B;;YAE9B,IAAI;gBACF,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,IAAI,CACzC,oDAAS,CAAC,WAAW,CAAC,GAAG,EACzB,QAAQ,CACT,CAAC;gBAEF,MAAM,iBAAiB,GAAG,2DAAmB,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;gBAClE,OAAO,iBAAiB,CAAC;aAC1B;YAAC,OAAO,KAAK,EAAE;gBACd,OAAO,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;aACjC;QACH,CAAC;KAAA;IAEY,IAAI,CACf,QAA8B;;YAE9B,IAAI;gBACF,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,IAAI,CACzC,oDAAS,CAAC,WAAW,CAAC,IAAI,EAC1B,QAAQ,CACT,CAAC;gBAEF,MAAM,iBAAiB,GAAG,2DAAmB,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;gBAClE,OAAO,iBAAiB,CAAC;aAC1B;YAAC,OAAO,KAAK,EAAE;gBACd,OAAO,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;aACjC;QACH,CAAC;KAAA;IAEY,6BAA6B,CACxC,UAAkB;;YAElB,IAAI;gBACF,IAAI,QAAQ,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,IAAI,CACzC,oDAAS,CAAC,WAAW,CAAC,6BAA6B,EACnD,UAAU,CACX,CAAC;gBAEF,OAAO,QAAQ,CAAC;aACjB;YAAC,OAAO,KAAK,EAAE;gBACd,OAAO,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;aACjC;QACH,CAAC;KAAA;IAEY,sBAAsB,CACjC,UAAkB;;YAElB,IAAI;gBACF,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,cAAc,CACnD,oDAAS,CAAC,WAAW,CAAC,sBAAsB,EAC5C,EAAE,UAAU,EAAE,CACf,CAAC;gBACF,OAAO,MAAM,CAAC;aACf;YAAC,OAAO,KAAK,EAAE;gBACd,OAAO,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;aACjC;QACH,CAAC;KAAA;IAEY,MAAM,CAAC,UAAkB;;YACpC,IAAI;gBACF,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,MAAM,CAC3C,oDAAS,CAAC,WAAW,CAAC,MAAM,EAC5B,EAAE,UAAU,EAAE,CACf,CAAC;gBACF,OAAO,MAAM,CAAC;aACf;YAAC,OAAO,KAAK,EAAE;gBACd,OAAO,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;aACjC;QACH,CAAC;KAAA;IAEY,oBAAoB,CAC/B,oBAA+C;;YAE/C,IAAI;gBACF,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,IAAI,CACzC,oDAAS,CAAC,WAAW,CAAC,oBAAoB,EAC1C,oBAAoB,CACrB,CAAC;gBACF,OAAO,MAAM,CAAC;aACf;YAAC,OAAO,KAAK,EAAE;gBACd,OAAO,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;aACjC;QACH,CAAC;KAAA;IAEY,uBAAuB,CAClC,cAAwB;;YAExB,IAAI;gBACF,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,mBAAmB,CACxD,oDAAS,CAAC,GAAG,CAAC,uBAAuB,EACrC,cAAc,CACf,CAAC;gBACF,OAAO,MAAM,CAAC;aACf;YAAC,OAAO,KAAK,EAAE;gBACd,OAAO,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;aACjC;QACH,CAAC;KAAA;IAEY,wBAAwB,CACnC,UAAkB;;YAElB,IAAI;gBACF,IAAI,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,EAAE;oBAC/C,MAAM,IAAI,GAAG,IAAI,CAAC,4BAA4B,EAAE,CAAC;oBACjD,OAAO,IAAI,CAAC;iBACb;gBACD,MAAM,MAAM,GAAG,CAAC,MAAM,IAAI,CAAC,YAAY,CAAC,GAAG,CACzC,oDAAS,CAAC,GAAG,CAAC,oCAAoC,EAClD,EAAE,UAAU,EAAE,CACf,CAA6B,CAAC;gBAC/B,OAAO,MAAM,CAAC;aACf;YAAC,OAAO,KAAK,EAAE;gBACd,OAAO,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;aACjC;QACH,CAAC;KAAA;IAEY,eAAe,CAC1B,SAAqC;;YAErC,IAAI;gBACF,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,IAAI,CACzC,oDAAS,CAAC,GAAG,CAAC,mBAAmB,EACjC,SAAS,CACV,CAAC;gBACF,OAAO,2DAAmB,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;aAChD;YAAC,OAAO,KAAK,EAAE;gBACd,OAAO,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;aACjC;QACH,CAAC;KAAA;IAEY,qBAAqB,CAChC,YAA+C;;YAE/C,IAAI;gBACF,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,IAAI,CACzC,oDAAS,CAAC,GAAG,CAAC,qBAAqB,EACnC,YAAY,CACb,CAAC;gBACF,OAAO,MAAM,CAAC;aACf;YAAC,OAAO,KAAK,EAAE;gBACd,OAAO,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;aACjC;QACH,CAAC;KAAA;IAEY,yBAAyB,CACpC,QAAiB;;YAEjB,IAAI;gBACF,IAAI,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,EAAE;oBAC/C,OAAO,IAAI,CAAC,6BAA6B,EAAE,CAAC;iBAC7C;gBAED,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,GAAG,CACxC,oDAAS,CAAC,WAAW,CAAC,yBAAyB,EAC/C,EAAE,QAAQ,EAAE,CACb,CAAC;gBAEF,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,uDAAe,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC;aAChE;YAAC,OAAO,KAAK,EAAE;gBACd,IAAI,KAAK,YAAY,kDAAU,EAAE;oBAC/B,OAAO,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;iBAC9B;gBAED,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;gBACnB,OAAO,IAAI,CAAC;aACb;QACH,CAAC;KAAA;IAEO,YAAY,CAAC,KAAU;QAC7B,IAAI,KAAK,YAAY,kDAAU,EAAE;YAC/B,OAAO,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;SAC9B;QAED,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QACnB,OAAO,IAAI,CAAC;IACd,CAAC;IAEM,WAAW;QAChB,MAAM,IAAI,GAAG;YACX;gBACE,EAAE,EAAE,CAAC;gBACL,YAAY,EAAE,eAAe;gBAC7B,WAAW,EAAE,UAAU;gBACvB,aAAa,EAAE,IAAI;gBACnB,WAAW,EAAE,CAAC;gBACd,cAAc,EAAE,IAAI;gBACpB,mBAAmB,EAAE,0DAAmB,CAAC,IAAI;gBAC7C,YAAY,EAAE,YAAY;aAC3B;YACD;gBACE,EAAE,EAAE,CAAC;gBACL,YAAY,EAAE,eAAe;gBAC7B,WAAW,EAAE,UAAU;gBACvB,aAAa,EAAE,IAAI;gBACnB,WAAW,EAAE,CAAC;gBACd,cAAc,EAAE,IAAI;gBACpB,mBAAmB,EAAE,0DAAmB,CAAC,IAAI;gBAC7C,YAAY,EAAE,YAAY;aAC3B;YACD;gBACE,EAAE,EAAE,CAAC;gBACL,YAAY,EAAE,eAAe;gBAC7B,WAAW,EAAE,UAAU;gBACvB,aAAa,EAAE,IAAI;gBACnB,WAAW,EAAE,CAAC;gBACd,cAAc,EAAE,IAAI;gBACpB,mBAAmB,EAAE,0DAAmB,CAAC,IAAI;gBAC7C,YAAY,EAAE,YAAY;aAC3B;SACwB,CAAC;QAC5B,OAAO,IAAI,CAAC;IACd,CAAC;IAKD,oCAAoC,CAAC,MAAgB,EAAE,aAAqB,EAAE,WAAmB;QAC/F,IAAI,MAAM,GAA4B,IAAI,+DAAuB,EAAE,CAAC;QACpE,MAAM,CAAC,YAAY,GAAG,EAAE,CAAC;QAEzB,MAAM,CAAC,UAAU,GAAG,EAAE,CAAC;QACvB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE;YAC7B,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,WAAW,GAAG,aAAa,GAAG,CAAC,CAAC,GAAG,aAAa,CAAC,CAAC;SAC3F;QACD,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE;YAClB,IAAI,WAAW,GAAG;gBAChB,KAAK,EAAE,EAAE;gBACT,uBAAuB,EAAE,EAAE;aAC5B,CAAC;YACF,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;gBAC/B,WAAW,CAAC,uBAAuB,CAAC,IAAI,CAAC;oBACvC,SAAS,EAAE,IAAI;oBACf,cAAc,EAAE,IAAI,CAAC,6BAA6B,EAAE;iBACrD,CAAC;YACJ,CAAC,CAAC,CAAC;YACH,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QACxC,CAAC,CAAC,CAAC;QAEH,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,6BAA6B;QAC3B,IAAI,sBAAsB,GAA4B,EAAE,CAAC;QACzD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE;YAC3B,IAAI,OAAO,GAA6B,EAAE,CAAC;YAE3C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,EAAE,EAAE;gBAC5B,IAAI,MAAM,GAA2B;oBACnC,EAAE,EAAE,CAAC;oBACL,MAAM,EAAE,uDAAgB,CAAC,OAAO;oBAChC,KAAK,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC,EAAE,EAAE,CAAC;iBACjC,CAAC;gBACF,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;aACtB;YAED,IAAI,QAAQ,GAA0B;gBACpC,EAAE,EAAE,CAAC;gBACL,IAAI,EAAE,CAAC;gBACP,OAAO,EAAE,OAAO;aACjB,CAAC;YAEF,sBAAsB,CAAC,IAAI,CAAC,QAAQ,CAAC;SACtC;QAED,OAAO,sBAAsB,CAAC;IAChC,CAAC;IAEM,iBAAiB,CAAC,UAAkB;QACzC,MAAM,IAAI,GAAG,IAAI,kEAA0B,EAAE,CAAC;QAE9C,MAAM,gBAAgB,GAAG,IAAI,CAAC,UAAU,CAAC;QACzC,MAAM,mBAAmB,GAAG,IAAI,CAAC,UAAU,CAAC;QAE5C,MAAM,MAAM,GAAG;YACb,MAAM,EAAE,KAAK;YACb,KAAK,EAAE,KAAK;YACZ,KAAK,EAAE,KAAK;SACb,CAAC;QAEF,MAAM,SAAS,GAAG;YAChB,MAAM,EAAE,KAAK;YACb,KAAK,EAAE,KAAK;YACZ,KAAK,EAAE,KAAK;SACb,CAAC;QAEF,MAAM,YAAY,GAAG,IAAI,CAAC,oBAAoB,CAC5C,gBAAgB,EAChB,MAAM,CAAC,KAAK,GAAG,CAAC,EAChB,MAAM,CAAC,MAAM,CACd,CAAC;QACF,MAAM,eAAe,GAAG,IAAI,CAAC,uBAAuB,CAClD,mBAAmB,EACnB,SAAS,CAAC,KAAK,EACf,SAAS,CAAC,KAAK,CAChB,CAAC;QAEF,MAAM,UAAU,GAAG;YACjB;gBACE,EAAE,EAAE,CAAC;gBACL,UAAU,EAAE,UAAU;gBACtB,YAAY,EAAE,CAAC;gBACf,IAAI,EAAE,GAAG;gBACT,OAAO,EAAE,kDAAW,CAAC,QAAQ;gBAC7B,cAAc,EAAE,IAAI;gBACpB,MAAM,EAAE,MAAM,CAAC,MAAM;gBACrB,KAAK,EAAE,MAAM,CAAC,KAAK;gBACnB,KAAK,EAAE,MAAM,CAAC,KAAK;gBACnB,SAAS,EAAE,GAAG;gBACd,SAAS,EAAE,GAAG;gBACd,MAAM,EAAE,CAAC,CAAC;gBACV,MAAM,EAAE,YAAY;gBACpB,mBAAmB,EAAE,IAAI;aAC1B;YACD;gBACE,EAAE,EAAE,CAAC;gBACL,UAAU,EAAE,UAAU;gBACtB,IAAI,EAAE,GAAG;gBACT,OAAO,EAAE,kDAAW,CAAC,WAAW;gBAChC,cAAc,EAAE,IAAI;gBACpB,MAAM,EAAE,SAAS,CAAC,MAAM;gBACxB,KAAK,EAAE,SAAS,CAAC,KAAK;gBACtB,KAAK,EAAE,SAAS,CAAC,KAAK;gBACtB,SAAS,EAAE,GAAG;gBACd,SAAS,EAAE,GAAG;gBACd,MAAM,EAAE,CAAC;gBACT,MAAM,EAAE,eAAe;gBACvB,mBAAmB,EAAE,IAAI;aAC1B;YACD;gBACE,EAAE,EAAE,CAAC;gBACL,UAAU,EAAE,UAAU;gBACtB,YAAY,EAAE,CAAC;gBACf,IAAI,EAAE,GAAG;gBACT,OAAO,EAAE,kDAAW,CAAC,QAAQ;gBAC7B,cAAc,EAAE,IAAI;gBACpB,MAAM,EAAE,GAAG;gBACX,KAAK,EAAE,GAAG;gBACV,KAAK,EAAE,GAAG;gBACV,SAAS,EAAE,GAAG;gBACd,SAAS,EAAE,GAAG;gBACd,MAAM,EAAE,CAAC,CAAC;gBACV,MAAM,EAAE,IAAI,CAAC,oBAAoB,CAAC,CAAC,EAAE,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,CAAC;gBACtD,mBAAmB,EAAE,IAAI;aAC1B;YACD;gBACE,EAAE,EAAE,CAAC;gBACL,UAAU,EAAE,UAAU;gBACtB,YAAY,EAAE,CAAC;gBACf,IAAI,EAAE,GAAG;gBACT,OAAO,EAAE,kDAAW,CAAC,QAAQ;gBAC7B,cAAc,EAAE,IAAI;gBACpB,MAAM,EAAE,GAAG;gBACX,KAAK,EAAE,EAAE;gBACT,KAAK,EAAE,GAAG;gBACV,SAAS,EAAE,GAAG;gBACd,SAAS,EAAE,GAAG;gBACd,MAAM,EAAE,CAAC,CAAC;gBACV,MAAM,EAAE,IAAI,CAAC,oBAAoB,CAAC,CAAC,EAAE,EAAE,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,CAAC;gBACrD,mBAAmB,EAAE,IAAI;aAC1B;YACD;gBACE,EAAE,EAAE,CAAC;gBACL,UAAU,EAAE,UAAU;gBACtB,YAAY,EAAE,CAAC;gBACf,IAAI,EAAE,GAAG;gBACT,OAAO,EAAE,kDAAW,CAAC,QAAQ;gBAC7B,cAAc,EAAE,IAAI;gBACpB,MAAM,EAAE,GAAG;gBACX,KAAK,EAAE,EAAE;gBACT,KAAK,EAAE,GAAG;gBACV,SAAS,EAAE,GAAG;gBACd,SAAS,EAAE,GAAG;gBACd,MAAM,EAAE,CAAC,CAAC;gBACV,MAAM,EAAE,IAAI,CAAC,oBAAoB,CAAC,CAAC,EAAE,EAAE,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,CAAC;gBACrD,mBAAmB,EAAE,IAAI;aAC1B;YACD;gBACE,EAAE,EAAE,CAAC;gBACL,UAAU,EAAE,UAAU;gBACtB,YAAY,EAAE,CAAC;gBACf,IAAI,EAAE,GAAG;gBACT,OAAO,EAAE,kDAAW,CAAC,QAAQ;gBAC7B,cAAc,EAAE,IAAI;gBACpB,MAAM,EAAE,GAAG;gBACX,KAAK,EAAE,EAAE;gBACT,KAAK,EAAE,EAAE;gBACT,SAAS,EAAE,GAAG;gBACd,SAAS,EAAE,GAAG;gBACd,MAAM,EAAE,CAAC,CAAC;gBACV,MAAM,EAAE,IAAI,CAAC,oBAAoB,CAAC,CAAC,EAAE,EAAE,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,CAAC;gBACrD,mBAAmB,EAAE,IAAI;aAC1B;SACgB,CAAC;QAEpB,IAAI,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,IAAsB,CAAC;QAErE,MAAM,IAAI,GAAG;YACX,GAAG,UAAU;YACb;gBACE,EAAE,EAAE,CAAC;gBACL,UAAU,EAAE,UAAU;gBACtB,IAAI,EAAE,WAAW;gBACjB,OAAO,EAAE,kDAAW,CAAC,IAAI;gBACzB,cAAc,EAAE,IAAI;gBACpB,mBAAmB,EAAE,IAAI;gBACzB,IAAI,EAAE,UAAU;aACD;YACjB,GAAG,SAAS;SACb,CAAC;QAEF,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,oDAAY,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC;QACrE,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;QAC7B,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC;QACjC,OAAO,IAAI,CAAC;IACd,CAAC;IAED,6BAA6B,CAC3B,UAAkB;QAElB,MAAM,qBAAqB,GAAG,IAAI,sEAA8B,EAAE,CAAC;QACnE,qBAAqB,CAAC,KAAK,GAAG;YAC5B,YAAY,EAAE,EAAE;YAChB,eAAe,EAAE,SAAS;YAC1B,oBAAoB,EAAE,EAAE;YACxB,uBAAuB,EAAE,SAAS;YAClC,mBAAmB,EAAE,EAAE;YACvB,sBAAsB,EAAE,SAAS;YACjC,wBAAwB,EAAE,SAAS;YACnC,cAAc,EAAE,SAAS;YACzB,kBAAkB,EAAE,SAAS;SACZ,CAAC;QAEpB,qBAAqB,CAAC,UAAU,GAAG,UAAU,CAAC;QAC9C,qBAAqB,CAAC,iBAAiB,GAAG;YACxC,EAAE,IAAI,EAAE,CAAC,OAAO,EAAE,EAAE,EAAE,CAAC,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE;YACrD,EAAE,IAAI,EAAE,CAAC,QAAQ,EAAE,EAAE,EAAE,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE;YACrD,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,EAAE,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE;YACnD,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE;YAC7C,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,EAAE,EAAE,EAAE,QAAQ,EAAE,SAAS,EAAE;YAC9C,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,EAAE,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE;YACnD,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,EAAE,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE;YACnD,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,EAAE,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE;YACnD,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,EAAE,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE;YACnD,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,EAAE,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE;YACnD,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,EAAE,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE;YACnD,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,EAAE,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE;YACnD,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE;YAC9C,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,EAAE,EAAE,EAAE,QAAQ,EAAE,SAAS,EAAE;YAC9C,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,EAAE,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE;YACnD,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,EAAE,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE;YACnD,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,EAAE,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE;YACnD,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,EAAE,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE;YACnD,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,EAAE,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE;YACnD,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,EAAE,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE;SACrB,CAAC;QAEjC,OAAO,qBAAqB,CAAC;IAC/B,CAAC;IAED,oBAAoB,CAClB,UAAkB,EAClB,SAAiB,EACjB,SAAiB;QAEjB,MAAM,SAAS,GAAG,EAAE,CAAC;QACrB,IAAI,CAAC,qBAAqB,GAAG,EAAE,CAAC;QAEhC,KAAK,IAAI,CAAC,GAAG,UAAU,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;YACnC,MAAM,iBAAiB,GAAG,IAAI,CAAC,aAAa,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;YACrD,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;YAEnD,MAAM,KAAK,GAAG;gBACZ,EAAE,EAAE,CAAC;gBACL,YAAY,EAAE,CAAC;gBACf,mBAAmB,EAAE,CAAC;gBACtB,MAAM,EAAE,SAAS;gBACjB,iBAAiB;gBACjB,KAAK,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC,EAAE,GAAG,CAAC;gBACjC,MAAM,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC,EAAE,SAAS,CAAC;gBACxC,IAAI,EAAE,CAAC;gBACP,OAAO,EAAE,EAAE;aACY,CAAC;YAC1B,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;SACvB;QAED,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,uBAAuB,CAAC,UAAkB,EAAE,IAAY,EAAE,IAAY;QACpE,MAAM,SAAS,GAAG,EAAE,CAAC;QACrB,IAAI,CAAC,qBAAqB,GAAG,EAAE,CAAC;QAEhC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,EAAE,CAAC,EAAE,EAAE;YACnC,MAAM,iBAAiB,GAAG,IAAI,CAAC,aAAa,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;YACrD,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;YAEnD,MAAM,KAAK,GAAG;gBACZ,EAAE,EAAE,CAAC;gBACL,YAAY,EAAE,CAAC;gBACf,mBAAmB,EAAE,CAAC;gBACtB,iBAAiB;gBACjB,MAAM,EAAE,GAAG;gBACX,SAAS,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC,EAAE,IAAI,CAAC;gBACtC,SAAS,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC,EAAE,IAAI,CAAC;gBACtC,IAAI,EAAE,CAAC;aACgB,CAAC;YAC1B,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;SACvB;QAED,OAAO,SAAS,CAAC;IACnB,CAAC;IAEO,oBAAoB,CAAC,QAAiC;QAC5D,MAAM,kBAAkB,GAAG,IAAI,IAAI,EAAE,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC;QACvD,MAAM,KAAK,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;YAC/B,KAAK,EAAE,CAAC,CAAC,KAAK;YACd,kBAAkB,EAAE,kBAAkB;YACtC,QAAQ,EAAE,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC,cAAc,CAAC;SACnB,EAAiC,CAAC;QAClE,OAAO,KAAK,CAAC;IACf,CAAC;IAEO,gBAAgB,CACtB,WAAwB,EACxB,KAAa,EACb,SAAmB;QAEnB,MAAM,QAAQ,GAAG,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC;QAClD,MAAM,IAAI,GAAG;YACX,KAAK,EAAE,KAAK;YACZ,kBAAkB,EAAE,UAAU;YAC9B,QAAQ;YACR,WAAW;SACkB,CAAC;QAChC,OAAO,IAAI,CAAC;IACd,CAAC;IAED,gBAAgB,CAAC,SAAmB;QAClC,MAAM,MAAM,GAAG,EAAE,CAAC;QAElB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YACzC,MAAM,YAAY,GAAG,IAAI,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC;YACnD,MAAM,OAAO,GAAG,IAAI,CAAC,eAAe,CAAC,YAAY,CAAC,CAAC;YAEnD,MAAM,KAAK,GAAG;gBACZ,OAAO,EAAE,SAAS,CAAC,CAAC,CAAC;gBACrB,KAAK,EAAE,CAAC;gBACR,OAAO,EAAE,OAAO;aACK,CAAC;YAExB,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;SACpB;QAED,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,eAAe,CAAC,YAAoB;QAClC,MAAM,OAAO,GAAG,EAAE,CAAC;QAEnB,MAAM,cAAc,GAAG,CAAC,CAAC;QACzB,MAAM,cAAc,GAAG,GAAG,CAAC;QAE3B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,YAAY,EAAE,CAAC,EAAE,EAAE;YACrC,MAAM,WAAW,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc,EAAE,cAAc,CAAC,CAAC;YACvE,MAAM,MAAM,GAAG;gBACb,EAAE,EAAE,CAAC;gBACL,KAAK,EAAE,WAAW;gBAClB,MAAM,EAAE,uDAAgB,CAAC,uDAAgB,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;aACzC,CAAC;YAC9B,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;SACtB;QAED,OAAO,OAAO,CAAC;IACjB,CAAC;IAED,4BAA4B;QAC1B,IAAI,CAAC,GAAW,GAAG,CAAC;QACpB,CAAC,CAAC,MAAM,EAAE,CAAC;QACX,IAAI,IAAI,GAAG;YACT;gBACE,KAAK,EAAE,CAAC;gBACR,MAAM,EAAE,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC;gBACnD,IAAI,EAAE,GAAG;gBACT,SAAS,EAAE,aAAa;gBACxB,UAAU,EAAE,CAAC;gBACb,cAAc,EAAE,KAAK;gBACrB,aAAa,EAAE,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;aACtE;YACD;gBACE,KAAK,EAAE,CAAC;gBACR,MAAM,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;gBACjC,IAAI,EAAE,GAAG;gBACT,SAAS,EAAE,aAAa;gBACxB,UAAU,EAAE,EAAE;gBACd,cAAc,EAAE,IAAI;gBACpB,aAAa,EAAE,yBAAyB;aACzC;SAC0B,CAAC;QAC9B,OAAO,IAAI,CAAC;IACd,CAAC;IAED,aAAa,CAAC,GAAG,EAAE,GAAG;QACpB,MAAM,IAAI,GAAG,GAAG,GAAG,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,CAAC;QACnD,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC1B,CAAC;IAUO,6BAA6B;QACnC,MAAM,IAAI,GAAG;YACX;gBACE,EAAE,EAAE,CAAC;gBACL,IAAI,EAAE,UAAU;gBAChB,SAAS,EAAE;oBACT;wBACE,EAAE,EAAE,CAAC;wBACL,IAAI,EAAE,YAAY;wBAClB,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;qBACxF;iBACF;aACF;YACD;gBACE,EAAE,EAAE,CAAC;gBACL,IAAI,EAAE,UAAU;gBAChB,SAAS,EAAE;oBACT;wBACE,EAAE,EAAE,CAAC;wBACL,IAAI,EAAE,YAAY;wBAClB,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;qBACxF;oBACD;wBACE,EAAE,EAAE,CAAC;wBACL,IAAI,EAAE,YAAY;wBAClB,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;qBACxF;iBACF;aACF;YACD;gBACE,EAAE,EAAE,CAAC;gBACL,IAAI,EAAE,UAAU;gBAChB,SAAS,EAAE;oBACT;wBACE,EAAE,EAAE,CAAC;wBACL,IAAI,EAAE,YAAY;wBAClB,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;qBAC3F;oBACD;wBACE,EAAE,EAAE,CAAC;wBACL,IAAI,EAAE,YAAY;wBAClB,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;qBAC3F;oBACD;wBACE,EAAE,EAAE,CAAC;wBACL,IAAI,EAAE,YAAY;qBACnB;iBACF;aACF;YACD;gBACE,EAAE,EAAE,CAAC;gBACL,IAAI,EAAE,UAAU;gBAChB,SAAS,EAAE;oBACT,EAAE,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,YAAY,EAAE;oBAC7B,EAAE,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,YAAY,EAAE;oBAC7B,EAAE,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,YAAY,EAAE;iBAC9B;aACF;YACD;gBACE,EAAE,EAAE,CAAC;gBACL,IAAI,EAAE,UAAU;gBAChB,SAAS,EAAE;oBACT;wBACE,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,aAAa;wBAC3B,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;qBAC9F;iBACF;aACF;SACoB,CAAC;QAExB,OAAO,IAAI,CAAC;IACd,CAAC;IAAA,CAAC;IAEK,gBAAgB,CAAC,UAAkB,EAAE,KAAa;QACvD,MAAM,iBAAiB,GAAG,IAAI,CAAC,6BAA6B,CAAC,UAAU,CAAC,CAAC;QACzE,MAAM,SAAS,GAAG;YAChB,KAAK,EAAE,iBAAiB,CAAC,KAAK;YAC9B,iBAAiB,EAAE,iBAAiB,CAAC,iBAAiB;YACtD,UAAU,EAAE,UAAU;YACtB,EAAE,EAAE,KAAK;YACT,IAAI,EAAE,IAAI;YACV,OAAO,EAAE,CAAC;YACV,IAAI,EAAE,IAAI;YACV,MAAM,EAAE,EAAE;YACV,KAAK,EAAE,GAAG;YACV,KAAK,EAAE,GAAG;YACV,SAAS,EAAE,EAAE;YACb,SAAS,EAAE,EAAE;YACb,MAAM,EAAE,CAAC;YACT,UAAU,EAAE,KAAK;YACjB,MAAM,EAAE,IAAI,CAAC,oBAAoB,CAAC,EAAE,EAAE,GAAG,GAAG,CAAC,EAAE,EAAE,CAAC;YAClD,cAAc,EAAE,IAAI;YACpB,oBAAoB,EAAE,IAAI;YAC1B,mBAAmB,EAAE,IAAI;SACL,CAAC;QACvB,OAAO,yDAAiB,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;IACjD,CAAC;IAEM,qBAAqB,CAAC,UAAkB;QAC7C,MAAM,UAAU,GAAG,IAAI,CAAC,iBAAiB,EAAE,CAAC;QAC5C,MAAM,iBAAiB,GAAG,IAAI,CAAC,6BAA6B,CAAC,UAAU,CAAC;QACxE,MAAM,YAAY,GAA+B;YAC/C,UAAU,EAAE,UAAU,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;YACvC,YAAY,EAAE,YAAY;YAC1B,KAAK,EAAE,GAAG;YACV,MAAM,EAAE,EAAE;YACV,KAAK,EAAE,GAAG;YACV,UAAU,EAAE,UAAU;YACtB,oBAAoB,EAAE,IAAI;YAC1B,aAAa,EAAE,IAAI;YACnB,SAAS,EAAE,sDAAW,CAAC,0BAA0B;YACjD,eAAe,EAAE,IAAI;YACrB,KAAK,EAAE,iBAAiB,CAAC,KAAK;YAC9B,iBAAiB,EAAE,iBAAiB,CAAC,iBAAiB;SACvD,CAAC;QAEF,OAAO,YAAY,CAAC;IACtB,CAAC;IAED,iBAAiB;QACf,MAAM,IAAI,GAAmB;YAC3B;gBACE,UAAU,EAAE,CAAC;gBACb,iBAAiB,EAAE,CAAC;gBACpB,cAAc,EAAE,KAAK;gBACrB,oBAAoB,EAAE,KAAK;gBAC3B,mBAAmB,EAAE,KAAK;gBAC1B,KAAK,EAAE,CAAC;gBACR,EAAE,EAAE,EAAE;gBACN,aAAa,EAAE,CAAC;gBAChB,UAAU,EAAE,CAAC;gBACb,SAAS,EAAE,cAAc;gBACzB,IAAI,EAAE,GAAG;gBACT,UAAU,EAAE,CAAC;gBACb,IAAI,EAAE,IAAI;gBACV,OAAO,EAAE,CAAC;gBACV,MAAM,EAAE,EAAE;gBACV,KAAK,EAAE,GAAG;gBACV,KAAK,EAAE,GAAG;gBACV,SAAS,EAAE,EAAE;gBACb,SAAS,EAAE,EAAE;gBACb,MAAM,EAAE,CAAC;gBACT,UAAU,EAAE,KAAK;gBACjB,MAAM,EAAE,IAAI,CAAC,oBAAoB,CAAC,EAAE,EAAE,GAAG,GAAG,CAAC,EAAE,EAAE,CAAC;gBAClD,IAAI,EAAE,IAAI;gBACV,QAAQ,EAAE,SAAS;gBACnB,qBAAqB,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC;gBAClD,kBAAkB,EAAE,uDAAgB,CAAC,SAAS;aAC/C;YACD;gBACE,UAAU,EAAE,CAAC;gBACb,iBAAiB,EAAE,CAAC;gBACpB,cAAc,EAAE,KAAK;gBACrB,oBAAoB,EAAE,KAAK;gBAC3B,mBAAmB,EAAE,KAAK;gBAC1B,KAAK,EAAE,CAAC;gBACR,EAAE,EAAE,EAAE;gBACN,aAAa,EAAE,CAAC;gBAChB,UAAU,EAAE,CAAC;gBACb,SAAS,EAAE,cAAc;gBACzB,IAAI,EAAE,GAAG;gBACT,UAAU,EAAE,CAAC;gBACb,IAAI,EAAE,IAAI;gBACV,OAAO,EAAE,CAAC;gBACV,MAAM,EAAE,EAAE;gBACV,KAAK,EAAE,GAAG;gBACV,KAAK,EAAE,GAAG;gBACV,SAAS,EAAE,GAAG;gBACd,SAAS,EAAE,CAAC;gBACZ,MAAM,EAAE,CAAC;gBACT,UAAU,EAAE,KAAK;gBACjB,MAAM,EAAE;oBACN;wBACE,EAAE,EAAE,GAAG;wBACP,YAAY,EAAE,CAAC;wBACf,mBAAmB,EAAE,CAAC;wBACtB,iBAAiB,EAAE,EAAE;wBACrB,KAAK,EAAE,EAAE;wBACT,MAAM,EAAE,KAAK;wBACb,SAAS,EAAE,IAAI;wBACf,SAAS,EAAE,IAAI;wBACf,IAAI,EAAE,CAAC;wBACP,MAAM,EAAE,EAAE;wBACV,OAAO,EAAE,EAAE;wBACX,aAAa,EAAE,CAAC;qBACjB;oBACD;wBACE,EAAE,EAAE,GAAG;wBACP,YAAY,EAAE,CAAC;wBACf,mBAAmB,EAAE,CAAC;wBACtB,iBAAiB,EAAE,EAAE;wBACrB,KAAK,EAAE,GAAG;wBACV,MAAM,EAAE,MAAM;wBACd,SAAS,EAAE,IAAI;wBACf,SAAS,EAAE,IAAI;wBACf,IAAI,EAAE,CAAC;wBACP,MAAM,EAAE,EAAE;wBACV,OAAO,EAAE,EAAE;wBACX,aAAa,EAAE,CAAC;qBACjB;oBACD;wBACE,EAAE,EAAE,GAAG;wBACP,YAAY,EAAE,CAAC;wBACf,mBAAmB,EAAE,CAAC;wBACtB,iBAAiB,EAAE,EAAE;wBACrB,KAAK,EAAE,GAAG;wBACV,MAAM,EAAE,MAAM;wBACd,SAAS,EAAE,IAAI;wBACf,SAAS,EAAE,IAAI;wBACf,IAAI,EAAE,CAAC;wBACP,MAAM,EAAE,EAAE;wBACV,OAAO,EAAE,EAAE;wBACX,aAAa,EAAE,CAAC;qBACjB;oBACD;wBACE,EAAE,EAAE,GAAG;wBACP,YAAY,EAAE,CAAC;wBACf,mBAAmB,EAAE,CAAC;wBACtB,iBAAiB,EAAE,EAAE;wBACrB,KAAK,EAAE,GAAG;wBACV,MAAM,EAAE,MAAM;wBACd,SAAS,EAAE,IAAI;wBACf,SAAS,EAAE,IAAI;wBACf,IAAI,EAAE,CAAC;wBACP,MAAM,EAAE,EAAE;wBACV,OAAO,EAAE,EAAE;wBACX,aAAa,EAAE,CAAC;qBACjB;oBACD;wBACE,EAAE,EAAE,GAAG;wBACP,YAAY,EAAE,CAAC;wBACf,mBAAmB,EAAE,CAAC;wBACtB,iBAAiB,EAAE,EAAE;wBACrB,KAAK,EAAE,EAAE;wBACT,MAAM,EAAE,MAAM;wBACd,SAAS,EAAE,IAAI;wBACf,SAAS,EAAE,IAAI;wBACf,IAAI,EAAE,CAAC;wBACP,MAAM,EAAE,EAAE;wBACV,OAAO,EAAE,EAAE;wBACX,aAAa,EAAE,CAAC;qBACjB;oBACD;wBACE,EAAE,EAAE,GAAG;wBACP,YAAY,EAAE,CAAC;wBACf,mBAAmB,EAAE,CAAC;wBACtB,iBAAiB,EAAE,EAAE;wBACrB,KAAK,EAAE,EAAE;wBACT,MAAM,EAAE,KAAK;wBACb,SAAS,EAAE,IAAI;wBACf,SAAS,EAAE,IAAI;wBACf,IAAI,EAAE,CAAC;wBACP,MAAM,EAAE,EAAE;wBACV,OAAO,EAAE,EAAE;wBACX,aAAa,EAAE,CAAC;qBACjB;oBACD;wBACE,EAAE,EAAE,GAAG;wBACP,YAAY,EAAE,CAAC;wBACf,mBAAmB,EAAE,CAAC;wBACtB,iBAAiB,EAAE,EAAE;wBACrB,KAAK,EAAE,GAAG;wBACV,MAAM,EAAE,KAAK;wBACb,SAAS,EAAE,IAAI;wBACf,SAAS,EAAE,IAAI;wBACf,IAAI,EAAE,CAAC;wBACP,MAAM,EAAE,EAAE;wBACV,OAAO,EAAE,EAAE;wBACX,aAAa,EAAE,CAAC;qBACjB;oBACD;wBACE,EAAE,EAAE,GAAG;wBACP,YAAY,EAAE,CAAC;wBACf,mBAAmB,EAAE,CAAC;wBACtB,iBAAiB,EAAE,EAAE;wBACrB,KAAK,EAAE,GAAG;wBACV,MAAM,EAAE,KAAK;wBACb,SAAS,EAAE,IAAI;wBACf,SAAS,EAAE,IAAI;wBACf,IAAI,EAAE,CAAC;wBACP,MAAM,EAAE,EAAE;wBACV,OAAO,EAAE,EAAE;wBACX,aAAa,EAAE,CAAC;qBACjB;oBACD;wBACE,EAAE,EAAE,GAAG;wBACP,YAAY,EAAE,CAAC;wBACf,mBAAmB,EAAE,CAAC;wBACtB,iBAAiB,EAAE,EAAE;wBACrB,KAAK,EAAE,GAAG;wBACV,MAAM,EAAE,KAAK;wBACb,SAAS,EAAE,IAAI;wBACf,SAAS,EAAE,IAAI;wBACf,IAAI,EAAE,CAAC;wBACP,MAAM,EAAE,EAAE;wBACV,OAAO,EAAE,EAAE;wBACX,aAAa,EAAE,CAAC;qBACjB;oBACD;wBACE,EAAE,EAAE,GAAG;wBACP,YAAY,EAAE,EAAE;wBAChB,mBAAmB,EAAE,CAAC;wBACtB,iBAAiB,EAAE,EAAE;wBACrB,KAAK,EAAE,GAAG;wBACV,MAAM,EAAE,MAAM;wBACd,SAAS,EAAE,IAAI;wBACf,SAAS,EAAE,IAAI;wBACf,IAAI,EAAE,EAAE;wBACR,MAAM,EAAE,EAAE;wBACV,OAAO,EAAE,EAAE;wBACX,aAAa,EAAE,CAAC;qBACjB;oBACD;wBACE,EAAE,EAAE,GAAG;wBACP,YAAY,EAAE,EAAE;wBAChB,mBAAmB,EAAE,CAAC;wBACtB,iBAAiB,EAAE,EAAE;wBACrB,KAAK,EAAE,GAAG;wBACV,MAAM,EAAE,MAAM;wBACd,SAAS,EAAE,IAAI;wBACf,SAAS,EAAE,IAAI;wBACf,IAAI,EAAE,EAAE;wBACR,MAAM,EAAE,EAAE;wBACV,OAAO,EAAE,EAAE;wBACX,aAAa,EAAE,CAAC;qBACjB;oBACD;wBACE,EAAE,EAAE,GAAG;wBACP,YAAY,EAAE,EAAE;wBAChB,mBAAmB,EAAE,CAAC;wBACtB,iBAAiB,EAAE,EAAE;wBACrB,KAAK,EAAE,GAAG;wBACV,MAAM,EAAE,MAAM;wBACd,SAAS,EAAE,IAAI;wBACf,SAAS,EAAE,IAAI;wBACf,IAAI,EAAE,EAAE;wBACR,MAAM,EAAE,EAAE;wBACV,OAAO,EAAE,EAAE;wBACX,aAAa,EAAE,CAAC;qBACjB;oBACD;wBACE,EAAE,EAAE,GAAG;wBACP,YAAY,EAAE,EAAE;wBAChB,mBAAmB,EAAE,CAAC;wBACtB,iBAAiB,EAAE,EAAE;wBACrB,KAAK,EAAE,GAAG;wBACV,MAAM,EAAE,MAAM;wBACd,SAAS,EAAE,IAAI;wBACf,SAAS,EAAE,IAAI;wBACf,IAAI,EAAE,EAAE;wBACR,MAAM,EAAE,EAAE;wBACV,OAAO,EAAE,EAAE;wBACX,aAAa,EAAE,CAAC;qBACjB;oBACD;wBACE,EAAE,EAAE,GAAG;wBACP,YAAY,EAAE,EAAE;wBAChB,mBAAmB,EAAE,CAAC;wBACtB,iBAAiB,EAAE,EAAE;wBACrB,KAAK,EAAE,GAAG;wBACV,MAAM,EAAE,MAAM;wBACd,SAAS,EAAE,IAAI;wBACf,SAAS,EAAE,IAAI;wBACf,IAAI,EAAE,EAAE;wBACR,MAAM,EAAE,EAAE;wBACV,OAAO,EAAE,EAAE;wBACX,aAAa,EAAE,CAAC;qBACjB;oBACD;wBACE,EAAE,EAAE,GAAG;wBACP,YAAY,EAAE,EAAE;wBAChB,mBAAmB,EAAE,CAAC;wBACtB,iBAAiB,EAAE,EAAE;wBACrB,KAAK,EAAE,GAAG;wBACV,MAAM,EAAE,MAAM;wBACd,SAAS,EAAE,IAAI;wBACf,SAAS,EAAE,IAAI;wBACf,IAAI,EAAE,EAAE;wBACR,MAAM,EAAE,EAAE;wBACV,OAAO,EAAE,EAAE;wBACX,aAAa,EAAE,CAAC;qBACjB;oBACD;wBACE,EAAE,EAAE,GAAG;wBACP,YAAY,EAAE,EAAE;wBAChB,mBAAmB,EAAE,CAAC;wBACtB,iBAAiB,EAAE,EAAE;wBACrB,KAAK,EAAE,GAAG;wBACV,MAAM,EAAE,MAAM;wBACd,SAAS,EAAE,IAAI;wBACf,SAAS,EAAE,IAAI;wBACf,IAAI,EAAE,EAAE;wBACR,MAAM,EAAE,EAAE;wBACV,OAAO,EAAE,EAAE;wBACX,aAAa,EAAE,CAAC;qBACjB;oBACD;wBACE,EAAE,EAAE,GAAG;wBACP,YAAY,EAAE,EAAE;wBAChB,mBAAmB,EAAE,CAAC;wBACtB,iBAAiB,EAAE,EAAE;wBACrB,KAAK,EAAE,GAAG;wBACV,MAAM,EAAE,MAAM;wBACd,SAAS,EAAE,IAAI;wBACf,SAAS,EAAE,IAAI;wBACf,IAAI,EAAE,EAAE;wBACR,MAAM,EAAE,EAAE;wBACV,OAAO,EAAE,EAAE;wBACX,aAAa,EAAE,CAAC;qBACjB;oBACD;wBACE,EAAE,EAAE,GAAG;wBACP,YAAY,EAAE,EAAE;wBAChB,mBAAmB,EAAE,CAAC;wBACtB,iBAAiB,EAAE,EAAE;wBACrB,KAAK,EAAE,EAAE;wBACT,MAAM,EAAE,MAAM;wBACd,SAAS,EAAE,IAAI;wBACf,SAAS,EAAE,IAAI;wBACf,IAAI,EAAE,EAAE;wBACR,MAAM,EAAE,EAAE;wBACV,OAAO,EAAE,EAAE;wBACX,aAAa,EAAE,CAAC;qBACjB;oBACD;wBACE,EAAE,EAAE,GAAG;wBACP,YAAY,EAAE,EAAE;wBAChB,mBAAmB,EAAE,CAAC;wBACtB,iBAAiB,EAAE,EAAE;wBACrB,KAAK,EAAE,EAAE;wBACT,MAAM,EAAE,MAAM;wBACd,SAAS,EAAE,IAAI;wBACf,SAAS,EAAE,IAAI;wBACf,IAAI,EAAE,EAAE;wBACR,MAAM,EAAE,EAAE;wBACV,OAAO,EAAE,EAAE;wBACX,aAAa,EAAE,CAAC;qBACjB;oBACD;wBACE,EAAE,EAAE,GAAG;wBACP,YAAY,EAAE,EAAE;wBAChB,mBAAmB,EAAE,CAAC;wBACtB,iBAAiB,EAAE,EAAE;wBACrB,KAAK,EAAE,EAAE;wBACT,MAAM,EAAE,MAAM;wBACd,SAAS,EAAE,IAAI;wBACf,SAAS,EAAE,IAAI;wBACf,IAAI,EAAE,EAAE;wBACR,MAAM,EAAE,EAAE;wBACV,OAAO,EAAE,EAAE;wBACX,aAAa,EAAE,CAAC;qBACjB;oBACD;wBACE,EAAE,EAAE,GAAG;wBACP,YAAY,EAAE,EAAE;wBAChB,mBAAmB,EAAE,CAAC;wBACtB,iBAAiB,EAAE,EAAE;wBACrB,KAAK,EAAE,CAAC;wBACR,MAAM,EAAE,MAAM;wBACd,SAAS,EAAE,IAAI;wBACf,SAAS,EAAE,IAAI;wBACf,IAAI,EAAE,EAAE;wBACR,MAAM,EAAE,EAAE;wBACV,OAAO,EAAE,EAAE;wBACX,aAAa,EAAE,CAAC;qBACjB;oBACD;wBACE,EAAE,EAAE,GAAG;wBACP,YAAY,EAAE,EAAE;wBAChB,mBAAmB,EAAE,CAAC;wBACtB,iBAAiB,EAAE,EAAE;wBACrB,KAAK,EAAE,GAAG;wBACV,MAAM,EAAE,KAAK;wBACb,SAAS,EAAE,IAAI;wBACf,SAAS,EAAE,IAAI;wBACf,IAAI,EAAE,EAAE;wBACR,MAAM,EAAE,EAAE;wBACV,OAAO,EAAE,EAAE;wBACX,aAAa,EAAE,CAAC;qBACjB;oBACD;wBACE,EAAE,EAAE,GAAG;wBACP,YAAY,EAAE,EAAE;wBAChB,mBAAmB,EAAE,CAAC;wBACtB,iBAAiB,EAAE,EAAE;wBACrB,KAAK,EAAE,GAAG;wBACV,MAAM,EAAE,KAAK;wBACb,SAAS,EAAE,IAAI;wBACf,SAAS,EAAE,IAAI;wBACf,IAAI,EAAE,EAAE;wBACR,MAAM,EAAE,EAAE;wBACV,OAAO,EAAE,EAAE;wBACX,aAAa,EAAE,CAAC;qBACjB;oBACD;wBACE,EAAE,EAAE,GAAG;wBACP,YAAY,EAAE,EAAE;wBAChB,mBAAmB,EAAE,CAAC;wBACtB,iBAAiB,EAAE,EAAE;wBACrB,KAAK,EAAE,GAAG;wBACV,MAAM,EAAE,KAAK;wBACb,SAAS,EAAE,IAAI;wBACf,SAAS,EAAE,IAAI;wBACf,IAAI,EAAE,EAAE;wBACR,MAAM,EAAE,EAAE;wBACV,OAAO,EAAE,EAAE;wBACX,aAAa,EAAE,CAAC;qBACjB;iBACF;gBACD,IAAI,EAAE,IAAI;gBACV,QAAQ,EAAE,SAAS;gBACnB,kBAAkB,EAAE,uDAAgB,CAAC,OAAO,EAAE,qBAAqB,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC;aACjG;YACD;gBACE,UAAU,EAAE,CAAC;gBACb,iBAAiB,EAAE,CAAC;gBACpB,cAAc,EAAE,KAAK;gBACrB,oBAAoB,EAAE,KAAK;gBAC3B,mBAAmB,EAAE,KAAK;gBAC1B,KAAK,EAAE,CAAC;gBACR,EAAE,EAAE,EAAE;gBACN,aAAa,EAAE,CAAC;gBAChB,UAAU,EAAE,CAAC;gBACb,SAAS,EAAE,cAAc;gBACzB,IAAI,EAAE,GAAG;gBACT,UAAU,EAAE,CAAC;gBACb,IAAI,EAAE,KAAK;gBACX,OAAO,EAAE,CAAC;gBACV,MAAM,EAAE,EAAE;gBACV,KAAK,EAAE,GAAG;gBACV,KAAK,EAAE,GAAG;gBACV,SAAS,EAAE,EAAE;gBACb,SAAS,EAAE,GAAG;gBACd,MAAM,EAAE,CAAC;gBACT,UAAU,EAAE,KAAK;gBACjB,MAAM,EAAE;oBACN;wBACE,EAAE,EAAE,GAAG;wBACP,YAAY,EAAE,EAAE;wBAChB,mBAAmB,EAAE,CAAC;wBACtB,iBAAiB,EAAE,EAAE;wBACrB,KAAK,EAAE,GAAG;wBACV,MAAM,EAAE,MAAM;wBACd,SAAS,EAAE,IAAI;wBACf,SAAS,EAAE,IAAI;wBACf,IAAI,EAAE,EAAE;wBACR,MAAM,EAAE,EAAE;wBACV,OAAO,EAAE,EAAE;wBACX,aAAa,EAAE,CAAC;qBACjB;oBACD;wBACE,EAAE,EAAE,GAAG;wBACP,YAAY,EAAE,EAAE;wBAChB,mBAAmB,EAAE,CAAC;wBACtB,iBAAiB,EAAE,EAAE;wBACrB,KAAK,EAAE,GAAG;wBACV,MAAM,EAAE,MAAM;wBACd,SAAS,EAAE,IAAI;wBACf,SAAS,EAAE,IAAI;wBACf,IAAI,EAAE,EAAE;wBACR,MAAM,EAAE,EAAE;wBACV,OAAO,EAAE,EAAE;wBACX,aAAa,EAAE,CAAC;qBACjB;oBACD;wBACE,EAAE,EAAE,GAAG;wBACP,YAAY,EAAE,EAAE;wBAChB,mBAAmB,EAAE,CAAC;wBACtB,iBAAiB,EAAE,EAAE;wBACrB,KAAK,EAAE,GAAG;wBACV,MAAM,EAAE,MAAM;wBACd,SAAS,EAAE,IAAI;wBACf,SAAS,EAAE,IAAI;wBACf,IAAI,EAAE,EAAE;wBACR,MAAM,EAAE,EAAE;wBACV,OAAO,EAAE,EAAE;wBACX,aAAa,EAAE,CAAC;qBACjB;oBACD;wBACE,EAAE,EAAE,GAAG;wBACP,YAAY,EAAE,EAAE;wBAChB,mBAAmB,EAAE,CAAC;wBACtB,iBAAiB,EAAE,EAAE;wBACrB,KAAK,EAAE,GAAG;wBACV,MAAM,EAAE,MAAM;wBACd,SAAS,EAAE,IAAI;wBACf,SAAS,EAAE,IAAI;wBACf,IAAI,EAAE,EAAE;wBACR,MAAM,EAAE,EAAE;wBACV,OAAO,EAAE,EAAE;wBACX,aAAa,EAAE,CAAC;qBACjB;oBACD;wBACE,EAAE,EAAE,GAAG;wBACP,YAAY,EAAE,EAAE;wBAChB,mBAAmB,EAAE,CAAC;wBACtB,iBAAiB,EAAE,EAAE;wBACrB,KAAK,EAAE,GAAG;wBACV,MAAM,EAAE,MAAM;wBACd,SAAS,EAAE,IAAI;wBACf,SAAS,EAAE,IAAI;wBACf,IAAI,EAAE,EAAE;wBACR,MAAM,EAAE,EAAE;wBACV,OAAO,EAAE,EAAE;wBACX,aAAa,EAAE,CAAC;qBACjB;oBACD;wBACE,EAAE,EAAE,GAAG;wBACP,YAAY,EAAE,EAAE;wBAChB,mBAAmB,EAAE,CAAC;wBACtB,iBAAiB,EAAE,EAAE;wBACrB,KAAK,EAAE,GAAG;wBACV,MAAM,EAAE,MAAM;wBACd,SAAS,EAAE,IAAI;wBACf,SAAS,EAAE,IAAI;wBACf,IAAI,EAAE,EAAE;wBACR,MAAM,EAAE,EAAE;wBACV,OAAO,EAAE,EAAE;wBACX,aAAa,EAAE,CAAC;qBACjB;oBACD;wBACE,EAAE,EAAE,GAAG;wBACP,YAAY,EAAE,EAAE;wBAChB,mBAAmB,EAAE,CAAC;wBACtB,iBAAiB,EAAE,EAAE;wBACrB,KAAK,EAAE,GAAG;wBACV,MAAM,EAAE,MAAM;wBACd,SAAS,EAAE,IAAI;wBACf,SAAS,EAAE,IAAI;wBACf,IAAI,EAAE,EAAE;wBACR,MAAM,EAAE,EAAE;wBACV,OAAO,EAAE,EAAE;wBACX,aAAa,EAAE,CAAC;qBACjB;oBACD;wBACE,EAAE,EAAE,GAAG;wBACP,YAAY,EAAE,EAAE;wBAChB,mBAAmB,EAAE,CAAC;wBACtB,iBAAiB,EAAE,EAAE;wBACrB,KAAK,EAAE,GAAG;wBACV,MAAM,EAAE,MAAM;wBACd,SAAS,EAAE,IAAI;wBACf,SAAS,EAAE,IAAI;wBACf,IAAI,EAAE,EAAE;wBACR,MAAM,EAAE,EAAE;wBACV,OAAO,EAAE,EAAE;wBACX,aAAa,EAAE,CAAC;qBACjB;oBACD;wBACE,EAAE,EAAE,GAAG;wBACP,YAAY,EAAE,EAAE;wBAChB,mBAAmB,EAAE,CAAC;wBACtB,iBAAiB,EAAE,EAAE;wBACrB,KAAK,EAAE,EAAE;wBACT,MAAM,EAAE,MAAM;wBACd,SAAS,EAAE,IAAI;wBACf,SAAS,EAAE,IAAI;wBACf,IAAI,EAAE,EAAE;wBACR,MAAM,EAAE,EAAE;wBACV,OAAO,EAAE,EAAE;wBACX,aAAa,EAAE,CAAC;qBACjB;oBACD;wBACE,EAAE,EAAE,GAAG;wBACP,YAAY,EAAE,EAAE;wBAChB,mBAAmB,EAAE,CAAC;wBACtB,iBAAiB,EAAE,EAAE;wBACrB,KAAK,EAAE,EAAE;wBACT,MAAM,EAAE,MAAM;wBACd,SAAS,EAAE,IAAI;wBACf,SAAS,EAAE,IAAI;wBACf,IAAI,EAAE,EAAE;wBACR,MAAM,EAAE,EAAE;wBACV,OAAO,EAAE,EAAE;wBACX,aAAa,EAAE,CAAC;qBACjB;oBACD;wBACE,EAAE,EAAE,GAAG;wBACP,YAAY,EAAE,EAAE;wBAChB,mBAAmB,EAAE,CAAC;wBACtB,iBAAiB,EAAE,EAAE;wBACrB,KAAK,EAAE,EAAE;wBACT,MAAM,EAAE,MAAM;wBACd,SAAS,EAAE,IAAI;wBACf,SAAS,EAAE,IAAI;wBACf,IAAI,EAAE,EAAE;wBACR,MAAM,EAAE,EAAE;wBACV,OAAO,EAAE,EAAE;wBACX,aAAa,EAAE,CAAC;qBACjB;oBACD;wBACE,EAAE,EAAE,GAAG;wBACP,YAAY,EAAE,EAAE;wBAChB,mBAAmB,EAAE,CAAC;wBACtB,iBAAiB,EAAE,EAAE;wBACrB,KAAK,EAAE,GAAG;wBACV,MAAM,EAAE,KAAK;wBACb,SAAS,EAAE,IAAI;wBACf,SAAS,EAAE,IAAI;wBACf,IAAI,EAAE,EAAE;wBACR,MAAM,EAAE,EAAE;wBACV,OAAO,EAAE,EAAE;wBACX,aAAa,EAAE,CAAC;qBACjB;oBACD;wBACE,EAAE,EAAE,GAAG;wBACP,YAAY,EAAE,EAAE;wBAChB,mBAAmB,EAAE,CAAC;wBACtB,iBAAiB,EAAE,EAAE;wBACrB,KAAK,EAAE,GAAG;wBACV,MAAM,EAAE,KAAK;wBACb,SAAS,EAAE,IAAI;wBACf,SAAS,EAAE,IAAI;wBACf,IAAI,EAAE,EAAE;wBACR,MAAM,EAAE,EAAE;wBACV,OAAO,EAAE,EAAE;wBACX,aAAa,EAAE,CAAC;qBACjB;oBACD;wBACE,EAAE,EAAE,GAAG;wBACP,YAAY,EAAE,EAAE;wBAChB,mBAAmB,EAAE,CAAC;wBACtB,iBAAiB,EAAE,EAAE;wBACrB,KAAK,EAAE,GAAG;wBACV,MAAM,EAAE,KAAK;wBACb,SAAS,EAAE,IAAI;wBACf,SAAS,EAAE,IAAI;wBACf,IAAI,EAAE,EAAE;wBACR,MAAM,EAAE,EAAE;wBACV,OAAO,EAAE,EAAE;wBACX,aAAa,EAAE,CAAC;qBACjB;oBACD;wBACE,EAAE,EAAE,GAAG;wBACP,YAAY,EAAE,CAAC;wBACf,mBAAmB,EAAE,CAAC;wBACtB,iBAAiB,EAAE,EAAE;wBACrB,KAAK,EAAE,GAAG;wBACV,MAAM,EAAE,KAAK;wBACb,SAAS,EAAE,IAAI;wBACf,SAAS,EAAE,IAAI;wBACf,IAAI,EAAE,CAAC;wBACP,MAAM,EAAE,EAAE;wBACV,OAAO,EAAE,EAAE;wBACX,aAAa,EAAE,CAAC;qBACjB;oBACD;wBACE,EAAE,EAAE,GAAG;wBACP,YAAY,EAAE,CAAC;wBACf,mBAAmB,EAAE,CAAC;wBACtB,iBAAiB,EAAE,EAAE;wBACrB,KAAK,EAAE,GAAG;wBACV,MAAM,EAAE,KAAK;wBACb,SAAS,EAAE,IAAI;wBACf,SAAS,EAAE,IAAI;wBACf,IAAI,EAAE,CAAC;wBACP,MAAM,EAAE,EAAE;wBACV,OAAO,EAAE,EAAE;wBACX,aAAa,EAAE,CAAC;qBACjB;oBACD;wBACE,EAAE,EAAE,GAAG;wBACP,YAAY,EAAE,CAAC;wBACf,mBAAmB,EAAE,CAAC;wBACtB,iBAAiB,EAAE,EAAE;wBACrB,KAAK,EAAE,GAAG;wBACV,MAAM,EAAE,KAAK;wBACb,SAAS,EAAE,IAAI;wBACf,SAAS,EAAE,IAAI;wBACf,IAAI,EAAE,CAAC;wBACP,MAAM,EAAE,EAAE;wBACV,OAAO,EAAE,EAAE;wBACX,aAAa,EAAE,CAAC;qBACjB;oBACD;wBACE,EAAE,EAAE,GAAG;wBACP,YAAY,EAAE,CAAC;wBACf,mBAAmB,EAAE,CAAC;wBACtB,iBAAiB,EAAE,EAAE;wBACrB,KAAK,EAAE,EAAE;wBACT,MAAM,EAAE,KAAK;wBACb,SAAS,EAAE,IAAI;wBACf,SAAS,EAAE,IAAI;wBACf,IAAI,EAAE,CAAC;wBACP,MAAM,EAAE,EAAE;wBACV,OAAO,EAAE,EAAE;wBACX,aAAa,EAAE,CAAC;qBACjB;oBACD;wBACE,EAAE,EAAE,GAAG;wBACP,YAAY,EAAE,CAAC;wBACf,mBAAmB,EAAE,CAAC;wBACtB,iBAAiB,EAAE,EAAE;wBACrB,KAAK,EAAE,EAAE;wBACT,MAAM,EAAE,KAAK;wBACb,SAAS,EAAE,IAAI;wBACf,SAAS,EAAE,IAAI;wBACf,IAAI,EAAE,CAAC;wBACP,MAAM,EAAE,EAAE;wBACV,OAAO,EAAE,EAAE;wBACX,aAAa,EAAE,CAAC;qBACjB;oBACD;wBACE,EAAE,EAAE,GAAG;wBACP,YAAY,EAAE,CAAC;wBACf,mBAAmB,EAAE,CAAC;wBACtB,iBAAiB,EAAE,EAAE;wBACrB,KAAK,EAAE,GAAG;wBACV,MAAM,EAAE,MAAM;wBACd,SAAS,EAAE,IAAI;wBACf,SAAS,EAAE,IAAI;wBACf,IAAI,EAAE,CAAC;wBACP,MAAM,EAAE,EAAE;wBACV,OAAO,EAAE,EAAE;wBACX,aAAa,EAAE,CAAC;qBACjB;oBACD;wBACE,EAAE,EAAE,GAAG;wBACP,YAAY,EAAE,CAAC;wBACf,mBAAmB,EAAE,CAAC;wBACtB,iBAAiB,EAAE,EAAE;wBACrB,KAAK,EAAE,GAAG;wBACV,MAAM,EAAE,MAAM;wBACd,SAAS,EAAE,IAAI;wBACf,SAAS,EAAE,IAAI;wBACf,IAAI,EAAE,CAAC;wBACP,MAAM,EAAE,EAAE;wBACV,OAAO,EAAE,EAAE;wBACX,aAAa,EAAE,CAAC;qBACjB;oBACD;wBACE,EAAE,EAAE,GAAG;wBACP,YAAY,EAAE,CAAC;wBACf,mBAAmB,EAAE,CAAC;wBACtB,iBAAiB,EAAE,EAAE;wBACrB,KAAK,EAAE,GAAG;wBACV,MAAM,EAAE,MAAM;wBACd,SAAS,EAAE,IAAI;wBACf,SAAS,EAAE,IAAI;wBACf,IAAI,EAAE,CAAC;wBACP,MAAM,EAAE,EAAE;wBACV,OAAO,EAAE,EAAE;wBACX,aAAa,EAAE,CAAC;qBACjB;oBACD;wBACE,EAAE,EAAE,GAAG;wBACP,YAAY,EAAE,CAAC;wBACf,mBAAmB,EAAE,CAAC;wBACtB,iBAAiB,EAAE,EAAE;wBACrB,KAAK,EAAE,EAAE;wBACT,MAAM,EAAE,MAAM;wBACd,SAAS,EAAE,IAAI;wBACf,SAAS,EAAE,IAAI;wBACf,IAAI,EAAE,CAAC;wBACP,MAAM,EAAE,EAAE;wBACV,OAAO,EAAE,EAAE;wBACX,aAAa,EAAE,CAAC;qBACjB;oBACD;wBACE,EAAE,EAAE,GAAG;wBACP,YAAY,EAAE,EAAE;wBAChB,mBAAmB,EAAE,CAAC;wBACtB,iBAAiB,EAAE,EAAE;wBACrB,KAAK,EAAE,GAAG;wBACV,MAAM,EAAE,MAAM;wBACd,SAAS,EAAE,IAAI;wBACf,SAAS,EAAE,IAAI;wBACf,IAAI,EAAE,EAAE;wBACR,MAAM,EAAE,EAAE;wBACV,OAAO,EAAE,EAAE;wBACX,aAAa,EAAE,CAAC;qBACjB;iBACF;gBACD,IAAI,EAAE,IAAI;gBACV,QAAQ,EAAE,SAAS;gBACnB,kBAAkB,EAAE,uDAAgB,CAAC,OAAO,EAAE,qBAAqB,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC;aACjG;YACD;gBACE,UAAU,EAAE,CAAC;gBACb,iBAAiB,EAAE,CAAC;gBACpB,cAAc,EAAE,KAAK;gBACrB,oBAAoB,EAAE,KAAK;gBAC3B,mBAAmB,EAAE,KAAK;gBAC1B,KAAK,EAAE,CAAC;gBACR,EAAE,EAAE,EAAE;gBACN,aAAa,EAAE,CAAC;gBAChB,UAAU,EAAE,CAAC;gBACb,SAAS,EAAE,cAAc;gBACzB,IAAI,EAAE,GAAG;gBACT,UAAU,EAAE,CAAC;gBACb,IAAI,EAAE,KAAK;gBACX,OAAO,EAAE,CAAC;gBACV,MAAM,EAAE,EAAE;gBACV,KAAK,EAAE,GAAG;gBACV,KAAK,EAAE,GAAG;gBACV,SAAS,EAAE,EAAE;gBACb,SAAS,EAAE,GAAG;gBACd,MAAM,EAAE,CAAC;gBACT,UAAU,EAAE,KAAK;gBACjB,MAAM,EAAE;oBACN;wBACE,EAAE,EAAE,GAAG;wBACP,YAAY,EAAE,CAAC;wBACf,mBAAmB,EAAE,CAAC;wBACtB,iBAAiB,EAAE,EAAE;wBACrB,KAAK,EAAE,GAAG;wBACV,MAAM,EAAE,KAAK;wBACb,SAAS,EAAE,IAAI;wBACf,SAAS,EAAE,IAAI;wBACf,IAAI,EAAE,CAAC;wBACP,MAAM,EAAE,EAAE;wBACV,OAAO,EAAE,EAAE;wBACX,aAAa,EAAE,CAAC;qBACjB;oBACD;wBACE,EAAE,EAAE,GAAG;wBACP,YAAY,EAAE,CAAC;wBACf,mBAAmB,EAAE,CAAC;wBACtB,iBAAiB,EAAE,EAAE;wBACrB,KAAK,EAAE,GAAG;wBACV,MAAM,EAAE,KAAK;wBACb,SAAS,EAAE,IAAI;wBACf,SAAS,EAAE,IAAI;wBACf,IAAI,EAAE,CAAC;wBACP,MAAM,EAAE,EAAE;wBACV,OAAO,EAAE,EAAE;wBACX,aAAa,EAAE,CAAC;qBACjB;oBACD;wBACE,EAAE,EAAE,GAAG;wBACP,YAAY,EAAE,CAAC;wBACf,mBAAmB,EAAE,CAAC;wBACtB,iBAAiB,EAAE,EAAE;wBACrB,KAAK,EAAE,GAAG;wBACV,MAAM,EAAE,MAAM;wBACd,SAAS,EAAE,IAAI;wBACf,SAAS,EAAE,IAAI;wBACf,IAAI,EAAE,CAAC;wBACP,MAAM,EAAE,EAAE;wBACV,OAAO,EAAE,EAAE;wBACX,aAAa,EAAE,CAAC;qBACjB;oBACD;wBACE,EAAE,EAAE,GAAG;wBACP,YAAY,EAAE,CAAC;wBACf,mBAAmB,EAAE,CAAC;wBACtB,iBAAiB,EAAE,EAAE;wBACrB,KAAK,EAAE,EAAE;wBACT,MAAM,EAAE,MAAM;wBACd,SAAS,EAAE,IAAI;wBACf,SAAS,EAAE,IAAI;wBACf,IAAI,EAAE,CAAC;wBACP,MAAM,EAAE,EAAE;wBACV,OAAO,EAAE,EAAE;wBACX,aAAa,EAAE,CAAC;qBACjB;oBACD;wBACE,EAAE,EAAE,GAAG;wBACP,YAAY,EAAE,CAAC;wBACf,mBAAmB,EAAE,CAAC;wBACtB,iBAAiB,EAAE,EAAE;wBACrB,KAAK,EAAE,CAAC;wBACR,MAAM,EAAE,MAAM;wBACd,SAAS,EAAE,IAAI;wBACf,SAAS,EAAE,IAAI;wBACf,IAAI,EAAE,CAAC;wBACP,MAAM,EAAE,EAAE;wBACV,OAAO,EAAE,EAAE;wBACX,aAAa,EAAE,CAAC;qBACjB;oBACD;wBACE,EAAE,EAAE,GAAG;wBACP,YAAY,EAAE,CAAC;wBACf,mBAAmB,EAAE,CAAC;wBACtB,iBAAiB,EAAE,EAAE;wBACrB,KAAK,EAAE,CAAC;wBACR,MAAM,EAAE,KAAK;wBACb,SAAS,EAAE,IAAI;wBACf,SAAS,EAAE,IAAI;wBACf,IAAI,EAAE,CAAC;wBACP,MAAM,EAAE,EAAE;wBACV,OAAO,EAAE,EAAE;wBACX,aAAa,EAAE,CAAC;qBACjB;oBACD;wBACE,EAAE,EAAE,GAAG;wBACP,YAAY,EAAE,CAAC;wBACf,mBAAmB,EAAE,CAAC;wBACtB,iBAAiB,EAAE,EAAE;wBACrB,KAAK,EAAE,GAAG;wBACV,MAAM,EAAE,MAAM;wBACd,SAAS,EAAE,IAAI;wBACf,SAAS,EAAE,IAAI;wBACf,IAAI,EAAE,CAAC;wBACP,MAAM,EAAE,EAAE;wBACV,OAAO,EAAE,EAAE;wBACX,aAAa,EAAE,CAAC;qBACjB;oBACD;wBACE,EAAE,EAAE,GAAG;wBACP,YAAY,EAAE,CAAC;wBACf,mBAAmB,EAAE,CAAC;wBACtB,iBAAiB,EAAE,EAAE;wBACrB,KAAK,EAAE,EAAE;wBACT,MAAM,EAAE,KAAK;wBACb,SAAS,EAAE,IAAI;wBACf,SAAS,EAAE,IAAI;wBACf,IAAI,EAAE,CAAC;wBACP,MAAM,EAAE,EAAE;wBACV,OAAO,EAAE,EAAE;wBACX,aAAa,EAAE,CAAC;qBACjB;oBACD;wBACE,EAAE,EAAE,GAAG;wBACP,YAAY,EAAE,EAAE;wBAChB,mBAAmB,EAAE,CAAC;wBACtB,iBAAiB,EAAE,EAAE;wBACrB,KAAK,EAAE,GAAG;wBACV,MAAM,EAAE,KAAK;wBACb,SAAS,EAAE,IAAI;wBACf,SAAS,EAAE,IAAI;wBACf,IAAI,EAAE,EAAE;wBACR,MAAM,EAAE,EAAE;wBACV,OAAO,EAAE,EAAE;wBACX,aAAa,EAAE,CAAC;qBACjB;oBACD;wBACE,EAAE,EAAE,GAAG;wBACP,YAAY,EAAE,EAAE;wBAChB,mBAAmB,EAAE,CAAC;wBACtB,iBAAiB,EAAE,EAAE;wBACrB,KAAK,EAAE,GAAG;wBACV,MAAM,EAAE,KAAK;wBACb,SAAS,EAAE,IAAI;wBACf,SAAS,EAAE,IAAI;wBACf,IAAI,EAAE,EAAE;wBACR,MAAM,EAAE,EAAE;wBACV,OAAO,EAAE,EAAE;wBACX,aAAa,EAAE,CAAC;qBACjB;oBACD;wBACE,EAAE,EAAE,GAAG;wBACP,YAAY,EAAE,EAAE;wBAChB,mBAAmB,EAAE,CAAC;wBACtB,iBAAiB,EAAE,EAAE;wBACrB,KAAK,EAAE,GAAG;wBACV,MAAM,EAAE,KAAK;wBACb,SAAS,EAAE,IAAI;wBACf,SAAS,EAAE,IAAI;wBACf,IAAI,EAAE,EAAE;wBACR,MAAM,EAAE,EAAE;wBACV,OAAO,EAAE,EAAE;wBACX,aAAa,EAAE,CAAC;qBACjB;oBACD;wBACE,EAAE,EAAE,GAAG;wBACP,YAAY,EAAE,EAAE;wBAChB,mBAAmB,EAAE,CAAC;wBACtB,iBAAiB,EAAE,EAAE;wBACrB,KAAK,EAAE,GAAG;wBACV,MAAM,EAAE,MAAM;wBACd,SAAS,EAAE,IAAI;wBACf,SAAS,EAAE,IAAI;wBACf,IAAI,EAAE,EAAE;wBACR,MAAM,EAAE,EAAE;wBACV,OAAO,EAAE,EAAE;wBACX,aAAa,EAAE,CAAC;qBACjB;oBACD;wBACE,EAAE,EAAE,GAAG;wBACP,YAAY,EAAE,EAAE;wBAChB,mBAAmB,EAAE,CAAC;wBACtB,iBAAiB,EAAE,EAAE;wBACrB,KAAK,EAAE,GAAG;wBACV,MAAM,EAAE,MAAM;wBACd,SAAS,EAAE,IAAI;wBACf,SAAS,EAAE,IAAI;wBACf,IAAI,EAAE,EAAE;wBACR,MAAM,EAAE,EAAE;wBACV,OAAO,EAAE,EAAE;wBACX,aAAa,EAAE,CAAC;qBACjB;oBACD;wBACE,EAAE,EAAE,GAAG;wBACP,YAAY,EAAE,EAAE;wBAChB,mBAAmB,EAAE,CAAC;wBACtB,iBAAiB,EAAE,EAAE;wBACrB,KAAK,EAAE,GAAG;wBACV,MAAM,EAAE,MAAM;wBACd,SAAS,EAAE,IAAI;wBACf,SAAS,EAAE,IAAI;wBACf,IAAI,EAAE,EAAE;wBACR,MAAM,EAAE,EAAE;wBACV,OAAO,EAAE,EAAE;wBACX,aAAa,EAAE,CAAC;qBACjB;oBACD;wBACE,EAAE,EAAE,GAAG;wBACP,YAAY,EAAE,EAAE;wBAChB,mBAAmB,EAAE,CAAC;wBACtB,iBAAiB,EAAE,EAAE;wBACrB,KAAK,EAAE,CAAC;wBACR,MAAM,EAAE,MAAM;wBACd,SAAS,EAAE,IAAI;wBACf,SAAS,EAAE,IAAI;wBACf,IAAI,EAAE,EAAE;wBACR,MAAM,EAAE,EAAE;wBACV,OAAO,EAAE,EAAE;wBACX,aAAa,EAAE,CAAC;qBACjB;oBACD;wBACE,EAAE,EAAE,GAAG;wBACP,YAAY,EAAE,EAAE;wBAChB,mBAAmB,EAAE,CAAC;wBACtB,iBAAiB,EAAE,EAAE;wBACrB,KAAK,EAAE,EAAE;wBACT,MAAM,EAAE,MAAM;wBACd,SAAS,EAAE,IAAI;wBACf,SAAS,EAAE,IAAI;wBACf,IAAI,EAAE,EAAE;wBACR,MAAM,EAAE,EAAE;wBACV,OAAO,EAAE,EAAE;wBACX,aAAa,EAAE,CAAC;qBACjB;oBACD;wBACE,EAAE,EAAE,GAAG;wBACP,YAAY,EAAE,EAAE;wBAChB,mBAAmB,EAAE,CAAC;wBACtB,iBAAiB,EAAE,EAAE;wBACrB,KAAK,EAAE,EAAE;wBACT,MAAM,EAAE,MAAM;wBACd,SAAS,EAAE,IAAI;wBACf,SAAS,EAAE,IAAI;wBACf,IAAI,EAAE,EAAE;wBACR,MAAM,EAAE,EAAE;wBACV,OAAO,EAAE,EAAE;wBACX,aAAa,EAAE,CAAC;qBACjB;oBACD;wBACE,EAAE,EAAE,GAAG;wBACP,YAAY,EAAE,EAAE;wBAChB,mBAAmB,EAAE,CAAC;wBACtB,iBAAiB,EAAE,EAAE;wBACrB,KAAK,EAAE,GAAG;wBACV,MAAM,EAAE,MAAM;wBACd,SAAS,EAAE,IAAI;wBACf,SAAS,EAAE,IAAI;wBACf,IAAI,EAAE,EAAE;wBACR,MAAM,EAAE,EAAE;wBACV,OAAO,EAAE,EAAE;wBACX,aAAa,EAAE,CAAC;qBACjB;oBACD;wBACE,EAAE,EAAE,GAAG;wBACP,YAAY,EAAE,EAAE;wBAChB,mBAAmB,EAAE,CAAC;wBACtB,iBAAiB,EAAE,EAAE;wBACrB,KAAK,EAAE,GAAG;wBACV,MAAM,EAAE,MAAM;wBACd,SAAS,EAAE,IAAI;wBACf,SAAS,EAAE,IAAI;wBACf,IAAI,EAAE,EAAE;wBACR,MAAM,EAAE,EAAE;wBACV,OAAO,EAAE,EAAE;wBACX,aAAa,EAAE,CAAC;qBACjB;oBACD;wBACE,EAAE,EAAE,GAAG;wBACP,YAAY,EAAE,EAAE;wBAChB,mBAAmB,EAAE,CAAC;wBACtB,iBAAiB,EAAE,EAAE;wBACrB,KAAK,EAAE,GAAG;wBACV,MAAM,EAAE,MAAM;wBACd,SAAS,EAAE,IAAI;wBACf,SAAS,EAAE,IAAI;wBACf,IAAI,EAAE,EAAE;wBACR,MAAM,EAAE,EAAE;wBACV,OAAO,EAAE,EAAE;wBACX,aAAa,EAAE,CAAC;qBACjB;oBACD;wBACE,EAAE,EAAE,GAAG;wBACP,YAAY,EAAE,EAAE;wBAChB,mBAAmB,EAAE,CAAC;wBACtB,iBAAiB,EAAE,EAAE;wBACrB,KAAK,EAAE,GAAG;wBACV,MAAM,EAAE,MAAM;wBACd,SAAS,EAAE,IAAI;wBACf,SAAS,EAAE,IAAI;wBACf,IAAI,EAAE,EAAE;wBACR,MAAM,EAAE,EAAE;wBACV,OAAO,EAAE,EAAE;wBACX,aAAa,EAAE,CAAC;qBACjB;oBACD;wBACE,EAAE,EAAE,GAAG;wBACP,YAAY,EAAE,EAAE;wBAChB,mBAAmB,EAAE,CAAC;wBACtB,iBAAiB,EAAE,EAAE;wBACrB,KAAK,EAAE,GAAG;wBACV,MAAM,EAAE,MAAM;wBACd,SAAS,EAAE,IAAI;wBACf,SAAS,EAAE,IAAI;wBACf,IAAI,EAAE,EAAE;wBACR,MAAM,EAAE,EAAE;wBACV,OAAO,EAAE,EAAE;wBACX,aAAa,EAAE,CAAC;qBACjB;oBACD;wBACE,EAAE,EAAE,GAAG;wBACP,YAAY,EAAE,CAAC;wBACf,mBAAmB,EAAE,CAAC;wBACtB,iBAAiB,EAAE,EAAE;wBACrB,KAAK,EAAE,EAAE;wBACT,MAAM,EAAE,KAAK;wBACb,SAAS,EAAE,IAAI;wBACf,SAAS,EAAE,IAAI;wBACf,IAAI,EAAE,CAAC;wBACP,MAAM,EAAE,EAAE;wBACV,OAAO,EAAE,EAAE;wBACX,aAAa,EAAE,CAAC;qBACjB;oBACD;wBACE,EAAE,EAAE,GAAG;wBACP,YAAY,EAAE,EAAE;wBAChB,mBAAmB,EAAE,CAAC;wBACtB,iBAAiB,EAAE,EAAE;wBACrB,KAAK,EAAE,EAAE;wBACT,MAAM,EAAE,MAAM;wBACd,SAAS,EAAE,IAAI;wBACf,SAAS,EAAE,IAAI;wBACf,IAAI,EAAE,EAAE;wBACR,MAAM,EAAE,EAAE;wBACV,OAAO,EAAE,EAAE;wBACX,aAAa,EAAE,CAAC;qBACjB;iBACF;gBACD,IAAI,EAAE,IAAI;gBACV,QAAQ,EAAE,SAAS;gBACnB,kBAAkB,EAAE,uDAAgB,CAAC,OAAO,EAAE,qBAAqB,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC;aACjG;YACD;gBACE,UAAU,EAAE,CAAC;gBACb,iBAAiB,EAAE,CAAC;gBACpB,cAAc,EAAE,KAAK;gBACrB,oBAAoB,EAAE,KAAK;gBAC3B,mBAAmB,EAAE,KAAK;gBAC1B,KAAK,EAAE,CAAC;gBACR,EAAE,EAAE,EAAE;gBACN,aAAa,EAAE,CAAC;gBAChB,UAAU,EAAE,CAAC;gBACb,SAAS,EAAE,IAAI;gBACf,IAAI,EAAE,CAAC;gBACP,UAAU,EAAE,CAAC;gBACb,IAAI,EAAE,YAAY;gBAClB,OAAO,EAAE,CAAC;gBACV,MAAM,EAAE,CAAC;gBACT,KAAK,EAAE,CAAC;gBACR,KAAK,EAAE,CAAC;gBACR,SAAS,EAAE,CAAC;gBACZ,SAAS,EAAE,GAAG;gBACd,MAAM,EAAE,IAAI;gBACZ,UAAU,EAAE,KAAK;gBACjB,MAAM,EAAE,IAAI;gBACZ,QAAQ,EAAE,IAAI;gBACd,kBAAkB,EAAE,uDAAgB,CAAC,OAAO,EAAE,qBAAqB,EAAE,IAAI;gBACzE,IAAI,EAAE;oBACJ;wBACE,UAAU,EAAE,CAAC;wBACb,iBAAiB,EAAE,CAAC;wBACpB,cAAc,EAAE,KAAK;wBACrB,oBAAoB,EAAE,KAAK;wBAC3B,mBAAmB,EAAE,KAAK;wBAC1B,KAAK,EAAE,CAAC;wBACR,EAAE,EAAE,EAAE;wBACN,aAAa,EAAE,CAAC;wBAChB,UAAU,EAAE,CAAC;wBACb,SAAS,EAAE,cAAc;wBACzB,IAAI,EAAE,GAAG;wBACT,UAAU,EAAE,CAAC;wBACb,IAAI,EAAE,GAAG;wBACT,OAAO,EAAE,CAAC;wBACV,MAAM,EAAE,GAAG;wBACX,KAAK,EAAE,EAAE;wBACT,KAAK,EAAE,EAAE;wBACT,SAAS,EAAE,EAAE;wBACb,SAAS,EAAE,IAAI;wBACf,MAAM,EAAE,CAAC;wBACT,UAAU,EAAE,KAAK;wBACjB,QAAQ,EAAE,IAAI;wBACd,kBAAkB,EAAE,uDAAgB,CAAC,OAAO,EAAE,qBAAqB,EAAE,IAAI;wBACzE,MAAM,EAAE;4BACN;gCACE,EAAE,EAAE,GAAG;gCACP,YAAY,EAAE,CAAC;gCACf,mBAAmB,EAAE,CAAC;gCACtB,iBAAiB,EAAE,EAAE;gCACrB,KAAK,EAAE,EAAE;gCACT,MAAM,EAAE,IAAI;gCACZ,SAAS,EAAE,IAAI;gCACf,SAAS,EAAE,IAAI;gCACf,IAAI,EAAE,EAAE;gCACR,MAAM,EAAE,GAAG;gCACX,OAAO,EAAE,EAAE;gCACX,aAAa,EAAE,CAAC;6BACjB;4BACD;gCACE,EAAE,EAAE,GAAG;gCACP,YAAY,EAAE,CAAC;gCACf,mBAAmB,EAAE,CAAC;gCACtB,iBAAiB,EAAE,EAAE;gCACrB,KAAK,EAAE,GAAG;gCACV,MAAM,EAAE,IAAI;gCACZ,SAAS,EAAE,IAAI;gCACf,SAAS,EAAE,IAAI;gCACf,IAAI,EAAE,EAAE;gCACR,MAAM,EAAE,GAAG;gCACX,OAAO,EAAE,EAAE;gCACX,aAAa,EAAE,CAAC;6BACjB;4BACD;gCACE,EAAE,EAAE,GAAG;gCACP,YAAY,EAAE,CAAC;gCACf,mBAAmB,EAAE,CAAC;gCACtB,iBAAiB,EAAE,EAAE;gCACrB,KAAK,EAAE,GAAG;gCACV,MAAM,EAAE,IAAI;gCACZ,SAAS,EAAE,IAAI;gCACf,SAAS,EAAE,IAAI;gCACf,IAAI,EAAE,EAAE;gCACR,MAAM,EAAE,GAAG;gCACX,OAAO,EAAE,EAAE;gCACX,aAAa,EAAE,CAAC;6BACjB;yBACF;wBACD,IAAI,EAAE,IAAI;qBACX;oBACD;wBACE,UAAU,EAAE,CAAC;wBACb,iBAAiB,EAAE,CAAC;wBACpB,cAAc,EAAE,KAAK;wBACrB,oBAAoB,EAAE,KAAK;wBAC3B,mBAAmB,EAAE,KAAK;wBAC1B,KAAK,EAAE,CAAC;wBACR,EAAE,EAAE,EAAE;wBACN,aAAa,EAAE,CAAC;wBAChB,UAAU,EAAE,CAAC;wBACb,SAAS,EAAE,cAAc;wBACzB,IAAI,EAAE,GAAG;wBACT,UAAU,EAAE,CAAC;wBACb,IAAI,EAAE,GAAG;wBACT,OAAO,EAAE,CAAC;wBACV,MAAM,EAAE,GAAG;wBACX,KAAK,EAAE,EAAE;wBACT,KAAK,EAAE,EAAE;wBACT,SAAS,EAAE,EAAE;wBACb,SAAS,EAAE,CAAC;wBACZ,MAAM,EAAE,CAAC;wBACT,UAAU,EAAE,KAAK;wBACjB,MAAM,EAAE;4BACN;gCACE,EAAE,EAAE,GAAG;gCACP,YAAY,EAAE,CAAC;gCACf,mBAAmB,EAAE,CAAC;gCACtB,iBAAiB,EAAE,EAAE;gCACrB,KAAK,EAAE,GAAG;gCACV,MAAM,EAAE,IAAI;gCACZ,SAAS,EAAE,IAAI;gCACf,SAAS,EAAE,IAAI;gCACf,IAAI,EAAE,EAAE;gCACR,MAAM,EAAE,GAAG;gCACX,OAAO,EAAE,EAAE;gCACX,aAAa,EAAE,CAAC;6BACjB;4BACD;gCACE,EAAE,EAAE,GAAG;gCACP,YAAY,EAAE,CAAC;gCACf,mBAAmB,EAAE,CAAC;gCACtB,iBAAiB,EAAE,EAAE;gCACrB,KAAK,EAAE,GAAG;gCACV,MAAM,EAAE,IAAI;gCACZ,SAAS,EAAE,IAAI;gCACf,SAAS,EAAE,IAAI;gCACf,IAAI,EAAE,EAAE;gCACR,MAAM,EAAE,GAAG;gCACX,OAAO,EAAE,EAAE;gCACX,aAAa,EAAE,CAAC;6BACjB;4BACD;gCACE,EAAE,EAAE,GAAG;gCACP,YAAY,EAAE,CAAC;gCACf,mBAAmB,EAAE,CAAC;gCACtB,iBAAiB,EAAE,EAAE;gCACrB,KAAK,EAAE,EAAE;gCACT,MAAM,EAAE,IAAI;gCACZ,SAAS,EAAE,IAAI;gCACf,SAAS,EAAE,IAAI;gCACf,IAAI,EAAE,EAAE;gCACR,MAAM,EAAE,GAAG;gCACX,OAAO,EAAE,EAAE;gCACX,aAAa,EAAE,CAAC;6BACjB;yBACF;wBACD,IAAI,EAAE,IAAI;wBACV,QAAQ,EAAE,IAAI;wBACd,kBAAkB,EAAE,uDAAgB,CAAC,OAAO,EAAE,qBAAqB,EAAE,IAAI;qBAC1E;oBACD;wBACE,UAAU,EAAE,CAAC;wBACb,iBAAiB,EAAE,CAAC;wBACpB,cAAc,EAAE,KAAK;wBACrB,oBAAoB,EAAE,KAAK;wBAC3B,mBAAmB,EAAE,KAAK;wBAC1B,KAAK,EAAE,CAAC;wBACR,EAAE,EAAE,EAAE;wBACN,aAAa,EAAE,CAAC;wBAChB,UAAU,EAAE,CAAC;wBACb,SAAS,EAAE,cAAc;wBACzB,IAAI,EAAE,GAAG;wBACT,UAAU,EAAE,CAAC;wBACb,IAAI,EAAE,GAAG;wBACT,OAAO,EAAE,CAAC;wBACV,MAAM,EAAE,GAAG;wBACX,KAAK,EAAE,EAAE;wBACT,KAAK,EAAE,EAAE;wBACT,SAAS,EAAE,CAAC;wBACZ,SAAS,EAAE,EAAE;wBACb,MAAM,EAAE,CAAC;wBACT,UAAU,EAAE,KAAK;wBACjB,MAAM,EAAE;4BACN;gCACE,EAAE,EAAE,GAAG;gCACP,YAAY,EAAE,EAAE;gCAChB,mBAAmB,EAAE,CAAC;gCACtB,iBAAiB,EAAE,EAAE;gCACrB,KAAK,EAAE,GAAG;gCACV,MAAM,EAAE,IAAI;gCACZ,SAAS,EAAE,IAAI;gCACf,SAAS,EAAE,IAAI;gCACf,IAAI,EAAE,EAAE;gCACR,MAAM,EAAE,GAAG;gCACX,OAAO,EAAE,EAAE;gCACX,aAAa,EAAE,CAAC;6BACjB;4BACD;gCACE,EAAE,EAAE,GAAG;gCACP,YAAY,EAAE,EAAE;gCAChB,mBAAmB,EAAE,CAAC;gCACtB,iBAAiB,EAAE,EAAE;gCACrB,KAAK,EAAE,GAAG;gCACV,MAAM,EAAE,IAAI;gCACZ,SAAS,EAAE,IAAI;gCACf,SAAS,EAAE,IAAI;gCACf,IAAI,EAAE,EAAE;gCACR,MAAM,EAAE,GAAG;gCACX,OAAO,EAAE,EAAE;gCACX,aAAa,EAAE,CAAC;6BACjB;4BACD;gCACE,EAAE,EAAE,GAAG;gCACP,YAAY,EAAE,EAAE;gCAChB,mBAAmB,EAAE,CAAC;gCACtB,iBAAiB,EAAE,EAAE;gCACrB,KAAK,EAAE,EAAE;gCACT,MAAM,EAAE,IAAI;gCACZ,SAAS,EAAE,IAAI;gCACf,SAAS,EAAE,IAAI;gCACf,IAAI,EAAE,EAAE;gCACR,MAAM,EAAE,GAAG;gCACX,OAAO,EAAE,EAAE;gCACX,aAAa,EAAE,CAAC;6BACjB;yBACF;wBACD,IAAI,EAAE,IAAI;wBACV,QAAQ,EAAE,SAAS;wBACnB,kBAAkB,EAAE,uDAAgB,CAAC,OAAO,EAAE,qBAAqB,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC;qBACjG;oBACD;wBACE,UAAU,EAAE,CAAC;wBACb,iBAAiB,EAAE,CAAC;wBACpB,cAAc,EAAE,KAAK;wBACrB,oBAAoB,EAAE,KAAK;wBAC3B,mBAAmB,EAAE,KAAK;wBAC1B,KAAK,EAAE,CAAC;wBACR,EAAE,EAAE,EAAE;wBACN,aAAa,EAAE,CAAC;wBAChB,UAAU,EAAE,CAAC;wBACb,SAAS,EAAE,cAAc;wBACzB,IAAI,EAAE,GAAG;wBACT,UAAU,EAAE,CAAC;wBACb,IAAI,EAAE,GAAG;wBACT,OAAO,EAAE,CAAC;wBACV,MAAM,EAAE,GAAG;wBACX,KAAK,EAAE,EAAE;wBACT,KAAK,EAAE,EAAE;wBACT,SAAS,EAAE,CAAC;wBACZ,SAAS,EAAE,IAAI;wBACf,MAAM,EAAE,CAAC;wBACT,UAAU,EAAE,KAAK;wBACjB,MAAM,EAAE;4BACN;gCACE,EAAE,EAAE,GAAG;gCACP,YAAY,EAAE,EAAE;gCAChB,mBAAmB,EAAE,CAAC;gCACtB,iBAAiB,EAAE,EAAE;gCACrB,KAAK,EAAE,EAAE;gCACT,MAAM,EAAE,IAAI;gCACZ,SAAS,EAAE,IAAI;gCACf,SAAS,EAAE,IAAI;gCACf,IAAI,EAAE,EAAE;gCACR,MAAM,EAAE,GAAG;gCACX,OAAO,EAAE,EAAE;gCACX,aAAa,EAAE,CAAC;6BACjB;4BACD;gCACE,EAAE,EAAE,GAAG;gCACP,YAAY,EAAE,EAAE;gCAChB,mBAAmB,EAAE,CAAC;gCACtB,iBAAiB,EAAE,EAAE;gCACrB,KAAK,EAAE,GAAG;gCACV,MAAM,EAAE,IAAI;gCACZ,SAAS,EAAE,IAAI;gCACf,SAAS,EAAE,IAAI;gCACf,IAAI,EAAE,EAAE;gCACR,MAAM,EAAE,GAAG;gCACX,OAAO,EAAE,EAAE;gCACX,aAAa,EAAE,CAAC;6BACjB;4BACD;gCACE,EAAE,EAAE,GAAG;gCACP,YAAY,EAAE,EAAE;gCAChB,mBAAmB,EAAE,CAAC;gCACtB,iBAAiB,EAAE,EAAE;gCACrB,KAAK,EAAE,GAAG;gCACV,MAAM,EAAE,IAAI;gCACZ,SAAS,EAAE,IAAI;gCACf,SAAS,EAAE,IAAI;gCACf,IAAI,EAAE,EAAE;gCACR,MAAM,EAAE,GAAG;gCACX,OAAO,EAAE,EAAE;gCACX,aAAa,EAAE,CAAC;6BACjB;yBACF;wBACD,IAAI,EAAE,IAAI;wBACV,QAAQ,EAAE,SAAS;wBACnB,kBAAkB,EAAE,uDAAgB,CAAC,OAAO,EAAE,qBAAqB,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC;qBACjG;oBACD;wBACE,UAAU,EAAE,CAAC;wBACb,iBAAiB,EAAE,CAAC;wBACpB,cAAc,EAAE,KAAK;wBACrB,oBAAoB,EAAE,KAAK;wBAC3B,mBAAmB,EAAE,KAAK;wBAC1B,KAAK,EAAE,CAAC;wBACR,EAAE,EAAE,EAAE;wBACN,aAAa,EAAE,CAAC;wBAChB,UAAU,EAAE,CAAC;wBACb,SAAS,EAAE,cAAc;wBACzB,IAAI,EAAE,GAAG;wBACT,UAAU,EAAE,CAAC;wBACb,IAAI,EAAE,GAAG;wBACT,OAAO,EAAE,CAAC;wBACV,MAAM,EAAE,GAAG;wBACX,KAAK,EAAE,EAAE;wBACT,KAAK,EAAE,EAAE;wBACT,SAAS,EAAE,CAAC;wBACZ,SAAS,EAAE,CAAC;wBACZ,MAAM,EAAE,CAAC;wBACT,UAAU,EAAE,KAAK;wBACjB,MAAM,EAAE;4BACN;gCACE,EAAE,EAAE,GAAG;gCACP,YAAY,EAAE,EAAE;gCAChB,mBAAmB,EAAE,CAAC;gCACtB,iBAAiB,EAAE,EAAE;gCACrB,KAAK,EAAE,EAAE;gCACT,MAAM,EAAE,IAAI;gCACZ,SAAS,EAAE,IAAI;gCACf,SAAS,EAAE,IAAI;gCACf,IAAI,EAAE,EAAE;gCACR,MAAM,EAAE,GAAG;gCACX,OAAO,EAAE,EAAE;gCACX,aAAa,EAAE,CAAC;6BACjB;4BACD;gCACE,EAAE,EAAE,GAAG;gCACP,YAAY,EAAE,EAAE;gCAChB,mBAAmB,EAAE,CAAC;gCACtB,iBAAiB,EAAE,EAAE;gCACrB,KAAK,EAAE,GAAG;gCACV,MAAM,EAAE,IAAI;gCACZ,SAAS,EAAE,IAAI;gCACf,SAAS,EAAE,IAAI;gCACf,IAAI,EAAE,EAAE;gCACR,MAAM,EAAE,GAAG;gCACX,OAAO,EAAE,EAAE;gCACX,aAAa,EAAE,CAAC;6BACjB;4BACD;gCACE,EAAE,EAAE,GAAG;gCACP,YAAY,EAAE,EAAE;gCAChB,mBAAmB,EAAE,CAAC;gCACtB,iBAAiB,EAAE,EAAE;gCACrB,KAAK,EAAE,GAAG;gCACV,MAAM,EAAE,IAAI;gCACZ,SAAS,EAAE,IAAI;gCACf,SAAS,EAAE,IAAI;gCACf,IAAI,EAAE,EAAE;gCACR,MAAM,EAAE,GAAG;gCACX,OAAO,EAAE,EAAE;gCACX,aAAa,EAAE,CAAC;6BACjB;yBACF;wBACD,IAAI,EAAE,IAAI;wBACV,QAAQ,EAAE,IAAI;wBACd,kBAAkB,EAAE,uDAAgB,CAAC,OAAO,EAAE,qBAAqB,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC;qBACjG;oBACD;wBACE,UAAU,EAAE,CAAC;wBACb,iBAAiB,EAAE,CAAC;wBACpB,cAAc,EAAE,KAAK;wBACrB,oBAAoB,EAAE,KAAK;wBAC3B,mBAAmB,EAAE,KAAK;wBAC1B,KAAK,EAAE,CAAC;wBACR,EAAE,EAAE,EAAE;wBACN,aAAa,EAAE,CAAC;wBAChB,UAAU,EAAE,CAAC;wBACb,SAAS,EAAE,cAAc;wBACzB,IAAI,EAAE,GAAG;wBACT,UAAU,EAAE,CAAC;wBACb,IAAI,EAAE,GAAG;wBACT,OAAO,EAAE,CAAC;wBACV,MAAM,EAAE,GAAG;wBACX,KAAK,EAAE,IAAI;wBACX,KAAK,EAAE,EAAE;wBACT,SAAS,EAAE,IAAI;wBACf,SAAS,EAAE,EAAE;wBACb,MAAM,EAAE,CAAC,CAAC;wBACV,UAAU,EAAE,KAAK;wBACjB,MAAM,EAAE;4BACN;gCACE,EAAE,EAAE,GAAG;gCACP,YAAY,EAAE,EAAE;gCAChB,mBAAmB,EAAE,CAAC;gCACtB,iBAAiB,EAAE,EAAE;gCACrB,KAAK,EAAE,IAAI;gCACX,MAAM,EAAE,IAAI;gCACZ,SAAS,EAAE,KAAK;gCAChB,SAAS,EAAE,IAAI;gCACf,IAAI,EAAE,CAAC;gCACP,MAAM,EAAE,GAAG;gCACX,OAAO,EAAE,EAAE;gCACX,aAAa,EAAE,CAAC;6BACjB;yBACF;wBACD,IAAI,EAAE,IAAI;wBACV,QAAQ,EAAE,SAAS;wBACnB,kBAAkB,EAAE,uDAAgB,CAAC,OAAO,EAAE,qBAAqB,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC;qBACjG;oBACD;wBACE,UAAU,EAAE,CAAC;wBACb,iBAAiB,EAAE,CAAC;wBACpB,cAAc,EAAE,KAAK;wBACrB,oBAAoB,EAAE,KAAK;wBAC3B,mBAAmB,EAAE,KAAK;wBAC1B,KAAK,EAAE,CAAC;wBACR,EAAE,EAAE,EAAE;wBACN,aAAa,EAAE,CAAC;wBAChB,UAAU,EAAE,CAAC;wBACb,SAAS,EAAE,cAAc;wBACzB,IAAI,EAAE,GAAG;wBACT,UAAU,EAAE,CAAC;wBACb,IAAI,EAAE,GAAG;wBACT,OAAO,EAAE,CAAC;wBACV,MAAM,EAAE,GAAG;wBACX,KAAK,EAAE,IAAI;wBACX,KAAK,EAAE,EAAE;wBACT,SAAS,EAAE,IAAI;wBACf,SAAS,EAAE,IAAI;wBACf,MAAM,EAAE,CAAC,CAAC;wBACV,UAAU,EAAE,KAAK;wBACjB,MAAM,EAAE;4BACN;gCACE,EAAE,EAAE,GAAG;gCACP,YAAY,EAAE,EAAE;gCAChB,mBAAmB,EAAE,CAAC;gCACtB,iBAAiB,EAAE,EAAE;gCACrB,KAAK,EAAE,IAAI;gCACX,MAAM,EAAE,IAAI;gCACZ,SAAS,EAAE,KAAK;gCAChB,SAAS,EAAE,IAAI;gCACf,IAAI,EAAE,CAAC;gCACP,MAAM,EAAE,GAAG;gCACX,OAAO,EAAE,EAAE;gCACX,aAAa,EAAE,CAAC;6BACjB;yBACF;wBACD,IAAI,EAAE,IAAI;wBACV,QAAQ,EAAE,SAAS;wBACnB,kBAAkB,EAAE,uDAAgB,CAAC,OAAO,EAAE,qBAAqB,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC;qBACjG;oBACD;wBACE,UAAU,EAAE,CAAC;wBACb,iBAAiB,EAAE,CAAC;wBACpB,cAAc,EAAE,KAAK;wBACrB,oBAAoB,EAAE,KAAK;wBAC3B,mBAAmB,EAAE,KAAK;wBAC1B,KAAK,EAAE,CAAC;wBACR,EAAE,EAAE,EAAE;wBACN,aAAa,EAAE,CAAC;wBAChB,UAAU,EAAE,CAAC;wBACb,SAAS,EAAE,cAAc;wBACzB,IAAI,EAAE,GAAG;wBACT,UAAU,EAAE,CAAC;wBACb,IAAI,EAAE,GAAG;wBACT,OAAO,EAAE,CAAC;wBACV,MAAM,EAAE,GAAG;wBACX,KAAK,EAAE,EAAE;wBACT,KAAK,EAAE,EAAE;wBACT,SAAS,EAAE,EAAE;wBACb,SAAS,EAAE,EAAE;wBACb,MAAM,EAAE,CAAC;wBACT,UAAU,EAAE,KAAK;wBACjB,MAAM,EAAE;4BACN;gCACE,EAAE,EAAE,GAAG;gCACP,YAAY,EAAE,CAAC;gCACf,mBAAmB,EAAE,CAAC;gCACtB,iBAAiB,EAAE,EAAE;gCACrB,KAAK,EAAE,EAAE;gCACT,MAAM,EAAE,IAAI;gCACZ,SAAS,EAAE,IAAI;gCACf,SAAS,EAAE,IAAI;gCACf,IAAI,EAAE,EAAE;gCACR,MAAM,EAAE,GAAG;gCACX,OAAO,EAAE,EAAE;gCACX,aAAa,EAAE,CAAC;6BACjB;4BACD;gCACE,EAAE,EAAE,GAAG;gCACP,YAAY,EAAE,CAAC;gCACf,mBAAmB,EAAE,CAAC;gCACtB,iBAAiB,EAAE,EAAE;gCACrB,KAAK,EAAE,GAAG;gCACV,MAAM,EAAE,IAAI;gCACZ,SAAS,EAAE,IAAI;gCACf,SAAS,EAAE,IAAI;gCACf,IAAI,EAAE,EAAE;gCACR,MAAM,EAAE,GAAG;gCACX,OAAO,EAAE,EAAE;gCACX,aAAa,EAAE,CAAC;6BACjB;4BACD;gCACE,EAAE,EAAE,GAAG;gCACP,YAAY,EAAE,CAAC;gCACf,mBAAmB,EAAE,CAAC;gCACtB,iBAAiB,EAAE,EAAE;gCACrB,KAAK,EAAE,GAAG;gCACV,MAAM,EAAE,IAAI;gCACZ,SAAS,EAAE,IAAI;gCACf,SAAS,EAAE,IAAI;gCACf,IAAI,EAAE,EAAE;gCACR,MAAM,EAAE,GAAG;gCACX,OAAO,EAAE,EAAE;gCACX,aAAa,EAAE,CAAC;6BACjB;yBACF;wBACD,IAAI,EAAE,IAAI;wBACV,QAAQ,EAAE,SAAS;wBACnB,kBAAkB,EAAE,uDAAgB,CAAC,OAAO,EAAE,qBAAqB,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC;qBACjG;iBACF;aACF;YACD;gBACE,UAAU,EAAE,CAAC;gBACb,iBAAiB,EAAE,CAAC;gBACpB,cAAc,EAAE,KAAK;gBACrB,oBAAoB,EAAE,KAAK;gBAC3B,mBAAmB,EAAE,KAAK;gBAC1B,KAAK,EAAE,CAAC;gBACR,EAAE,EAAE,EAAE;gBACN,aAAa,EAAE,CAAC;gBAChB,UAAU,EAAE,CAAC;gBACb,SAAS,EAAE,IAAI;gBACf,IAAI,EAAE,CAAC;gBACP,UAAU,EAAE,CAAC;gBACb,IAAI,EAAE,YAAY;gBAClB,OAAO,EAAE,CAAC;gBACV,MAAM,EAAE,CAAC;gBACT,KAAK,EAAE,CAAC;gBACR,KAAK,EAAE,CAAC;gBACR,SAAS,EAAE,GAAG;gBACd,SAAS,EAAE,GAAG;gBACd,MAAM,EAAE,IAAI;gBACZ,UAAU,EAAE,KAAK;gBACjB,MAAM,EAAE,IAAI;gBACZ,QAAQ,EAAE,IAAI;gBACd,kBAAkB,EAAE,uDAAgB,CAAC,OAAO,EAAE,qBAAqB,EAAE,IAAI;gBACzE,IAAI,EAAE;oBACJ;wBACE,UAAU,EAAE,CAAC;wBACb,iBAAiB,EAAE,CAAC;wBACpB,cAAc,EAAE,KAAK;wBACrB,oBAAoB,EAAE,KAAK;wBAC3B,mBAAmB,EAAE,KAAK;wBAC1B,KAAK,EAAE,CAAC;wBACR,EAAE,EAAE,EAAE;wBACN,aAAa,EAAE,CAAC;wBAChB,UAAU,EAAE,CAAC;wBACb,SAAS,EAAE,cAAc;wBACzB,IAAI,EAAE,GAAG;wBACT,UAAU,EAAE,CAAC;wBACb,IAAI,EAAE,IAAI;wBACV,OAAO,EAAE,CAAC;wBACV,MAAM,EAAE,GAAG;wBACX,KAAK,EAAE,EAAE;wBACT,KAAK,EAAE,EAAE;wBACT,SAAS,EAAE,EAAE;wBACb,SAAS,EAAE,EAAE;wBACb,MAAM,EAAE,CAAC,CAAC;wBACV,UAAU,EAAE,KAAK;wBACjB,MAAM,EAAE;4BACN;gCACE,EAAE,EAAE,GAAG;gCACP,YAAY,EAAE,EAAE;gCAChB,mBAAmB,EAAE,CAAC;gCACtB,iBAAiB,EAAE,EAAE;gCACrB,KAAK,EAAE,CAAC;gCACR,MAAM,EAAE,CAAC;gCACT,SAAS,EAAE,IAAI;gCACf,SAAS,EAAE,IAAI;gCACf,IAAI,EAAE,EAAE;gCACR,MAAM,EAAE,GAAG;gCACX,OAAO,EAAE,EAAE;gCACX,aAAa,EAAE,CAAC;6BACjB;yBACF;wBACD,IAAI,EAAE,IAAI;wBACV,QAAQ,EAAE,SAAS;wBACnB,kBAAkB,EAAE,uDAAgB,CAAC,OAAO,EAAE,qBAAqB,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC;qBACjG;oBACD;wBACE,UAAU,EAAE,CAAC;wBACb,iBAAiB,EAAE,CAAC;wBACpB,cAAc,EAAE,KAAK;wBACrB,oBAAoB,EAAE,KAAK;wBAC3B,mBAAmB,EAAE,KAAK;wBAC1B,KAAK,EAAE,CAAC;wBACR,EAAE,EAAE,EAAE;wBACN,aAAa,EAAE,CAAC;wBAChB,UAAU,EAAE,CAAC;wBACb,SAAS,EAAE,cAAc;wBACzB,IAAI,EAAE,GAAG;wBACT,UAAU,EAAE,CAAC;wBACb,IAAI,EAAE,IAAI;wBACV,OAAO,EAAE,CAAC;wBACV,MAAM,EAAE,GAAG;wBACX,KAAK,EAAE,KAAK;wBACZ,KAAK,EAAE,EAAE;wBACT,SAAS,EAAE,IAAI;wBACf,SAAS,EAAE,OAAO;wBAClB,MAAM,EAAE,CAAC,CAAC;wBACV,UAAU,EAAE,KAAK;wBACjB,MAAM,EAAE;4BACN;gCACE,EAAE,EAAE,GAAG;gCACP,YAAY,EAAE,EAAE;gCAChB,mBAAmB,EAAE,CAAC;gCACtB,iBAAiB,EAAE,EAAE;gCACrB,KAAK,EAAE,IAAI;gCACX,MAAM,EAAE,IAAI;gCACZ,SAAS,EAAE,MAAM;gCACjB,SAAS,EAAE,EAAE;gCACb,IAAI,EAAE,EAAE;gCACR,MAAM,EAAE,GAAG;gCACX,OAAO,EAAE,EAAE;gCACX,aAAa,EAAE,CAAC;6BACjB;yBACF;wBACD,IAAI,EAAE,IAAI;wBACV,QAAQ,EAAE,SAAS;wBACnB,kBAAkB,EAAE,uDAAgB,CAAC,OAAO,EAAE,qBAAqB,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC;qBACjG;oBACD;wBACE,UAAU,EAAE,CAAC;wBACb,iBAAiB,EAAE,CAAC;wBACpB,cAAc,EAAE,KAAK;wBACrB,oBAAoB,EAAE,KAAK;wBAC3B,mBAAmB,EAAE,KAAK;wBAC1B,KAAK,EAAE,CAAC;wBACR,EAAE,EAAE,EAAE;wBACN,aAAa,EAAE,CAAC;wBAChB,UAAU,EAAE,CAAC;wBACb,SAAS,EAAE,cAAc;wBACzB,IAAI,EAAE,GAAG;wBACT,UAAU,EAAE,CAAC;wBACb,IAAI,EAAE,IAAI;wBACV,OAAO,EAAE,CAAC;wBACV,MAAM,EAAE,GAAG;wBACX,KAAK,EAAE,KAAK;wBACZ,KAAK,EAAE,EAAE;wBACT,SAAS,EAAE,IAAI;wBACf,SAAS,EAAE,OAAO;wBAClB,MAAM,EAAE,CAAC,CAAC;wBACV,UAAU,EAAE,KAAK;wBACjB,MAAM,EAAE;4BACN;gCACE,EAAE,EAAE,GAAG;gCACP,YAAY,EAAE,EAAE;gCAChB,mBAAmB,EAAE,CAAC;gCACtB,iBAAiB,EAAE,EAAE;gCACrB,KAAK,EAAE,IAAI;gCACX,MAAM,EAAE,IAAI;gCACZ,SAAS,EAAE,MAAM;gCACjB,SAAS,EAAE,EAAE;gCACb,IAAI,EAAE,EAAE;gCACR,MAAM,EAAE,GAAG;gCACX,OAAO,EAAE,EAAE;gCACX,aAAa,EAAE,CAAC;6BACjB;yBACF;wBACD,IAAI,EAAE,IAAI;wBACV,QAAQ,EAAE,SAAS;wBACnB,kBAAkB,EAAE,uDAAgB,CAAC,OAAO,EAAE,qBAAqB,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC;qBACjG;oBACD;wBACE,UAAU,EAAE,CAAC;wBACb,iBAAiB,EAAE,CAAC;wBACpB,cAAc,EAAE,KAAK;wBACrB,oBAAoB,EAAE,KAAK;wBAC3B,mBAAmB,EAAE,KAAK;wBAC1B,KAAK,EAAE,CAAC;wBACR,EAAE,EAAE,EAAE;wBACN,aAAa,EAAE,CAAC;wBAChB,UAAU,EAAE,CAAC;wBACb,SAAS,EAAE,cAAc;wBACzB,IAAI,EAAE,GAAG;wBACT,UAAU,EAAE,CAAC;wBACb,IAAI,EAAE,IAAI;wBACV,OAAO,EAAE,CAAC;wBACV,MAAM,EAAE,GAAG;wBACX,KAAK,EAAE,KAAK;wBACZ,KAAK,EAAE,EAAE;wBACT,SAAS,EAAE,IAAI;wBACf,SAAS,EAAE,OAAO;wBAClB,MAAM,EAAE,CAAC,CAAC;wBACV,UAAU,EAAE,KAAK;wBACjB,MAAM,EAAE;4BACN;gCACE,EAAE,EAAE,GAAG;gCACP,YAAY,EAAE,EAAE;gCAChB,mBAAmB,EAAE,CAAC;gCACtB,iBAAiB,EAAE,EAAE;gCACrB,KAAK,EAAE,IAAI;gCACX,MAAM,EAAE,IAAI;gCACZ,SAAS,EAAE,OAAO;gCAClB,SAAS,EAAE,CAAC;gCACZ,IAAI,EAAE,EAAE;gCACR,MAAM,EAAE,GAAG;gCACX,OAAO,EAAE,EAAE;gCACX,aAAa,EAAE,CAAC;6BACjB;yBACF;wBACD,IAAI,EAAE,IAAI;wBACV,QAAQ,EAAE,SAAS;wBACnB,kBAAkB,EAAE,uDAAgB,CAAC,OAAO,EAAE,qBAAqB,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC;qBACjG;oBACD;wBACE,UAAU,EAAE,CAAC;wBACb,iBAAiB,EAAE,CAAC;wBACpB,cAAc,EAAE,KAAK;wBACrB,oBAAoB,EAAE,KAAK;wBAC3B,mBAAmB,EAAE,KAAK;wBAC1B,KAAK,EAAE,CAAC;wBACR,EAAE,EAAE,EAAE;wBACN,aAAa,EAAE,CAAC;wBAChB,UAAU,EAAE,CAAC;wBACb,SAAS,EAAE,cAAc;wBACzB,IAAI,EAAE,GAAG;wBACT,UAAU,EAAE,CAAC;wBACb,IAAI,EAAE,IAAI;wBACV,OAAO,EAAE,CAAC;wBACV,MAAM,EAAE,GAAG;wBACX,KAAK,EAAE,KAAK;wBACZ,KAAK,EAAE,EAAE;wBACT,SAAS,EAAE,IAAI;wBACf,SAAS,EAAE,IAAI;wBACf,MAAM,EAAE,CAAC,CAAC;wBACV,UAAU,EAAE,KAAK;wBACjB,MAAM,EAAE;4BACN;gCACE,EAAE,EAAE,GAAG;gCACP,YAAY,EAAE,EAAE;gCAChB,mBAAmB,EAAE,CAAC;gCACtB,iBAAiB,EAAE,EAAE;gCACrB,KAAK,EAAE,IAAI;gCACX,MAAM,EAAE,IAAI;gCACZ,SAAS,EAAE,OAAO;gCAClB,SAAS,EAAE,EAAE;gCACb,IAAI,EAAE,EAAE;gCACR,MAAM,EAAE,GAAG;gCACX,OAAO,EAAE,EAAE;gCACX,aAAa,EAAE,CAAC;6BACjB;yBACF;wBACD,IAAI,EAAE,IAAI;wBACV,QAAQ,EAAE,SAAS;wBACnB,kBAAkB,EAAE,uDAAgB,CAAC,OAAO,EAAE,qBAAqB,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC;qBACjG;oBACD;wBACE,UAAU,EAAE,CAAC;wBACb,iBAAiB,EAAE,CAAC;wBACpB,cAAc,EAAE,KAAK;wBACrB,oBAAoB,EAAE,KAAK;wBAC3B,mBAAmB,EAAE,KAAK;wBAC1B,KAAK,EAAE,CAAC;wBACR,EAAE,EAAE,EAAE;wBACN,aAAa,EAAE,CAAC;wBAChB,UAAU,EAAE,CAAC;wBACb,SAAS,EAAE,cAAc;wBACzB,IAAI,EAAE,GAAG;wBACT,UAAU,EAAE,CAAC;wBACb,IAAI,EAAE,IAAI;wBACV,OAAO,EAAE,CAAC;wBACV,MAAM,EAAE,GAAG;wBACX,KAAK,EAAE,KAAK;wBACZ,KAAK,EAAE,EAAE;wBACT,SAAS,EAAE,IAAI;wBACf,SAAS,EAAE,OAAO;wBAClB,MAAM,EAAE,CAAC,CAAC;wBACV,UAAU,EAAE,KAAK;wBACjB,MAAM,EAAE;4BACN;gCACE,EAAE,EAAE,GAAG;gCACP,YAAY,EAAE,EAAE;gCAChB,mBAAmB,EAAE,CAAC;gCACtB,iBAAiB,EAAE,EAAE;gCACrB,KAAK,EAAE,IAAI;gCACX,MAAM,EAAE,IAAI;gCACZ,SAAS,EAAE,MAAM;gCACjB,SAAS,EAAE,EAAE;gCACb,IAAI,EAAE,EAAE;gCACR,MAAM,EAAE,GAAG;gCACX,OAAO,EAAE,EAAE;gCACX,aAAa,EAAE,CAAC;6BACjB;yBACF;wBACD,IAAI,EAAE,IAAI;wBACV,QAAQ,EAAE,SAAS;wBACnB,kBAAkB,EAAE,uDAAgB,CAAC,OAAO,EAAE,qBAAqB,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC;qBACjG;oBACD;wBACE,UAAU,EAAE,CAAC;wBACb,iBAAiB,EAAE,CAAC;wBACpB,cAAc,EAAE,KAAK;wBACrB,oBAAoB,EAAE,KAAK;wBAC3B,mBAAmB,EAAE,KAAK;wBAC1B,KAAK,EAAE,CAAC;wBACR,EAAE,EAAE,EAAE;wBACN,aAAa,EAAE,CAAC;wBAChB,UAAU,EAAE,CAAC;wBACb,SAAS,EAAE,cAAc;wBACzB,IAAI,EAAE,GAAG;wBACT,UAAU,EAAE,CAAC;wBACb,IAAI,EAAE,IAAI;wBACV,OAAO,EAAE,CAAC;wBACV,MAAM,EAAE,GAAG;wBACX,KAAK,EAAE,KAAK;wBACZ,KAAK,EAAE,EAAE;wBACT,SAAS,EAAE,IAAI;wBACf,SAAS,EAAE,QAAQ;wBACnB,MAAM,EAAE,CAAC,CAAC;wBACV,UAAU,EAAE,KAAK;wBACjB,MAAM,EAAE;4BACN;gCACE,EAAE,EAAE,GAAG;gCACP,YAAY,EAAE,EAAE;gCAChB,mBAAmB,EAAE,CAAC;gCACtB,iBAAiB,EAAE,EAAE;gCACrB,KAAK,EAAE,IAAI;gCACX,MAAM,EAAE,IAAI;gCACZ,SAAS,EAAE,OAAO;gCAClB,SAAS,EAAE,EAAE;gCACb,IAAI,EAAE,EAAE;gCACR,MAAM,EAAE,GAAG;gCACX,OAAO,EAAE,EAAE;gCACX,aAAa,EAAE,CAAC;6BACjB;yBACF;wBACD,IAAI,EAAE,IAAI;wBACV,QAAQ,EAAE,SAAS;wBACnB,kBAAkB,EAAE,uDAAgB,CAAC,OAAO,EAAE,qBAAqB,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC;qBACjG;oBACD;wBACE,UAAU,EAAE,CAAC;wBACb,iBAAiB,EAAE,CAAC;wBACpB,cAAc,EAAE,KAAK;wBACrB,oBAAoB,EAAE,KAAK;wBAC3B,mBAAmB,EAAE,KAAK;wBAC1B,KAAK,EAAE,CAAC;wBACR,EAAE,EAAE,EAAE;wBACN,aAAa,EAAE,CAAC;wBAChB,UAAU,EAAE,CAAC;wBACb,SAAS,EAAE,cAAc;wBACzB,IAAI,EAAE,GAAG;wBACT,UAAU,EAAE,CAAC;wBACb,IAAI,EAAE,IAAI;wBACV,OAAO,EAAE,CAAC;wBACV,MAAM,EAAE,GAAG;wBACX,KAAK,EAAE,KAAK;wBACZ,KAAK,EAAE,EAAE;wBACT,SAAS,EAAE,IAAI;wBACf,SAAS,EAAE,OAAO;wBAClB,MAAM,EAAE,CAAC,CAAC;wBACV,UAAU,EAAE,KAAK;wBACjB,MAAM,EAAE;4BACN;gCACE,EAAE,EAAE,GAAG;gCACP,YAAY,EAAE,EAAE;gCAChB,mBAAmB,EAAE,CAAC;gCACtB,iBAAiB,EAAE,EAAE;gCACrB,KAAK,EAAE,IAAI;gCACX,MAAM,EAAE,IAAI;gCACZ,SAAS,EAAE,OAAO;gCAClB,SAAS,EAAE,CAAC;gCACZ,IAAI,EAAE,EAAE;gCACR,MAAM,EAAE,GAAG;gCACX,OAAO,EAAE,EAAE;gCACX,aAAa,EAAE,CAAC;6BACjB;yBACF;wBACD,IAAI,EAAE,IAAI;wBACV,QAAQ,EAAE,SAAS;wBACnB,kBAAkB,EAAE,uDAAgB,CAAC,OAAO,EAAE,qBAAqB,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC;qBACjG;oBACD;wBACE,UAAU,EAAE,CAAC;wBACb,iBAAiB,EAAE,CAAC;wBACpB,cAAc,EAAE,KAAK;wBACrB,oBAAoB,EAAE,KAAK;wBAC3B,mBAAmB,EAAE,KAAK;wBAC1B,KAAK,EAAE,CAAC;wBACR,EAAE,EAAE,EAAE;wBACN,aAAa,EAAE,CAAC;wBAChB,UAAU,EAAE,CAAC;wBACb,SAAS,EAAE,cAAc;wBACzB,IAAI,EAAE,GAAG;wBACT,UAAU,EAAE,CAAC;wBACb,IAAI,EAAE,IAAI;wBACV,OAAO,EAAE,CAAC;wBACV,MAAM,EAAE,GAAG;wBACX,KAAK,EAAE,EAAE;wBACT,KAAK,EAAE,EAAE;wBACT,SAAS,EAAE,EAAE;wBACb,SAAS,EAAE,CAAC;wBACZ,MAAM,EAAE,CAAC,CAAC;wBACV,UAAU,EAAE,KAAK;wBACjB,MAAM,EAAE;4BACN;gCACE,EAAE,EAAE,GAAG;gCACP,YAAY,EAAE,EAAE;gCAChB,mBAAmB,EAAE,CAAC;gCACtB,iBAAiB,EAAE,EAAE;gCACrB,KAAK,EAAE,GAAG;gCACV,MAAM,EAAE,CAAC;gCACT,SAAS,EAAE,IAAI;gCACf,SAAS,EAAE,IAAI;gCACf,IAAI,EAAE,EAAE;gCACR,MAAM,EAAE,GAAG;gCACX,OAAO,EAAE,EAAE;gCACX,aAAa,EAAE,CAAC;6BACjB;yBACF;wBACD,IAAI,EAAE,IAAI;wBACV,QAAQ,EAAE,SAAS;wBACnB,kBAAkB,EAAE,uDAAgB,CAAC,OAAO,EAAE,qBAAqB,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC;qBACjG;oBACD;wBACE,UAAU,EAAE,CAAC;wBACb,iBAAiB,EAAE,CAAC;wBACpB,cAAc,EAAE,KAAK;wBACrB,oBAAoB,EAAE,KAAK;wBAC3B,mBAAmB,EAAE,KAAK;wBAC1B,KAAK,EAAE,CAAC;wBACR,EAAE,EAAE,EAAE;wBACN,aAAa,EAAE,CAAC;wBAChB,UAAU,EAAE,CAAC;wBACb,SAAS,EAAE,cAAc;wBACzB,IAAI,EAAE,GAAG;wBACT,UAAU,EAAE,CAAC;wBACb,IAAI,EAAE,IAAI;wBACV,OAAO,EAAE,CAAC;wBACV,MAAM,EAAE,GAAG;wBACX,KAAK,EAAE,KAAK;wBACZ,KAAK,EAAE,EAAE;wBACT,SAAS,EAAE,IAAI;wBACf,SAAS,EAAE,IAAI;wBACf,MAAM,EAAE,CAAC,CAAC;wBACV,UAAU,EAAE,KAAK;wBACjB,MAAM,EAAE;4BACN;gCACE,EAAE,EAAE,GAAG;gCACP,YAAY,EAAE,EAAE;gCAChB,mBAAmB,EAAE,CAAC;gCACtB,iBAAiB,EAAE,EAAE;gCACrB,KAAK,EAAE,IAAI;gCACX,MAAM,EAAE,IAAI;gCACZ,SAAS,EAAE,OAAO;gCAClB,SAAS,EAAE,EAAE;gCACb,IAAI,EAAE,EAAE;gCACR,MAAM,EAAE,GAAG;gCACX,OAAO,EAAE,EAAE;gCACX,aAAa,EAAE,CAAC;6BACjB;yBACF;wBACD,IAAI,EAAE,IAAI;wBACV,QAAQ,EAAE,SAAS;wBACnB,kBAAkB,EAAE,uDAAgB,CAAC,OAAO,EAAE,qBAAqB,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC;qBACjG;oBACD;wBACE,UAAU,EAAE,CAAC;wBACb,iBAAiB,EAAE,CAAC;wBACpB,cAAc,EAAE,KAAK;wBACrB,oBAAoB,EAAE,KAAK;wBAC3B,mBAAmB,EAAE,KAAK;wBAC1B,KAAK,EAAE,CAAC;wBACR,EAAE,EAAE,EAAE;wBACN,aAAa,EAAE,CAAC;wBAChB,UAAU,EAAE,CAAC;wBACb,SAAS,EAAE,cAAc;wBACzB,IAAI,EAAE,GAAG;wBACT,UAAU,EAAE,CAAC;wBACb,IAAI,EAAE,IAAI;wBACV,OAAO,EAAE,CAAC;wBACV,MAAM,EAAE,GAAG;wBACX,KAAK,EAAE,EAAE;wBACT,KAAK,EAAE,EAAE;wBACT,SAAS,EAAE,CAAC;wBACZ,SAAS,EAAE,CAAC;wBACZ,MAAM,EAAE,CAAC;wBACT,UAAU,EAAE,KAAK;wBACjB,MAAM,EAAE;4BACN;gCACE,EAAE,EAAE,GAAG;gCACP,YAAY,EAAE,EAAE;gCAChB,mBAAmB,EAAE,CAAC;gCACtB,iBAAiB,EAAE,EAAE;gCACrB,KAAK,EAAE,EAAE;gCACT,MAAM,EAAE,IAAI;gCACZ,SAAS,EAAE,IAAI;gCACf,SAAS,EAAE,IAAI;gCACf,IAAI,EAAE,CAAC;gCACP,MAAM,EAAE,GAAG;gCACX,OAAO,EAAE,EAAE;gCACX,aAAa,EAAE,CAAC;6BACjB;4BACD;gCACE,EAAE,EAAE,GAAG;gCACP,YAAY,EAAE,EAAE;gCAChB,mBAAmB,EAAE,CAAC;gCACtB,iBAAiB,EAAE,EAAE;gCACrB,KAAK,EAAE,GAAG;gCACV,MAAM,EAAE,IAAI;gCACZ,SAAS,EAAE,IAAI;gCACf,SAAS,EAAE,IAAI;gCACf,IAAI,EAAE,CAAC;gCACP,MAAM,EAAE,GAAG;gCACX,OAAO,EAAE,EAAE;gCACX,aAAa,EAAE,CAAC;6BACjB;4BACD;gCACE,EAAE,EAAE,GAAG;gCACP,YAAY,EAAE,EAAE;gCAChB,mBAAmB,EAAE,CAAC;gCACtB,iBAAiB,EAAE,EAAE;gCACrB,KAAK,EAAE,GAAG;gCACV,MAAM,EAAE,IAAI;gCACZ,SAAS,EAAE,IAAI;gCACf,SAAS,EAAE,IAAI;gCACf,IAAI,EAAE,CAAC;gCACP,MAAM,EAAE,GAAG;gCACX,OAAO,EAAE,EAAE;gCACX,aAAa,EAAE,CAAC;6BACjB;yBACF;wBACD,IAAI,EAAE,IAAI;wBACV,QAAQ,EAAE,SAAS;wBACnB,kBAAkB,EAAE,uDAAgB,CAAC,OAAO,EAAE,qBAAqB,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC;qBACjG;oBACD;wBACE,UAAU,EAAE,CAAC;wBACb,iBAAiB,EAAE,CAAC;wBACpB,cAAc,EAAE,KAAK;wBACrB,oBAAoB,EAAE,KAAK;wBAC3B,mBAAmB,EAAE,KAAK;wBAC1B,KAAK,EAAE,CAAC;wBACR,EAAE,EAAE,EAAE;wBACN,aAAa,EAAE,CAAC;wBAChB,UAAU,EAAE,CAAC;wBACb,SAAS,EAAE,cAAc;wBACzB,IAAI,EAAE,GAAG;wBACT,UAAU,EAAE,CAAC;wBACb,IAAI,EAAE,IAAI;wBACV,OAAO,EAAE,CAAC;wBACV,MAAM,EAAE,GAAG;wBACX,KAAK,EAAE,EAAE;wBACT,KAAK,EAAE,EAAE;wBACT,SAAS,EAAE,CAAC;wBACZ,SAAS,EAAE,EAAE;wBACb,MAAM,EAAE,CAAC;wBACT,UAAU,EAAE,KAAK;wBACjB,MAAM,EAAE;4BACN;gCACE,EAAE,EAAE,GAAG;gCACP,YAAY,EAAE,EAAE;gCAChB,mBAAmB,EAAE,CAAC;gCACtB,iBAAiB,EAAE,EAAE;gCACrB,KAAK,EAAE,GAAG;gCACV,MAAM,EAAE,IAAI;gCACZ,SAAS,EAAE,IAAI;gCACf,SAAS,EAAE,IAAI;gCACf,IAAI,EAAE,CAAC;gCACP,MAAM,EAAE,GAAG;gCACX,OAAO,EAAE,EAAE;gCACX,aAAa,EAAE,CAAC;6BACjB;4BACD;gCACE,EAAE,EAAE,GAAG;gCACP,YAAY,EAAE,EAAE;gCAChB,mBAAmB,EAAE,CAAC;gCACtB,iBAAiB,EAAE,EAAE;gCACrB,KAAK,EAAE,GAAG;gCACV,MAAM,EAAE,IAAI;gCACZ,SAAS,EAAE,IAAI;gCACf,SAAS,EAAE,IAAI;gCACf,IAAI,EAAE,CAAC;gCACP,MAAM,EAAE,GAAG;gCACX,OAAO,EAAE,EAAE;gCACX,aAAa,EAAE,CAAC;6BACjB;4BACD;gCACE,EAAE,EAAE,GAAG;gCACP,YAAY,EAAE,CAAC;gCACf,mBAAmB,EAAE,CAAC;gCACtB,iBAAiB,EAAE,EAAE;gCACrB,KAAK,EAAE,EAAE;gCACT,MAAM,EAAE,IAAI;gCACZ,SAAS,EAAE,IAAI;gCACf,SAAS,EAAE,IAAI;gCACf,IAAI,EAAE,CAAC;gCACP,MAAM,EAAE,GAAG;gCACX,OAAO,EAAE,EAAE;gCACX,aAAa,EAAE,CAAC;6BACjB;yBACF;wBACD,IAAI,EAAE,IAAI;wBACV,QAAQ,EAAE,SAAS;wBACnB,kBAAkB,EAAE,uDAAgB,CAAC,OAAO,EAAE,qBAAqB,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC;qBACjG;oBACD;wBACE,UAAU,EAAE,CAAC;wBACb,iBAAiB,EAAE,CAAC;wBACpB,cAAc,EAAE,KAAK;wBACrB,oBAAoB,EAAE,KAAK;wBAC3B,mBAAmB,EAAE,KAAK;wBAC1B,KAAK,EAAE,CAAC;wBACR,EAAE,EAAE,EAAE;wBACN,aAAa,EAAE,CAAC;wBAChB,UAAU,EAAE,CAAC;wBACb,SAAS,EAAE,cAAc;wBACzB,IAAI,EAAE,GAAG;wBACT,UAAU,EAAE,CAAC;wBACb,IAAI,EAAE,IAAI;wBACV,OAAO,EAAE,CAAC;wBACV,MAAM,EAAE,GAAG;wBACX,KAAK,EAAE,EAAE;wBACT,KAAK,EAAE,EAAE;wBACT,SAAS,EAAE,CAAC;wBACZ,SAAS,EAAE,EAAE;wBACb,MAAM,EAAE,CAAC;wBACT,UAAU,EAAE,KAAK;wBACjB,MAAM,EAAE;4BACN;gCACE,EAAE,EAAE,GAAG;gCACP,YAAY,EAAE,CAAC;gCACf,mBAAmB,EAAE,CAAC;gCACtB,iBAAiB,EAAE,EAAE;gCACrB,KAAK,EAAE,GAAG;gCACV,MAAM,EAAE,IAAI;gCACZ,SAAS,EAAE,IAAI;gCACf,SAAS,EAAE,IAAI;gCACf,IAAI,EAAE,CAAC;gCACP,MAAM,EAAE,GAAG;gCACX,OAAO,EAAE,EAAE;gCACX,aAAa,EAAE,CAAC;6BACjB;4BACD;gCACE,EAAE,EAAE,GAAG;gCACP,YAAY,EAAE,CAAC;gCACf,mBAAmB,EAAE,CAAC;gCACtB,iBAAiB,EAAE,EAAE;gCACrB,KAAK,EAAE,GAAG;gCACV,MAAM,EAAE,IAAI;gCACZ,SAAS,EAAE,IAAI;gCACf,SAAS,EAAE,IAAI;gCACf,IAAI,EAAE,CAAC;gCACP,MAAM,EAAE,GAAG;gCACX,OAAO,EAAE,EAAE;gCACX,aAAa,EAAE,CAAC;6BACjB;4BACD;gCACE,EAAE,EAAE,GAAG;gCACP,YAAY,EAAE,CAAC;gCACf,mBAAmB,EAAE,CAAC;gCACtB,iBAAiB,EAAE,EAAE;gCACrB,KAAK,EAAE,EAAE;gCACT,MAAM,EAAE,IAAI;gCACZ,SAAS,EAAE,IAAI;gCACf,SAAS,EAAE,IAAI;gCACf,IAAI,EAAE,CAAC;gCACP,MAAM,EAAE,GAAG;gCACX,OAAO,EAAE,EAAE;gCACX,aAAa,EAAE,CAAC;6BACjB;yBACF;wBACD,IAAI,EAAE,IAAI;wBACV,QAAQ,EAAE,SAAS;wBACnB,kBAAkB,EAAE,uDAAgB,CAAC,OAAO,EAAE,qBAAqB,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC;qBACjG;oBACD;wBACE,UAAU,EAAE,CAAC;wBACb,iBAAiB,EAAE,CAAC;wBACpB,cAAc,EAAE,KAAK;wBACrB,oBAAoB,EAAE,KAAK;wBAC3B,mBAAmB,EAAE,KAAK;wBAC1B,KAAK,EAAE,CAAC;wBACR,EAAE,EAAE,EAAE;wBACN,aAAa,EAAE,CAAC;wBAChB,UAAU,EAAE,CAAC;wBACb,SAAS,EAAE,cAAc;wBACzB,IAAI,EAAE,GAAG;wBACT,UAAU,EAAE,CAAC;wBACb,IAAI,EAAE,IAAI;wBACV,OAAO,EAAE,CAAC;wBACV,MAAM,EAAE,GAAG;wBACX,KAAK,EAAE,EAAE;wBACT,KAAK,EAAE,EAAE;wBACT,SAAS,EAAE,EAAE;wBACb,SAAS,EAAE,CAAC;wBACZ,MAAM,EAAE,CAAC;wBACT,UAAU,EAAE,KAAK;wBACjB,MAAM,EAAE;4BACN;gCACE,EAAE,EAAE,GAAG;gCACP,YAAY,EAAE,CAAC;gCACf,mBAAmB,EAAE,CAAC;gCACtB,iBAAiB,EAAE,EAAE;gCACrB,KAAK,EAAE,EAAE;gCACT,MAAM,EAAE,IAAI;gCACZ,SAAS,EAAE,IAAI;gCACf,SAAS,EAAE,IAAI;gCACf,IAAI,EAAE,CAAC;gCACP,MAAM,EAAE,GAAG;gCACX,OAAO,EAAE,EAAE;gCACX,aAAa,EAAE,CAAC;6BACjB;4BACD;gCACE,EAAE,EAAE,GAAG;gCACP,YAAY,EAAE,CAAC;gCACf,mBAAmB,EAAE,CAAC;gCACtB,iBAAiB,EAAE,EAAE;gCACrB,KAAK,EAAE,GAAG;gCACV,MAAM,EAAE,IAAI;gCACZ,SAAS,EAAE,IAAI;gCACf,SAAS,EAAE,IAAI;gCACf,IAAI,EAAE,CAAC;gCACP,MAAM,EAAE,GAAG;gCACX,OAAO,EAAE,EAAE;gCACX,aAAa,EAAE,CAAC;6BACjB;4BACD;gCACE,EAAE,EAAE,GAAG;gCACP,YAAY,EAAE,CAAC;gCACf,mBAAmB,EAAE,CAAC;gCACtB,iBAAiB,EAAE,EAAE;gCACrB,KAAK,EAAE,GAAG;gCACV,MAAM,EAAE,IAAI;gCACZ,SAAS,EAAE,IAAI;gCACf,SAAS,EAAE,IAAI;gCACf,IAAI,EAAE,CAAC;gCACP,MAAM,EAAE,GAAG;gCACX,OAAO,EAAE,EAAE;gCACX,aAAa,EAAE,CAAC;6BACjB;yBACF;wBACD,IAAI,EAAE,IAAI;wBACV,QAAQ,EAAE,SAAS;wBACnB,kBAAkB,EAAE,uDAAgB,CAAC,OAAO,EAAE,qBAAqB,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC;qBACjG;oBACD;wBACE,UAAU,EAAE,CAAC;wBACb,iBAAiB,EAAE,CAAC;wBACpB,cAAc,EAAE,KAAK;wBACrB,oBAAoB,EAAE,KAAK;wBAC3B,mBAAmB,EAAE,KAAK;wBAC1B,KAAK,EAAE,CAAC;wBACR,EAAE,EAAE,EAAE;wBACN,aAAa,EAAE,CAAC;wBAChB,UAAU,EAAE,CAAC;wBACb,SAAS,EAAE,cAAc;wBACzB,IAAI,EAAE,GAAG;wBACT,UAAU,EAAE,CAAC;wBACb,IAAI,EAAE,IAAI;wBACV,OAAO,EAAE,CAAC;wBACV,MAAM,EAAE,GAAG;wBACX,KAAK,EAAE,EAAE;wBACT,KAAK,EAAE,EAAE;wBACT,SAAS,EAAE,EAAE;wBACb,SAAS,EAAE,EAAE;wBACb,MAAM,EAAE,CAAC;wBACT,UAAU,EAAE,KAAK;wBACjB,MAAM,EAAE;4BACN;gCACE,EAAE,EAAE,GAAG;gCACP,YAAY,EAAE,CAAC;gCACf,mBAAmB,EAAE,CAAC;gCACtB,iBAAiB,EAAE,EAAE;gCACrB,KAAK,EAAE,EAAE;gCACT,MAAM,EAAE,IAAI;gCACZ,SAAS,EAAE,IAAI;gCACf,SAAS,EAAE,IAAI;gCACf,IAAI,EAAE,CAAC;gCACP,MAAM,EAAE,GAAG;gCACX,OAAO,EAAE,EAAE;gCACX,aAAa,EAAE,CAAC;6BACjB;4BACD;gCACE,EAAE,EAAE,GAAG;gCACP,YAAY,EAAE,CAAC;gCACf,mBAAmB,EAAE,CAAC;gCACtB,iBAAiB,EAAE,EAAE;gCACrB,KAAK,EAAE,GAAG;gCACV,MAAM,EAAE,IAAI;gCACZ,SAAS,EAAE,IAAI;gCACf,SAAS,EAAE,IAAI;gCACf,IAAI,EAAE,CAAC;gCACP,MAAM,EAAE,GAAG;gCACX,OAAO,EAAE,EAAE;gCACX,aAAa,EAAE,CAAC;6BACjB;4BACD;gCACE,EAAE,EAAE,GAAG;gCACP,YAAY,EAAE,EAAE;gCAChB,mBAAmB,EAAE,CAAC;gCACtB,iBAAiB,EAAE,EAAE;gCACrB,KAAK,EAAE,GAAG;gCACV,MAAM,EAAE,IAAI;gCACZ,SAAS,EAAE,IAAI;gCACf,SAAS,EAAE,IAAI;gCACf,IAAI,EAAE,CAAC;gCACP,MAAM,EAAE,GAAG;gCACX,OAAO,EAAE,EAAE;gCACX,aAAa,EAAE,CAAC;6BACjB;yBACF;wBACD,IAAI,EAAE,IAAI;wBACV,QAAQ,EAAE,SAAS;wBACnB,kBAAkB,EAAE,uDAAgB,CAAC,OAAO,EAAE,qBAAqB,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC;qBACjG;oBACD;wBACE,UAAU,EAAE,CAAC;wBACb,iBAAiB,EAAE,CAAC;wBACpB,cAAc,EAAE,KAAK;wBACrB,oBAAoB,EAAE,KAAK;wBAC3B,mBAAmB,EAAE,KAAK;wBAC1B,KAAK,EAAE,CAAC;wBACR,EAAE,EAAE,EAAE;wBACN,aAAa,EAAE,CAAC;wBAChB,UAAU,EAAE,CAAC;wBACb,SAAS,EAAE,cAAc;wBACzB,IAAI,EAAE,GAAG;wBACT,UAAU,EAAE,CAAC;wBACb,IAAI,EAAE,GAAG;wBACT,OAAO,EAAE,CAAC;wBACV,MAAM,EAAE,GAAG;wBACX,KAAK,EAAE,EAAE;wBACT,KAAK,EAAE,EAAE;wBACT,SAAS,EAAE,EAAE;wBACb,SAAS,EAAE,EAAE;wBACb,MAAM,EAAE,CAAC;wBACT,UAAU,EAAE,KAAK;wBACjB,MAAM,EAAE;4BACN;gCACE,EAAE,EAAE,GAAG;gCACP,YAAY,EAAE,EAAE;gCAChB,mBAAmB,EAAE,CAAC;gCACtB,iBAAiB,EAAE,EAAE;gCACrB,KAAK,EAAE,GAAG;gCACV,MAAM,EAAE,IAAI;gCACZ,SAAS,EAAE,IAAI;gCACf,SAAS,EAAE,IAAI;gCACf,IAAI,EAAE,CAAC;gCACP,MAAM,EAAE,GAAG;gCACX,OAAO,EAAE,EAAE;gCACX,aAAa,EAAE,CAAC;6BACjB;4BACD;gCACE,EAAE,EAAE,GAAG;gCACP,YAAY,EAAE,EAAE;gCAChB,mBAAmB,EAAE,CAAC;gCACtB,iBAAiB,EAAE,EAAE;gCACrB,KAAK,EAAE,EAAE;gCACT,MAAM,EAAE,IAAI;gCACZ,SAAS,EAAE,IAAI;gCACf,SAAS,EAAE,IAAI;gCACf,IAAI,EAAE,CAAC;gCACP,MAAM,EAAE,GAAG;gCACX,OAAO,EAAE,EAAE;gCACX,aAAa,EAAE,CAAC;6BACjB;4BACD;gCACE,EAAE,EAAE,GAAG;gCACP,YAAY,EAAE,EAAE;gCAChB,mBAAmB,EAAE,CAAC;gCACtB,iBAAiB,EAAE,EAAE;gCACrB,KAAK,EAAE,GAAG;gCACV,MAAM,EAAE,IAAI;gCACZ,SAAS,EAAE,IAAI;gCACf,SAAS,EAAE,IAAI;gCACf,IAAI,EAAE,CAAC;gCACP,MAAM,EAAE,GAAG;gCACX,OAAO,EAAE,EAAE;gCACX,aAAa,EAAE,CAAC;6BACjB;yBACF;wBACD,IAAI,EAAE,IAAI;wBACV,QAAQ,EAAE,SAAS;wBACnB,kBAAkB,EAAE,uDAAgB,CAAC,OAAO,EAAE,qBAAqB,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC;qBACjG;iBACF;aACF;YACD;gBACE,UAAU,EAAE,CAAC;gBACb,iBAAiB,EAAE,CAAC;gBACpB,cAAc,EAAE,KAAK;gBACrB,oBAAoB,EAAE,KAAK;gBAC3B,mBAAmB,EAAE,KAAK;gBAC1B,KAAK,EAAE,CAAC;gBACR,EAAE,EAAE,EAAE;gBACN,aAAa,EAAE,CAAC;gBAChB,UAAU,EAAE,CAAC;gBACb,SAAS,EAAE,IAAI;gBACf,IAAI,EAAE,CAAC;gBACP,UAAU,EAAE,CAAC;gBACb,IAAI,EAAE,YAAY;gBAClB,OAAO,EAAE,CAAC;gBACV,MAAM,EAAE,CAAC;gBACT,KAAK,EAAE,CAAC;gBACR,KAAK,EAAE,CAAC;gBACR,SAAS,EAAE,GAAG;gBACd,SAAS,EAAE,GAAG;gBACd,MAAM,EAAE,IAAI;gBACZ,UAAU,EAAE,KAAK;gBACjB,MAAM,EAAE,IAAI;gBACZ,QAAQ,EAAE,IAAI;gBACd,kBAAkB,EAAE,uDAAgB,CAAC,OAAO,EAAE,qBAAqB,EAAE,IAAI;gBACzE,IAAI,EAAE;oBACJ;wBACE,UAAU,EAAE,CAAC;wBACb,iBAAiB,EAAE,CAAC;wBACpB,cAAc,EAAE,KAAK;wBACrB,oBAAoB,EAAE,KAAK;wBAC3B,mBAAmB,EAAE,KAAK;wBAC1B,KAAK,EAAE,CAAC;wBACR,EAAE,EAAE,EAAE;wBACN,aAAa,EAAE,CAAC;wBAChB,UAAU,EAAE,CAAC;wBACb,SAAS,EAAE,cAAc;wBACzB,IAAI,EAAE,GAAG;wBACT,UAAU,EAAE,CAAC;wBACb,IAAI,EAAE,IAAI;wBACV,OAAO,EAAE,CAAC;wBACV,MAAM,EAAE,GAAG;wBACX,KAAK,EAAE,EAAE;wBACT,KAAK,EAAE,EAAE;wBACT,SAAS,EAAE,EAAE;wBACb,SAAS,EAAE,CAAC;wBACZ,MAAM,EAAE,CAAC,CAAC;wBACV,UAAU,EAAE,KAAK;wBACjB,MAAM,EAAE;4BACN;gCACE,EAAE,EAAE,GAAG;gCACP,YAAY,EAAE,EAAE;gCAChB,mBAAmB,EAAE,CAAC;gCACtB,iBAAiB,EAAE,EAAE;gCACrB,KAAK,EAAE,GAAG;gCACV,MAAM,EAAE,CAAC;gCACT,SAAS,EAAE,IAAI;gCACf,SAAS,EAAE,IAAI;gCACf,IAAI,EAAE,EAAE;gCACR,MAAM,EAAE,GAAG;gCACX,OAAO,EAAE,EAAE;gCACX,aAAa,EAAE,CAAC;6BACjB;yBACF;wBACD,IAAI,EAAE,IAAI;wBACV,QAAQ,EAAE,SAAS;wBACnB,kBAAkB,EAAE,uDAAgB,CAAC,OAAO,EAAE,qBAAqB,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC;qBACjG;oBACD;wBACE,UAAU,EAAE,CAAC;wBACb,iBAAiB,EAAE,CAAC;wBACpB,cAAc,EAAE,KAAK;wBACrB,oBAAoB,EAAE,KAAK;wBAC3B,mBAAmB,EAAE,KAAK;wBAC1B,KAAK,EAAE,CAAC;wBACR,EAAE,EAAE,EAAE;wBACN,aAAa,EAAE,CAAC;wBAChB,UAAU,EAAE,CAAC;wBACb,SAAS,EAAE,cAAc;wBACzB,IAAI,EAAE,GAAG;wBACT,UAAU,EAAE,CAAC;wBACb,IAAI,EAAE,IAAI;wBACV,OAAO,EAAE,CAAC;wBACV,MAAM,EAAE,GAAG;wBACX,KAAK,EAAE,EAAE;wBACT,KAAK,EAAE,EAAE;wBACT,SAAS,EAAE,EAAE;wBACb,SAAS,EAAE,EAAE;wBACb,MAAM,EAAE,CAAC,CAAC;wBACV,UAAU,EAAE,KAAK;wBACjB,MAAM,EAAE;4BACN;gCACE,EAAE,EAAE,GAAG;gCACP,YAAY,EAAE,EAAE;gCAChB,mBAAmB,EAAE,CAAC;gCACtB,iBAAiB,EAAE,EAAE;gCACrB,KAAK,EAAE,IAAI;gCACX,MAAM,EAAE,IAAI;gCACZ,SAAS,EAAE,EAAE;gCACb,SAAS,EAAE,EAAE;gCACb,IAAI,EAAE,GAAG;gCACT,MAAM,EAAE,GAAG;gCACX,OAAO,EAAE,EAAE;gCACX,aAAa,EAAE,CAAC;6BACjB;4BACD;gCACE,EAAE,EAAE,GAAG;gCACP,YAAY,EAAE,EAAE;gCAChB,mBAAmB,EAAE,CAAC;gCACtB,iBAAiB,EAAE,EAAE;gCACrB,KAAK,EAAE,IAAI;gCACX,MAAM,EAAE,IAAI;gCACZ,SAAS,EAAE,EAAE;gCACb,SAAS,EAAE,EAAE;gCACb,IAAI,EAAE,GAAG;gCACT,MAAM,EAAE,GAAG;gCACX,OAAO,EAAE,EAAE;gCACX,aAAa,EAAE,CAAC;6BACjB;yBACF;wBACD,IAAI,EAAE,IAAI;wBACV,QAAQ,EAAE,SAAS;wBACnB,kBAAkB,EAAE,uDAAgB,CAAC,OAAO,EAAE,qBAAqB,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC;qBACjG;oBACD;wBACE,UAAU,EAAE,CAAC;wBACb,iBAAiB,EAAE,CAAC;wBACpB,cAAc,EAAE,KAAK;wBACrB,oBAAoB,EAAE,KAAK;wBAC3B,mBAAmB,EAAE,KAAK;wBAC1B,KAAK,EAAE,CAAC;wBACR,EAAE,EAAE,EAAE;wBACN,aAAa,EAAE,CAAC;wBAChB,UAAU,EAAE,CAAC;wBACb,SAAS,EAAE,cAAc;wBACzB,IAAI,EAAE,GAAG;wBACT,UAAU,EAAE,CAAC;wBACb,IAAI,EAAE,IAAI;wBACV,OAAO,EAAE,CAAC;wBACV,MAAM,EAAE,GAAG;wBACX,KAAK,EAAE,EAAE;wBACT,KAAK,EAAE,EAAE;wBACT,SAAS,EAAE,EAAE;wBACb,SAAS,EAAE,EAAE;wBACb,MAAM,EAAE,CAAC,CAAC;wBACV,UAAU,EAAE,KAAK;wBACjB,MAAM,EAAE;4BACN;gCACE,EAAE,EAAE,GAAG;gCACP,YAAY,EAAE,EAAE;gCAChB,mBAAmB,EAAE,CAAC;gCACtB,iBAAiB,EAAE,EAAE;gCACrB,KAAK,EAAE,IAAI;gCACX,MAAM,EAAE,IAAI;gCACZ,SAAS,EAAE,EAAE;gCACb,SAAS,EAAE,EAAE;gCACb,IAAI,EAAE,GAAG;gCACT,MAAM,EAAE,GAAG;gCACX,OAAO,EAAE,EAAE;gCACX,aAAa,EAAE,CAAC;6BACjB;4BACD;gCACE,EAAE,EAAE,GAAG;gCACP,YAAY,EAAE,EAAE;gCAChB,mBAAmB,EAAE,CAAC;gCACtB,iBAAiB,EAAE,EAAE;gCACrB,KAAK,EAAE,IAAI;gCACX,MAAM,EAAE,IAAI;gCACZ,SAAS,EAAE,EAAE;gCACb,SAAS,EAAE,EAAE;gCACb,IAAI,EAAE,GAAG;gCACT,MAAM,EAAE,GAAG;gCACX,OAAO,EAAE,EAAE;gCACX,aAAa,EAAE,CAAC;6BACjB;yBACF;wBACD,IAAI,EAAE,IAAI;wBACV,QAAQ,EAAE,SAAS;wBACnB,kBAAkB,EAAE,uDAAgB,CAAC,OAAO,EAAE,qBAAqB,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC;qBACjG;oBACD;wBACE,UAAU,EAAE,CAAC;wBACb,iBAAiB,EAAE,CAAC;wBACpB,cAAc,EAAE,KAAK;wBACrB,oBAAoB,EAAE,KAAK;wBAC3B,mBAAmB,EAAE,KAAK;wBAC1B,KAAK,EAAE,CAAC;wBACR,EAAE,EAAE,EAAE;wBACN,aAAa,EAAE,CAAC;wBAChB,UAAU,EAAE,CAAC;wBACb,SAAS,EAAE,cAAc;wBACzB,IAAI,EAAE,GAAG;wBACT,UAAU,EAAE,CAAC;wBACb,IAAI,EAAE,IAAI;wBACV,OAAO,EAAE,CAAC;wBACV,MAAM,EAAE,GAAG;wBACX,KAAK,EAAE,EAAE;wBACT,KAAK,EAAE,EAAE;wBACT,SAAS,EAAE,EAAE;wBACb,SAAS,EAAE,GAAG;wBACd,MAAM,EAAE,CAAC,CAAC;wBACV,UAAU,EAAE,KAAK;wBACjB,MAAM,EAAE;4BACN;gCACE,EAAE,EAAE,GAAG;gCACP,YAAY,EAAE,EAAE;gCAChB,mBAAmB,EAAE,CAAC;gCACtB,iBAAiB,EAAE,EAAE;gCACrB,KAAK,EAAE,IAAI;gCACX,MAAM,EAAE,IAAI;gCACZ,SAAS,EAAE,EAAE;gCACb,SAAS,EAAE,EAAE;gCACb,IAAI,EAAE,CAAC;gCACP,MAAM,EAAE,GAAG;gCACX,OAAO,EAAE,EAAE;gCACX,aAAa,EAAE,CAAC;6BACjB;4BACD;gCACE,EAAE,EAAE,GAAG;gCACP,YAAY,EAAE,EAAE;gCAChB,mBAAmB,EAAE,CAAC;gCACtB,iBAAiB,EAAE,EAAE;gCACrB,KAAK,EAAE,IAAI;gCACX,MAAM,EAAE,IAAI;gCACZ,SAAS,EAAE,EAAE;gCACb,SAAS,EAAE,EAAE;gCACb,IAAI,EAAE,CAAC;gCACP,MAAM,EAAE,GAAG;gCACX,OAAO,EAAE,EAAE;gCACX,aAAa,EAAE,CAAC;6BACjB;yBACF;wBACD,IAAI,EAAE,IAAI;wBACV,QAAQ,EAAE,SAAS;wBACnB,kBAAkB,EAAE,uDAAgB,CAAC,OAAO,EAAE,qBAAqB,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC;qBACjG;oBACD;wBACE,UAAU,EAAE,CAAC;wBACb,iBAAiB,EAAE,CAAC;wBACpB,cAAc,EAAE,KAAK;wBACrB,oBAAoB,EAAE,KAAK;wBAC3B,mBAAmB,EAAE,KAAK;wBAC1B,KAAK,EAAE,CAAC;wBACR,EAAE,EAAE,EAAE;wBACN,aAAa,EAAE,CAAC;wBAChB,UAAU,EAAE,CAAC;wBACb,SAAS,EAAE,cAAc;wBACzB,IAAI,EAAE,GAAG;wBACT,UAAU,EAAE,CAAC;wBACb,IAAI,EAAE,IAAI;wBACV,OAAO,EAAE,CAAC;wBACV,MAAM,EAAE,GAAG;wBACX,KAAK,EAAE,EAAE;wBACT,KAAK,EAAE,EAAE;wBACT,SAAS,EAAE,EAAE;wBACb,SAAS,EAAE,GAAG;wBACd,MAAM,EAAE,CAAC,CAAC;wBACV,UAAU,EAAE,KAAK;wBACjB,MAAM,EAAE;4BACN;gCACE,EAAE,EAAE,GAAG;gCACP,YAAY,EAAE,EAAE;gCAChB,mBAAmB,EAAE,CAAC;gCACtB,iBAAiB,EAAE,EAAE;gCACrB,KAAK,EAAE,CAAC;gCACR,MAAM,EAAE,CAAC;gCACT,SAAS,EAAE,IAAI;gCACf,SAAS,EAAE,IAAI;gCACf,IAAI,EAAE,EAAE;gCACR,MAAM,EAAE,GAAG;gCACX,OAAO,EAAE,EAAE;gCACX,aAAa,EAAE,CAAC;6BACjB;yBACF;wBACD,IAAI,EAAE,IAAI;wBACV,QAAQ,EAAE,SAAS;wBACnB,kBAAkB,EAAE,uDAAgB,CAAC,OAAO,EAAE,qBAAqB,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC;qBACjG;oBACD;wBACE,UAAU,EAAE,CAAC;wBACb,iBAAiB,EAAE,CAAC;wBACpB,cAAc,EAAE,KAAK;wBACrB,oBAAoB,EAAE,KAAK;wBAC3B,mBAAmB,EAAE,KAAK;wBAC1B,KAAK,EAAE,CAAC;wBACR,EAAE,EAAE,EAAE;wBACN,aAAa,EAAE,CAAC;wBAChB,UAAU,EAAE,CAAC;wBACb,SAAS,EAAE,cAAc;wBACzB,IAAI,EAAE,GAAG;wBACT,UAAU,EAAE,CAAC;wBACb,IAAI,EAAE,IAAI;wBACV,OAAO,EAAE,CAAC;wBACV,MAAM,EAAE,GAAG;wBACX,KAAK,EAAE,EAAE;wBACT,KAAK,EAAE,EAAE;wBACT,SAAS,EAAE,CAAC;wBACZ,SAAS,EAAE,CAAC;wBACZ,MAAM,EAAE,CAAC;wBACT,UAAU,EAAE,KAAK;wBACjB,MAAM,EAAE;4BACN;gCACE,EAAE,EAAE,GAAG;gCACP,YAAY,EAAE,EAAE;gCAChB,mBAAmB,EAAE,CAAC;gCACtB,iBAAiB,EAAE,EAAE;gCACrB,KAAK,EAAE,EAAE;gCACT,MAAM,EAAE,GAAG;gCACX,SAAS,EAAE,IAAI;gCACf,SAAS,EAAE,IAAI;gCACf,IAAI,EAAE,CAAC;gCACP,MAAM,EAAE,GAAG;gCACX,OAAO,EAAE,EAAE;gCACX,aAAa,EAAE,CAAC;6BACjB;4BACD;gCACE,EAAE,EAAE,GAAG;gCACP,YAAY,EAAE,EAAE;gCAChB,mBAAmB,EAAE,CAAC;gCACtB,iBAAiB,EAAE,EAAE;gCACrB,KAAK,EAAE,GAAG;gCACV,MAAM,EAAE,GAAG;gCACX,SAAS,EAAE,IAAI;gCACf,SAAS,EAAE,IAAI;gCACf,IAAI,EAAE,CAAC;gCACP,MAAM,EAAE,GAAG;gCACX,OAAO,EAAE,EAAE;gCACX,aAAa,EAAE,CAAC;6BACjB;4BACD;gCACE,EAAE,EAAE,GAAG;gCACP,YAAY,EAAE,EAAE;gCAChB,mBAAmB,EAAE,CAAC;gCACtB,iBAAiB,EAAE,EAAE;gCACrB,KAAK,EAAE,GAAG;gCACV,MAAM,EAAE,GAAG;gCACX,SAAS,EAAE,IAAI;gCACf,SAAS,EAAE,IAAI;gCACf,IAAI,EAAE,CAAC;gCACP,MAAM,EAAE,GAAG;gCACX,OAAO,EAAE,EAAE;gCACX,aAAa,EAAE,CAAC;6BACjB;yBACF;wBACD,IAAI,EAAE,IAAI;wBACV,QAAQ,EAAE,SAAS;wBACnB,kBAAkB,EAAE,uDAAgB,CAAC,OAAO,EAAE,qBAAqB,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC;qBACjG;oBACD;wBACE,UAAU,EAAE,CAAC;wBACb,iBAAiB,EAAE,CAAC;wBACpB,cAAc,EAAE,KAAK;wBACrB,oBAAoB,EAAE,KAAK;wBAC3B,mBAAmB,EAAE,KAAK;wBAC1B,KAAK,EAAE,CAAC;wBACR,EAAE,EAAE,EAAE;wBACN,aAAa,EAAE,CAAC;wBAChB,UAAU,EAAE,CAAC;wBACb,SAAS,EAAE,cAAc;wBACzB,IAAI,EAAE,GAAG;wBACT,UAAU,EAAE,CAAC;wBACb,IAAI,EAAE,IAAI;wBACV,OAAO,EAAE,CAAC;wBACV,MAAM,EAAE,GAAG;wBACX,KAAK,EAAE,EAAE;wBACT,KAAK,EAAE,EAAE;wBACT,SAAS,EAAE,CAAC;wBACZ,SAAS,EAAE,EAAE;wBACb,MAAM,EAAE,CAAC;wBACT,UAAU,EAAE,KAAK;wBACjB,MAAM,EAAE;4BACN;gCACE,EAAE,EAAE,GAAG;gCACP,YAAY,EAAE,EAAE;gCAChB,mBAAmB,EAAE,CAAC;gCACtB,iBAAiB,EAAE,EAAE;gCACrB,KAAK,EAAE,EAAE;gCACT,MAAM,EAAE,GAAG;gCACX,SAAS,EAAE,IAAI;gCACf,SAAS,EAAE,IAAI;gCACf,IAAI,EAAE,CAAC;gCACP,MAAM,EAAE,GAAG;gCACX,OAAO,EAAE,EAAE;gCACX,aAAa,EAAE,CAAC;6BACjB;4BACD;gCACE,EAAE,EAAE,GAAG;gCACP,YAAY,EAAE,EAAE;gCAChB,mBAAmB,EAAE,CAAC;gCACtB,iBAAiB,EAAE,EAAE;gCACrB,KAAK,EAAE,GAAG;gCACV,MAAM,EAAE,GAAG;gCACX,SAAS,EAAE,IAAI;gCACf,SAAS,EAAE,IAAI;gCACf,IAAI,EAAE,CAAC;gCACP,MAAM,EAAE,GAAG;gCACX,OAAO,EAAE,EAAE;gCACX,aAAa,EAAE,CAAC;6BACjB;4BACD;gCACE,EAAE,EAAE,GAAG;gCACP,YAAY,EAAE,EAAE;gCAChB,mBAAmB,EAAE,CAAC;gCACtB,iBAAiB,EAAE,EAAE;gCACrB,KAAK,EAAE,GAAG;gCACV,MAAM,EAAE,GAAG;gCACX,SAAS,EAAE,IAAI;gCACf,SAAS,EAAE,IAAI;gCACf,IAAI,EAAE,CAAC;gCACP,MAAM,EAAE,GAAG;gCACX,OAAO,EAAE,EAAE;gCACX,aAAa,EAAE,CAAC;6BACjB;yBACF;wBACD,IAAI,EAAE,IAAI;wBACV,QAAQ,EAAE,SAAS;wBACnB,kBAAkB,EAAE,uDAAgB,CAAC,OAAO,EAAE,qBAAqB,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC;qBACjG;oBACD;wBACE,UAAU,EAAE,CAAC;wBACb,iBAAiB,EAAE,CAAC;wBACpB,cAAc,EAAE,KAAK;wBACrB,oBAAoB,EAAE,KAAK;wBAC3B,mBAAmB,EAAE,KAAK;wBAC1B,KAAK,EAAE,CAAC;wBACR,EAAE,EAAE,EAAE;wBACN,aAAa,EAAE,CAAC;wBAChB,UAAU,EAAE,CAAC;wBACb,SAAS,EAAE,cAAc;wBACzB,IAAI,EAAE,GAAG;wBACT,UAAU,EAAE,CAAC;wBACb,IAAI,EAAE,IAAI;wBACV,OAAO,EAAE,CAAC;wBACV,MAAM,EAAE,GAAG;wBACX,KAAK,EAAE,EAAE;wBACT,KAAK,EAAE,EAAE;wBACT,SAAS,EAAE,EAAE;wBACb,SAAS,EAAE,EAAE;wBACb,MAAM,EAAE,CAAC,CAAC;wBACV,UAAU,EAAE,KAAK;wBACjB,MAAM,EAAE;4BACN;gCACE,EAAE,EAAE,GAAG;gCACP,YAAY,EAAE,EAAE;gCAChB,mBAAmB,EAAE,CAAC;gCACtB,iBAAiB,EAAE,EAAE;gCACrB,KAAK,EAAE,IAAI;gCACX,MAAM,EAAE,IAAI;gCACZ,SAAS,EAAE,EAAE;gCACb,SAAS,EAAE,EAAE;gCACb,IAAI,EAAE,GAAG;gCACT,MAAM,EAAE,GAAG;gCACX,OAAO,EAAE,EAAE;gCACX,aAAa,EAAE,CAAC;6BACjB;4BACD;gCACE,EAAE,EAAE,GAAG;gCACP,YAAY,EAAE,EAAE;gCAChB,mBAAmB,EAAE,CAAC;gCACtB,iBAAiB,EAAE,EAAE;gCACrB,KAAK,EAAE,IAAI;gCACX,MAAM,EAAE,IAAI;gCACZ,SAAS,EAAE,EAAE;gCACb,SAAS,EAAE,EAAE;gCACb,IAAI,EAAE,GAAG;gCACT,MAAM,EAAE,GAAG;gCACX,OAAO,EAAE,EAAE;gCACX,aAAa,EAAE,CAAC;6BACjB;yBACF;wBACD,IAAI,EAAE,IAAI;wBACV,QAAQ,EAAE,SAAS;wBACnB,kBAAkB,EAAE,uDAAgB,CAAC,OAAO,EAAE,qBAAqB,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC;qBACjG;oBACD;wBACE,UAAU,EAAE,CAAC;wBACb,iBAAiB,EAAE,CAAC;wBACpB,cAAc,EAAE,KAAK;wBACrB,oBAAoB,EAAE,KAAK;wBAC3B,mBAAmB,EAAE,KAAK;wBAC1B,KAAK,EAAE,CAAC;wBACR,EAAE,EAAE,EAAE;wBACN,aAAa,EAAE,CAAC;wBAChB,UAAU,EAAE,CAAC;wBACb,SAAS,EAAE,cAAc;wBACzB,IAAI,EAAE,GAAG;wBACT,UAAU,EAAE,CAAC;wBACb,IAAI,EAAE,IAAI;wBACV,OAAO,EAAE,CAAC;wBACV,MAAM,EAAE,GAAG;wBACX,KAAK,EAAE,EAAE;wBACT,KAAK,EAAE,EAAE;wBACT,SAAS,EAAE,CAAC;wBACZ,SAAS,EAAE,EAAE;wBACb,MAAM,EAAE,CAAC;wBACT,UAAU,EAAE,KAAK;wBACjB,MAAM,EAAE;4BACN;gCACE,EAAE,EAAE,GAAG;gCACP,YAAY,EAAE,CAAC;gCACf,mBAAmB,EAAE,CAAC;gCACtB,iBAAiB,EAAE,EAAE;gCACrB,KAAK,EAAE,EAAE;gCACT,MAAM,EAAE,GAAG;gCACX,SAAS,EAAE,IAAI;gCACf,SAAS,EAAE,IAAI;gCACf,IAAI,EAAE,CAAC;gCACP,MAAM,EAAE,GAAG;gCACX,OAAO,EAAE,EAAE;gCACX,aAAa,EAAE,CAAC;6BACjB;4BACD;gCACE,EAAE,EAAE,GAAG;gCACP,YAAY,EAAE,CAAC;gCACf,mBAAmB,EAAE,CAAC;gCACtB,iBAAiB,EAAE,EAAE;gCACrB,KAAK,EAAE,GAAG;gCACV,MAAM,EAAE,GAAG;gCACX,SAAS,EAAE,IAAI;gCACf,SAAS,EAAE,IAAI;gCACf,IAAI,EAAE,CAAC;gCACP,MAAM,EAAE,GAAG;gCACX,OAAO,EAAE,EAAE;gCACX,aAAa,EAAE,CAAC;6BACjB;4BACD;gCACE,EAAE,EAAE,GAAG;gCACP,YAAY,EAAE,CAAC;gCACf,mBAAmB,EAAE,CAAC;gCACtB,iBAAiB,EAAE,EAAE;gCACrB,KAAK,EAAE,GAAG;gCACV,MAAM,EAAE,GAAG;gCACX,SAAS,EAAE,IAAI;gCACf,SAAS,EAAE,IAAI;gCACf,IAAI,EAAE,CAAC;gCACP,MAAM,EAAE,GAAG;gCACX,OAAO,EAAE,EAAE;gCACX,aAAa,EAAE,CAAC;6BACjB;yBACF;wBACD,IAAI,EAAE,IAAI;wBACV,QAAQ,EAAE,SAAS;wBACnB,kBAAkB,EAAE,uDAAgB,CAAC,OAAO,EAAE,qBAAqB,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC;qBACjG;oBACD;wBACE,UAAU,EAAE,CAAC;wBACb,iBAAiB,EAAE,CAAC;wBACpB,cAAc,EAAE,KAAK;wBACrB,oBAAoB,EAAE,KAAK;wBAC3B,mBAAmB,EAAE,KAAK;wBAC1B,KAAK,EAAE,CAAC;wBACR,EAAE,EAAE,EAAE;wBACN,aAAa,EAAE,CAAC;wBAChB,UAAU,EAAE,CAAC;wBACb,SAAS,EAAE,cAAc;wBACzB,IAAI,EAAE,GAAG;wBACT,UAAU,EAAE,CAAC;wBACb,IAAI,EAAE,IAAI;wBACV,OAAO,EAAE,CAAC;wBACV,MAAM,EAAE,GAAG;wBACX,KAAK,EAAE,EAAE;wBACT,KAAK,EAAE,EAAE;wBACT,SAAS,EAAE,CAAC;wBACZ,SAAS,EAAE,GAAG;wBACd,MAAM,EAAE,CAAC;wBACT,UAAU,EAAE,KAAK;wBACjB,MAAM,EAAE;4BACN;gCACE,EAAE,EAAE,GAAG;gCACP,YAAY,EAAE,CAAC;gCACf,mBAAmB,EAAE,CAAC;gCACtB,iBAAiB,EAAE,EAAE;gCACrB,KAAK,EAAE,EAAE;gCACT,MAAM,EAAE,GAAG;gCACX,SAAS,EAAE,IAAI;gCACf,SAAS,EAAE,IAAI;gCACf,IAAI,EAAE,CAAC;gCACP,MAAM,EAAE,GAAG;gCACX,OAAO,EAAE,EAAE;gCACX,aAAa,EAAE,CAAC;6BACjB;4BACD;gCACE,EAAE,EAAE,GAAG;gCACP,YAAY,EAAE,CAAC;gCACf,mBAAmB,EAAE,CAAC;gCACtB,iBAAiB,EAAE,EAAE;gCACrB,KAAK,EAAE,GAAG;gCACV,MAAM,EAAE,GAAG;gCACX,SAAS,EAAE,IAAI;gCACf,SAAS,EAAE,IAAI;gCACf,IAAI,EAAE,CAAC;gCACP,MAAM,EAAE,GAAG;gCACX,OAAO,EAAE,EAAE;gCACX,aAAa,EAAE,CAAC;6BACjB;4BACD;gCACE,EAAE,EAAE,GAAG;gCACP,YAAY,EAAE,CAAC;gCACf,mBAAmB,EAAE,CAAC;gCACtB,iBAAiB,EAAE,EAAE;gCACrB,KAAK,EAAE,GAAG;gCACV,MAAM,EAAE,GAAG;gCACX,SAAS,EAAE,IAAI;gCACf,SAAS,EAAE,IAAI;gCACf,IAAI,EAAE,CAAC;gCACP,MAAM,EAAE,GAAG;gCACX,OAAO,EAAE,EAAE;gCACX,aAAa,EAAE,CAAC;6BACjB;yBACF;wBACD,IAAI,EAAE,IAAI;wBACV,QAAQ,EAAE,SAAS;wBACnB,kBAAkB,EAAE,uDAAgB,CAAC,OAAO,EAAE,qBAAqB,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC;qBACjG;oBACD;wBACE,UAAU,EAAE,CAAC;wBACb,iBAAiB,EAAE,CAAC;wBACpB,cAAc,EAAE,KAAK;wBACrB,oBAAoB,EAAE,KAAK;wBAC3B,mBAAmB,EAAE,KAAK;wBAC1B,KAAK,EAAE,CAAC;wBACR,EAAE,EAAE,EAAE;wBACN,aAAa,EAAE,CAAC;wBAChB,UAAU,EAAE,CAAC;wBACb,SAAS,EAAE,cAAc;wBACzB,IAAI,EAAE,GAAG;wBACT,UAAU,EAAE,CAAC;wBACb,IAAI,EAAE,IAAI;wBACV,OAAO,EAAE,CAAC;wBACV,MAAM,EAAE,GAAG;wBACX,KAAK,EAAE,EAAE;wBACT,KAAK,EAAE,EAAE;wBACT,SAAS,EAAE,EAAE;wBACb,SAAS,EAAE,CAAC;wBACZ,MAAM,EAAE,CAAC;wBACT,UAAU,EAAE,KAAK;wBACjB,MAAM,EAAE;4BACN;gCACE,EAAE,EAAE,GAAG;gCACP,YAAY,EAAE,EAAE;gCAChB,mBAAmB,EAAE,CAAC;gCACtB,iBAAiB,EAAE,EAAE;gCACrB,KAAK,EAAE,GAAG;gCACV,MAAM,EAAE,GAAG;gCACX,SAAS,EAAE,IAAI;gCACf,SAAS,EAAE,IAAI;gCACf,IAAI,EAAE,CAAC;gCACP,MAAM,EAAE,GAAG;gCACX,OAAO,EAAE,EAAE;gCACX,aAAa,EAAE,CAAC;6BACjB;4BACD;gCACE,EAAE,EAAE,GAAG;gCACP,YAAY,EAAE,EAAE;gCAChB,mBAAmB,EAAE,CAAC;gCACtB,iBAAiB,EAAE,EAAE;gCACrB,KAAK,EAAE,GAAG;gCACV,MAAM,EAAE,GAAG;gCACX,SAAS,EAAE,IAAI;gCACf,SAAS,EAAE,IAAI;gCACf,IAAI,EAAE,CAAC;gCACP,MAAM,EAAE,GAAG;gCACX,OAAO,EAAE,EAAE;gCACX,aAAa,EAAE,CAAC;6BACjB;4BACD;gCACE,EAAE,EAAE,GAAG;gCACP,YAAY,EAAE,EAAE;gCAChB,mBAAmB,EAAE,CAAC;gCACtB,iBAAiB,EAAE,EAAE;gCACrB,KAAK,EAAE,EAAE;gCACT,MAAM,EAAE,GAAG;gCACX,SAAS,EAAE,IAAI;gCACf,SAAS,EAAE,IAAI;gCACf,IAAI,EAAE,CAAC;gCACP,MAAM,EAAE,GAAG;gCACX,OAAO,EAAE,EAAE;gCACX,aAAa,EAAE,CAAC;6BACjB;yBACF;wBACD,IAAI,EAAE,IAAI;wBACV,QAAQ,EAAE,SAAS;wBACnB,kBAAkB,EAAE,uDAAgB,CAAC,OAAO,EAAE,qBAAqB,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC;qBACjG;oBACD;wBACE,UAAU,EAAE,CAAC;wBACb,iBAAiB,EAAE,CAAC;wBACpB,cAAc,EAAE,KAAK;wBACrB,oBAAoB,EAAE,KAAK;wBAC3B,mBAAmB,EAAE,KAAK;wBAC1B,KAAK,EAAE,CAAC;wBACR,EAAE,EAAE,EAAE;wBACN,aAAa,EAAE,CAAC;wBAChB,UAAU,EAAE,CAAC;wBACb,SAAS,EAAE,cAAc;wBACzB,IAAI,EAAE,GAAG;wBACT,UAAU,EAAE,CAAC;wBACb,IAAI,EAAE,IAAI;wBACV,OAAO,EAAE,CAAC;wBACV,MAAM,EAAE,GAAG;wBACX,KAAK,EAAE,EAAE;wBACT,KAAK,EAAE,EAAE;wBACT,SAAS,EAAE,EAAE;wBACb,SAAS,EAAE,EAAE;wBACb,MAAM,EAAE,CAAC;wBACT,UAAU,EAAE,KAAK;wBACjB,MAAM,EAAE;4BACN;gCACE,EAAE,EAAE,GAAG;gCACP,YAAY,EAAE,EAAE;gCAChB,mBAAmB,EAAE,CAAC;gCACtB,iBAAiB,EAAE,EAAE;gCACrB,KAAK,EAAE,GAAG;gCACV,MAAM,EAAE,GAAG;gCACX,SAAS,EAAE,IAAI;gCACf,SAAS,EAAE,IAAI;gCACf,IAAI,EAAE,CAAC;gCACP,MAAM,EAAE,GAAG;gCACX,OAAO,EAAE,EAAE;gCACX,aAAa,EAAE,CAAC;6BACjB;4BACD;gCACE,EAAE,EAAE,GAAG;gCACP,YAAY,EAAE,EAAE;gCAChB,mBAAmB,EAAE,CAAC;gCACtB,iBAAiB,EAAE,EAAE;gCACrB,KAAK,EAAE,GAAG;gCACV,MAAM,EAAE,GAAG;gCACX,SAAS,EAAE,IAAI;gCACf,SAAS,EAAE,IAAI;gCACf,IAAI,EAAE,CAAC;gCACP,MAAM,EAAE,GAAG;gCACX,OAAO,EAAE,EAAE;gCACX,aAAa,EAAE,CAAC;6BACjB;4BACD;gCACE,EAAE,EAAE,GAAG;gCACP,YAAY,EAAE,EAAE;gCAChB,mBAAmB,EAAE,CAAC;gCACtB,iBAAiB,EAAE,EAAE;gCACrB,KAAK,EAAE,EAAE;gCACT,MAAM,EAAE,GAAG;gCACX,SAAS,EAAE,IAAI;gCACf,SAAS,EAAE,IAAI;gCACf,IAAI,EAAE,CAAC;gCACP,MAAM,EAAE,GAAG;gCACX,OAAO,EAAE,EAAE;gCACX,aAAa,EAAE,CAAC;6BACjB;yBACF;wBACD,IAAI,EAAE,IAAI;wBACV,QAAQ,EAAE,SAAS;wBACnB,kBAAkB,EAAE,uDAAgB,CAAC,OAAO,EAAE,qBAAqB,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC;qBACjG;oBACD;wBACE,UAAU,EAAE,CAAC;wBACb,iBAAiB,EAAE,CAAC;wBACpB,cAAc,EAAE,KAAK;wBACrB,oBAAoB,EAAE,KAAK;wBAC3B,mBAAmB,EAAE,KAAK;wBAC1B,KAAK,EAAE,CAAC;wBACR,EAAE,EAAE,EAAE;wBACN,aAAa,EAAE,CAAC;wBAChB,UAAU,EAAE,CAAC;wBACb,SAAS,EAAE,cAAc;wBACzB,IAAI,EAAE,GAAG;wBACT,UAAU,EAAE,CAAC;wBACb,IAAI,EAAE,IAAI;wBACV,OAAO,EAAE,CAAC;wBACV,MAAM,EAAE,GAAG;wBACX,KAAK,EAAE,EAAE;wBACT,KAAK,EAAE,EAAE;wBACT,SAAS,EAAE,EAAE;wBACb,SAAS,EAAE,EAAE;wBACb,MAAM,EAAE,CAAC;wBACT,UAAU,EAAE,KAAK;wBACjB,MAAM,EAAE;4BACN;gCACE,EAAE,EAAE,GAAG;gCACP,YAAY,EAAE,CAAC;gCACf,mBAAmB,EAAE,CAAC;gCACtB,iBAAiB,EAAE,EAAE;gCACrB,KAAK,EAAE,GAAG;gCACV,MAAM,EAAE,GAAG;gCACX,SAAS,EAAE,IAAI;gCACf,SAAS,EAAE,IAAI;gCACf,IAAI,EAAE,CAAC;gCACP,MAAM,EAAE,GAAG;gCACX,OAAO,EAAE,EAAE;gCACX,aAAa,EAAE,CAAC;6BACjB;4BACD;gCACE,EAAE,EAAE,GAAG;gCACP,YAAY,EAAE,CAAC;gCACf,mBAAmB,EAAE,CAAC;gCACtB,iBAAiB,EAAE,EAAE;gCACrB,KAAK,EAAE,GAAG;gCACV,MAAM,EAAE,GAAG;gCACX,SAAS,EAAE,IAAI;gCACf,SAAS,EAAE,IAAI;gCACf,IAAI,EAAE,CAAC;gCACP,MAAM,EAAE,GAAG;gCACX,OAAO,EAAE,EAAE;gCACX,aAAa,EAAE,CAAC;6BACjB;4BACD;gCACE,EAAE,EAAE,GAAG;gCACP,YAAY,EAAE,CAAC;gCACf,mBAAmB,EAAE,CAAC;gCACtB,iBAAiB,EAAE,EAAE;gCACrB,KAAK,EAAE,EAAE;gCACT,MAAM,EAAE,GAAG;gCACX,SAAS,EAAE,IAAI;gCACf,SAAS,EAAE,IAAI;gCACf,IAAI,EAAE,CAAC;gCACP,MAAM,EAAE,GAAG;gCACX,OAAO,EAAE,EAAE;gCACX,aAAa,EAAE,CAAC;6BACjB;yBACF;wBACD,IAAI,EAAE,IAAI;wBACV,QAAQ,EAAE,SAAS;wBACnB,kBAAkB,EAAE,uDAAgB,CAAC,OAAO,EAAE,qBAAqB,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC;qBACjG;oBACD;wBACE,UAAU,EAAE,CAAC;wBACb,iBAAiB,EAAE,CAAC;wBACpB,cAAc,EAAE,KAAK;wBACrB,oBAAoB,EAAE,KAAK;wBAC3B,mBAAmB,EAAE,KAAK;wBAC1B,KAAK,EAAE,CAAC;wBACR,EAAE,EAAE,EAAE;wBACN,aAAa,EAAE,CAAC;wBAChB,UAAU,EAAE,CAAC;wBACb,SAAS,EAAE,cAAc;wBACzB,IAAI,EAAE,GAAG;wBACT,UAAU,EAAE,CAAC;wBACb,IAAI,EAAE,IAAI;wBACV,OAAO,EAAE,CAAC;wBACV,MAAM,EAAE,GAAG;wBACX,KAAK,EAAE,EAAE;wBACT,KAAK,EAAE,EAAE;wBACT,SAAS,EAAE,EAAE;wBACb,SAAS,EAAE,EAAE;wBACb,MAAM,EAAE,CAAC;wBACT,UAAU,EAAE,KAAK;wBACjB,MAAM,EAAE;4BACN;gCACE,EAAE,EAAE,GAAG;gCACP,YAAY,EAAE,CAAC;gCACf,mBAAmB,EAAE,CAAC;gCACtB,iBAAiB,EAAE,EAAE;gCACrB,KAAK,EAAE,GAAG;gCACV,MAAM,EAAE,GAAG;gCACX,SAAS,EAAE,IAAI;gCACf,SAAS,EAAE,IAAI;gCACf,IAAI,EAAE,CAAC;gCACP,MAAM,EAAE,GAAG;gCACX,OAAO,EAAE,EAAE;gCACX,aAAa,EAAE,CAAC;6BACjB;4BACD;gCACE,EAAE,EAAE,GAAG;gCACP,YAAY,EAAE,CAAC;gCACf,mBAAmB,EAAE,CAAC;gCACtB,iBAAiB,EAAE,EAAE;gCACrB,KAAK,EAAE,GAAG;gCACV,MAAM,EAAE,GAAG;gCACX,SAAS,EAAE,IAAI;gCACf,SAAS,EAAE,IAAI;gCACf,IAAI,EAAE,CAAC;gCACP,MAAM,EAAE,GAAG;gCACX,OAAO,EAAE,EAAE;gCACX,aAAa,EAAE,CAAC;6BACjB;4BACD;gCACE,EAAE,EAAE,GAAG;gCACP,YAAY,EAAE,CAAC;gCACf,mBAAmB,EAAE,CAAC;gCACtB,iBAAiB,EAAE,EAAE;gCACrB,KAAK,EAAE,EAAE;gCACT,MAAM,EAAE,GAAG;gCACX,SAAS,EAAE,IAAI;gCACf,SAAS,EAAE,IAAI;gCACf,IAAI,EAAE,CAAC;gCACP,MAAM,EAAE,GAAG;gCACX,OAAO,EAAE,EAAE;gCACX,aAAa,EAAE,CAAC;6BACjB;yBACF;wBACD,IAAI,EAAE,IAAI;wBACV,QAAQ,EAAE,SAAS;wBACnB,kBAAkB,EAAE,uDAAgB,CAAC,OAAO,EAAE,qBAAqB,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC;qBACjG;oBACD;wBACE,UAAU,EAAE,CAAC;wBACb,iBAAiB,EAAE,CAAC;wBACpB,cAAc,EAAE,KAAK;wBACrB,oBAAoB,EAAE,KAAK;wBAC3B,mBAAmB,EAAE,KAAK;wBAC1B,KAAK,EAAE,CAAC;wBACR,EAAE,EAAE,EAAE;wBACN,aAAa,EAAE,CAAC;wBAChB,UAAU,EAAE,CAAC;wBACb,SAAS,EAAE,cAAc;wBACzB,IAAI,EAAE,GAAG;wBACT,UAAU,EAAE,CAAC;wBACb,IAAI,EAAE,IAAI;wBACV,OAAO,EAAE,CAAC;wBACV,MAAM,EAAE,GAAG;wBACX,KAAK,EAAE,EAAE;wBACT,KAAK,EAAE,EAAE;wBACT,SAAS,EAAE,CAAC;wBACZ,SAAS,EAAE,EAAE;wBACb,MAAM,EAAE,CAAC;wBACT,UAAU,EAAE,KAAK;wBACjB,MAAM,EAAE;4BACN;gCACE,EAAE,EAAE,GAAG;gCACP,YAAY,EAAE,CAAC;gCACf,mBAAmB,EAAE,CAAC;gCACtB,iBAAiB,EAAE,EAAE;gCACrB,KAAK,EAAE,EAAE;gCACT,MAAM,EAAE,GAAG;gCACX,SAAS,EAAE,IAAI;gCACf,SAAS,EAAE,IAAI;gCACf,IAAI,EAAE,CAAC;gCACP,MAAM,EAAE,GAAG;gCACX,OAAO,EAAE,EAAE;gCACX,aAAa,EAAE,CAAC;6BACjB;4BACD;gCACE,EAAE,EAAE,GAAG;gCACP,YAAY,EAAE,CAAC;gCACf,mBAAmB,EAAE,CAAC;gCACtB,iBAAiB,EAAE,EAAE;gCACrB,KAAK,EAAE,GAAG;gCACV,MAAM,EAAE,GAAG;gCACX,SAAS,EAAE,IAAI;gCACf,SAAS,EAAE,IAAI;gCACf,IAAI,EAAE,CAAC;gCACP,MAAM,EAAE,GAAG;gCACX,OAAO,EAAE,EAAE;gCACX,aAAa,EAAE,CAAC;6BACjB;4BACD;gCACE,EAAE,EAAE,GAAG;gCACP,YAAY,EAAE,CAAC;gCACf,mBAAmB,EAAE,CAAC;gCACtB,iBAAiB,EAAE,EAAE;gCACrB,KAAK,EAAE,GAAG;gCACV,MAAM,EAAE,GAAG;gCACX,SAAS,EAAE,IAAI;gCACf,SAAS,EAAE,IAAI;gCACf,IAAI,EAAE,CAAC;gCACP,MAAM,EAAE,GAAG;gCACX,OAAO,EAAE,EAAE;gCACX,aAAa,EAAE,CAAC;6BACjB;yBACF;wBACD,IAAI,EAAE,IAAI;wBACV,QAAQ,EAAE,SAAS;wBACnB,kBAAkB,EAAE,uDAAgB,CAAC,OAAO,EAAE,qBAAqB,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC;qBACjG;oBACD;wBACE,UAAU,EAAE,CAAC;wBACb,iBAAiB,EAAE,CAAC;wBACpB,cAAc,EAAE,KAAK;wBACrB,oBAAoB,EAAE,KAAK;wBAC3B,mBAAmB,EAAE,KAAK;wBAC1B,KAAK,EAAE,CAAC;wBACR,EAAE,EAAE,EAAE;wBACN,aAAa,EAAE,CAAC;wBAChB,UAAU,EAAE,CAAC;wBACb,SAAS,EAAE,cAAc;wBACzB,IAAI,EAAE,GAAG;wBACT,UAAU,EAAE,CAAC;wBACb,IAAI,EAAE,IAAI;wBACV,OAAO,EAAE,CAAC;wBACV,MAAM,EAAE,GAAG;wBACX,KAAK,EAAE,EAAE;wBACT,KAAK,EAAE,EAAE;wBACT,SAAS,EAAE,EAAE;wBACb,SAAS,EAAE,GAAG;wBACd,MAAM,EAAE,CAAC;wBACT,UAAU,EAAE,KAAK;wBACjB,MAAM,EAAE;4BACN;gCACE,EAAE,EAAE,GAAG;gCACP,YAAY,EAAE,CAAC;gCACf,mBAAmB,EAAE,CAAC;gCACtB,iBAAiB,EAAE,EAAE;gCACrB,KAAK,EAAE,GAAG;gCACV,MAAM,EAAE,GAAG;gCACX,SAAS,EAAE,IAAI;gCACf,SAAS,EAAE,IAAI;gCACf,IAAI,EAAE,CAAC;gCACP,MAAM,EAAE,GAAG;gCACX,OAAO,EAAE,EAAE;gCACX,aAAa,EAAE,CAAC;6BACjB;4BACD;gCACE,EAAE,EAAE,GAAG;gCACP,YAAY,EAAE,CAAC;gCACf,mBAAmB,EAAE,CAAC;gCACtB,iBAAiB,EAAE,EAAE;gCACrB,KAAK,EAAE,GAAG;gCACV,MAAM,EAAE,GAAG;gCACX,SAAS,EAAE,IAAI;gCACf,SAAS,EAAE,IAAI;gCACf,IAAI,EAAE,CAAC;gCACP,MAAM,EAAE,GAAG;gCACX,OAAO,EAAE,EAAE;gCACX,aAAa,EAAE,CAAC;6BACjB;4BACD;gCACE,EAAE,EAAE,GAAG;gCACP,YAAY,EAAE,CAAC;gCACf,mBAAmB,EAAE,CAAC;gCACtB,iBAAiB,EAAE,EAAE;gCACrB,KAAK,EAAE,EAAE;gCACT,MAAM,EAAE,GAAG;gCACX,SAAS,EAAE,IAAI;gCACf,SAAS,EAAE,IAAI;gCACf,IAAI,EAAE,CAAC;gCACP,MAAM,EAAE,GAAG;gCACX,OAAO,EAAE,EAAE;gCACX,aAAa,EAAE,CAAC;6BACjB;yBACF;wBACD,IAAI,EAAE,IAAI;wBACV,QAAQ,EAAE,SAAS;wBACnB,kBAAkB,EAAE,uDAAgB,CAAC,OAAO,EAAE,qBAAqB,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC;qBACjG;iBACF;aACF;SACF,CAAC;QAEF,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,oDAAY,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC,CAAC;QAE1E,OAAO,UAAU,CAAC;IACpB,CAAC;CACF;;YA51ImC,mDAAW;YAAmB,sDAAM;;AAD3D,sBAAsB;IADlC,gEAAU,EAAE;qCAEuB,mDAAW,EAAmB,sDAAM;GAD3D,sBAAsB,CA61IlC;AA71IkC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC3CQ;AACF;AAEiB;AACd;AACsN;AAIlQ,IAAa,mBAAmB,GAAhC,MAAa,mBAAmB;IAC9B,YACU,YAAyB,EACzB,OAAe;QADf,iBAAY,GAAZ,YAAY,CAAa;QACzB,YAAO,GAAP,OAAO,CAAQ;IACrB,CAAC;IAEQ,MAAM;;YACjB,IAAI;gBACF,IAAI,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,EAAE;oBAC/C,OAAO,IAAI,CAAC,WAAW,EAAE,CAAC;iBAC3B;gBAED,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,oDAAS,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;gBACtE,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;oBACzB,OAAO,wDAAgB,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;gBAC5C,CAAC,CAAC,CAAC;aACJ;YAAC,OAAO,KAAK,EAAE;gBACd,OAAO,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;aACjC;QACH,CAAC;KAAA;IAEY,gBAAgB,CAAC,SAAiB;;YAC7C,IAAI;gBACF,IAAI,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,EAAE;oBAC/C,OAAO,IAAI,CAAC,WAAW,EAAE,CAAC;iBAC3B;gBAED,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,oDAAS,CAAC,QAAQ,CAAC,gBAAgB,EAAE,EAAE,SAAS,EAAE,SAAS,EAAE,CAAC,CAAC;gBAC1G,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;oBACzB,OAAO,wDAAgB,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;gBAC5C,CAAC,CAAC,CAAC;aACJ;YAAC,OAAO,KAAK,EAAE;gBACd,OAAO,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;aACjC;QACH,CAAC;KAAA;IAEY,8BAA8B,CAAC,SAAiB;;YAC3D,IAAI;gBACF,IAAI,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,EAAE;oBAC/C,OAAO,IAAI,CAAC,oBAAoB,EAAE,CAAC;iBACpC;gBAED,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,oDAAS,CAAC,QAAQ,CAAC,+BAA+B,EAAE,EAAE,SAAS,EAAE,SAAS,EAAE,CAAC,CAAC;gBACzH,OAAO,MAAM,CAAC;aACf;YAAC,OAAO,KAAK,EAAE;gBACd,OAAO,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;aACjC;QACH,CAAC;KAAA;IAEY,GAAG,CAAC,QAA2B;;YAC1C,IAAI;gBACF,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,oDAAS,CAAC,QAAQ,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;gBAE9E,MAAM,iBAAiB,GAAG,wDAAgB,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;gBAC/D,OAAO,iBAAiB,CAAC;aAC1B;YAAC,OAAO,KAAK,EAAE;gBACd,OAAO,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;aACjC;QACH,CAAC;KAAA;IAEY,IAAI,CAAC,QAA2B;;YAC3C,IAAI;gBACF,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,oDAAS,CAAC,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;gBAE9E,MAAM,iBAAiB,GAAG,wDAAgB,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;gBAC/D,OAAO,iBAAiB,CAAC;aAC1B;YAAC,OAAO,KAAK,EAAE;gBACd,OAAO,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;aACjC;QACH,CAAC;KAAA;IAEY,MAAM,CAAC,UAAkB;;YACpC,IAAI;gBACF,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,oDAAS,CAAC,QAAQ,CAAC,MAAM,EAAE,EAAE,UAAU,EAAE,CAAC,CAAC;gBACzF,OAAO,MAAM,CAAC;aACf;YAAC,OAAO,KAAK,EAAE;gBACd,OAAO,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;aACjC;QACH,CAAC;KAAA;IAEO,YAAY,CAAC,KAAU;QAC7B,IAAI,KAAK,YAAY,kDAAU,EAAE;YAC/B,OAAO,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;SAC9B;QAED,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QACnB,OAAO,IAAI,CAAC;IACd,CAAC;IAEM,WAAW;QAChB,MAAM,IAAI,GAAG;YACX,EAAE,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,eAAe,EAAE,SAAS,EAAE,CAAC,EAAE,WAAW,EAAE,UAAU,EAAE,YAAY,EAAE,qBAAqB,EAAE,YAAY,EAAE,gBAAgB,EAAE,cAAc,EAAE,kBAAkB,EAAE,SAAS,EAAE,kBAAkB,EAAE,SAAS,EAAE,+BAA+B,EAAE;YAC3P,EAAE,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,eAAe,EAAE,SAAS,EAAE,CAAC,EAAE,WAAW,EAAE,UAAU,EAAE,YAAY,EAAE,qBAAqB,EAAE,YAAY,EAAE,gBAAgB,EAAE,cAAc,EAAE,kBAAkB,EAAE,SAAS,EAAE,kBAAkB,EAAE,SAAS,EAAE,+BAA+B,EAAE;YAC3P,EAAE,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,eAAe,EAAE,SAAS,EAAE,CAAC,EAAE,WAAW,EAAE,UAAU,EAAE,YAAY,EAAE,qBAAqB,EAAE,YAAY,EAAE,gBAAgB,EAAE,cAAc,EAAE,kBAAkB,EAAE,SAAS,EAAE,kBAAkB,EAAE,SAAS,EAAE,+BAA+B,EAAE;YAC3P,EAAE,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,eAAe,EAAE,SAAS,EAAE,CAAC,EAAE,WAAW,EAAE,UAAU,EAAE,YAAY,EAAE,qBAAqB,EAAE,YAAY,EAAE,gBAAgB,EAAE,cAAc,EAAE,kBAAkB,EAAE,SAAS,EAAE,kBAAkB,EAAE,SAAS,EAAE,+BAA+B,EAAE;YAC3P,EAAE,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,eAAe,EAAE,SAAS,EAAE,CAAC,EAAE,WAAW,EAAE,UAAU,EAAE,YAAY,EAAE,qBAAqB,EAAE,YAAY,EAAE,gBAAgB,EAAE,cAAc,EAAE,kBAAkB,EAAE,SAAS,EAAE,kBAAkB,EAAE,SAAS,EAAE,+BAA+B,EAAE;YAC3P,EAAE,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,eAAe,EAAE,SAAS,EAAE,CAAC,EAAE,WAAW,EAAE,UAAU,EAAE,YAAY,EAAE,qBAAqB,EAAE,YAAY,EAAE,gBAAgB,EAAE,cAAc,EAAE,kBAAkB,EAAE,SAAS,EAAE,kBAAkB,EAAE,SAAS,EAAE,+BAA+B,EAAE;YAC3P,EAAE,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,eAAe,EAAE,SAAS,EAAE,CAAC,EAAE,WAAW,EAAE,UAAU,EAAE,YAAY,EAAE,qBAAqB,EAAE,YAAY,EAAE,gBAAgB,EAAE,cAAc,EAAE,kBAAkB,EAAE,SAAS,EAAE,kBAAkB,EAAE,SAAS,EAAE,+BAA+B,EAAE;YAC3P,EAAE,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,eAAe,EAAE,SAAS,EAAE,CAAC,EAAE,WAAW,EAAE,UAAU,EAAE,YAAY,EAAE,qBAAqB,EAAE,YAAY,EAAE,gBAAgB,EAAE,cAAc,EAAE,kBAAkB,EAAE,SAAS,EAAE,kBAAkB,EAAE,SAAS,EAAE,+BAA+B,EAAE;YAC3P,EAAE,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,eAAe,EAAE,SAAS,EAAE,CAAC,EAAE,WAAW,EAAE,UAAU,EAAE,YAAY,EAAE,qBAAqB,EAAE,YAAY,EAAE,gBAAgB,EAAE,cAAc,EAAE,kBAAkB,EAAE,SAAS,EAAE,kBAAkB,EAAE,SAAS,EAAE,+BAA+B,EAAE;YAC3P,EAAE,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,gBAAgB,EAAE,SAAS,EAAE,CAAC,EAAE,WAAW,EAAE,UAAU,EAAE,YAAY,EAAE,qBAAqB,EAAE,YAAY,EAAE,gBAAgB,EAAE,cAAc,EAAE,kBAAkB,EAAE,SAAS,EAAE,kBAAkB,EAAE,SAAS,EAAE,+BAA+B,EAAE;YAC7P,EAAE,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,gBAAgB,EAAE,SAAS,EAAE,CAAC,EAAE,WAAW,EAAE,UAAU,EAAE,YAAY,EAAE,qBAAqB,EAAE,YAAY,EAAE,gBAAgB,EAAE,cAAc,EAAE,kBAAkB,EAAE,SAAS,EAAE,kBAAkB,EAAE,SAAS,EAAE,+BAA+B,EAAE;YAC7P,EAAE,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,gBAAgB,EAAE,SAAS,EAAE,CAAC,EAAE,WAAW,EAAE,UAAU,EAAE,YAAY,EAAE,qBAAqB,EAAE,YAAY,EAAE,gBAAgB,EAAE,cAAc,EAAE,kBAAkB,EAAE,SAAS,EAAE,kBAAkB,EAAE,SAAS,EAAE,+BAA+B,EAAE;YAC7P,EAAE,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,gBAAgB,EAAE,SAAS,EAAE,CAAC,EAAE,WAAW,EAAE,UAAU,EAAE,YAAY,EAAE,qBAAqB,EAAE,YAAY,EAAE,gBAAgB,EAAE,cAAc,EAAE,kBAAkB,EAAE,SAAS,EAAE,kBAAkB,EAAE,SAAS,EAAE,+BAA+B,EAAE;YAC7P,EAAE,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,gBAAgB,EAAE,SAAS,EAAE,CAAC,EAAE,WAAW,EAAE,UAAU,EAAE,YAAY,EAAE,qBAAqB,EAAE,YAAY,EAAE,gBAAgB,EAAE,cAAc,EAAE,kBAAkB,EAAE,SAAS,EAAE,kBAAkB,EAAE,SAAS,EAAE,+BAA+B,EAAE;YAC7P,EAAE,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,gBAAgB,EAAE,SAAS,EAAE,CAAC,EAAE,WAAW,EAAE,UAAU,EAAE,YAAY,EAAE,qBAAqB,EAAE,YAAY,EAAE,gBAAgB,EAAE,cAAc,EAAE,kBAAkB,EAAE,SAAS,EAAE,kBAAkB,EAAE,SAAS,EAAE,+BAA+B,EAAE;YAC7P,EAAE,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,gBAAgB,EAAE,SAAS,EAAE,CAAC,EAAE,WAAW,EAAE,UAAU,EAAE,YAAY,EAAE,qBAAqB,EAAE,YAAY,EAAE,gBAAgB,EAAE,cAAc,EAAE,kBAAkB,EAAE,SAAS,EAAE,kBAAkB,EAAE,SAAS,EAAE,+BAA+B,EAAE;SACvO,CAAC;QACzB,OAAO,IAAI,CAAC;IACd,CAAC;IAEM,oBAAoB;QACzB,MAAM,IAAI,GAAG;YACX,YAAY,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,YAAY,EAAE,WAAW,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,YAAY,EAAE,WAAW,EAAE,CAAC;YAC1F,YAAY,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE,YAAY,EAAE,WAAW,EAAE,EAAE,EAAE,UAAU,EAAE,CAAC,EAAE,YAAY,EAAE,WAAW,EAAE,CAAC;YAC1G,YAAY,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,YAAY,EAAE,WAAW,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,YAAY,EAAE,WAAW,EAAE,CAAC;SAC5D,CAAC;QAEjC,OAAO,IAAI,CAAC;IACd,CAAC;CACF;;YAtHyB,mDAAW;YAChB,sDAAM;;AAHd,mBAAmB;IAD/B,gEAAU,EAAE;qCAGa,mDAAW;QAChB,sDAAM;GAHd,mBAAmB,CAwH/B;AAxH+B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACTW;AACF;AAEgB;AACb;AAM5C,IAAa,gBAAgB,GAA7B,MAAa,gBAAgB;IAE3B,YAAoB,YAAyB,EACnC,OAAe;QADL,iBAAY,GAAZ,YAAY,CAAa;QACnC,YAAO,GAAP,OAAO,CAAQ;IAAI,CAAC;IAEjB,kCAAkC,CAAC,MAA4B;;YAC1E,IAAI;gBACF,IAAI,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,EAAE;oBAC/C,OAAO,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC;iBACvC;gBACD,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,oDAAS,CAAC,MAAM,CAAC,kCAAkC,EAAE,MAAM,CAAC;gBACxG,OAAO,MAAM,CAAC;aACf;YAAC,OAAO,KAAK,EAAE;gBACd,OAAO,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;aACjC;QACH,CAAC;KAAA;IAEY,+BAA+B,CAAC,MAA8C;;YACzF,IAAI;gBACF,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,eAAe,CAAC,oDAAS,CAAC,MAAM,CAAC,uCAAuC,EAAE,MAAM,CAAC,CAAC;gBACzH,OAAO,MAAM,CAAC;aACf;YAAC,OAAO,KAAK,EAAE;gBACd,OAAO,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;aACjC;QACH,CAAC;KAAA;IAEY,mCAAmC,CAAC,MAA4C;;YAC3F,IAAI;gBACF,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,eAAe,CAAC,oDAAS,CAAC,MAAM,CAAC,kCAAkC,EAAE,MAAM,CAAC,CAAC;gBACpH,OAAO,MAAM,CAAC;aACf;YAAC,OAAO,KAAK,EAAE;gBACd,OAAO,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;aACjC;QACH,CAAC;KAAA;IAEY,gCAAgC,CAAC,MAAkC;;YAC9E,IAAI;gBACF,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,eAAe,CAAC,oDAAS,CAAC,MAAM,CAAC,+BAA+B,EAAE,MAAM,CAAC,CAAC;gBACjH,OAAO,MAAM,CAAC;aACf;YAAC,OAAO,KAAK,EAAE;gBACd,OAAO,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;aACjC;QACH,CAAC;KAAA;IAEY,+BAA+B,CAAC,MAAgC;;YAC3E,IAAI;gBACF,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,eAAe,CAAC,oDAAS,CAAC,MAAM,CAAC,gBAAgB,EAAE,MAAM,CAAC,CAAC;gBAClG,OAAO,MAAM,CAAC;aACf;YAAC,OAAO,KAAK,EAAE;gBACd,OAAO,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;aACjC;QACH,CAAC;KAAA;IAEY,6BAA6B,CAAC,MAAgC;;YACzE,IAAI;gBACF,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,eAAe,CAAC,oDAAS,CAAC,MAAM,CAAC,4BAA4B,EAAE,MAAM,CAAC,CAAC;gBAC9G,OAAO,MAAM,CAAC;aACf;YAAC,OAAO,KAAK,EAAE;gBACd,OAAO,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;aACjC;QACH,CAAC;KAAA;IAEY,6BAA6B,CAAC,MAA+B;;YACxE,IAAI;gBACF,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,eAAe,CAAC,oDAAS,CAAC,MAAM,CAAC,4BAA4B,EAAE,MAAM,CAAC,CAAC;gBAC9G,OAAO,MAAM,CAAC;aACf;YAAC,OAAO,KAAK,EAAE;gBACd,OAAO,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;aACjC;QACH,CAAC;KAAA;IAEY,0BAA0B,CAAC,KAAkC;;YACxE,IAAI;gBACF,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,eAAe,CAAC,oDAAS,CAAC,MAAM,CAAC,qBAAqB,EAAE,KAAK,CAAC,CAAC;gBACtG,OAAO,MAAM,CAAC;aACf;YAAC,OAAO,KAAK,EAAE;gBACd,OAAO,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;aACjC;QACH,CAAC;KAAA;IAEO,YAAY,CAAC,KAAU;QAC7B,IAAI,KAAK,YAAY,yDAAU,EAAE;YAC/B,OAAO,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;SAC9B;QACD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QACnB,OAAO,IAAI,CAAC;IACd,CAAC;IAEO,iBAAiB,CAAC,MAA4B;QAEpD,IAAI,MAAM,GAAW,CAAC,GAAG,EAAE,CAAC;QAC5B,IAAI,GAAG,GAAG,CAAC,CAAC;QACZ,IAAI,GAAG,GAAG,GAAG,CAAC;QACd,IAAI,KAAK,GAAW,CAAC,CAAC;QACtB,IAAI,SAAS,GAAW,CAAC,CAAC;QAC1B,IAAI,KAAK,GAA2C,EAAE,CAAC;QACvD,IAAI,KAAK,GAA2C,EAAE,CAAC;QACvD,IAAI,KAAK,GAA2C,EAAE,CAAC;QACvD,IAAI,QAAQ,GAAG,MAAM,CAAC,QAAQ,GAAG,MAAM,CAAC;QACxC,IAAI,CAAC,GAAG,CAAC,CAAC;QACV,IAAI,MAAM,GAAG,MAAM,CAAC,MAAM,GAAG,KAAK,CAAC;QACnC,GAAG;YACD,IAAI,EAAE,GAAG,KAAK,GAAG,CAAC,CAAC;YACnB,IAAI,EAAE,GAAG,GAAG;gBAAE,EAAE,GAAG,GAAG,CAAC;YACvB,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE;gBACpB,KAAK,CAAC,IAAI,CAAC,EAAE,SAAS,EAAE,QAAQ,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,CAAC;gBAE/C,KAAK,CAAC,IAAI,CAAC,EAAE,SAAS,EAAE,QAAQ,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,CAAC;gBAC/C,KAAK,CAAC,IAAI,CAAC,EAAE,SAAS,EAAE,QAAQ,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC;aAC/C;YAED,QAAQ,IAAI,MAAM,CAAC;YACnB,CAAC,EAAE,CAAC;SACL,QAAQ,QAAQ,IAAI,MAAM,EAAC;QAE5B,IAAI,IAAI,GAAG;YACT,UAAU,EAAE;gBACV;oBACE,mBAAmB,EAAE,KAAK;oBAC1B,OAAO,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI;iBAEpC;aACF;SAC8B,CAAC;QAClC,IAAI,MAAM,CAAC,QAAQ,EAAE;YACnB,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,mBAAmB,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;YACjE,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,mBAAmB,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;SAClE;QACD,OAAO,IAAI,CAAC;IACd,CAAC;CACF;;YAhImC,0DAAW;YAC1B,sDAAM;;AAHd,gBAAgB;IAH5B,gEAAU,CAAC;QACV,UAAU,EAAE,MAAM;KACnB,CAAC;qCAGkC,0DAAW;QAC1B,sDAAM;GAHd,gBAAgB,CAkI5B;AAlI4B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACVc;AACF;AAEI;AACoE;AAC1C;AAKvE,IAAa,oBAAoB,GAAjC,MAAa,oBAAoB;IAE/B,YACU,YAAyB,EACzB,OAAe;QADf,iBAAY,GAAZ,YAAY,CAAa;QACzB,YAAO,GAAP,OAAO,CAAQ;IAAI,CAAC;IAEjB,OAAO;;YAClB,IAAI;gBACF,IAAI,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,EAAE;oBAC/C,OAAO,IAAI,CAAC,WAAW,EAAE,CAAC;iBAC3B;gBACD,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,iDAAS,CAAC,OAAO,CAAC,eAAe,CAAwB,CAAC;gBACnG,IAAI,IAAI,EAAE;oBACR,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,yDAAiB,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC;oBACzE,OAAO,UAAU,CAAC;iBACnB;aACF;YAAC,OAAO,KAAK,EAAE;gBACd,OAAO,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;aACjC;QACH,CAAC;KAAA;IAEY,IAAI,CAAC,SAA6B;;YAC7C,IAAI;gBACF,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,iDAAS,CAAC,OAAO,CAAC,aAAa,EAAE,SAAS,CAAuB,CAAC;gBAChH,IAAI,QAAQ,IAAI,IAAI,EAAE;oBACpB,MAAM,SAAS,GAAG,yDAAiB,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;oBAC1D,OAAO,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;iBACnC;aACF;YAAC,OAAO,KAAK,EAAE;gBACd,OAAO,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;aACjC;QACH,CAAC;KAAA;IAEY,MAAM,CAAC,SAAiC;;YACnD,IAAI;gBACF,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,iDAAS,CAAC,OAAO,CAAC,YAAY,EAAE,SAAS,CAAsB,CAAC;gBAC5G,MAAM,SAAS,GAAG,yDAAiB,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;gBACxD,OAAO,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;aACnC;YAAC,OAAO,KAAK,EAAE;gBACd,OAAO,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;aACjC;QACH,CAAC;KAAA;IAGY,MAAM,CAAC,aAAqB;;YACvC,IAAI;gBACF,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,iDAAS,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,EAAE,EAAE,aAAa,EAAE,CAAC;gBAChG,IAAI,MAAM,EAAC;oBACX,OAAO,OAAO,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;iBACrC;aACF;YAAC,OAAO,KAAK,EAAE;gBACd,OAAO,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;aACjC;QACH,CAAC;KAAA;IAEO,YAAY,CAAC,KAAU;QAC7B,IAAI,KAAK,YAAY,kDAAU,EAAE;YAC/B,OAAO,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;SAC9B;QAED,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QACnB,OAAO,IAAI,CAAC;IACd,CAAC;IAEO,WAAW;QACjB,MAAM,IAAI,GAAG;YACX,EAAE,EAAE,EAAE,CAAC,EAAE,SAAS,EAAE,WAAW,EAAE,QAAQ,EAAE,UAAU,EAAE,KAAK,EAAE,OAAO,EAAE,aAAa,EAAE,IAAI,IAAI,EAAE,MAAM,EAAE,qDAAc,CAAC,QAAQ,EAAE;YACjI,EAAE,EAAE,EAAE,CAAC,EAAE,SAAS,EAAE,YAAY,EAAE,QAAQ,EAAE,WAAW,EAAE,KAAK,EAAE,QAAQ,EAAE,aAAa,EAAE,IAAI,IAAI,EAAE,MAAM,EAAE,qDAAc,CAAC,MAAM,EAAE;SAC3G,CAAC;QAC1B,OAAO,IAAI,CAAC;IACd,CAAC;CACF;;YApEyB,mDAAW;YAChB,sDAAM;;AAJd,oBAAoB;IAHhC,gEAAU,CAAC;QACV,UAAU,EAAE,MAAM;KACnB,CAAC;qCAIwB,mDAAW;QAChB,sDAAM;GAJd,oBAAoB,CAuEhC;AAvEgC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACVU;AAE0B;AAC0E;AACtG;AAGzC,IAAa,sBAAsB,GAAnC,MAAa,sBAAsB;IACjC,YACU,YAAyB,EACzB,OAAe;QADf,iBAAY,GAAZ,YAAY,CAAa;QACzB,YAAO,GAAP,OAAO,CAAQ;IAAI,CAAC;IAEjB,OAAO;;YAClB,IAAI;gBACF,IAAI,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,EAAE;oBAC/C,OAAO,IAAI,CAAC,WAAW,EAAE,CAAC;iBAC3B;gBACD,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,iDAAS,CAAC,OAAO,CAAC,iBAAiB,CAA0B,CAAC;gBACvG,IAAI,IAAI,EAAE;oBACR,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,2DAAmB,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC;oBAC3E,OAAO,UAAU,CAAC;iBACnB;aACF;YAAC,OAAO,KAAK,EAAE;gBACd,OAAO,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;aACjC;QACH,CAAC;KAAA;IAEY,MAAM,CAAC,WAAmC;;YACrD,IAAI;gBACF,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,iDAAS,CAAC,OAAO,CAAC,cAAc,EAAE,WAAW,CAAwB,CAAC;gBAClH,MAAM,SAAS,GAAG,2DAAmB,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;gBAC1D,OAAO,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;aACjC;YAAC,OAAO,KAAK,EAAE;gBAChB,OAAO,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;aACjC;QACH,CAAC;KAAA;IAEY,IAAI,CAAC,WAAiC;;YACjD,IAAI;gBACF,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,iDAAS,CAAC,OAAO,CAAC,eAAe,EAAE,WAAW,CAAwB,CAAC;gBACrH,IAAI,QAAQ,IAAI,IAAI,EAAE;oBACtB,MAAM,SAAS,GAAG,2DAAmB,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;oBAC5D,OAAO,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;iBACjC;aACF;YAAC,OAAO,KAAK,EAAE;gBACd,OAAO,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;aACjC;QACH,CAAC;KAAA;IAEY,MAAM,CAAC,aAAqB;;YACvC,IAAI;gBACF,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,iDAAS,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,EAAE,EAAE,aAAa,EAAE,CAAC;gBAChG,IAAI,MAAM,EAAC;oBACX,OAAO,OAAO,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;iBACrC;aACF;YAAC,OAAO,KAAK,EAAE;gBACd,OAAO,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;aACjC;QACH,CAAC;KAAA;IAEO,YAAY,CAAC,KAAU;QAC7B,IAAI,KAAK,YAAY,kDAAU,EAAE;YAC/B,OAAO,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;SAC9B;QAED,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QACnB,OAAO,IAAI,CAAC;IACd,CAAC;IAEM,WAAW;QAChB,MAAM,IAAI,GAAG;YACX,EAAE,EAAE,EAAE,CAAC,EAAE,SAAS,EAAE,WAAW,EAAE,QAAQ,EAAE,UAAU,EAAE,KAAK,EAAE,OAAO,EAAE,aAAa,EAAE,IAAI,IAAI,EAAE;YAChG,EAAE,EAAE,EAAE,CAAC,EAAE,SAAS,EAAE,YAAY,EAAE,QAAQ,EAAE,WAAW,EAAE,KAAK,EAAE,QAAQ,EAAE,aAAa,EAAE,IAAI,IAAI,EAAE;SAC1E,CAAC;QAC5B,OAAO,IAAI,CAAC;IACd,CAAC;CACF;;YAnEyB,mDAAW;YAChB,sDAAM;;AAHd,sBAAsB;IADlC,gEAAU,EAAE;qCAGa,mDAAW;QAChB,sDAAM;GAHd,sBAAsB,CAqElC;AArEkC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACPQ;AAEe;AACjB;AAEG;AACsB;AAKlE,IAAa,oBAAoB,GAAjC,MAAa,oBAAoB;IAE/B,YAAoB,YAAyB,EACnC,OAAe;QADL,iBAAY,GAAZ,YAAY,CAAa;QACnC,YAAO,GAAP,OAAO,CAAQ;IAAI,CAAC;IAEjB,WAAW,CAAC,OAAuC;;YAC9D,IAAI;gBACF,IAAI,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,EAAE;oBAC/C,OAAO,IAAI,CAAC,WAAW,EAAE,CAAC;iBAC3B;gBACD,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,oDAAS,CAAC,aAAa,CAAC,WAAW,EAAE,OAAO,CAA+B,CAAC;gBACxH,OAAO,MAAM,CAAC;aACf;YAAC,OAAO,KAAK,EAAE;gBACd,OAAO,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;aACjC;QACH,CAAC;KAAA;IAEY,GAAG,CAAC,OAA0D;;YACzE,IAAI;gBACF,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,oDAAS,CAAC,aAAa,CAAC,gBAAgB,EAAE,OAAO,CAA0B,CAAC;gBACxH,OAAO,MAAM,CAAC;aACf;YAAC,OAAO,KAAK,EAAE;gBACd,OAAO,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;aACjC;QACH,CAAC;KAAA;IAEY,IAAI,CAAC,EAAU,EAAE,WAA0C;;YACtE,IAAI;gBACF,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,oDAAS,CAAC,aAAa,CAAC,iBAAiB,GAAG,IAAI,EAAE,EAAE,EAAE,WAAW,CAA0B,CAAC;gBACvI,OAAO,MAAM,CAAC;aACf;YAAC,OAAO,KAAK,EAAE;gBACd,OAAO,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;aACjC;QACH,CAAC;KAAA;IAEY,6BAA6B,CAAC,EAAU;;YACnD,IAAI;gBACF,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,oDAAS,CAAC,aAAa,CAAC,6BAA6B,EAAE,EAAE,CAAY,CAAC;gBAClH,OAAO,MAAM,CAAC;aACf;YAAC,OAAO,KAAK,EAAE;gBACd,OAAO,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;aACjC;QACH,CAAC;KAAA;IAEY,sBAAsB,CAAC,EAAU;;YAC5C,IAAI;gBACF,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,cAAc,CAAC,oDAAS,CAAC,aAAa,CAAC,sBAAsB,EAAE;oBACpG,SAAS,EAAE,EAAE;iBACd,CAAC,CAAC;gBAEH,OAAO,MAAM,CAAC;aACf;YAAC,OAAO,KAAK,EAAE;gBACd,OAAO,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;aACjC;QACH,CAAC;KAAA;IAEY,MAAM,CAAC,EAAU;;YAC5B,IAAI;gBACF,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,oDAAS,CAAC,aAAa,CAAC,mBAAmB,EAAE;oBACzF,SAAS,EAAE,EAAE;iBACd,CAAY,CAAC;gBACd,OAAO,MAAM,CAAC;aACf;YAAC,OAAO,KAAK,EAAE;gBACd,OAAO,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;aACjC;QACH,CAAC;KAAA;IAEY,oBAAoB,CAAC,MAAc;;YAC9C,IAAI;gBACF,IAAI,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,EAAE;oBAC/C,OAAO,IAAI,CAAC,mBAAmB,EAAE,CAAC;iBACnC;gBACD,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,oDAAS,CAAC,aAAa,CAAC,oBAAoB,EAAE;oBACvF,aAAa,EAAE,MAAM;iBACtB,CAA+B,CAAC;gBACjC,OAAO,MAAM,CAAC;aACf;YAAC,OAAO,KAAK,EAAE;gBACd,OAAO,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;aACjC;QACH,CAAC;KAAA;IAEY,oBAAoB,CAAC,OAAoD;;YACpF,IAAI;gBACF,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,cAAc,CAAC,oDAAS,CAAC,aAAa,CAAC,oBAAoB,EAAE;oBAClG,aAAa,EAAE,OAAO,CAAC,aAAa;oBACpC,QAAQ,EAAE,OAAO,CAAC,QAAQ;iBAC3B,CAAC,CAAC;gBAEH,OAAO,MAAM,CAAC;aACf;YAAC,OAAO,KAAK,EAAE;gBACd,OAAO,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;aACjC;QACH,CAAC;KAAA;IAEY,qBAAqB,CAAC,OAAuD;;YACxF,IAAI;gBACF,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,eAAe,CAAC,oDAAS,CAAC,aAAa,CAAC,qBAAqB,EAAE,OAAO,CAAC,CAAC;gBAC/G,OAAO,MAAM,CAAC;aACf;YAAC,OAAO,KAAK,EAAE;gBACd,OAAO,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;aACjC;QACH,CAAC;KAAA;IAEY,uBAAuB,CAAC,OAAuD;;YAC1F,IAAI;gBACF,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,eAAe,CAAC,oDAAS,CAAC,aAAa,CAAC,uBAAuB,EAAE,OAAO,CAAC,CAAC;gBACjH,OAAO,MAAM,CAAC;aACf;YAAC,OAAO,KAAK,EAAE;gBACd,OAAO,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;aACjC;QACH,CAAC;KAAA;IAEY,cAAc,CAAC,OAAoD;;YAC9E,IAAI;gBACF,MAAM,QAAQ,GAAa,IAAI,QAAQ,EAAE,CAAC;gBAC1C,QAAQ,CAAC,MAAM,CAAC,eAAe,EAAE,OAAO,CAAC,aAAa,CAAC,CAAC;gBACxD,QAAQ,CAAC,MAAM,CAAC,YAAY,EAAE,OAAO,CAAC,UAAU,EAAE,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;gBAE3E,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,mBAAmB,CAAC,oDAAS,CAAC,aAAa,CAAC,cAAc,EAAE,QAAQ,CAA6B,CAAC;gBACzI,OAAO,MAAM,CAAC;aACf;YAAC,OAAO,KAAK,EAAE;gBACd,OAAO,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;aACjC;QACH,CAAC;KAAA;IAEY,sBAAsB,CAAC,OAAgC;;YAClE,IAAI;gBACF,MAAM,QAAQ,GAAa,IAAI,QAAQ,EAAE,CAAC;gBAC1C,QAAQ,CAAC,MAAM,CAAC,YAAY,EAAE,OAAO,CAAC,UAAU,CAAC,QAAQ,EAAE,CAAC,CAAC;gBAC7D,QAAQ,CAAC,MAAM,CAAC,WAAW,EAAE,OAAO,CAAC,eAAe,CAAC,CAAC;gBACtD,QAAQ,CAAC,MAAM,CAAC,WAAW,EAAE,OAAO,CAAC,eAAe,CAAC,CAAC;gBACtD,QAAQ,CAAC,MAAM,CAAC,SAAS,EAAE,OAAO,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC;gBACvD,QAAQ,CAAC,MAAM,CAAC,iBAAiB,EAAE,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC,CAAC;gBACjE,QAAQ,CAAC,MAAM,CAAC,YAAY,EAAE,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBAE/D,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,mBAAmB,CAAC,oDAAS,CAAC,aAAa,CAAC,sBAAsB,EAAE,QAAQ,CAA8B,CAAC;gBAClJ,OAAO,MAAM,CAAC;aACf;YAAC,OAAO,KAAK,EAAE;gBACd,OAAO,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;aACjC;QACH,CAAC;KAAA;IAEY,oBAAoB,CAAC,OAAgC;;YAChE,IAAI;gBACF,IAAI,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,EAAE;oBAC/C,OAAO,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;iBACpC;gBACD,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,oDAAS,CAAC,aAAa,CAAC,oBAAoB,EAAE,OAAO,CAAC,CAAC;gBACnG,OAAO,MAAM,CAAC;aACf;YAAC,OAAO,KAAK,EAAE;gBACd,OAAO,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;aACjC;QACH,CAAC;KAAA;IAEY,0BAA0B,CAAC,OAAsC;;YAC5E,IAAI;gBACF,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,oDAAS,CAAC,aAAa,CAAC,0BAA0B,EAAE,OAAO,CAAC,CAAC;gBACzG,OAAO,MAAM,CAAC;aACf;YAAC,OAAO,KAAK,EAAE;gBACd,OAAO,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;aACjC;QACH,CAAC;KAAA;IAEY,sCAAsC,CAAC,OAA8B;;YAChF,IAAI;gBACF,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,oDAAS,CAAC,aAAa,CAAC,2BAA2B,EAAE,OAAO,CAAC,CAAC;gBACzG,OAAO,MAAM,CAAC;aACf;YAAC,OAAO,KAAK,EAAE;gBACd,OAAO,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;aACjC;QACH,CAAC;KAAA;IAEY,qBAAqB,CAAC,OAAiC;;YAClE,IAAI;gBACF,IAAI,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,EAAE;oBAC/C,OAAO,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC;iBACzC;gBACD,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,oDAAS,CAAC,aAAa,CAAC,qBAAqB,EAAE,OAAO,CAAC,CAAC;gBACpG,OAAO,MAAM,CAAC;aACf;YAAC,OAAO,KAAK,EAAE;gBACd,OAAO,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;aACjC;QACH,CAAC;KAAA;IAEY,wBAAwB,CAAC,QAAgB,EAAE,UAAkB;;YACxE,IAAI;gBACF,IAAI,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,EAAE;oBAC/C,OAAO,IAAI,CAAC,wBAAwB,EAAE,CAAC;iBACxC;gBACD,MAAM,OAAO,GAA6C,EAAE,QAAQ,EAAE,QAAQ,EAAE,UAAU,EAAE,UAAU,EAAE,CAAC;gBACzG,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,oDAAS,CAAC,aAAa,CAAC,wBAAwB,EAAE,OAAO,CAAC,CAAC;gBACtG,OAAO,MAAM,CAAC;aACf;YAAC,OAAO,KAAK,EAAE;gBACd,OAAO,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;aACjC;QACH,CAAC;KAAA;IAEY,gBAAgB,CAAC,SAAmB;;YAC/C,IAAI;gBACF,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,oDAAS,CAAC,aAAa,CAAC,eAAe,EAAE,SAAS,CAA+B,CAAC;gBAC9H,OAAO,MAAM,CAAC;aACf;YAAC,OAAO,KAAK,EAAE;gBACd,OAAO,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;aACjC;QACH,CAAC;KAAA;IAEO,YAAY,CAAC,KAAU;QAC7B,IAAI,KAAK,YAAY,kDAAU,EAAE;YAC/B,OAAO,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;SAC9B;QAED,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QACnB,OAAO,IAAI,CAAC;IACd,CAAC;IAEO,aAAa,CAAC,OAAgC;QACpD,IAAI,MAAM,GAAG;YACX,UAAU,EAAE,OAAO,CAAC,UAAU;YAC9B,eAAe,EAAE,OAAO,CAAC,eAAe;YACxC,eAAe,EAAE,OAAO,CAAC,eAAe;YACxC,MAAM,EAAE,IAAI,CAAC,aAAa,EAAE;YAC5B,cAAc,EAAE,IAAI;YACpB,cAAc,EAAE,EAAE;SACU,CAAC;QAC/B,IAAI,MAAM,CAAC,MAAM,IAAI,GAAG,IAAI,OAAO,CAAC,OAAO,IAAI,kDAAW,CAAC,GAAG,EAAE;YAC9D,MAAM,CAAC,cAAc,GAAG,KAAK,CAAC;YAC9B,MAAM,CAAC,cAAc,GAAG,IAAI,CAAC,eAAe,EAAE,CAAC;YAC/C,MAAM,CAAC,MAAM,GAAG,GAAG,CAAC;SACrB;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;IAEO,kBAAkB,CAAC,OAAiC;QAC1D,IAAI,MAAM,GAAgC,EAAE,CAAC;QAC7C,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;YAC7B,IAAI,QAAQ,GAAG;gBACb,UAAU,EAAE,IAAI,CAAC,UAAU;gBAC3B,eAAe,EAAE,IAAI,CAAC,eAAe;gBACrC,eAAe,EAAE,IAAI,CAAC,eAAe;gBACrC,MAAM,EAAE,IAAI,CAAC,aAAa,EAAE;gBAC5B,cAAc,EAAE,IAAI;gBACpB,cAAc,EAAE,EAAE;aACU,CAAC;YAC/B,IAAI,QAAQ,CAAC,MAAM,IAAI,GAAG,IAAI,OAAO,CAAC,OAAO,IAAI,kDAAW,CAAC,GAAG,EAAE;gBAChE,QAAQ,CAAC,cAAc,GAAG,KAAK,CAAC;gBAChC,QAAQ,CAAC,cAAc,GAAG,IAAI,CAAC,eAAe,EAAE,CAAC;gBACjD,QAAQ,CAAC,MAAM,GAAG,GAAG,CAAC;aACvB;YACD,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACxB,CAAC,CAAC;QAEF,OAAO,MAAM,CAAC;IAChB,CAAC;IAEO,aAAa;QACnB,IAAI,QAAQ,GAAa,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;QACpC,OAAO,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACnD,CAAC;IAEO,eAAe;QACrB,IAAI,QAAQ,GAAa,CAAC,kEAAkE,EAAE,gBAAgB,EAAE,uCAAuC,CAAC,CAAC;QACzJ,OAAO,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACnD,CAAC;IAEO,wBAAwB;QAC9B,MAAM,IAAI,GAAG;YACX;gBACE,cAAc,EAAE,OAAO;gBACvB,gBAAgB,EAAE,EAAE;gBACpB,cAAc,EAAE,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC;gBACrC,MAAM,EAAE,IAAI;gBACZ,aAAa,EAAE,EAAE;aAClB;YACD;gBACE,cAAc,EAAE,OAAO;gBACvB,gBAAgB,EAAE,EAAE;gBACpB,cAAc,EAAE,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC;gBACrC,MAAM,EAAE,UAAU;gBAClB,aAAa,EAAE,EAAE;aAClB;YACD;gBACE,cAAc,EAAE,OAAO;gBACvB,gBAAgB,EAAE,EAAE;gBACpB,cAAc,EAAE,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC;gBACrC,MAAM,EAAE,WAAW;gBACnB,aAAa,EAAE,OAAO;aACvB;YACD;gBACE,cAAc,EAAE,OAAO;gBACvB,gBAAgB,EAAE,4KAA4K;gBAC9L,cAAc,EAAE,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC;gBACrC,MAAM,EAAE,OAAO;gBACf,aAAa,EAAE,EAAE;aAClB;SAC2B,CAAC;QAC/B,OAAO,IAAI,CAAC;IACd,CAAC;IAEO,mBAAmB;QACzB,MAAM,IAAI,GAAG;YACX;gBACE,IAAI,EAAE,yEAAyE;gBAC/E,IAAI,EAAE,KAAK;gBACX,SAAS,EAAE,WAAW;gBACtB,SAAS,EAAE,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC;gBAChC,YAAY,EAAE,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC;aACpC;YACD;gBACE,IAAI,EAAE,mBAAmB;gBACzB,IAAI,EAAE,KAAK;gBACX,SAAS,EAAE,WAAW;gBACtB,SAAS,EAAE,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC;gBAChC,YAAY,EAAE,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC;aACpC;YACD;gBACE,IAAI,EAAE,qBAAqB;gBAC3B,IAAI,EAAE,KAAK;gBACX,SAAS,EAAE,WAAW;gBACtB,SAAS,EAAE,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC;gBAChC,YAAY,EAAE,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC;aACpC;YACD;gBACE,IAAI,EAAE,oBAAoB;gBAC1B,IAAI,EAAE,KAAK;gBACX,SAAS,EAAE,WAAW;gBACtB,SAAS,EAAE,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC;gBAChC,YAAY,EAAE,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC;aACpC;YACD;gBACE,IAAI,EAAE,oBAAoB;gBAC1B,IAAI,EAAE,KAAK;gBACX,SAAS,EAAE,WAAW;gBACtB,SAAS,EAAE,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC;gBAChC,YAAY,EAAE,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC;aACpC;YACD;gBACE,IAAI,EAAE,mBAAmB;gBACzB,IAAI,EAAE,KAAK;gBACX,SAAS,EAAE,WAAW;gBACtB,SAAS,EAAE,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC;gBAChC,YAAY,EAAE,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC;aACpC;YACD;gBACE,IAAI,EAAE,qBAAqB;gBAC3B,IAAI,EAAE,KAAK;gBACX,SAAS,EAAE,WAAW;gBACtB,SAAS,EAAE,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC;gBAChC,YAAY,EAAE,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC;aACpC;YACD;gBACE,IAAI,EAAE,qBAAqB;gBAC3B,IAAI,EAAE,KAAK;gBACX,SAAS,EAAE,WAAW;gBACtB,SAAS,EAAE,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC;gBAChC,YAAY,EAAE,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC;aACpC;SAC4B,CAAC;QAEhC,OAAO,IAAI,CAAC;IACd,CAAC;IAEO,WAAW;QACjB,MAAM,IAAI,GAAG;YACX;gBACE,EAAE,EAAE,CAAC;gBACL,IAAI,EAAE,uDAAuD;gBAC7D,WAAW,EAAE,cAAc;gBAC3B,iBAAiB,EAAE,kDAAW,CAAC,GAAG,GAAG,kDAAW,CAAC,GAAG;gBACpD,eAAe,EAAE;oBACf;wBACE,QAAQ,EAAE,sCAAsC;wBAChD,aAAa,EAAE,IAAI;wBACnB,OAAO,EAAE,kDAAW,CAAC,GAAG;qBACzB;oBACD;wBACE,QAAQ,EAAE,sCAAsC;wBAChD,aAAa,EAAE,IAAI;wBACnB,OAAO,EAAE,kDAAW,CAAC,GAAG;qBACzB;iBACF;gBACD,cAAc,EAAE;oBACd;wBACE,EAAE,EAAE,sCAAsC;wBAC1C,aAAa,EAAE,KAAK;wBACpB,UAAU,EAAE,CAAC;wBACb,iBAAiB,EAAE,kDAAW,CAAC,GAAG;wBAClC,cAAc,EAAE,CAAC;gCACf,QAAQ,EAAE,sCAAsC;gCAChD,OAAO,EAAE,kDAAW,CAAC,GAAG;gCACxB,cAAc,EAAE,IAAI;gCACpB,UAAU,EAAE,IAAI;6BACjB,CAAC;qBACH;oBACD;wBACE,EAAE,EAAE,sCAAsC;wBAC1C,aAAa,EAAE,IAAI;wBACnB,UAAU,EAAE,CAAC;wBACb,iBAAiB,EAAE,kDAAW,CAAC,GAAG;wBAClC,cAAc,EAAE,CAAC;gCACf,QAAQ,EAAE,sCAAsC;gCAChD,OAAO,EAAE,kDAAW,CAAC,GAAG;gCACxB,cAAc,EAAE,OAAO;gCACvB,UAAU,EAAE,IAAI,IAAI,EAAE,CAAC,OAAO,EAAE,GAAG,IAAI;6BACxC,CAAC;qBACH;iBACF;aACF;YACD;gBACE,EAAE,EAAE,CAAC;gBACL,IAAI,EAAE,iBAAiB;gBACvB,WAAW,EAAE,cAAc;gBAC3B,iBAAiB,EAAE,kDAAW,CAAC,GAAG,GAAG,kDAAW,CAAC,GAAG,GAAG,kDAAW,CAAC,GAAG;gBACtE,eAAe,EAAE;oBACf;wBACE,QAAQ,EAAE,sCAAsC;wBAChD,aAAa,EAAE,IAAI;wBACnB,OAAO,EAAE,kDAAW,CAAC,GAAG;qBACzB;oBACD;wBACE,QAAQ,EAAE,sCAAsC;wBAChD,aAAa,EAAE,IAAI;wBACnB,OAAO,EAAE,kDAAW,CAAC,GAAG;qBACzB;oBACD;wBACE,QAAQ,EAAE,sCAAsC;wBAChD,aAAa,EAAE,IAAI;wBACnB,OAAO,EAAE,kDAAW,CAAC,GAAG;qBACzB;iBACF;gBACD,cAAc,EAAE;oBACd;wBACE,EAAE,EAAE,sCAAsC;wBAC1C,aAAa,EAAE,IAAI;wBACnB,UAAU,EAAE,CAAC;wBACb,iBAAiB,EAAE,kDAAW,CAAC,GAAG;wBAClC,cAAc,EAAE,CAAC;gCACf,QAAQ,EAAE,sCAAsC;gCAChD,OAAO,EAAE,kDAAW,CAAC,GAAG;gCACxB,cAAc,EAAE,OAAO;gCACvB,UAAU,EAAE,IAAI,IAAI,EAAE,CAAC,OAAO,EAAE,GAAG,IAAI;gCACvC,KAAK,EAAE,6DAAsB,CAAC,QAAQ;6BACvC,CAAC;qBACH;oBACD;wBACE,EAAE,EAAE,sCAAsC;wBAC1C,aAAa,EAAE,IAAI;wBACnB,UAAU,EAAE,CAAC;wBACb,iBAAiB,EAAE,kDAAW,CAAC,GAAG;wBAClC,cAAc,EAAE,CAAC;gCACf,QAAQ,EAAE,sCAAsC;gCAChD,OAAO,EAAE,kDAAW,CAAC,GAAG;gCACxB,cAAc,EAAE,OAAO;gCACvB,UAAU,EAAE,IAAI,IAAI,EAAE,CAAC,OAAO,EAAE,GAAG,IAAI;gCACvC,KAAK,EAAE,6DAAsB,CAAC,MAAM;gCACpC,YAAY,EAAE,4KAA4K;6BAC3L,CAAC;qBACH;oBACD;wBACE,EAAE,EAAE,sCAAsC;wBAC1C,aAAa,EAAE,IAAI;wBACnB,UAAU,EAAE,CAAC;wBACb,iBAAiB,EAAE,kDAAW,CAAC,GAAG;wBAClC,cAAc,EAAE,CAAC;gCACf,QAAQ,EAAE,sCAAsC;gCAChD,OAAO,EAAE,kDAAW,CAAC,GAAG;gCACxB,cAAc,EAAE,UAAU;gCAC1B,UAAU,EAAE,IAAI,IAAI,EAAE,CAAC,OAAO,EAAE,GAAG,IAAI;gCACvC,KAAK,EAAE,6DAAsB,CAAC,QAAQ;6BACvC,CAAC;qBACH;iBACF;aACF;YACD;gBACE,EAAE,EAAE,CAAC;gBACL,IAAI,EAAE,iBAAiB;gBACvB,WAAW,EAAE,cAAc;gBAC3B,iBAAiB,EAAE,kDAAW,CAAC,GAAG,GAAG,kDAAW,CAAC,GAAG,GAAG,kDAAW,CAAC,GAAG;gBACtE,eAAe,EAAE;oBACf;wBACE,QAAQ,EAAE,sCAAsC;wBAChD,aAAa,EAAE,IAAI;wBACnB,OAAO,EAAE,kDAAW,CAAC,GAAG;qBACzB;oBACD;wBACE,QAAQ,EAAE,sCAAsC;wBAChD,aAAa,EAAE,IAAI;wBACnB,OAAO,EAAE,kDAAW,CAAC,GAAG;qBACzB;oBACD;wBACE,QAAQ,EAAE,sCAAsC;wBAChD,aAAa,EAAE,IAAI;wBACnB,OAAO,EAAE,kDAAW,CAAC,GAAG;qBACzB;iBACF;gBACD,cAAc,EAAE,EAAE;aACnB;YACD;gBACE,EAAE,EAAE,CAAC;gBACL,IAAI,EAAE,iBAAiB;gBACvB,WAAW,EAAE,cAAc;gBAC3B,iBAAiB,EAAE,kDAAW,CAAC,GAAG,GAAG,kDAAW,CAAC,GAAG,GAAG,kDAAW,CAAC,GAAG;gBACtE,eAAe,EAAE;oBACf;wBACE,QAAQ,EAAE,sCAAsC;wBAChD,aAAa,EAAE,IAAI;wBACnB,OAAO,EAAE,kDAAW,CAAC,GAAG;qBACzB;oBACD;wBACE,QAAQ,EAAE,sCAAsC;wBAChD,aAAa,EAAE,IAAI;wBACnB,OAAO,EAAE,kDAAW,CAAC,GAAG;qBACzB;oBACD;wBACE,QAAQ,EAAE,sCAAsC;wBAChD,aAAa,EAAE,IAAI;wBACnB,OAAO,EAAE,kDAAW,CAAC,GAAG;qBACzB;iBACF;gBACD,cAAc,EAAE;oBACd;wBACE,EAAE,EAAE,sCAAsC;wBAC1C,aAAa,EAAE,IAAI;wBACnB,UAAU,EAAE,CAAC;wBACb,iBAAiB,EAAE,kDAAW,CAAC,GAAG,GAAG,kDAAW,CAAC,GAAG,GAAG,kDAAW,CAAC,GAAG;wBACtE,cAAc,EAAE;4BACd;gCACE,QAAQ,EAAE,sCAAsC;gCAChD,aAAa,EAAE,IAAI;gCACnB,OAAO,EAAE,kDAAW,CAAC,GAAG;gCACxB,cAAc,EAAE,OAAO;gCACvB,UAAU,EAAE,IAAI,IAAI,EAAE,CAAC,OAAO,EAAE,GAAG,IAAI;gCACvC,KAAK,EAAE,6DAAsB,CAAC,MAAM;gCACpC,YAAY,EAAE,4KAA4K;6BAC3L;4BACD;gCACE,QAAQ,EAAE,sCAAsC;gCAChD,aAAa,EAAE,IAAI;gCACnB,OAAO,EAAE,kDAAW,CAAC,GAAG;gCACxB,cAAc,EAAE,OAAO;gCACvB,UAAU,EAAE,IAAI,IAAI,EAAE,CAAC,OAAO,EAAE,GAAG,IAAI;gCACvC,KAAK,EAAE,6DAAsB,CAAC,QAAQ;6BACvC;4BACD;gCACE,QAAQ,EAAE,sCAAsC;gCAChD,aAAa,EAAE,IAAI;gCACnB,OAAO,EAAE,kDAAW,CAAC,GAAG;gCACxB,cAAc,EAAE,UAAU;gCAC1B,UAAU,EAAE,IAAI,IAAI,EAAE,CAAC,OAAO,EAAE,GAAG,IAAI;6BACxC;yBACF;qBACF;iBACF;aACF;SAE4B,CAAC;QAChC,OAAO,IAAI,CAAC;IACd,CAAC;CACF;;YA3iBmC,mDAAW;YAC1B,sDAAM;;AAHd,oBAAoB;IAHhC,gEAAU,CAAC;QACV,UAAU,EAAE,MAAM;KACnB,CAAC;qCAGkC,mDAAW;QAC1B,sDAAM;GAHd,oBAAoB,CA6iBhC;AA7iBgC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACXU;AACF;AAC4B;AACxB;AACsD;AAKnG,IAAa,gBAAgB,GAA7B,MAAa,gBAAgB;IAE3B,YACU,YAAyB,EACzB,OAAe;QADf,iBAAY,GAAZ,YAAY,CAAa;QACzB,YAAO,GAAP,OAAO,CAAQ;IAAI,CAAC;IAEjB,gBAAgB,CAAC,SAAiB;;YAC7C,IAAI;gBACF,IAAI,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,EAAE;oBAC/C,OAAO,IAAI,CAAC,WAAW,EAAE,CAAC;iBAC3B;gBACD,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,iDAAS,CAAC,OAAO,CAAC,uBAAuB,EAAE,EAAE,SAAS,EAAE,SAAS,EAAE,CAAC,CAAC;gBAC9G,IAAI,IAAI,EAAE;oBACR,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,sDAAc,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC;oBAChE,OAAO,UAAU,CAAC;iBACnB;aACF;YAAC,OAAO,KAAK,EAAE;gBACd,OAAO,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;aACjC;QACH,CAAC;KAAA;IAEY,MAAM,CAAC,MAAyB;;YAC3C,IAAI;gBACF,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,iDAAS,CAAC,OAAO,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;gBACjF,IAAI,MAAM,EAAE;oBACV,OAAO,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;iBAChC;aACF;YAAC,OAAO,KAAK,EAAE;gBACd,OAAO,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;aACjC;QACH,CAAC;KAAA;IAEO,YAAY,CAAC,KAAU;QAC7B,IAAI,KAAK,YAAY,kDAAU,EAAE;YAC/B,OAAO,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;SAC9B;QACD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QACnB,OAAO,IAAI,CAAC;IACd,CAAC;IAEY,cAAc,CAAC,MAAuB;;YACjD,IAAI;gBACF,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,iDAAS,CAAC,OAAO,CAAC,oBAAoB,EAAE,MAAM,CAAmB,CAAC;gBAC9G,IAAI,MAAM,EAAE;oBACV,MAAM,eAAe,GAAG,sDAAc,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;oBAC3D,OAAO,OAAO,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC;iBACzC;aACF;YAAC,OAAO,KAAK,EAAE;gBACd,OAAO,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;aACjC;QACH,CAAC;KAAA;IAEY,YAAY,CAAC,QAAgB,EAAE,SAAiB;;YAC3D,IAAI;gBACF,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,iDAAS,CAAC,OAAO,CAAC,YAAY,EAAE,EAAE,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAE,SAAS,EAAE,CAAC,CAAC;gBAC1H,IAAI,MAAM,EAAE;oBACV,OAAO,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;iBAClC;aACF;YAAC,OAAO,KAAK,EAAE;gBACd,OAAO,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;aACjC;QACH,CAAC;KAAA;IAEO,WAAW;QACjB,MAAM,IAAI,GAAG;YACX;gBACE,EAAE,EAAE,CAAC,EAAE,WAAW,EAAE,SAAS,EAAE,SAAS,EAAE,WAAW,EAAE,QAAQ,EAAE,UAAU,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,qDAAc,CAAC,QAAQ,EAAE,WAAW,EAAE,CAAC,EAAE,iBAAiB,EAAE,CAAC,WAAW,EAAE,WAAW,CAAC,EAAE,aAAa,EAAE,IAAI,IAAI;gBACpN,YAAY,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC;aAC/L;YACD;gBACE,EAAE,EAAE,CAAC,EAAE,WAAW,EAAE,SAAS,EAAE,SAAS,EAAE,YAAY,EAAE,QAAQ,EAAE,WAAW,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,qDAAc,CAAC,MAAM,EAAE,WAAW,EAAE,CAAC,EAAE,iBAAiB,EAAE,CAAC,WAAW,EAAE,WAAW,CAAC,EAAE,aAAa,EAAE,IAAI,IAAI;gBACrN,YAAY,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC;aAC/L;SACmB,CAAC;QAEvB,OAAO,IAAI,CAAC;IACd,CAAC;CACF;;YA1EyB,mDAAW;YAChB,sDAAM;;AAJd,gBAAgB;IAH5B,gEAAU,CAAC;QACV,UAAU,EAAE,MAAM;KACnB,CAAC;qCAIwB,mDAAW;QAChB,sDAAM;GAJd,gBAAgB,CA6E5B;AA7E4B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACTN;AACA;AACG;;;;;;;;;;;;;;;;;;;;ACFgB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACAQ;AACkB;AACX;AAEoB;AACvB;AAEtD,MAAM;AACN,wBAAwB;AAMxB,IAAa,wBAAwB,GAArC,MAAa,wBAAwB;IAOnC,YACU,WAAwB,EACxB,KAAqB,EACrB,MAAc,EACd,eAA+B;QAH/B,gBAAW,GAAX,WAAW,CAAa;QACxB,UAAK,GAAL,KAAK,CAAgB;QACrB,WAAM,GAAN,MAAM,CAAQ;QACd,oBAAe,GAAf,eAAe,CAAgB;QATzC,cAAS,GAAG,KAAK,CAAC;QAClB,YAAO,GAAG,KAAK,CAAC;QAEhB,iBAAY,GAAG,kDAAU,CAAC,OAAO,CAAC;IAO9B,CAAC;IAEL,QAAQ;QACN,IAAI,CAAC,yBAAyB,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC;YACtD,SAAS,EAAE;gBACT,EAAE;gBACF,yDAAU,CAAC,OAAO,CAClB,CAAC,yDAAU,CAAC,QAAQ;oBACpB,yDAAU,CAAC,KAAK;oBAChB,yEAAc,EAAE;iBACjB,CAAC;aAAC;SACJ,CAAC,CAAC;IACL,CAAC;IAED,IAAI,CAAC,KAAK,OAAO,IAAI,CAAC,yBAAyB,CAAC,QAAQ,CAAC,CAAC,CAAC;IAE3D,QAAQ;QACN,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;QACtB,MAAM,SAAS,GAAG,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;QAEhD,IAAI,IAAI,CAAC,yBAAyB,CAAC,OAAO,EAAE;YAC1C,OAAO;SACR;QACD,MAAM,oBAAoB,GAAG,IAAI,4DAAoB,CAAC,SAAS,CAAC,CAAC;QACjE,MAAM,MAAM,GAAG,IAAI,CAAC,eAAe,CAAC,eAAe,CAAC,oBAAoB,CAAC,CAAC;QAC1E,IAAI,MAAM,IAAI,IAAI,EAClB;YACE,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;YACpB,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC;SAC7B;IACH,CAAC;CACF;;YAnCwB,0DAAW;YACjB,8DAAc;YACb,sDAAM;YACG,sDAAc;;AAX9B,wBAAwB;IALpC,+DAAS,CAAC;QACT,QAAQ,EAAE,+BAA+B;QACzC,8MAAgD;KACjD,CAAC;qCAUuB,0DAAW;QACjB,8DAAc;QACb,sDAAM;QACG,sDAAc;GAX9B,wBAAwB,CA2CpC;AA3CoC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACdU;AACW;AACjB;AACM;AACmB;AAEM;AACjC;AAiBvC,IAAa,qBAAqB,GAAlC,MAAa,qBAAqB;CAAI;AAAzB,qBAAqB;IAfjC,8DAAQ,CAAC;QACR,YAAY,EAAE;YACZ,oFAAwB;SACzB;QACD,OAAO,EAAE;YACP,uEAAa;YACb,4DAAY;YACZ,0DAAW;YACX,kEAAmB;YACnB,4DAAY,CAAC,QAAQ,CAAC;gBACpB,EAAE,IAAI,EAAE,kDAAU,CAAC,gBAAgB,EAAE,SAAS,EAAE,oFAAwB,EAAE;aAC3E,CAAC;SACH;KACF,CAAC;GAEW,qBAAqB,CAAI;AAAJ;;;;;;;;;;;;;;;;;;;;ACxBO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACAS;AACkB;AACX;AAEmB;AAO5E,IAAa,uBAAuB,GAApC,MAAa,uBAAuB;IASlC,YACU,WAAwB,EACxB,MAAc,EACd,eAA+B,EAC/B,cAA8B;QAH9B,gBAAW,GAAX,WAAW,CAAa;QACxB,WAAM,GAAN,MAAM,CAAQ;QACd,oBAAe,GAAf,eAAe,CAAgB;QAC/B,mBAAc,GAAd,cAAc,CAAgB;QAVxC,cAAS,GAAG,KAAK,CAAC;QAClB,sBAAiB,GAAY,KAAK,CAAC;QAGnC,iBAAY,GAAG,kDAAU,CAAC,OAAO,CAAC;IAO9B,CAAC;IAEL,QAAQ;QACN,IAAI,CAAC,wBAAwB,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC;YACrD,QAAQ,EAAE,CAAC,EAAE,EAAE,yDAAU,CAAC,OAAO,CAAC,CAAC,yDAAU,CAAC,QAAQ,EAAE,yDAAU,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,yDAAU,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;YAC5G,OAAO,EAAE,CAAC,EAAE,EAAE,yDAAU,CAAC,OAAO,CAAC,CAAC,yDAAU,CAAC,QAAQ,EAAE,yDAAU,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,yDAAU,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;SAC5G,CAAC,CAAC;QACH,IAAI,CAAC,cAAc,CAAC,WAAW,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE;YACjD,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC;QACjC,CAAC,CAAC,CAAC;IACH,CAAC;IAED,IAAI,CAAC,KAAK,OAAO,IAAI,CAAC,wBAAwB,CAAC,QAAQ,CAAC,CAAC,CAAC;IAE1D,QAAQ;QACN,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;QACtB,IAAI,CAAC,iBAAiB,GAAG,KAAK,CAAC;QAE/B,MAAM,QAAQ,GAAG,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;QAC9C,MAAM,eAAe,GAAG,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;QAEpD,IAAI,IAAI,CAAC,wBAAwB,CAAC,OAAO,EAAE;YACzC,OAAO;SACR;QAED,IAAI,QAAQ,IAAI,eAAe,EAAE;YAC/B,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC;YAC9B,OAAO;SACR;aACG;YACF,MAAM,mBAAmB,GAAG,IAAI,2DAAmB,CAAC,IAAI,CAAC,KAAK,EAAE,QAAQ,EAAE,eAAe,CAAC,CAAC;YAC3F,MAAM,MAAM,GAAG,IAAI,CAAC,eAAe,CAAC,cAAc,CAAC,mBAAmB,CAAC,CAAC;YACxE,IAAI,MAAM,IAAI,IAAI,EAClB;gBACE,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,kDAAU,CAAC,OAAO,CAAC,CAAC;aAC/C;SACF;IACH,CAAC;IAED,wBAAwB;QACtB,IAAI,CAAC,eAAe,GAAG,CAAC,IAAI,CAAC,eAAe,CAAC;IAC/C,CAAC;IAED,oCAAoC;QAClC,IAAI,CAAC,sBAAsB,GAAG,CAAC,IAAI,CAAC,sBAAsB,CAAC;IAC7D,CAAC;CACF;;YAlDwB,0DAAW;YAChB,sDAAM;YACG,sDAAc;YACf,8DAAc;;AAb7B,uBAAuB;IALnC,+DAAS,CAAC;QACT,QAAQ,EAAE,8BAA8B;QACxC,2MAA+C;KAChD,CAAC;qCAYuB,0DAAW;QAChB,sDAAM;QACG,sDAAc;QACf,8DAAc;GAb7B,uBAAuB,CA4DnC;AA5DmC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACXW;AACW;AACjB;AACM;AACmB;AAEI;AAC/B;AAiBvC,IAAa,oBAAoB,GAAjC,MAAa,oBAAoB;CAAI;AAAxB,oBAAoB;IAfhC,8DAAQ,CAAC;QACR,YAAY,EAAE;YACZ,kFAAuB;SACxB;QACD,OAAO,EAAE;YACP,uEAAa;YACb,4DAAY;YACZ,0DAAW;YACX,kEAAmB;YACnB,4DAAY,CAAC,QAAQ,CAAC;gBACpB,EAAE,IAAI,EAAE,kDAAU,CAAC,eAAe,EAAE,SAAS,EAAE,kFAAuB,EAAE;aACzE,CAAC;SACH;KACF,CAAC;GAEW,oBAAoB,CAAI;AAAJ;;;;;;;;;;;;;;;;;;;;;;;ACxBA;AACG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACDoB;AACP;AAMjD,IAAa,gBAAgB,wBAA7B,MAAa,gBAAgB;IAK3B,QAAQ;QACN,MAAM,SAAS,GAAG,QAAQ,CAAC,aAAa,CAAC,kBAAgB,CAAC,cAAc,CAAgB,CAAC;QACzF,IAAI,CAAC,mBAAmB,CAAC,SAAS,CAAC,CAAC;IACtC,CAAC;IACD,eAAe;QACb,MAAM,SAAS,GAAG,QAAQ,CAAC,aAAa,CAAC,kBAAgB,CAAC,cAAc,CAAgB,CAAC;QACzF,IAAI,CAAC,mBAAmB,CAAC,SAAS,CAAC,CAAC;IACtC,CAAC;IAGD,QAAQ;QACN,MAAM,SAAS,GAAG,QAAQ,CAAC,aAAa,CAAC,kBAAgB,CAAC,cAAc,CAAgB,CAAC;QACzF,IAAI,CAAC,mBAAmB,CAAC,SAAS,CAAC,CAAC;IACtC,CAAC;IAEO,mBAAmB,CAAC,OAAoB,EAAE,OAAgB;QAChE,IAAI,CAAC,oBAAoB,IAAI,IAAI,CAAC,oBAAoB,CAAC,OAAO,EAAE,CAAC;QAEjE,MAAM,mBAAmB,GAAG,GAAG,EAAE;YAC/B,IAAI,CAAC,oBAAoB,GAAG,IAAI,yDAAgB,CAAC,OAAO,EAAE;gBACxD,UAAU,EAAE,CAAC;gBACb,gBAAgB,EAAE,IAAI;gBACtB,kBAAkB,EAAE,EAAE;aACvB,CAAC,CAAC;QACL,CAAC,CAAC;QAEF,IAAI,OAAO,EAAE;YACX,UAAU,CAAC,GAAG,EAAE;gBACd,mBAAmB,EAAE,CAAC;YACxB,CAAC,EAAE,OAAO,CAAC,CAAC;SACb;aAAM;YACL,mBAAmB,EAAE,CAAC;SACvB;IACH,CAAC;CACF;AAtCyB,+BAAc,GAAG,kBAAkB,CAAC;AAc5D;IADC,kEAAY,CAAC,gBAAgB,EAAE,CAAC,eAAe,CAAC,CAAC;;;;gDAIjD;AAlBU,gBAAgB;IAL5B,+DAAS,CAAC;QACT,QAAQ,EAAE,sBAAsB;QAChC,mLAAuC;KACxC,CAAC;GAEW,gBAAgB,CAuC5B;AAvC4B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACPkB;AACW;AACjB;AACM;AACmB;AAE3B;AACgB;AAgBvD,IAAa,aAAa,GAA1B,MAAa,aAAa;CAAI;AAAjB,aAAa;IAdzB,8DAAQ,CAAC;QACR,YAAY,EAAE;YACZ,mEAAgB;SACjB;QACD,OAAO,EAAE;YACP,uEAAa;YACb,4DAAY;YACZ,0DAAW;YACX,kEAAmB;YACnB,4DAAY,CAAC,QAAQ,CAAC;gBACpB,EAAE,IAAI,EAAE,kDAAU,CAAC,OAAO,EAAE,SAAS,EAAE,mEAAgB,EAAE;aAC1D,CAAC;SAAC;KACN,CAAC;GAEW,aAAa,CAAI;AAAJ;;;;;;;;;;;;;;;;;;;;ACvBO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACAmC;AAClB;AAEL;AACyB;AAChB;AACf;AAOvC,IAAa,eAAe,GAA5B,MAAa,eAAe;IAY1B,YACU,YAAyB,EACzB,YAA8B;QAD9B,iBAAY,GAAZ,YAAY,CAAa;QACzB,iBAAY,GAAZ,YAAY,CAAkB;QAbxC,eAAU,GAAG,KAAK,CAAC;QACnB,4BAAuB,GAAG,KAAK,CAAC;QAChC,qBAAgB,GAAG,KAAK,CAAC;QACzB,qBAAgB,GAAG,KAAK,CAAC;QACzB,+BAA0B,GAAG,KAAK,CAAC;QACnC,kCAA6B,GAAG,KAAK,CAAC;QAItC,iBAAY,GAAG,kDAAU,CAAC,OAAO,CAAC;QAMhC,IAAI,CAAC,YAAY,CAAC,4BAA4B,EAAE,CAAC;IACnD,CAAC;IAED,QAAQ;QACN,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC;YACxC,SAAS,EAAE;gBACT,EAAE;gBACF,yDAAU,CAAC,OAAO,CAAC;oBACjB,yDAAU,CAAC,QAAQ;oBACnB,yEAAc,CAAC,EAAE,OAAO,EAAE,yBAAyB,EAAE,eAAe,EAAE,CAAC,CAAC,EAAE,aAAa,EAAE,CAAC,CAAC,EAAE,CAAC;oBAC9F,yDAAU,CAAC,SAAS,CAAC,CAAC,CAAC;oBACvB,yDAAU,CAAC,SAAS,CAAC,EAAE,CAAC;iBACzB,CAAC;aACH;YACD,QAAQ,EAAE;gBACR,EAAE;gBACF,yDAAU,CAAC,OAAO,CAAC;oBACjB,yDAAU,CAAC,QAAQ;oBACnB,yDAAU,CAAC,SAAS,CAAC,CAAC,CAAC;oBACvB,yDAAU,CAAC,SAAS,CAAC,EAAE,CAAC;iBACzB,CAAC;aACH;SACF,CAAC,CAAC;QAEH,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,SAAS,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,uBAAuB,GAAG,KAAK,CAAC,CAAC;QACnF,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,SAAS,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,gBAAgB,GAAG,KAAK,CAAC,CAAC;QAC5E,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,SAAS,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,gBAAgB,GAAG,KAAK,CAAC,CAAC;IAC9E,CAAC;IAED,IAAI,CAAC,KAAK,OAAO,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC;IAE5C,QAAQ;QACN,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;QAEvB,MAAM,SAAS,GAAG,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;QAChD,MAAM,QAAQ,GAAG,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;QAE9C,IAAI,IAAI,CAAC,UAAU,CAAC,OAAO,IAAI,CAAC,CAAC,IAAI,CAAC,uBAAuB,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,EAAE;YACxF,OAAO;SACR;QACD,IAAI,CAAC,uBAAuB,GAAG,KAAK,CAAC;QACrC,IAAI,CAAC,gBAAgB,GAAG,KAAK,CAAC;QAE9B,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,SAAS,EAAE,QAAQ,CAAC;aACzC,IAAI,CAAC,CAAC,QAAwB,EAAE,EAAE;YACjC,IAAI,QAAQ,YAAY,kDAAU,EAAE;gBAClC,IAAI,QAAQ,CAAC,IAAI,KAAK,qDAAa,CAAC,0BAA0B,EAAE;oBAC9D,IAAI,CAAC,uBAAuB,GAAG,IAAI,CAAC;iBACrC;qBAAM,IAAI,QAAQ,CAAC,IAAI,KAAK,qDAAa,CAAC,eAAe,EAAE;oBAC1D,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC;iBAC9B;qBAAM,IAAI,QAAQ,CAAC,IAAI,KAAK,qDAAa,CAAC,YAAY,EAAE;oBACvD,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC;iBAC9B;aACF;iBAAM,IAAI,QAAQ,EAAE;gBACnB,IAAI,CAAC,SAAS,EAAE,CAAC;aAClB;QACH,CAAC,CAAC,CAAC;IACP,CAAC;IAED,kBAAkB;QAChB,IAAI,CAAC,aAAa,GAAG,CAAC,IAAI,CAAC,aAAa,CAAC;IAC3C,CAAC;IAEO,SAAS;QACf,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;QACxB,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC;QACxB,IAAI,CAAC,UAAU,CAAC,eAAe,EAAE,CAAC;QAClC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE;YACrD,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;YAC/C,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;QAC1B,CAAC,CAAC,CAAC;IACL,CAAC;CACF;;YA3EyB,0DAAW;YACX,wDAAgB;;AAd7B,eAAe;IAL3B,+DAAS,CAAC;QACT,QAAQ,EAAE,sBAAsB;QAChC,mLAAuC;KACxC,CAAC;qCAewB,0DAAW;QACX,wDAAgB;GAd7B,eAAe,CAwF3B;AAxF2B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACbmB;AACW;AACjB;AACM;AACmB;AAEZ;AACf;AAgBvC,IAAa,YAAY,GAAzB,MAAa,YAAY;CAAI;AAAhB,YAAY;IAdxB,8DAAQ,CAAC;QACR,YAAY,EAAE;YACZ,kEAAe;SAChB;QACD,OAAO,EAAE;YACP,uEAAa;YACb,4DAAY;YACZ,0DAAW;YACX,kEAAmB;YACnB,4DAAY,CAAC,QAAQ,CAAC;gBACpB,EAAE,IAAI,EAAE,kDAAU,CAAC,OAAO,EAAE,SAAS,EAAE,kEAAe,EAAE;aACzD,CAAC;SAAC;KACN,CAAC;GAEW,YAAY,CAAI;AAAJ;;;;;;;;;;;;;ACvBzB;AAAA;AAAA,gFAAgF;AAChF,2EAA2E;AAC3E,gEAAgE;;;;AAEzD,MAAM,WAAW,GAAG;IACzB,UAAU,EAAE,KAAK;CAClB,CAAC;AAEF;;;;;GAKG;AACH,mEAAmE;;;;;;;;;;;;ACdnE,iBAAiB,qBAAuB,+B;;;;;;;;;;;ACAxC,iBAAiB,qBAAuB,sC;;;;;;;;;;;ACAxC,iBAAiB,qBAAuB,qC;;;;;;;;;;;ACAxC,iBAAiB,qBAAuB,qC;;;;;;;;;;;ACAxC,iBAAiB,qBAAuB,oC;;;;;;;;;;;ACAxC,iBAAiB,qBAAuB,8B;;;;;;;;;;;ACAxC,iBAAiB,qBAAuB,yC;;;;;;;;;;;ACAxC,iBAAiB,qBAAuB,wC;;;;;;;;;;;ACAxC,iBAAiB,qBAAuB,sC;;;;;;;;;;;ACAxC,iBAAiB,qBAAuB,+C;;;;;;;;;;;ACAxC,iBAAiB,qBAAuB,6B;;;;;;;;;;;ACAxC,iBAAiB,qBAAuB,wC;;;;;;;;;;;ACAxC,iBAAiB,qBAAuB,+C;;;;;;;;;;;ACAxC,iBAAiB,qBAAuB,+C;;;;;;;;;;;ACAxC,iBAAiB,qBAAuB,6C;;;;;;;;;;;ACAxC,iBAAiB,qBAAuB,sC;;;;;;;;;;;ACAxC,iBAAiB,qBAAuB,oD;;;;;;;;;;;ACAxC,iBAAiB,qBAAuB,8B;;;;;;;;;;;ACAxC,iBAAiB,qBAAuB,sC;;;;;;;;;;;ACAxC,iBAAiB,qBAAuB,sC;;;;;;;;;;;ACAxC,iBAAiB,qBAAuB,oC;;;;;;;;;;;ACAxC,iBAAiB,qBAAuB,qC;;;;;;;;;;;ACAxC,iBAAiB,qBAAuB,mC;;;;;;;;;;;ACAxC,iBAAiB,qBAAuB,kD;;;;;;;;;;;ACAxC,iBAAiB,qBAAuB,wC;;;;;;;;;;;ACAxC,iBAAiB,qBAAuB,6C;;;;;;;;;;;ACAxC,iBAAiB,qBAAuB,qC;;;;;;;;;;;ACAxC,iBAAiB,qBAAuB,4C;;;;;;;;;;;ACAxC,iBAAiB,qBAAuB,wC;;;;;;;;;;;ACAxC,iBAAiB,qBAAuB,sC;;;;;;;;;;;ACAxC,iBAAiB,qBAAuB,2C;;;;;;;;;;;ACAxC,iBAAiB,qBAAuB,kC;;;;;;;;;;;ACAxC,iBAAiB,qBAAuB,yC;;;;;;;;;;;ACAxC,iBAAiB,qBAAuB,kC;;;;;;;;;;;ACAxC,iBAAiB,qBAAuB,mC;;;;;;;;;;;ACAxC,iBAAiB,qBAAuB,oC;;;;;;;;;;;ACAxC,iBAAiB,qBAAuB,uC;;;;;;;;;;;ACAxC,iBAAiB,qBAAuB,gC;;;;;;;;;;;ACAxC,iBAAiB,qBAAuB,gC;;;;;;;;;;;ACAxC,iBAAiB,qBAAuB,2C;;;;;;;;;;;ACAxC,iBAAiB,qBAAuB,0C;;;;;;;;;;;ACAxC,iBAAiB,qBAAuB,0C;;;;;;;;;;;ACAxC,iBAAiB,qBAAuB,yC;;;;;;;;;;;ACAxC,iBAAiB,qBAAuB,oC;;;;;;;;;;;ACAxC,iBAAiB,qBAAuB,mC;;;;;;;;;;;ACAxC,iBAAiB,qBAAuB,4C;;;;;;;;;;;ACAxC,iBAAiB,qBAAuB,2C;;;;;;;;;;;ACAxC,iBAAiB,qBAAuB,2C;;;;;;;;;;;ACAxC,iBAAiB,qBAAuB,0C;;;;;;;;;;;ACAxC,iBAAiB,qBAAuB,0C;;;;;;;;;;;ACAxC,iBAAiB,qBAAuB,yC;;;;;;;;;;;ACAxC,iBAAiB,qBAAuB,yC;;;;;;;;;;;ACAxC,iBAAiB,qBAAuB,wC;;;;;;;;;;;ACAxC,iBAAiB,qBAAuB,oC;;;;;;;;;;;ACAxC,iBAAiB,qBAAuB,mC;;;;;;;;;;;ACAxC,iBAAiB,qBAAuB,kC;;;;;;;;;;;ACAxC,iBAAiB,qBAAuB,iC;;;;;;;;;;;ACAxC,iBAAiB,qBAAuB,2C;;;;;;;;;;;ACAxC,iBAAiB,qBAAuB,0C;;;;;;;;;;;ACAxC,iBAAiB,qBAAuB,0C;;;;;;;;;;;ACAxC,iBAAiB,qBAAuB,yC;;;;;;;;;;;ACAxC,iBAAiB,qBAAuB,8C;;;;;;;;;;;ACAxC,iBAAiB,qBAAuB,6C;;;;;;;;;;;ACAxC,iBAAiB,qBAAuB,4C;;;;;;;;;;;ACAxC,iBAAiB,qBAAuB,qC;;;;;;;;;;;ACAxC,iBAAiB,qBAAuB,4C;;;;;;;;;;;ACAxC,iBAAiB,qBAAuB,sC;;;;;;;;;;;ACAxC,iBAAiB,qBAAuB,wC;;;;;;;;;;;ACAxC,iBAAiB,qBAAuB,sC;;;;;;;;;;;ACAxC,iBAAiB,qBAAuB,kC;;;;;;;;;;;ACAxC,iBAAiB,qBAAuB,gD;;;;;;;;;;;ACAxC,iBAAiB,qBAAuB,+B;;;;;;;;;;;ACAxC,iBAAiB,qBAAuB,kC;;;;;;;;;;;ACAxC,iBAAiB,qBAAuB,iC;;;;;;;;;;;ACAxC,iBAAiB,qBAAuB,oC;;;;;;;;;;;ACAxC,iBAAiB,qBAAuB,mC;;;;;;;;;;;ACAxC,iBAAiB,qBAAuB,yB;;;;;;;;;;;ACAxC,iBAAiB,qBAAuB,mD;;;;;;;;;;;ACAxC,iBAAiB,qBAAuB,8C;;;;;;;;;;;ACAxC,iBAAiB,qBAAuB,kD;;;;;;;;;;;ACAxC,iBAAiB,qBAAuB,yD;;;;;;;;;;;ACAxC,iBAAiB,qBAAuB,kD;;;;;;;;;;;ACAxC,iBAAiB,qBAAuB,4C;;;;;;;;;;;ACAxC,iBAAiB,qBAAuB,sD;;;;;;;;;;;ACAxC,iBAAiB,qBAAuB,qD;;;;;;;;;;;ACAxC,iBAAiB,qBAAuB,6D;;;;;;;;;;;ACAxC,iBAAiB,qBAAuB,4D;;;;;;;;;;;ACAxC,iBAAiB,qBAAuB,kD;;;;;;;;;;;ACAxC,iBAAiB,qBAAuB,iD;;;;;;;;;;;ACAxC,iBAAiB,qBAAuB,uD;;;;;;;;;;;ACAxC,iBAAiB,qBAAuB,sD;;;;;;;;;;;ACAxC,iBAAiB,qBAAuB,qD;;;;;;;;;;;ACAxC,iBAAiB,qBAAuB,oD;;;;;;;;;;;ACAxC,iBAAiB,qBAAuB,uD;;;;;;;;;;;ACAxC,iBAAiB,qBAAuB,sD;;;;;;;;;;;ACAxC,iBAAiB,qBAAuB,yC;;;;;;;;;;;ACAxC,iBAAiB,qBAAuB,wC;;;;;;;;;;;ACAxC,iBAAiB,qBAAuB,6C;;;;;;;;;;;ACAxC,iBAAiB,qBAAuB,4C;;;;;;;;;;;ACAxC,iBAAiB,qBAAuB,uD;;;;;;;;;;;ACAxC,iBAAiB,qBAAuB,sD;;;;;;;;;;;ACAxC,iBAAiB,qBAAuB,+C;;;;;;;;;;;ACAxC,iBAAiB,qBAAuB,2C;;;;;;;;;;;ACAxC,iBAAiB,qBAAuB,2C;;;;;;;;;;;ACAxC,iBAAiB,qBAAuB,2C;;;;;;;;;;;ACAxC,iBAAiB,qBAAuB,yD;;;;;;;;;;;ACAxC,iBAAiB,qBAAuB,wC;;;;;;;;;;;ACAxC,iBAAiB,qBAAuB,kD;;;;;;;;;;;ACAxC,iBAAiB,qBAAuB,6C;;;;;;;;;;;ACAxC,iBAAiB,qBAAuB,qC;;;;;;;;;;;ACAxC,iBAAiB,qBAAuB,4C;;;;;;;;;;;ACAxC,iBAAiB,qBAAuB,sC;;;;;;;;;;;ACAxC,iBAAiB,qBAAuB,wC;;;;;;;;;;;ACAxC,iBAAiB,qBAAuB,sC;;;;;;;;;;;ACAxC,iBAAiB,qBAAuB,kC;;;;;;;;;;;ACAxC,iBAAiB,qBAAuB,yC;;;;;;;;;;;ACAxC,iBAAiB,qBAAuB,6B;;;;;;;;;;;;;;;;;;;;;ACAO;AAC4B;AAE9B;AACY;AAElD,SAAS,UAAU;IACxB,OAAO,QAAQ,CAAC,oBAAoB,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;AACvD,CAAC;AAED,MAAM,SAAS,GAAG;IAChB,EAAE,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,IAAI,EAAE,EAAE,EAAE;CAC1D,CAAC;AAEF,IAAI,qEAAW,CAAC,UAAU,EAAE;IAC1B,oEAAc,EAAE,CAAC;CAClB;AAED,gGAAsB,CAAC,SAAS,CAAC,CAAC,eAAe,CAAC,yDAAS,CAAC;KACzD,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC","file":"main-es2015.js","sourcesContent":["var map = {\n\t\"./af\": \"./node_modules/moment/locale/af.js\",\n\t\"./af.js\": \"./node_modules/moment/locale/af.js\",\n\t\"./ar\": \"./node_modules/moment/locale/ar.js\",\n\t\"./ar-dz\": \"./node_modules/moment/locale/ar-dz.js\",\n\t\"./ar-dz.js\": \"./node_modules/moment/locale/ar-dz.js\",\n\t\"./ar-kw\": \"./node_modules/moment/locale/ar-kw.js\",\n\t\"./ar-kw.js\": \"./node_modules/moment/locale/ar-kw.js\",\n\t\"./ar-ly\": \"./node_modules/moment/locale/ar-ly.js\",\n\t\"./ar-ly.js\": \"./node_modules/moment/locale/ar-ly.js\",\n\t\"./ar-ma\": \"./node_modules/moment/locale/ar-ma.js\",\n\t\"./ar-ma.js\": \"./node_modules/moment/locale/ar-ma.js\",\n\t\"./ar-sa\": \"./node_modules/moment/locale/ar-sa.js\",\n\t\"./ar-sa.js\": \"./node_modules/moment/locale/ar-sa.js\",\n\t\"./ar-tn\": \"./node_modules/moment/locale/ar-tn.js\",\n\t\"./ar-tn.js\": \"./node_modules/moment/locale/ar-tn.js\",\n\t\"./ar.js\": \"./node_modules/moment/locale/ar.js\",\n\t\"./az\": \"./node_modules/moment/locale/az.js\",\n\t\"./az.js\": \"./node_modules/moment/locale/az.js\",\n\t\"./be\": \"./node_modules/moment/locale/be.js\",\n\t\"./be.js\": \"./node_modules/moment/locale/be.js\",\n\t\"./bg\": \"./node_modules/moment/locale/bg.js\",\n\t\"./bg.js\": \"./node_modules/moment/locale/bg.js\",\n\t\"./bm\": \"./node_modules/moment/locale/bm.js\",\n\t\"./bm.js\": \"./node_modules/moment/locale/bm.js\",\n\t\"./bn\": \"./node_modules/moment/locale/bn.js\",\n\t\"./bn-bd\": \"./node_modules/moment/locale/bn-bd.js\",\n\t\"./bn-bd.js\": \"./node_modules/moment/locale/bn-bd.js\",\n\t\"./bn.js\": \"./node_modules/moment/locale/bn.js\",\n\t\"./bo\": \"./node_modules/moment/locale/bo.js\",\n\t\"./bo.js\": \"./node_modules/moment/locale/bo.js\",\n\t\"./br\": \"./node_modules/moment/locale/br.js\",\n\t\"./br.js\": \"./node_modules/moment/locale/br.js\",\n\t\"./bs\": \"./node_modules/moment/locale/bs.js\",\n\t\"./bs.js\": \"./node_modules/moment/locale/bs.js\",\n\t\"./ca\": \"./node_modules/moment/locale/ca.js\",\n\t\"./ca.js\": \"./node_modules/moment/locale/ca.js\",\n\t\"./cs\": \"./node_modules/moment/locale/cs.js\",\n\t\"./cs.js\": \"./node_modules/moment/locale/cs.js\",\n\t\"./cv\": \"./node_modules/moment/locale/cv.js\",\n\t\"./cv.js\": \"./node_modules/moment/locale/cv.js\",\n\t\"./cy\": \"./node_modules/moment/locale/cy.js\",\n\t\"./cy.js\": \"./node_modules/moment/locale/cy.js\",\n\t\"./da\": \"./node_modules/moment/locale/da.js\",\n\t\"./da.js\": \"./node_modules/moment/locale/da.js\",\n\t\"./de\": \"./node_modules/moment/locale/de.js\",\n\t\"./de-at\": \"./node_modules/moment/locale/de-at.js\",\n\t\"./de-at.js\": \"./node_modules/moment/locale/de-at.js\",\n\t\"./de-ch\": \"./node_modules/moment/locale/de-ch.js\",\n\t\"./de-ch.js\": \"./node_modules/moment/locale/de-ch.js\",\n\t\"./de.js\": \"./node_modules/moment/locale/de.js\",\n\t\"./dv\": \"./node_modules/moment/locale/dv.js\",\n\t\"./dv.js\": \"./node_modules/moment/locale/dv.js\",\n\t\"./el\": \"./node_modules/moment/locale/el.js\",\n\t\"./el.js\": \"./node_modules/moment/locale/el.js\",\n\t\"./en-au\": \"./node_modules/moment/locale/en-au.js\",\n\t\"./en-au.js\": \"./node_modules/moment/locale/en-au.js\",\n\t\"./en-ca\": \"./node_modules/moment/locale/en-ca.js\",\n\t\"./en-ca.js\": \"./node_modules/moment/locale/en-ca.js\",\n\t\"./en-gb\": \"./node_modules/moment/locale/en-gb.js\",\n\t\"./en-gb.js\": \"./node_modules/moment/locale/en-gb.js\",\n\t\"./en-ie\": \"./node_modules/moment/locale/en-ie.js\",\n\t\"./en-ie.js\": \"./node_modules/moment/locale/en-ie.js\",\n\t\"./en-il\": \"./node_modules/moment/locale/en-il.js\",\n\t\"./en-il.js\": \"./node_modules/moment/locale/en-il.js\",\n\t\"./en-in\": \"./node_modules/moment/locale/en-in.js\",\n\t\"./en-in.js\": \"./node_modules/moment/locale/en-in.js\",\n\t\"./en-nz\": \"./node_modules/moment/locale/en-nz.js\",\n\t\"./en-nz.js\": \"./node_modules/moment/locale/en-nz.js\",\n\t\"./en-sg\": \"./node_modules/moment/locale/en-sg.js\",\n\t\"./en-sg.js\": \"./node_modules/moment/locale/en-sg.js\",\n\t\"./eo\": \"./node_modules/moment/locale/eo.js\",\n\t\"./eo.js\": \"./node_modules/moment/locale/eo.js\",\n\t\"./es\": \"./node_modules/moment/locale/es.js\",\n\t\"./es-do\": \"./node_modules/moment/locale/es-do.js\",\n\t\"./es-do.js\": \"./node_modules/moment/locale/es-do.js\",\n\t\"./es-mx\": \"./node_modules/moment/locale/es-mx.js\",\n\t\"./es-mx.js\": \"./node_modules/moment/locale/es-mx.js\",\n\t\"./es-us\": \"./node_modules/moment/locale/es-us.js\",\n\t\"./es-us.js\": \"./node_modules/moment/locale/es-us.js\",\n\t\"./es.js\": \"./node_modules/moment/locale/es.js\",\n\t\"./et\": \"./node_modules/moment/locale/et.js\",\n\t\"./et.js\": \"./node_modules/moment/locale/et.js\",\n\t\"./eu\": \"./node_modules/moment/locale/eu.js\",\n\t\"./eu.js\": \"./node_modules/moment/locale/eu.js\",\n\t\"./fa\": \"./node_modules/moment/locale/fa.js\",\n\t\"./fa.js\": \"./node_modules/moment/locale/fa.js\",\n\t\"./fi\": \"./node_modules/moment/locale/fi.js\",\n\t\"./fi.js\": \"./node_modules/moment/locale/fi.js\",\n\t\"./fil\": \"./node_modules/moment/locale/fil.js\",\n\t\"./fil.js\": \"./node_modules/moment/locale/fil.js\",\n\t\"./fo\": \"./node_modules/moment/locale/fo.js\",\n\t\"./fo.js\": \"./node_modules/moment/locale/fo.js\",\n\t\"./fr\": \"./node_modules/moment/locale/fr.js\",\n\t\"./fr-ca\": \"./node_modules/moment/locale/fr-ca.js\",\n\t\"./fr-ca.js\": \"./node_modules/moment/locale/fr-ca.js\",\n\t\"./fr-ch\": \"./node_modules/moment/locale/fr-ch.js\",\n\t\"./fr-ch.js\": \"./node_modules/moment/locale/fr-ch.js\",\n\t\"./fr.js\": \"./node_modules/moment/locale/fr.js\",\n\t\"./fy\": \"./node_modules/moment/locale/fy.js\",\n\t\"./fy.js\": \"./node_modules/moment/locale/fy.js\",\n\t\"./ga\": \"./node_modules/moment/locale/ga.js\",\n\t\"./ga.js\": \"./node_modules/moment/locale/ga.js\",\n\t\"./gd\": \"./node_modules/moment/locale/gd.js\",\n\t\"./gd.js\": \"./node_modules/moment/locale/gd.js\",\n\t\"./gl\": \"./node_modules/moment/locale/gl.js\",\n\t\"./gl.js\": \"./node_modules/moment/locale/gl.js\",\n\t\"./gom-deva\": \"./node_modules/moment/locale/gom-deva.js\",\n\t\"./gom-deva.js\": \"./node_modules/moment/locale/gom-deva.js\",\n\t\"./gom-latn\": \"./node_modules/moment/locale/gom-latn.js\",\n\t\"./gom-latn.js\": \"./node_modules/moment/locale/gom-latn.js\",\n\t\"./gu\": \"./node_modules/moment/locale/gu.js\",\n\t\"./gu.js\": \"./node_modules/moment/locale/gu.js\",\n\t\"./he\": \"./node_modules/moment/locale/he.js\",\n\t\"./he.js\": \"./node_modules/moment/locale/he.js\",\n\t\"./hi\": \"./node_modules/moment/locale/hi.js\",\n\t\"./hi.js\": \"./node_modules/moment/locale/hi.js\",\n\t\"./hr\": \"./node_modules/moment/locale/hr.js\",\n\t\"./hr.js\": \"./node_modules/moment/locale/hr.js\",\n\t\"./hu\": \"./node_modules/moment/locale/hu.js\",\n\t\"./hu.js\": \"./node_modules/moment/locale/hu.js\",\n\t\"./hy-am\": \"./node_modules/moment/locale/hy-am.js\",\n\t\"./hy-am.js\": \"./node_modules/moment/locale/hy-am.js\",\n\t\"./id\": \"./node_modules/moment/locale/id.js\",\n\t\"./id.js\": \"./node_modules/moment/locale/id.js\",\n\t\"./is\": \"./node_modules/moment/locale/is.js\",\n\t\"./is.js\": \"./node_modules/moment/locale/is.js\",\n\t\"./it\": \"./node_modules/moment/locale/it.js\",\n\t\"./it-ch\": \"./node_modules/moment/locale/it-ch.js\",\n\t\"./it-ch.js\": \"./node_modules/moment/locale/it-ch.js\",\n\t\"./it.js\": \"./node_modules/moment/locale/it.js\",\n\t\"./ja\": \"./node_modules/moment/locale/ja.js\",\n\t\"./ja.js\": \"./node_modules/moment/locale/ja.js\",\n\t\"./jv\": \"./node_modules/moment/locale/jv.js\",\n\t\"./jv.js\": \"./node_modules/moment/locale/jv.js\",\n\t\"./ka\": \"./node_modules/moment/locale/ka.js\",\n\t\"./ka.js\": \"./node_modules/moment/locale/ka.js\",\n\t\"./kk\": \"./node_modules/moment/locale/kk.js\",\n\t\"./kk.js\": \"./node_modules/moment/locale/kk.js\",\n\t\"./km\": \"./node_modules/moment/locale/km.js\",\n\t\"./km.js\": \"./node_modules/moment/locale/km.js\",\n\t\"./kn\": \"./node_modules/moment/locale/kn.js\",\n\t\"./kn.js\": \"./node_modules/moment/locale/kn.js\",\n\t\"./ko\": \"./node_modules/moment/locale/ko.js\",\n\t\"./ko.js\": \"./node_modules/moment/locale/ko.js\",\n\t\"./ku\": \"./node_modules/moment/locale/ku.js\",\n\t\"./ku.js\": \"./node_modules/moment/locale/ku.js\",\n\t\"./ky\": \"./node_modules/moment/locale/ky.js\",\n\t\"./ky.js\": \"./node_modules/moment/locale/ky.js\",\n\t\"./lb\": \"./node_modules/moment/locale/lb.js\",\n\t\"./lb.js\": \"./node_modules/moment/locale/lb.js\",\n\t\"./lo\": \"./node_modules/moment/locale/lo.js\",\n\t\"./lo.js\": \"./node_modules/moment/locale/lo.js\",\n\t\"./lt\": \"./node_modules/moment/locale/lt.js\",\n\t\"./lt.js\": \"./node_modules/moment/locale/lt.js\",\n\t\"./lv\": \"./node_modules/moment/locale/lv.js\",\n\t\"./lv.js\": \"./node_modules/moment/locale/lv.js\",\n\t\"./me\": \"./node_modules/moment/locale/me.js\",\n\t\"./me.js\": \"./node_modules/moment/locale/me.js\",\n\t\"./mi\": \"./node_modules/moment/locale/mi.js\",\n\t\"./mi.js\": \"./node_modules/moment/locale/mi.js\",\n\t\"./mk\": \"./node_modules/moment/locale/mk.js\",\n\t\"./mk.js\": \"./node_modules/moment/locale/mk.js\",\n\t\"./ml\": \"./node_modules/moment/locale/ml.js\",\n\t\"./ml.js\": \"./node_modules/moment/locale/ml.js\",\n\t\"./mn\": \"./node_modules/moment/locale/mn.js\",\n\t\"./mn.js\": \"./node_modules/moment/locale/mn.js\",\n\t\"./mr\": \"./node_modules/moment/locale/mr.js\",\n\t\"./mr.js\": \"./node_modules/moment/locale/mr.js\",\n\t\"./ms\": \"./node_modules/moment/locale/ms.js\",\n\t\"./ms-my\": \"./node_modules/moment/locale/ms-my.js\",\n\t\"./ms-my.js\": \"./node_modules/moment/locale/ms-my.js\",\n\t\"./ms.js\": \"./node_modules/moment/locale/ms.js\",\n\t\"./mt\": \"./node_modules/moment/locale/mt.js\",\n\t\"./mt.js\": \"./node_modules/moment/locale/mt.js\",\n\t\"./my\": \"./node_modules/moment/locale/my.js\",\n\t\"./my.js\": \"./node_modules/moment/locale/my.js\",\n\t\"./nb\": \"./node_modules/moment/locale/nb.js\",\n\t\"./nb.js\": \"./node_modules/moment/locale/nb.js\",\n\t\"./ne\": \"./node_modules/moment/locale/ne.js\",\n\t\"./ne.js\": \"./node_modules/moment/locale/ne.js\",\n\t\"./nl\": \"./node_modules/moment/locale/nl.js\",\n\t\"./nl-be\": \"./node_modules/moment/locale/nl-be.js\",\n\t\"./nl-be.js\": \"./node_modules/moment/locale/nl-be.js\",\n\t\"./nl.js\": \"./node_modules/moment/locale/nl.js\",\n\t\"./nn\": \"./node_modules/moment/locale/nn.js\",\n\t\"./nn.js\": \"./node_modules/moment/locale/nn.js\",\n\t\"./oc-lnc\": \"./node_modules/moment/locale/oc-lnc.js\",\n\t\"./oc-lnc.js\": \"./node_modules/moment/locale/oc-lnc.js\",\n\t\"./pa-in\": \"./node_modules/moment/locale/pa-in.js\",\n\t\"./pa-in.js\": \"./node_modules/moment/locale/pa-in.js\",\n\t\"./pl\": \"./node_modules/moment/locale/pl.js\",\n\t\"./pl.js\": \"./node_modules/moment/locale/pl.js\",\n\t\"./pt\": \"./node_modules/moment/locale/pt.js\",\n\t\"./pt-br\": \"./node_modules/moment/locale/pt-br.js\",\n\t\"./pt-br.js\": \"./node_modules/moment/locale/pt-br.js\",\n\t\"./pt.js\": \"./node_modules/moment/locale/pt.js\",\n\t\"./ro\": \"./node_modules/moment/locale/ro.js\",\n\t\"./ro.js\": \"./node_modules/moment/locale/ro.js\",\n\t\"./ru\": \"./node_modules/moment/locale/ru.js\",\n\t\"./ru.js\": \"./node_modules/moment/locale/ru.js\",\n\t\"./sd\": \"./node_modules/moment/locale/sd.js\",\n\t\"./sd.js\": \"./node_modules/moment/locale/sd.js\",\n\t\"./se\": \"./node_modules/moment/locale/se.js\",\n\t\"./se.js\": \"./node_modules/moment/locale/se.js\",\n\t\"./si\": \"./node_modules/moment/locale/si.js\",\n\t\"./si.js\": \"./node_modules/moment/locale/si.js\",\n\t\"./sk\": \"./node_modules/moment/locale/sk.js\",\n\t\"./sk.js\": \"./node_modules/moment/locale/sk.js\",\n\t\"./sl\": \"./node_modules/moment/locale/sl.js\",\n\t\"./sl.js\": \"./node_modules/moment/locale/sl.js\",\n\t\"./sq\": \"./node_modules/moment/locale/sq.js\",\n\t\"./sq.js\": \"./node_modules/moment/locale/sq.js\",\n\t\"./sr\": \"./node_modules/moment/locale/sr.js\",\n\t\"./sr-cyrl\": \"./node_modules/moment/locale/sr-cyrl.js\",\n\t\"./sr-cyrl.js\": \"./node_modules/moment/locale/sr-cyrl.js\",\n\t\"./sr.js\": \"./node_modules/moment/locale/sr.js\",\n\t\"./ss\": \"./node_modules/moment/locale/ss.js\",\n\t\"./ss.js\": \"./node_modules/moment/locale/ss.js\",\n\t\"./sv\": \"./node_modules/moment/locale/sv.js\",\n\t\"./sv.js\": \"./node_modules/moment/locale/sv.js\",\n\t\"./sw\": \"./node_modules/moment/locale/sw.js\",\n\t\"./sw.js\": \"./node_modules/moment/locale/sw.js\",\n\t\"./ta\": \"./node_modules/moment/locale/ta.js\",\n\t\"./ta.js\": \"./node_modules/moment/locale/ta.js\",\n\t\"./te\": \"./node_modules/moment/locale/te.js\",\n\t\"./te.js\": \"./node_modules/moment/locale/te.js\",\n\t\"./tet\": \"./node_modules/moment/locale/tet.js\",\n\t\"./tet.js\": \"./node_modules/moment/locale/tet.js\",\n\t\"./tg\": \"./node_modules/moment/locale/tg.js\",\n\t\"./tg.js\": \"./node_modules/moment/locale/tg.js\",\n\t\"./th\": \"./node_modules/moment/locale/th.js\",\n\t\"./th.js\": \"./node_modules/moment/locale/th.js\",\n\t\"./tk\": \"./node_modules/moment/locale/tk.js\",\n\t\"./tk.js\": \"./node_modules/moment/locale/tk.js\",\n\t\"./tl-ph\": \"./node_modules/moment/locale/tl-ph.js\",\n\t\"./tl-ph.js\": \"./node_modules/moment/locale/tl-ph.js\",\n\t\"./tlh\": \"./node_modules/moment/locale/tlh.js\",\n\t\"./tlh.js\": \"./node_modules/moment/locale/tlh.js\",\n\t\"./tr\": \"./node_modules/moment/locale/tr.js\",\n\t\"./tr.js\": \"./node_modules/moment/locale/tr.js\",\n\t\"./tzl\": \"./node_modules/moment/locale/tzl.js\",\n\t\"./tzl.js\": \"./node_modules/moment/locale/tzl.js\",\n\t\"./tzm\": \"./node_modules/moment/locale/tzm.js\",\n\t\"./tzm-latn\": \"./node_modules/moment/locale/tzm-latn.js\",\n\t\"./tzm-latn.js\": \"./node_modules/moment/locale/tzm-latn.js\",\n\t\"./tzm.js\": \"./node_modules/moment/locale/tzm.js\",\n\t\"./ug-cn\": \"./node_modules/moment/locale/ug-cn.js\",\n\t\"./ug-cn.js\": \"./node_modules/moment/locale/ug-cn.js\",\n\t\"./uk\": \"./node_modules/moment/locale/uk.js\",\n\t\"./uk.js\": \"./node_modules/moment/locale/uk.js\",\n\t\"./ur\": \"./node_modules/moment/locale/ur.js\",\n\t\"./ur.js\": \"./node_modules/moment/locale/ur.js\",\n\t\"./uz\": \"./node_modules/moment/locale/uz.js\",\n\t\"./uz-latn\": \"./node_modules/moment/locale/uz-latn.js\",\n\t\"./uz-latn.js\": \"./node_modules/moment/locale/uz-latn.js\",\n\t\"./uz.js\": \"./node_modules/moment/locale/uz.js\",\n\t\"./vi\": \"./node_modules/moment/locale/vi.js\",\n\t\"./vi.js\": \"./node_modules/moment/locale/vi.js\",\n\t\"./x-pseudo\": \"./node_modules/moment/locale/x-pseudo.js\",\n\t\"./x-pseudo.js\": \"./node_modules/moment/locale/x-pseudo.js\",\n\t\"./yo\": \"./node_modules/moment/locale/yo.js\",\n\t\"./yo.js\": \"./node_modules/moment/locale/yo.js\",\n\t\"./zh-cn\": \"./node_modules/moment/locale/zh-cn.js\",\n\t\"./zh-cn.js\": \"./node_modules/moment/locale/zh-cn.js\",\n\t\"./zh-hk\": \"./node_modules/moment/locale/zh-hk.js\",\n\t\"./zh-hk.js\": \"./node_modules/moment/locale/zh-hk.js\",\n\t\"./zh-mo\": \"./node_modules/moment/locale/zh-mo.js\",\n\t\"./zh-mo.js\": \"./node_modules/moment/locale/zh-mo.js\",\n\t\"./zh-tw\": \"./node_modules/moment/locale/zh-tw.js\",\n\t\"./zh-tw.js\": \"./node_modules/moment/locale/zh-tw.js\"\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = \"./node_modules/moment/locale sync recursive ^\\\\.\\\\/.*$\";","export default \"
\\r\\n \\r\\n
\"","export default \"
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n

Complete Registration

\\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n Company can`t be blank!\\r\\n Company\\r\\n name should contain at least 1 symbols!\\r\\n Company\\r\\n name should contain at maximum 50 symbols!\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n First name can`t be blank!\\r\\n First name\\r\\n should contain at least 3 symbols!\\r\\n First name\\r\\n should contain at maximum 50 symbols!\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n Last name can`t be blank!\\r\\n Last name\\r\\n should contain at least 3 symbols!\\r\\n Last name\\r\\n should contain at maximum 50 symbols!\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n Password can`t be blank.\\r\\n Password should\\r\\n contain at least 6 symbols.\\r\\n Password should\\r\\n contain at maximum 50 symbols.\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n Confirm Password can`t be blank.\\r\\n Confirm Password\\r\\n should contain at least 6 symbols.\\r\\n Confirm Password\\r\\n should contain at maximum 50 symbols.\\r\\n
\\r\\n Password and Confirm\\r\\n password should match.\\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n Copyright @ Remote monitoring system\\r\\n |\\r\\n Privacy\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\"","export default \"
\\r\\n
\\r\\n

Data Successfully Saved

\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n

Computation Sheet

\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
For
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n Field is required\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n Field is\\r\\n required\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
Location
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n Field is\\r\\n required\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
Description of storage
\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n
Description of system and air flow rate
\\r\\n \\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
Name
\\r\\n
Value
\\r\\n
Tax
\\r\\n
%
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
Crew travel net:
\\r\\n
\\r\\n \\r\\n
\\r\\n
Material:
\\r\\n
\\r\\n 99.99 ? 'red' : null}\\\">\\r\\n
\\r\\n
\\r\\n
\\r\\n
Freight net:
\\r\\n
\\r\\n \\r\\n
\\r\\n
Labor:
\\r\\n
\\r\\n 99.99 ? 'red' : null}\\\">\\r\\n
\\r\\n
\\r\\n
\\r\\n
Material discount (%):
\\r\\n
\\r\\n 99.99 ? 'red' : null}\\\">\\r\\n
\\r\\n
Crew travel:
\\r\\n
\\r\\n 99.99 ? 'red' : null}\\\">\\r\\n
\\r\\n
\\r\\n
\\r\\n
Labor discount (%):
\\r\\n
\\r\\n 99.99 ? 'red' : null}\\\">\\r\\n
\\r\\n
Freight:
\\r\\n
\\r\\n 99.99 ? 'red' : null}\\\">\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
Prepared by:
\\r\\n
\\r\\n \\r\\n
\\r\\n
Lead Time:
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
TOTALS
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
Total freight weight:
\\r\\n
{{calculateTotalFreightWeight() | number: '1.0-3'}} lbs
\\r\\n
\\r\\n
\\r\\n
Total material prices:
\\r\\n
{{getTotalPriceAllMaterials() | currency}}
\\r\\n
\\r\\n
\\r\\n
Total labor prices:
\\r\\n
{{getTotalPriceAllLabors() | currency}}
\\r\\n
\\r\\n
\\r\\n
Crew travel net:
\\r\\n
{{calculateCrewTravelPriceWithTax() | currency}}
\\r\\n
\\r\\n
\\r\\n
Freight net:
\\r\\n
{{calculateFreightNetPriceWithTax() | currency}}
\\r\\n
\\r\\n
\\r\\n
Materials 0\\\">(less\\r\\n {{_computationSheet.materialDiscountPercentage}}%):
\\r\\n
{{calculateMaterialPriceWithDiscountAndTax() | currency}}
\\r\\n
\\r\\n
\\r\\n
Labor net 0\\\">(less\\r\\n {{_computationSheet.laborDiscountPercentage}}%):
\\r\\n
{{calculateLaborPriceWithDiscountAndTax() | currency}}\\r\\n
\\r\\n
\\r\\n
\\r\\n
GRAND TOTAL:
\\r\\n
{{calculateGrandTotal()| currency}}
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\"","export default \"
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
Part #
\\r\\n
Quantity
\\r\\n
Description
\\r\\n
Weight (ea.)
\\r\\n
Unit material prices
\\r\\n
Unit labor prices
\\r\\n
Total material prices
\\r\\n
Total labor prices
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n 1 || !isEmptyRow(i)) && ((quantity.touched || _isSubmited) && quantity.invalid) ? 'red' : null}\\\" />\\r\\n 1 || !isEmptyRow(i)) && ((quantity.touched || _isSubmited) && quantity.invalid)\\\">Field\\r\\n is required\\r\\n
\\r\\n
\\r\\n \\r\\n 1 || !isEmptyRow(i)) && ((description.touched || _isSubmited) && description.invalid)\\\">Field\\r\\n is required\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n\\r\\n\"","export default \"
\\r\\n
\\r\\n

Duct Design

\\r\\n
\\r\\n\\r\\n
\\r\\n
Select duct type:
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n
Value
\\r\\n
Fans
\\r\\n
CTR-CTR
\\r\\n
Perf/Run (ft.)
\\r\\n
Solid/Run (ft.)
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
{{_flatDuctModel.near.name}}:
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
{{_flatDuctModel.far.name}}:
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
{{_flatDuctModel.front.name}}:
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
{{_flatDuctModel.rear.name}}:
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
Velocities
\\r\\n
\\r\\n
\\r\\n
\\r\\n
Value
\\r\\n
Cross sectional velocity (ft/s)
\\r\\n
Surface velocity (ft/s)
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
Max.
\\r\\n
{{_maxCrossSectionalVelocity}}
\\r\\n
{{_maxSurfaceVelocity}}
\\r\\n
\\r\\n
\\r\\n
Actual.
\\r\\n
{{_actualCrossSectionalVelocity}}
\\r\\n
{{_actualSurfaceVelocity}}
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n\"","export default \"\\r\\n\"","export default \"\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n

Flat Storage Configuration

\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
Choose type of pile
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
Overall Dimensions
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
Peak Dimensions
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n

12

\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
Alter capacity or effective depth
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n\\r\\n\"","export default \"\\r\\n\"","export default \"
\\r\\n

Data Successfully Saved

\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\"","export default \"
\\r\\n
\\r\\n
\\r\\n

Saved Quotes

\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n

Companies

\\r\\n 0\\\">\\r\\n You don't have available storage\\r\\n types\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n {{col.header}}\\r\\n \\r\\n \\r\\n {{col.header}}\\r\\n \\r\\n \\r\\n {{col.header}}\\r\\n \\r\\n \\r\\n {{col.header}}\\r\\n \\r\\n \\r\\n
\\r\\n {{col.header}}\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n {{convertStorageTypeToStringValue(rowData[col.dataField])}}\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n {{rowData[col.dataField] |\\r\\n date:'shortDate'}}\\r\\n \\r\\n \\r\\n {{rowData[col.dataField]}}\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n\\r\\n \\r\\n \\r\\n \\r\\n {{ _searchPhrase ? \\\"No search results found\\\": \\\"Please create new quote\\\" }}\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\"","export default \"\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n

Round Storage Configuration

\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
Choose type of tank
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
Parameters for the grain bin size
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n Ledge assigned w/out hopper\\r\\n No Ledge accounted for\\r\\n Outlet/Ledge out of range\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n Roof Pitch out of range\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n Hopper Pitch out of range\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n Outlet/Ledge out of range\\r\\n Outlet out of range\\r\\n Outlet assigned w/out hopper\\r\\n Outlet too large\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n Angle of repose out of range\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
Alter capacity or effective depth
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n\"","export default \"\"","export default \"\"","export default \"\\r\\n\\r\\n
\\r\\n
\\r\\n

Duct Design

\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
1\\\">\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
1\\\">\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
0 \\\">\\r\\n \\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
0 \\\">\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
Velocities
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
Value
\\r\\n
Cross sectional velocity (ft/s)
\\r\\n
Surface velocity (ft/s)
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
Maximal
\\r\\n
{{_maxCrossSec}}
\\r\\n
{{_maxSurface}}
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
Actual
\\r\\n
{{_actCrossSec}}
\\r\\n
{{_actSurface}}
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\"","export default \"\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n Beyond bin diameter\\r\\n (A)<=(F) \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n (B) too large\\r\\n (B)<=(H) \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n (C) too large\\r\\n (C)<=(H)\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n (D) too large\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n \\r\\n {{item.value.totalTunnelSupport}}\\r\\n \\r\\n \\r\\n {{tunnelSupports.label}}\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n \\r\\n {{item.value.totalTunnelSupport}}\\r\\n \\r\\n \\r\\n {{tunnelSupports.label}}\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n \\r\\n {{item.value.totalTunnelSupport}}\\r\\n \\r\\n \\r\\n {{tunnelSupports.label}}\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n Beyond bin diameter\\r\\n (A)<=(F)\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n (B)<=(H)\\r\\n (C)<=(H)\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
Velocities
\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n {{ col.header }}\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n {{rowData[col.dataField]}}\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n\"","export default \"\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n Beyond bin diameter\\r\\n (A)<=(D)\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n (B) too large\\r\\n (B)<(C)\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n (C) too large\\r\\n (B)<(C)\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n Beyond bin diameter\\r\\n (D)>=(E)\\r\\n (A)<=(D)\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n \\r\\n {{item.value.totalTunnelSupport}}\\r\\n \\r\\n \\r\\n {{tunnelSupports.label}}\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n \\r\\n {{item.value.totalTunnelSupport}}\\r\\n \\r\\n \\r\\n {{tunnelSupports.label}}\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n Beyond bin diameter\\r\\n (D)>=(E)\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
Velocities
\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n {{ col.header }}\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n {{rowData[col.dataField]}}\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n\"","export default \"\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n Beyond bin diameter\\r\\n (A)<=(C)\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n (B) too large\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n (A)<=(C)\\r\\n Beyond bin diameter\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n \\r\\n {{item.value.totalTunnelSupport}}\\r\\n \\r\\n \\r\\n {{tunnelSupports.label}}\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n \\r\\n {{item.value.totalTunnelSupport}}\\r\\n \\r\\n \\r\\n {{tunnelSupports.label}}\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n Beyond bin diameter\\r\\n (F) too large\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
Velocities
\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n {{ col.header }}\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n {{rowData[col.dataField]}}\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n\"","export default \"\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n Beyond bin diameter\\r\\n (A)<=(C)\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n (B) too large\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n Beyond bin diameter\\r\\n (A)<=(C)\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n \\r\\n {{item.value.totalTunnelSupport}}\\r\\n \\r\\n \\r\\n {{tunnelSupports.label}}\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
Velocities
\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n {{ col.header }}\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n {{rowData[col.dataField]}}\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n\"","export default \"\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n (A)<=(E)\\r\\n (E) located beyond (I)\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n (B) too large\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n (C) too large\\r\\n (D)>=(C)\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n (D)>=(C)\\r\\n (D) too large\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n (A)<=(E)\\r\\n (E) located beyond (I)\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n Beyond bin diameter\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n \\r\\n {{item.value.totalTunnelSupport}}\\r\\n \\r\\n \\r\\n {{tunnelSupports.label}}\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n \\r\\n {{item.value.totalTunnelSupport}}\\r\\n \\r\\n \\r\\n {{tunnelSupports.label}}\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n \\r\\n {{item.value.totalTunnelSupport}}\\r\\n \\r\\n \\r\\n {{tunnelSupports.label}}\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n \\r\\n {{item.value.totalTunnelSupport}}\\r\\n \\r\\n \\r\\n {{tunnelSupports.label}}\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n (E) located beyond (I)\\r\\n Beyond bin diameter\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
Velocities
\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n {{ col.header }}\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n {{rowData[col.dataField]}}\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n\"","export default \"\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n (A)<=(F) \\r\\n 1 located beyond 2\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n (B) too large\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n (C) too large\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n (D) too large\\r\\n (E)>(D)\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n (E) too large\\r\\n (E)>(D)\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n (A)<=(F) \\r\\n 1 located beyond 2\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n 2 located beyond 3\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n 1 located beyond 2\\r\\n 2 located beyond 3\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n 2 located beyond 3\\r\\n Beyond bin diameter\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n Beyond bin diameter\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
Velocities
\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n {{ col.header }}\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n {{rowData[col.dataField]}}\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n \\r\\n {{item.value.totalTunnelSupport}}\\r\\n \\r\\n \\r\\n {{tunnelSupports.label}}\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n \\r\\n {{item.value.totalTunnelSupport}}\\r\\n \\r\\n \\r\\n {{tunnelSupports.label}}\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n \\r\\n {{item.value.totalTunnelSupport}}\\r\\n \\r\\n \\r\\n {{tunnelSupports.label}}\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n \\r\\n {{item.value.totalTunnelSupport}}\\r\\n \\r\\n \\r\\n {{tunnelSupports.label}}\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\"","export default \"
\\r\\n
\\r\\n
\\r\\n

Flush Floor Design

\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
Choose flush floor design
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\"","export default \"
\\r\\n

Data Successfully Saved

\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n\\r\\n \\r\\n
\\r\\n\\r\\n\\r\\n\\r\\n\"","export default \"
\\r\\n
\\r\\n
\\r\\n
\\r\\n

Historical Data

\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n\\r\\n

{{ _locationName + ': ' + _equipmentName +\\r\\n _sensorTypeName }}

\\r\\n
\\r\\n\\r\\n
\\r\\n No data\\r\\n
\\r\\n\\r\\n \\r\\n

{{ _selectedDateRange.label }}

\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n
\\r\\n

Equipment Data

\\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n\"","export default \"
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n View data\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n

\\r\\n Maintenance Required\\r\\n

\\r\\n

\\r\\n Shutdown Alarm was trigered\\r\\n

\\r\\n

\\r\\n Time till maintenance required: \\r\\n {{\\r\\n activeEquipment.maintenanceCountDownValue > 0\\r\\n ? activeEquipment.maintenanceCountDownValue +' hrs'\\r\\n : 'No data'\\r\\n }}\\r\\n

\\r\\n

\\r\\n Total running hours: \\r\\n {{\\r\\n activeEquipment.totalRunHoursValue > 0\\r\\n ? activeEquipment.totalRunHoursValue\\r\\n : 'No data'\\r\\n }}\\r\\n

\\r\\n

\\r\\n Last updating timestamp: \\r\\n {{ _receivingTimestamp }}\\r\\n

\\r\\n
\\r\\n\\r\\n\\r\\n\\r\\n \\r\\n\\r\\n\"","export default \"\\r\\n\\r\\n\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n {{ col.header }}\\r\\n \\r\\n
\\r\\n
\\r\\n {{ col.header }}\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n {{ col.getLabel(rowData, ri) }}\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n {{loading ? \\\"\\\" : (sensors?.length==0?\\\"Equipment doesn't have sensors\\\":\\\"\\\")}}\\r\\n \\r\\n \\r\\n \\r\\n
\"","export default \"
\\r\\n
\\r\\n
\\r\\n

{{ _locationName }}

\\r\\n \\r\\n \\r\\n back to Live Data\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n 0\\\"\\r\\n >\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n Export Report\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n

{{ _equipmentName }}

\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n\\r\\n\"","export default \"
\\r\\n
\\r\\n
\\r\\n

Live Data

\\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n

Locations

\\r\\n 0\\\">\\r\\n You don't have available locations\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n

{{ location.name }}

\\r\\n
\\r\\n
\\r\\n
    \\r\\n
  • \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    \\r\\n
    {{ equipment.name }}
    \\r\\n
    \\r\\n \\r\\n Alarms: {{ equipment.alarms\\r\\n }}\\r\\n
    \\r\\n
    \\r\\n \\r\\n Warnings: {{ equipment.warnings\\r\\n }}\\r\\n
    \\r\\n \\r\\n
    \\r\\n
  • \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n\"","export default \"
\\r\\n
\\r\\n
\\r\\n
\\r\\n

Notifications

\\r\\n \\r\\n
\\r\\n\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n Alert type\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n

Locations

\\r\\n 0\\\">\\r\\n You don't have available\\r\\n locations\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n {{ col.header }}\\r\\n \\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n\\r\\n \\r\\n \\r\\n \\r\\n

\\r\\n \\r\\n {{getAlertLabelByType(rowData[col.dataField])}}\\r\\n

\\r\\n

\\r\\n {{rowData[col.dataField] | date:'short'}}\\r\\n

\\r\\n

\\r\\n {{rowData[col.dataField]}}\\r\\n

\\r\\n \\r\\n\\r\\n \\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n {{rowData?.body}}\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n {{frozen ? \\\" \\\" : _totalAlertsCount== undefined ? \\\"One moment please...\\\" :\\r\\n (_eventFilter.dateTimeFrom == null && _eventFilter.dateTimeTo == null) ? \\\"No Active Notifications\\\" : \\\"No\\r\\n Notifications\\\"\\r\\n }}\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n\\r\\n\"","export default \"
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n {{col.header}}\\r\\n \\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n\\r\\n \\r\\n \\r\\n \\r\\n {{col.header}}\\r\\n \\r\\n \\r\\n \\r\\n\\r\\n \\r\\n \\r\\n \\r\\n\\r\\n \\r\\n \\r\\n\\r\\n {{ !rowData[col.dataField]\\r\\n ? 'Not Applicable' : rowData[col.dataField] }}\\r\\n \\r\\n \\r\\n \\r\\n\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n\\r\\n \\r\\n \\r\\n \\r\\n {{frozen ? ' ' : (_lastSearchPhrase ? 'No search results found' : 'One moment please...')}}\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n\\r\\n\\r\\n\\r\\n\"","export default \"
\\r\\n
\\r\\n

BTX Management

\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n\\r\\n\"","export default \"
\\r\\n

Choose up to 6 commodities that may be used in the system: ({{_selectCommodities.length}}/6)

\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\"","export default \"
\\r\\n
\\r\\n
\\r\\n

Cover Sheet Description

\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
9999))}\\\">\\r\\n \\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n 9999)\\\">\\r\\n Number typical is required!
\\r\\n And must be no bigger then 9999\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n
For
\\r\\n
\\r\\n
50))}\\\">\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n 50)\\\">\\r\\n Your full name is required!
\\r\\n And must be no longer then 50 symbols.\\r\\n
\\r\\n
\\r\\n
50))}\\\">\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n 50)\\\">\\r\\n Company name is required
\\r\\n And must be no longer then 50 symbols.\\r\\n
\\r\\n
\\r\\n
50)}\\\">\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n 50\\\">\\r\\n City name must be no longer then 50 symbols.\\r\\n \\r\\n
\\r\\n
50)}\\\">\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n 50\\\">\\r\\n Your contact must be no longer then 50 symbols.\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
Location
\\r\\n
\\r\\n
50))}\\\">\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n 50)\\\">\\r\\n Quote number is required
\\r\\n And must be no longer then 50 symbols.\\r\\n
\\r\\n
\\r\\n
50)}\\\">\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n 50)\\\">\\r\\n Location name must be no longer then 50 symbols.\\r\\n \\r\\n
\\r\\n
50)}\\\">\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n 50)\\\">\\r\\n Location city (state) must be no longer then 50 symbols.\\r\\n \\r\\n
\\r\\n
75)}\\\">\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n 75)\\\">\\r\\n Comment must be no longer then 100 symbols.\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\"","export default \"
\\r\\n
\\r\\n

Exhauster Recommendations

\\r\\n
\\r\\n\\r\\n
\\r\\n
Recommended exhauster(s) configuration:
\\r\\n\\r\\n
\\r\\n
Lower fans are sending up {{_lowerLarge}} C.F.M. on {{commodities[_largest].name}}
\\r\\n
Minimum gravity vent area based upon {{_lowerSmall}} C.F.M. on {{commodities[_smallest].name}}
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
Code
\\r\\n
Model
\\r\\n
Quantity
\\r\\n
Safety margin (%)
\\r\\n
Minimal gravity venting (sq ft.)
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
{{_selectedFanViewTable.code}}
\\r\\n
{{_selectedFanViewTable.model}}
\\r\\n
\\r\\n \\r\\n
\\r\\n
{{_selectedFanViewTable.safety}}
\\r\\n
{{_selectedFanViewTable.gva}}
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n {{col.header}}\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n {{rowData[col.field]}}\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n\"","export default \"
\\r\\n
\\r\\n

Determine Target Airflow

\\r\\n
\\r\\n\\r\\n
\\r\\n
Tank characteristic
\\r\\n
\\r\\n
\\r\\n Bushel capacity:\\r\\n {{roundCapacity}}\\r\\n
\\r\\n
\\r\\n Average grain depth in feet:\\r\\n {{roundEffDepth}}\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
Target airflow
\\r\\n \\r\\n\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n {{ col.header }}\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n {{rowData[col.dataField]}}\\r\\n {{s+1}}\\r\\n 1/\\r\\n \\r\\n \\r\\n \\r\\n N/A\\r\\n \\r\\n =0&&rowData[col.dataField]!=null\\\">\\r\\n 1/{{rowData[col.dataField]}}\\r\\n -\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
Fan selection options
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n {{airflowConfiguration.numberfans*_tandem}}\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n

Please select the next flow options:

\\r\\n
\\r\\n
\\r\\n
\\r\\n
    \\r\\n
  • \\r\\n \\r\\n \\r\\n \\r\\n
  • \\r\\n
  • \\r\\n \\r\\n \\r\\n
  • \\r\\n
  • \\r\\n \\r\\n \\r\\n \\r\\n
  • \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\"","export default \"\"","export default \"
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n {{col.header}}\\r\\n \\r\\n \\r\\n {{col.header}}\\r\\n \\r\\n \\r\\n {{col.header}}\\r\\n \\r\\n \\r\\n
\\r\\n {{col.header}}\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n 0 && 'Unable to delete company with assigned locations')\\r\\n || 'Delete'\\r\\n }}\\\">\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n {{this.onGetLocationsNames(rowData)}}\\r\\n \\r\\n \\r\\n \\r\\n {{rowData[col.dataField]}}\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n\\r\\n \\r\\n \\r\\n \\r\\n {{(_lastSearchPhrase ? 'No search results found' : 'One moment please...')}}\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n\\r\\n\"","export default \"
\\r\\n
\\r\\n

Companies

\\r\\n \\r\\n
\\r\\n \\r\\n \\r\\n
\"","export default \"
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n {{col.header}}\\r\\n \\r\\n \\r\\n {{col.header}}\\r\\n \\r\\n \\r\\n
\\r\\n {{col.header}}\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n {{ !rowData[col.dataField] ? \\\"Not registered\\\" : rowData[col.dataField] }}\\r\\n \\r\\n \\r\\n {{ !rowData[col.dataField] ? \\\"Not registered\\\" : rowData[col.dataField] }}\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n {{rowData[col.dataField] | date:'short'}}\\r\\n \\r\\n \\r\\n {{rowData[col.dataField]}}\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n\\r\\n \\r\\n \\r\\n \\r\\n {{ _searchPhrase ? \\\"No search results found\\\": \\\"Please add new admin\\\" }}\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n\\r\\n\\r\\n\"","export default \"
\\r\\n
\\r\\n
\\r\\n

Company Admins

\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n\\r\\n\"","export default \"
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n {{col.header}}\\r\\n \\r\\n \\r\\n {{col.header}}\\r\\n \\r\\n \\r\\n
\\r\\n {{col.header}}\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n {{rowData[col.dataField]}}\\r\\n \\r\\n \\r\\n {{ !rowData[col.dataField] ? \\\"Not registered\\\" : rowData[col.dataField] }}\\r\\n \\r\\n \\r\\n {{ !rowData[col.dataField] ? 'Not registered' : rowData[col.dataField] }}\\r\\n \\r\\n \\r\\n {{ rowData[col.dataField] == _userStatus.Locked ? \\\"Locked\\\" : \\\"Unlocked\\\" }}\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n {{ rowData[col.dataField] | date:'short'}}\\r\\n \\r\\n \\r\\n {{ rowData[col.dataField]}}\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n\\r\\n \\r\\n \\r\\n \\r\\n {{ _searchPhrase ? \\\"No search results found\\\": \\\"There is no company user yet\\\" }}\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n\\r\\n\\r\\n\"","export default \"
\\r\\n
\\r\\n
\\r\\n

Company Users

\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n\\r\\n\"","export default \"
\\r\\n
\\r\\n
\\r\\n

Firmware Management

\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n Projects\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n Companies\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n {{col.header}}\\r\\n \\r\\n \\r\\n {{col.header}}\\r\\n \\r\\n \\r\\n
\\r\\n {{col.header}}\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n {{projectsAvailable(rowData.locationDevices)}}\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n {{projectUpdaterDevices(rowData.updaterDevices)}}\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n {{ rowData[col.dataField]}}\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n {{col.header}}\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n {{getUpdaterName(rowDataUpdater)}}\\r\\n \\r\\n \\r\\n \\r\\n {{rowDataUpdater.projectDevices?.length==1 ?\\r\\n getCurrentVersion(rowDataUpdater.projectDevices[0]) : '-'}}\\r\\n \\r\\n \\r\\n \\r\\n {{ geLastUpdateDate(rowDataUpdater.projectDevices[0])==null?'-':\\r\\n geLastUpdateDate(rowDataUpdater.projectDevices[0]) | date:'short' }}\\r\\n \\r\\n 1\\\">-\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n {{col.header}}\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n {{getProjectString(rowDataProjectUpdater.project)}}\\r\\n \\r\\n \\r\\n {{getCurrentVersion(rowDataProjectUpdater)}}\\r\\n \\r\\n \\r\\n {{rowDataProjectUpdater.lastUpdate==null?'-':rowDataProjectUpdater.lastUpdate*1000\\r\\n | date:'short'}}\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\"","export default \"
\\r\\n
\\r\\n
\\r\\n

Email Management

\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n {{col.header}}\\r\\n \\r\\n \\r\\n {{col.header}}\\r\\n \\r\\n \\r\\n {{col.header}}\\r\\n \\r\\n \\r\\n
\\r\\n {{col.header}}\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n {{rowData[col.dataField]}}\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n {{getSchedule(rowData)}}\\r\\n \\r\\n \\r\\n {{ rowData[col.dataField]}}\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n Emails: \\r\\n
\\r\\n
{{ email }}
\\r\\n
\\r\\n
\\r\\n
0\\\">\\r\\n BTX Locations: \\r\\n
\\r\\n
\\r\\n {{locationName}}
\\r\\n
\\r\\n
\\r\\n
0\\\">\\r\\n KTX Locations: \\r\\n
\\r\\n
\\r\\n {{locationName}}
\\r\\n
\\r\\n
\\r\\n
0\\\">\\r\\n ITX Locations: \\r\\n
\\r\\n
\\r\\n {{locationName}}
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n\\r\\n\\r\\n\"","export default \"
\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n\"","export default \"
\\r\\n
\\r\\n
\\r\\n
\\r\\n

Alerts

\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n Alert type\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n

Locations

\\r\\n 0\\\">\\r\\n You don't have available locations\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n {{ col.header }}\\r\\n \\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n\\r\\n \\r\\n \\r\\n \\r\\n

\\r\\n \\r\\n {{getAlertLabelByType(rowData[col.dataField])}}\\r\\n

\\r\\n

\\r\\n {{rowData[col.dataField] | date:'short'}}\\r\\n

\\r\\n

\\r\\n {{rowData[col.dataField]}}\\r\\n

\\r\\n \\r\\n\\r\\n \\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n {{rowData?.body}}\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n {{frozen ? \\\" \\\" : _totalAlertsCount== undefined ? \\\"One moment please...\\\" :\\r\\n (_eventFilter.dateTimeFrom == null && _eventFilter.dateTimeTo == null) ? \\\"No Active Alerts\\\" : \\\"No Alerts\\\"\\r\\n }}\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n\\r\\n\"","export default \"
\\r\\n
\\r\\n
\\r\\n

Live Data

\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n

Companies

\\r\\n 0\\\">\\r\\n You don't have available locations\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\"","export default \"
\\r\\n
\\r\\n
\\r\\n
\\r\\n

Storage History Reports

\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n\\r\\n

{{_selectedStorageFilter.label}}

\\r\\n
\\r\\n\\r\\n
\\r\\n No data\\r\\n
\\r\\n\\r\\n

\\r\\n Avg.\\r\\n {{unitLabel()}}\\r\\n

\\r\\n \\r\\n

{{_selectedDateRange.label}}

\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n
\\r\\n

Select Data

\\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n\\r\\n\"","export default \"
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n {{ col.header }}\\r\\n \\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n\\r\\n \\r\\n \\r\\n \\r\\n {{ col.header }}\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n\\r\\n \\r\\n {{getBinTypeLabel(rowData[col.dataField])}}\\r\\n \\r\\n\\r\\n \\r\\n {{getCapacityUnitLabel(rowData[col.dataField])}}\\r\\n \\r\\n\\r\\n \\r\\n {{rowData[col.dataField]}}\\r\\n \\r\\n\\r\\n \\r\\n \\r\\n \\r\\n\\r\\n \\r\\n \\r\\n \\r\\n\\r\\n \\r\\n \\r\\n \\r\\n\\r\\n \\r\\n \\r\\n \\r\\n\\r\\n \\r\\n \\r\\n \\r\\n\\r\\n \\r\\n \\r\\n \\r\\n\\r\\n \\r\\n \\r\\n 0\\\">\\r\\n {{frozen ? ' ' : (_lastSearchPhrase ? 'No search results found' : 'One moment please...')}}\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n\\r\\n\"","export default \"
\\r\\n
\\r\\n
\\r\\n

Storages per {{_locationName}} location

\\r\\n \\r\\n \\r\\n back to ITX Management\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n\"","export default \"
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n {{ col.header }}\\r\\n \\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n\\r\\n \\r\\n \\r\\n \\r\\n {{ col.header }}\\r\\n \\r\\n \\r\\n \\r\\n\\r\\n \\r\\n \\r\\n \\r\\n {{rowData[col.dataField]}}\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n\\r\\n \\r\\n \\r\\n \\r\\n {{\\r\\n frozen\\r\\n ? \\\" \\\"\\r\\n : _lastSearchPhrase\\r\\n ? \\\"No search results found\\\"\\r\\n : \\\"One moment please...\\\"\\r\\n }}\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n\\r\\n\\r\\n\\r\\n\"","export default \"
\\r\\n
\\r\\n

ITX Management

\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n\\r\\n\\r\\n\"","export default \"
\\r\\n
\\r\\n
\\r\\n

{{ _locationName }}

\\r\\n \\r\\n \\r\\n back to Current Data\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n 0\\\">\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
N/A
\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n

\\r\\n {{ _selectedBinName }}\\r\\n

\\r\\n
\\r\\n
\\r\\n
\\r\\n Display mode:\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n Measure:\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n Measuring system:\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n {{ _lastUpdatingStatus }}\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n {{ col.header }}\\r\\n
\\r\\n
\\r\\n {{ splitStringBySpace(col.header)[0] }}\\r\\n {{ splitStringBySpace(col.header)[1] }}\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n {{ _getSensorValue(rowData, index) }}\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n {{ rowIndex === 0 ? 'No data' : '' }}\\r\\n \\r\\n \\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n {{ rowData[col.dataField] }}\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n {{ (frozen && ' ') || 'No data' }}\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n\\r\\n
\\r\\n

{{ _currentBin ? _currentBin.name : '' }}

\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\"","export default \"
\\r\\n
\\r\\n
\\r\\n
\\r\\n

Current Data

\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n 0\\\">\\r\\n You don't have available locations\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n

{{ currentLocationNameWithCompany }}

\\r\\n
\\r\\n
\\r\\n Can't display location scheme\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n

\\r\\n {{ currentLocationName\\r\\n }}\\r\\n \\r\\n

\\r\\n
\\r\\n 0\\\">\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n\\r\\n
\\r\\n

\\r\\n {{ currentLocationName }}\\r\\n

\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\"","export default \"
\\r\\n
\\r\\n
\\r\\n

{{ _locationName }}

\\r\\n \\r\\n \\r\\n back to Current Data\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n {{_lastUpdatingStatus}}\\r\\n
\\r\\n
\\r\\n Measuring system:\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n {{ col.header }}\\r\\n
\\r\\n
\\r\\n {{ splitStringBySpace(col.header)[0] }}\\r\\n {{ splitStringBySpace(col.header)[1] }}\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n \\r\\n 0 && _wasLocationDeviceInitialized\\\">\\r\\n \\r\\n
\\r\\n {{ getSensorValue(rowData, index) }}\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n {{ rowIndex === 0 ? 'No data' : '' }}\\r\\n \\r\\n \\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n {{ rowData[col.dataField] }}\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n {{ (frozen && ' ') || 'No data' }}\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n
\\r\\n\\r\\n\\r\\n\"","export default \"
\\r\\n
\\r\\n
\\r\\n
\\r\\n

Historical Data

\\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
    \\r\\n
  • \\r\\n
    \\r\\n \\r\\n \\r\\n
    \\r\\n
  • \\r\\n You don't have available date ranges\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n You don't have available measuring\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n

Locations

\\r\\n 0\\\">\\r\\n \\r\\n You don't have available\\r\\n locations\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n

{{ _locationName }}

\\r\\n
\\r\\n
\\r\\n No history for this period\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n Select storage and period to load data\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n {{col.header}}\\r\\n
\\r\\n
\\r\\n {{splitStringBySpace(col.header)[0]}}\\r\\n {{splitStringBySpace(col.header)[1]}}\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n {{_getSensorValue(rowData, index) }}\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n {{rowData[col.dataField]}}\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n\"","export default \"
\\r\\n
\\r\\n
\\r\\n
\\r\\n

Notifications

\\r\\n \\r\\n
\\r\\n\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n Alert type\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n

Locations

\\r\\n 0\\\">\\r\\n You don't have available\\r\\n locations\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n {{ col.header }}\\r\\n \\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n\\r\\n \\r\\n \\r\\n \\r\\n

\\r\\n \\r\\n {{getAlertLabelByType(rowData[col.dataField])}}\\r\\n

\\r\\n

\\r\\n {{rowData[col.dataField] | date:'short'}}\\r\\n

\\r\\n

\\r\\n {{rowData[col.dataField]}}\\r\\n

\\r\\n \\r\\n\\r\\n \\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n {{rowData?.body}}\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n {{frozen ? \\\" \\\" : _totalAlertsCount== undefined ? \\\"One moment please...\\\" :\\r\\n (_eventFilter.dateTimeFrom == null && _eventFilter.dateTimeTo == null) ? \\\"No Active Notifications\\\"\\r\\n : \\\"No Notifications\\\"}}\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n\\r\\n\"","export default \"
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n {{col.header}}\\r\\n \\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n\\r\\n \\r\\n \\r\\n \\r\\n {{col.header}}\\r\\n \\r\\n \\r\\n \\r\\n\\r\\n \\r\\n \\r\\n \\r\\n {{rowData[col.dataField]}}\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n\\r\\n \\r\\n \\r\\n \\r\\n {{frozen ? ' ' : (_lastSearchPhrase ? 'No search results found' : 'One moment please...')}}\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n\"","export default \"
\\r\\n
\\r\\n

KTX Management

\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\"","export default \"
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n {{col.header}}\\r\\n \\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n\\r\\n \\r\\n \\r\\n \\r\\n {{col.header}}\\r\\n \\r\\n \\r\\n \\r\\n\\r\\n \\r\\n \\r\\n \\r\\n {{rowData[col.dataField]}}\\r\\n \\r\\n \\r\\n \\r\\n\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n\\r\\n \\r\\n \\r\\n \\r\\n {{frozen ? ' ' : (_lastSearchPhrase ? 'No search results found' : 'One moment please...')}}\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n\"","export default \"
\\r\\n
\\r\\n
\\r\\n

Locations

\\r\\n \\r\\n
\\r\\n\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n\\r\\n\\r\\n\"","export default \"
\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\"","export default \"\\r\\n

{{_title}}

\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n Field\\r\\n is required\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n Field\\r\\n is required\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n Field is\\r\\n required\\r\\n Should be between 3 and 50 symbols\\r\\n
\\r\\n
\\r\\n {{_equipmentForm.errors.unique}}\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n Field is\\r\\n required\\r\\n Should be between 1 and 65536\\r\\n \\r\\n {{_equipmentForm.controls.totalRunHoursFirstRegisterAddress.errors.uniqueAddress}}\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n Field is\\r\\n required\\r\\n Should be between 1 and 65536\\r\\n \\r\\n {{_equipmentForm.controls.totalRunHoursSecondRegisterAddress.errors.uniqueAddress}}\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n Should be between 1 and 65536\\r\\n \\r\\n {{_equipmentForm.controls.timeTillMaintenanceAddress.errors.uniqueAddress}}\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n Field is\\r\\n required\\r\\n Should be between 1 and 65536\\r\\n \\r\\n {{_equipmentForm.controls.shutDownAlarmAddress.errors.uniqueAddress}}\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n Field\\r\\n is required\\r\\n Should be between 1 and 16\\r\\n \\r\\n {{_equipmentForm.controls.shutDownAlarmAddressBit.errors.uniqueAddress}}\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n Field is\\r\\n required\\r\\n Should be between 1 and 65536\\r\\n \\r\\n {{_equipmentForm.controls.maintenanceRequiredWarningAddress.errors.uniqueAddress}}\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n Field\\r\\n is required\\r\\n Should be between 1 and 16\\r\\n \\r\\n {{_equipmentForm.controls.maintenanceRequiredWarningAddressBit.errors.uniqueAddress}}\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n\"","export default \"\\r\\n

{{_title}}

\\r\\n
\\r\\n

{{_subtitle}}

\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\"","export default \"\\r\\n

{{_saveTitle}}

\\r\\n
\\r\\n

Do you want to update or save as new?

\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\"","export default \"\\r\\n

Confirm changes

\\r\\n \\r\\n
\\r\\n

\\r\\n
\\r\\n
\\r\\n

\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\"","export default \"\\r\\n

Select the type of quote:

\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\"","export default \"\\r\\n

{{_popupHeader}}

\\r\\n

\\r\\n MAINTENANCE REQUIRED\\r\\n

\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\"","export default \"\\r\\n

Export Report

\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n 0\\\"\\r\\n >\\r\\n
\\r\\n
\\r\\n \\r\\n Download Report\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n\"","export default \"\\r\\n

{{_isAddPopup ? 'Add BTX to Location' : 'Edit BTX Location'}}

\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
{{item.label}}
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
{{PLCDevice.label}}
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n Need to select\\r\\n
\\r\\n
\\r\\n\\r\\n\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n Field is required\\r\\n Incorrect MAC address.\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n Field is required\\r\\n Incorrect IP address.\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n Field is required\\r\\n Incorrect IP address.\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n Field is required\\r\\n Value should be in range 0 and 65535.\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n Field is required\\r\\n This location already has assigned BTX\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n Field is required\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n Field is required\\r\\n Value should be in range 1 and 65536.\\r\\n \\r\\n {{_locationForm.controls.batteryAlarmAddress.errors.uniqueAddress}}\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n Field is required\\r\\n \\r\\n {{_locationForm.controls.batteryAlarmAddressBit.errors.uniqueAddress}}\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n Field is required\\r\\n Value should be in range 1 and 65536.\\r\\n \\r\\n {{_locationForm.controls.suppressorAlarmAddress.errors.uniqueAddress}}\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n Field is required\\r\\n \\r\\n {{_locationForm.controls.suppressorAlarmAddressBit.errors.uniqueAddress}}\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n Field is required\\r\\n Value should be in range 1 and 65536.\\r\\n \\r\\n {{_locationForm.controls.communicationAlarmAddress.errors.uniqueAddress}}\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n Field is required\\r\\n \\r\\n {{_locationForm.controls.communicationAlarmAddressBit.errors.uniqueAddress}}\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n\"","export default \"
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n\"","export default \"\\r\\n

{{_isAddPopup ? 'Add Company' : 'Edit Company'}}

\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n Field is required\\r\\n Company name should be between 3 and 50 symbols\\r\\n
\\r\\n Company with such name already exists.\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\"","export default \"\\r\\n

Are you sure?

\\r\\n
\\r\\n

Do you really want to delete this company? All users of this company will not have access to the system.

\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\"","export default \"\\r\\n

Add Company Admin

\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n \\r\\n Incorrect Email format!\\r\\n \\r\\n Email should be between 3 and 50 symbols\\r\\n Field is required\\r\\n
\\r\\n The user with such email address already exists in the system.\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n Field is required\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\"","export default \"\\r\\n

Are you sure?

\\r\\n
\\r\\n

Do you really want to delete this user?

\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\"","export default \"\\r\\n

Edit company admin

\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n First name is required\\r\\n First name should be between 3 and 50 symbols\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n Last name is required\\r\\n Last name should be between 3 and 50 symbols\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n Field is required\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\"","export default \"\\r\\n

Add Company User

\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n \\r\\n Incorrect Email format!\\r\\n \\r\\n Email should be between 3 and 50 symbols\\r\\n Field is required\\r\\n
\\r\\n The user with such email address already exists in the system.\\r\\n
\\r\\n\\r\\n
0\\\">\\r\\n \\r\\n \\r\\n
\\r\\n Need to select at least one location\\r\\n
\\r\\n
\\r\\n\\r\\n
0\\\">\\r\\n \\r\\n \\r\\n
\\r\\n Need to select at least one location\\r\\n
\\r\\n
\\r\\n\\r\\n
0\\\">\\r\\n \\r\\n \\r\\n
\\r\\n Need to select at least one location\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\"","export default \"\\r\\n

Are you sure?

\\r\\n
\\r\\n

Do you really want to delete this user?

\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n\"","export default \"\\r\\n

Edit Company User

\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n Field is\\r\\n required\\r\\n Should be between 3 and 50\\r\\n symbols\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n Field is\\r\\n required\\r\\n Should be between 3 and 50 symbols\\r\\n
\\r\\n
\\r\\n\\r\\n
0\\\">\\r\\n \\r\\n \\r\\n
\\r\\n Need to select at least one\\r\\n location\\r\\n
\\r\\n
\\r\\n\\r\\n
0\\\">\\r\\n \\r\\n \\r\\n
\\r\\n Need to select at least one\\r\\n location\\r\\n
\\r\\n
\\r\\n\\r\\n
0\\\">\\r\\n \\r\\n \\r\\n
\\r\\n Need to select at least one\\r\\n location\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n\"","export default \"\\r\\n

Export Computation Sheet

\\r\\n

Export Quote

\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n\"","export default \"\\r\\n

Share Computation Sheet

\\r\\n

Share Quote

\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n\"","export default \"\\r\\n

Are you sure?

\\r\\n
\\r\\n

{{_mainDialogTitle}}

\\r\\n

{{_secondDialogTitle}}

\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n\"","export default \"\\r\\n

Device communication: {{_locationName}}

\\r\\n

Project: {{_availableProjects}}

\\r\\n
\\r\\n
Configuration File:
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n {{col.header}}\\r\\n \\r\\n \\r\\n
\\r\\n {{col.header}}\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n {{rowData.sizeLabel}}\\r\\n \\r\\n \\r\\n {{rowData[col.dataField] | date:'short'}}\\r\\n \\r\\n \\r\\n {{rowData[col.dataField]}}\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n {{_isDeiveceTwinHasLogLink?'There are no logs.'\\r\\n :'The device TWIN does not have a link to the log folder.'}}\\r\\n \\r\\n\\r\\n \\r\\n \\r\\n \\r\\n Please add log link to the device twin:\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n
\"","export default \"\\r\\n

{{ !!_isAddPopup ? \\\"Add\\\" : \\\"Edit\\\" }} Service

\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n Field is required\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n Need to select at least\\r\\n one location\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n Need to select at least\\r\\n one location\\r\\n Can't be selected using Schedule - Daily\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n Need to select at least\\r\\n one location\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n Field is\\r\\n required\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n Need to select at least one type\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n Need to select at least one type\\r\\n Can't be selected using Schedule - Daily\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n Need to select at least one type\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n Field is\\r\\n required\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n\"","export default \"\\r\\n

Are you sure?

\\r\\n
\\r\\n

Do you really want to delete this email group?

\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n\"","export default \"\\r\\n

Edit sensor details

\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n Field\\r\\n is required\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n Field\\r\\n is required\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n Field\\r\\n is required\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n Field is\\r\\n required\\r\\n Should be between 1 and 65536\\r\\n \\r\\n {{_generalAddressErrorText}}\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n Field is\\r\\n required\\r\\n Should be between 1 and 65536\\r\\n \\r\\n {{_generalAddressErrorText}}\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n Field\\r\\n is required\\r\\n Should be between 1 and 16\\r\\n \\r\\n {{_generalBitErrorText}}\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n Field is\\r\\n required\\r\\n Should be between 1 and 65536\\r\\n \\r\\n {{_generalAddressErrorText}}\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n Field\\r\\n is required\\r\\n Should be between 1 and 16\\r\\n \\r\\n {{_generalBitErrorText}}\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n Field is\\r\\n required\\r\\n Should be between 1 and 65536\\r\\n \\r\\n {{_generalAddressErrorText}}\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n Field\\r\\n is required\\r\\n Should be between 1 and 16\\r\\n \\r\\n {{_generalBitErrorText}}\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n Field is\\r\\n required\\r\\n Should be between 1 and 65536\\r\\n \\r\\n {{_generalAddressErrorText}}\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n Field\\r\\n is required\\r\\n Should be between 1 and 16\\r\\n \\r\\n {{_generalBitErrorText}}\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n {{_sensorForm.errors.unique}}\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\"","export default \"
\\r\\n \\r\\n \\r\\n
\"","export default \"\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n

{{_location.locationName}} equipment

\\r\\n \\r\\n \\r\\n \\r\\n

{{equipment.name}}

\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n

Add new sensor

\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n\\r\\n\\r\\n\\r\\n\"","export default \"
\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n Field\\r\\n is required\\r\\n
\\r\\n
\\r\\n {{_sensorForm.errors.unique}}\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n Field\\r\\n is required\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n Field\\r\\n is required\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n Field\\r\\n is required\\r\\n Should\\r\\n be between 1 and 65536\\r\\n \\r\\n {{_generalAddressErrorText}}\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n Field\\r\\n is\\r\\n required\\r\\n Should\\r\\n be between 1 and 65536\\r\\n \\r\\n {{_generalAddressErrorText}}\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n Field\\r\\n is required\\r\\n Should\\r\\n be between 1 and 16\\r\\n \\r\\n {{_generalBitErrorText}}\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n Field is\\r\\n required\\r\\n Should\\r\\n be between 1 and 65536\\r\\n \\r\\n {{_generalAddressErrorText}}\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n Field\\r\\n is required\\r\\n Should\\r\\n be between 1 and 16\\r\\n \\r\\n {{_generalBitErrorText}}\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n Field is\\r\\n required\\r\\n Should\\r\\n be between 1 and 65536\\r\\n \\r\\n {{_generalAddressErrorText}}\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n Field\\r\\n is required\\r\\n Should\\r\\n be between 1 and 16\\r\\n \\r\\n {{_generalBitErrorText}}\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n Field is\\r\\n required\\r\\n Should\\r\\n be between 1 and 65536\\r\\n \\r\\n {{_generalAddressErrorText}}\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n Field\\r\\n is required\\r\\n Should\\r\\n be between 1 and 16\\r\\n \\r\\n {{_generalBitErrorText}}\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n

Sensors

\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n {{column.getLabel(rowData, ri)}}\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n\"","export default \"\\r\\n

Are you sure?

\\r\\n
\\r\\n

Do you really want to delete this {{_isSensorDeletePopup ? 'sensor' : 'equipment'}}?

\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\"","export default \"\\r\\n

{{ _activeEquipment ? _activeEquipment.name : ''}}

\\r\\n

{{ _receivingTimestamp }}

\\r\\n\\r\\n

MAINTENANCE REQUIRED

\\r\\n

Time till\\r\\n maintenance required: {{_activeEquipment.maintenanceCountDownValue > 0 ?\\r\\n _activeEquipment.maintenanceCountDownValue +' hrs' : 'No data'}}

\\r\\n

Total running hours: {{_activeEquipment.totalRunHoursValue > 0 ? _activeEquipment.totalRunHoursValue :\\r\\n 'No data'}}

\\r\\n
\\r\\n
\\r\\n
0\\\">\\r\\n
\\r\\n

1\\\">{{\\r\\n _leftSchemeSideName }}

\\r\\n

1\\\">{{\\r\\n _rightSchemeSideName }}

\\r\\n\\r\\n
\\r\\n
\\r\\n
{{marker.sensorMarkerData}}
\\r\\n
{{marker.sensorValueData}}
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
0\\\">\\r\\n
\\r\\n
\\r\\n {{sensor.label}}\\r\\n {{sensor.value == '--' ? 'No data' : sensor.value }}\\r\\n
\\r\\n
\\r\\n
\\r\\n
0\\\">\\r\\n
0\\\">\\r\\n
\\r\\n
\\r\\n {{sensor.label}}\\r\\n {{sensor.value == '--' ? 'No data' : sensor.value}}\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n {{sensor.label}}\\r\\n {{sensor.value == '--' ? 'No data' : sensor.value}}\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
0\\\">\\r\\n
\\r\\n
\\r\\n {{sensor.label}}\\r\\n {{sensor.value == '--' ? 'No data' : sensor.value}}\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n {{sensor.label}}\\r\\n {{sensor.value == '--' ? 'No data' : sensor.value}}\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\"","export default \"\\r\\n

View sensor details

\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\"","export default \"\\r\\n

{{popupHeader}}

\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n

Locations

\\r\\n 0\\\"\\r\\n (onNodeSelect)=\\\"onNodeSelect($event)\\\" (onNodeUnselect)=\\\"onNodeUnselect($event)\\\">\\r\\n You don't have available\\r\\n locations\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n\"","export default \"\\r\\n

Manage Firmware Files

\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n {{col.header}}\\r\\n \\r\\n \\r\\n
\\r\\n {{col.header}}\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n {{rowData.sizeLabel}}\\r\\n \\r\\n \\r\\n {{rowData[col.dataField] | date:'short'}}\\r\\n \\r\\n \\r\\n {{rowData[col.dataField]}}\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n There are no firmware for the selected project.\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n\"","export default \"\\r\\n

\\r\\n {{ !!_isAddPopup ? \\\"Add ITX Configuration\\\" : \\\"Edit ITX Configuration\\\" }}\\r\\n

\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n Field is required\\r\\n
\\r\\n \\r\\n This location already has assigned ITX\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n Field is required\\r\\n Incorrect\\r\\n IP address.\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n Field is required\\r\\n Value\\r\\n should be in range 0 and 65536.\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n Field is\\r\\n required\\r\\n Value\\r\\n should be in range 1 and 60.\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n\"","export default \"\\r\\n

\\r\\n {{ !!_isAddPopup ? \\\"Add Storage to \\\"+_location.name+\\\" location\\\" : \\\"Edit Storage\\\" }}\\r\\n

\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n \\r\\n\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n Field is\\r\\n required\\r\\n Should be between 3 and 50 symbols\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n Field is\\r\\n required\\r\\n Value\\r\\n should be more or equal 1\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n Field is\\r\\n required\\r\\n Should be between 3 and 50 symbols\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
{{item.label}}
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
{{itxType.label}}
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n Need to select\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n Need to select\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n Field is\\r\\n required\\r\\n Value\\r\\n should be in range 0 and 90.\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n Field is\\r\\n required\\r\\n Value should be more than\\r\\n 0\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n Field is\\r\\n required\\r\\n Value should be more than\\r\\n 0\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n Field is\\r\\n required\\r\\n Value should be more or equal\\r\\n 1\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n Field is\\r\\n required\\r\\n Value\\r\\n should be\\r\\n more or equal 0\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n Field is\\r\\n required\\r\\n Value\\r\\n should be more or\\r\\n equal 0\\r\\n Roof Cap can be more then Bin width:\\r\\n {{_storageForm.controls.width.value}}\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n Field is\\r\\n required\\r\\n Should be between 3 and 50 symbols\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
{{item.label}}
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
{{itxType.label}}
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n Need to select\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n Field is\\r\\n required\\r\\n Should be between 3 and 50 symbols\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n Field is\\r\\n required\\r\\n Value\\r\\n should be more or equal 1\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n Need to select\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n Field is\\r\\n required\\r\\n Value\\r\\n should be in range 0 and 90.\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n Field is\\r\\n required\\r\\n Value should be more\\r\\n than 0\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n Field is\\r\\n required\\r\\n Value should be more\\r\\n than 0\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n Field is\\r\\n required\\r\\n Value should be more or equal\\r\\n 1\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n Field is\\r\\n required\\r\\n Value\\r\\n should be\\r\\n more or equal 0\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n Field is\\r\\n required\\r\\n Value\\r\\n should be more or\\r\\n equal 0\\r\\n Roof Cap can be more then Bin width:\\r\\n {{_storageForm.controls.width.value}}\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n\"","export default \"\\r\\n

Are you sure?

\\r\\n
\\r\\n

Do you really want to delete this storage?

\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n\"","export default \"\\r\\n

Are you sure?

\\r\\n
\\r\\n

Do you really want to delete this Radar?

\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n {{_error}}\\r\\n
\\r\\n
\\r\\n
\\r\\n\"","export default \"\\r\\n

Edit Radar

\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n Field is required\\r\\n Radar ID must be unique per location\\r\\n Value should be in range 0 and 65535.\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n Field is required\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n Field is required\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n Field is required\\r\\n Value should be in range 0 and {{_itxBinViewModel.width/2}}.\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n\"","export default \"\\r\\n

Export Report

\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n\"","export default \"\\r\\n

{{_itxBinViewModel.name}}: Radars

\\r\\n\\r\\n
\\r\\n \\r\\n\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n {{ col.header }}\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n\\r\\n \\r\\n \\r\\n \\r\\n {{rowData[col.dataField]}}\\r\\n {{s+1}}\\r\\n {{getRadarLocationLabel(rowData[col.dataField])}}\\r\\n {{getRadarDistanceByBinSizeWithMeasureLabel(rowData[col.dataField])}}\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n

Add New Radar

\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n Field is\\r\\n required\\r\\n Radar ID must be unique per location\\r\\n Value should be in range 0 and\\r\\n 65535.\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n Field is required\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n Field is required\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n Field is\\r\\n required\\r\\n Value should be in range 0\\r\\n and {{_itxBinViewModel.width/2}}.\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n\"","export default \"\\r\\n
\\r\\n

Live Data Settings

\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n Need to select\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n Need to select\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n Need to select\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n Need to select\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n\"","export default \"\\r\\n

Manage Colors

\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n\\r\\n
\\r\\n Field is required\\r\\n
\\r\\n Fullness range with such \\\"From\\\" and \\\"To\\\" values is already\\r\\n added\\r\\n Nested range not allowed.\\r\\n Please enter\\r\\n color ranges from 1 to 100% \\r\\n Please enter color ranges from 1 to 100%. Gaps in this\\r\\n range are not allowed\\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n Field is required\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n
\\r\\n\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n {{col.header}}\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n {{rowData[col.dataField]}}\\r\\n
\\r\\n\\r\\n
\\r\\n {{rowIndex+1}}\\r\\n
\\r\\n
\\r\\n {{rowData[col.dataField] + '%'}}\\r\\n
\\r\\n
\\r\\n {{rowData[col.dataField] + '%'}}\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n\\r\\n \\r\\n \\r\\n \\r\\n {{frozen ? ' ' : 'There are no ranges'}}\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\"","export default \"\\r\\n

Are you sure?

\\r\\n
\\r\\n

Do you really want to delete this range?

\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\"","export default \"\\r\\n

Edit {{_itxBinName}} details:

\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n Field is\\r\\n required\\r\\n Should be between 3 and 50\\r\\n symbols\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n Field is\\r\\n required\\r\\n Should be between 3 and 50 symbols\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\"","export default \"\\r\\n

{{_binName}}: Radars

\\r\\n
\\r\\n Last update: {{ _lastUpdate | date: 'M/d/yy,h:mm\\r\\n a' }}\\r\\n Pile shape:\\r\\n {{_pileShape}}\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n \\r\\n Radar read error\\r\\n
\\r\\n
\\r\\n \\r\\n Something went wrong with load radar data\\r\\n
\\r\\n \\r\\n\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n {{ col.header }}\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n\\r\\n \\r\\n \\r\\n \\r\\n {{rowData[col.dataField]}}\\r\\n {{getRadarDistanceWithLabel(rowData[col.dataField])}}\\r\\n {{getRadarLocationLabel(rowData[col.dataField])}}\\r\\n {{getRadarDistanceWithLabel(rowData[col.dataField])}}\\r\\n {{getCapacityWithLabel(rowData[col.dataField])}}\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
= 3\\\">\\r\\n
\\r\\n \\r\\n
\\r\\n
\"","export default \"\\r\\n

\\r\\n {{ !!_isAddPopup ? \\\"Add KTX to Location\\\" : \\\"Edit KTX Location\\\" }}\\r\\n

\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n Field is required\\r\\n
\\r\\n \\r\\n This location already has assigned KTX\\r\\n
\\r\\n
\\r\\n

Select Cycle or Schedule

\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n Enter time between reads: \\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n Field is required\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n At least one checkbox need to be checked\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n Field is required\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n\"","export default \"\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n

{{_currentBin ? _currentBin.name + ' Details' : ''}}

\\r\\n
\\r\\n
\\r\\n
\\r\\n Height:\\r\\n {{_currentBin ? _currentBin?.height : ''}}\\r\\n
\\r\\n
\\r\\n Depth:\\r\\n {{_currentBin ? _currentBin?.depth : ''}}\\r\\n
\\r\\n
\\r\\n Width:\\r\\n {{_currentBin ? _currentBin?.width : ''}}\\r\\n
\\r\\n
\\r\\n Radius:\\r\\n {{_currentBin.width / 2}}\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n Display mode:\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n Measure:\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n Measuring system:\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n {{ _lastUpdatingStatus }}\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n {{col.header}}\\r\\n
\\r\\n
\\r\\n {{splitStringBySpace(col.header)[0]}}\\r\\n {{splitStringBySpace(col.header)[1]}}\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n {{_getSensorValue(rowData, index) }}\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n {{rowIndex === 0 ? 'No data' : ''}}\\r\\n \\r\\n \\r\\n
\\r\\n\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n {{rowData[col.dataField]}}\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n\\r\\n \\r\\n \\r\\n \\r\\n {{frozen && ' ' || 'No data'}}\\r\\n \\r\\n \\r\\n \\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n\\r\\n
\\r\\n

{{_currentBin ? _currentBin.name : ''}}

\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\"","export default \"\\r\\n

Edit connections: {{_location?.locationName}}

\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n Sys = {{sysGroup.sysId}}\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n Port can`t\\r\\n be blank!\\r\\n Range\\r\\n 0-65535\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n Remote\\r\\n Port can`t be blank!\\r\\n Range\\r\\n 0-65535\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n IP\\r\\n Address can`t be blank!\\r\\n Incorrect\\r\\n IP format!\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n Bins: {{sysGroup.binListLabels}}\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\"","export default \"\\r\\n

Export Report

\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n 0\\\">\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\"","export default \"\\r\\n

List Of Cables

\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n {{col.header}}\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n {{rowData[col.dataField]}}\\r\\n {{_displayScheme ? rowData[col.dataField] : '-'}}\\r\\n {{_displayScheme ? rowData[col.dataField] : '-'}}\\r\\n {{_displayScheme ? rowData[col.dataField] : '-'}}\\r\\n {{_displayScheme ? rowData[col.dataField] : '-'}}\\r\\n {{_displayScheme ? rowData[col.dataField] : '-'}}\\r\\n {{_displayScheme ? rowData[col.dataField] : '-'}}\\r\\n {{'CABLE-' + rowData[col.dataField]}}\\r\\n \\r\\n \\r\\n \\r\\n\\r\\n \\r\\n \\r\\n \\r\\n No data\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\"","export default \"\\r\\n
\\r\\n

Location {{_location?.locationName}} Bins

\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n {{col.header}}\\r\\n \\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n\\r\\n \\r\\n \\r\\n \\r\\n {{col.header}}\\r\\n \\r\\n \\r\\n \\r\\n\\r\\n \\r\\n \\r\\n \\r\\n {{rowData[col.dataField]}}\\r\\n {{_location.displaySchemes && rowData.binType !== _binTypes.Unit\\r\\n ? rowData[col.dataField] : '-'}}\\r\\n {{_location.displaySchemes && rowData.binType !== _binTypes.Unit ?\\r\\n rowData[col.dataField] : '-'}}\\r\\n {{_location.displaySchemes && rowData.binType !== _binTypes.Unit ?\\r\\n rowData[col.dataField] : '-'}}\\r\\n {{_location.displaySchemes ? _binTypes[rowData[col.dataField]] :\\r\\n '-'}}\\r\\n \\r\\n \\r\\n \\r\\n\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n\\r\\n \\r\\n \\r\\n \\r\\n {{(frozen && ' ') || (_lastSearchPhrase && 'No search results found') || (!_isLoading &&\\r\\n !_lastSearchPhrase && 'No data')}}\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n
\"","export default \"\\r\\n

Are you sure?

\\r\\n
\\r\\n

Do you really want to delete this range?

\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\"","export default \"\\r\\n

Set Temperature Ranges

\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n\\r\\n
\\r\\n Field is required\\r\\n
\\r\\n Temperature range with such \\\"From\\\" and \\\"To\\\" values is\\r\\n already added\\r\\n Nested range not allowed.\\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n Field is required\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n
\\r\\n\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n {{col.header}}\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n {{rowData[col.dataField]}}\\r\\n
\\r\\n\\r\\n
\\r\\n {{rowIndex+1}}\\r\\n
\\r\\n\\r\\n
\\r\\n {{rowData[col.dataField] + '℉'}}\\r\\n
\\r\\n
\\r\\n {{rowData[col.dataField] + '℉'}}\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n\\r\\n \\r\\n \\r\\n \\r\\n {{frozen ? ' ' : 'There are no ranges'}}\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
Resistance
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
High temperature alarm
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n Field is\\r\\n required\\r\\n\\r\\n \\r\\n High temperature value should not exceed 250 ℉\\r\\n\\r\\n \\r\\n High temperature value should not be less than 1 ℉\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
High resistance alarm
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n Field is\\r\\n required\\r\\n\\r\\n \\r\\n High resistance value should not exceed 10 000\\r\\n\\r\\n \\r\\n High resistance value should not be less than 1\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
Max rise (temperature)
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n Field is\\r\\n required\\r\\n\\r\\n \\r\\n Max rise value should not exceed 200 ℉\\r\\n\\r\\n \\r\\n Max rise value should not be less than 1 ℉\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\"","export default \"\\r\\n

{{_currentUnit ? 'Unit ' + _currentUnit.name + ' Details' : ''}}

\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n {{col.header}}\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n\\r\\n \\r\\n \\r\\n \\r\\n {{col.header}}\\r\\n \\r\\n \\r\\n \\r\\n\\r\\n \\r\\n \\r\\n \\r\\n {{rowData[col.dataField]}}\\r\\n {{this._currentUnit.displaySchemes ? rowData[col.dataField] :\\r\\n '-'}}\\r\\n {{this._currentUnit.displaySchemes ? rowData[col.dataField] :\\r\\n '-'}}\\r\\n {{this._currentUnit.displaySchemes ? rowData[col.dataField] :\\r\\n '-'}}\\r\\n {{this._currentUnit.displaySchemes ?\\r\\n _binTypes[rowData[col.dataField]] : '-'}}\\r\\n \\r\\n \\r\\n \\r\\n\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n

{{_currentUnit ? _currentUnit.name : ''}}

\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\"","export default \"\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n\"","export default \"\\r\\n
\\r\\n

Are you sure?

\\r\\n
\\r\\n

Do you really want to delete this device configuration?\\r\\n
After deleting all users will not have an access to the data for this location\\r\\n

\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n {{_error}}\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\"","export default \"\\r\\n
\\r\\n

Device was initialized automatically. Please download new config file

\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n\"","export default \"\\r\\n
\\r\\n

Are you sure?

\\r\\n
\\r\\n

Do you really want to delete this location?

\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n\"","export default \"\\r\\n

{{_location.id ? 'Edit' : 'Add'}} Location

\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n Field is\\r\\n required\\r\\n Name\\r\\n should be in range 3 and 50 symbols\\r\\n Name\\r\\n should be unique\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n Field is\\r\\n required\\r\\n Name\\r\\n should be in range 3 and 50 symbols\\r\\n Name\\r\\n should be unique\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n Field is required\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n Field is required\\r\\n Name should be in range 3 and 80 symbols\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n Field is\\r\\n required\\r\\n Incorrect\\r\\n email.\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n Field is required\\r\\n Incorrect\\r\\n email.\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n Field is\\r\\n required\\r\\n Incorrect\\r\\n phone number.\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n Field is\\r\\n required\\r\\n Incorrect\\r\\n phone number.\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n Field is required\\r\\n Incorrect\\r\\n phone number.\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n Field is required\\r\\n Incorrect\\r\\n email.\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n\"","export default \"\\r\\n

Add {{_isServiceUser?'Service':'Sales'}} User

\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n \\r\\n Incorrect Email format!\\r\\n \\r\\n Email should be between 3 and 50 symbols\\r\\n Field is\\r\\n required\\r\\n
\\r\\n The user with such email address already exists in the\\r\\n system.\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\"","export default \"\\r\\n

Are you sure?

\\r\\n
\\r\\n

Do you really want to delete this user?

\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n\"","export default \"\\r\\n

Edit {{_isServiceUser?'service':'sales'}} user

\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n Field is required\\r\\n Should be between 3 and 50 symbols\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n Field is required\\r\\n Should be between 3 and 50 symbols\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n\"","export default \"\\r\\n

Success!

\\r\\n
\\r\\n

{{_infoText}}

\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\"","export default \"\\r\\n
\\r\\n
\\r\\n

How to use

\\r\\n
\\r\\n \\r\\n
\\r\\n
\"","export default \"
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n

Add a new company admin

\\r\\n
\\r\\n
\\r\\n

Click the Add New Admin button.

\\r\\n \\r\\n \\\"add\\r\\n

Enter the email address. Then, the person receives an invitation letter to\\r\\n set up the account as the admin of the company.

\\r\\n \\r\\n \\\"add\\r\\n

Editing the first name and the last name of the company admins and\\r\\n removing them from the list are available.

\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n

Add new company user

\\r\\n
\\r\\n
\\r\\n

Click the Add New User button.

\\r\\n \\r\\n \\\"add\\r\\n\\r\\n

Enter the email address and assign locations. Then, the person receives an\\r\\n invitation letter to set up an account as a user of the company.

\\r\\n \\r\\n \\\"add\\r\\n\\r\\n

Editing user information and setting locked/unlocked status for them are\\r\\n available. The user is not able to log in to the system when setting a “locked” status.

\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n

Add a new vendor

\\r\\n
\\r\\n
\\r\\n

Click the Add New Vendor button.\\r\\n

\\r\\n \\r\\n \\\"add\\r\\n\\r\\n

Enter the email address and assign ITX locations or storage to a vendor.\\r\\n Then, the person receives an invitation letter to set up the account as the company's\\r\\n vendor.

\\r\\n \\r\\n \\\"add\\r\\n\\r\\n

Editing locations or storage assigned to a vendor and setting\\r\\n locked/unlocked status for them are available. The vendor is not able to log in to the\\r\\n system when setting a\\r\\n “locked” status.

\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n

Email service overview

\\r\\n
\\r\\n
\\r\\n

Email Service allows the company admin to create services that will send\\r\\n daily, weekly, or monthly alert statistics of the KTX, BTX, or ITX projects to the users via\\r\\n email.\\r\\n

\\r\\n \\r\\n \\\"email\\r\\n\\r\\n

On the Email Management page, the table with all the created services is\\r\\n available.\\r\\n The company admin can add, edit, delete, or view service details.

\\r\\n \\r\\n \\\"email\\r\\n\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n

Add a new email service

\\r\\n
\\r\\n
\\r\\n

Click the Add Service button.

\\r\\n \\r\\n \\\"email\\r\\n\\r\\n

In the “Emails” field enter user email addresses separated by clicking on\\r\\n “Enter”.

\\r\\n \\r\\n \\\"email\\r\\n\\r\\n

Select alert types and locations from which the alert statistics are\\r\\n supposed to be collected and sent to the users via email.

\\r\\n \\r\\n \\\"email\\r\\n\\r\\n

Set a schedule and time for email sending. Please note that daily mailing\\r\\n is available only for BTX and ITX projects.

\\r\\n \\r\\n \\\"email\\r\\n\\r\\n

Click the Add Service button. The new\\r\\n service is created and displayed in the Email Management table.

\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n \\r\\n \\r\\n
\\r\\n

Viewing and editing all the information about the locations that the company has,\\r\\n including\\r\\n name, address, service email, service phone, emergency phone, site phone, and site email are\\r\\n available.

\\r\\n \\r\\n \\\"location\\r\\n\\r\\n
\\r\\n
\\r\\n\\r\\n\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n

Location and equipment overview

\\r\\n
\\r\\n
\\r\\n

The list of all the company's locations is available on the BTX Live Data\\r\\n page.

\\r\\n \\r\\n \\\"btx\\r\\n\\r\\n

Click on the location name to see the\\r\\n list of all pieces of equipment that belong to\\r\\n this location.

\\r\\n \\r\\n \\\"btx\\r\\n\\r\\n

The image that describes the equipment type, name, and number of its\\r\\n active alarms\\r\\n and warnings are available to view.

\\r\\n \\r\\n \\\"btx\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n

Equipment search

\\r\\n
\\r\\n
\\r\\n

Use a search field to enter equipment (e.g. Conveyor), type (e.g. Drag),\\r\\n or equipment name, and then click Search.

\\r\\n \\r\\n \\\"btx\\r\\n \\r\\n \\\"btx\\r\\n

Also, use the Filters dropdown to filter by\\r\\n locations and equipment.

\\r\\n \\r\\n \\\"btx\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n

Equipment Details view

\\r\\n
\\r\\n
\\r\\n

Upon clicking the View Data button on\\r\\n certain equipment, navigate to the Equipment Details page.\\r\\n

\\r\\n \\r\\n \\\"btx\\r\\n\\r\\n

On the Equipment Details page, view a table with the sensor's data.

\\r\\n \\r\\n \\\"btx\\r\\n\\r\\n

Upon clicking the View Data button, the\\r\\n expanded image of the equipment, all\\r\\n sensor locations, and values are available.

\\r\\n \\r\\n \\\"btx\\r\\n\\r\\n

Navigate to other equipment within the location using the Equipment dropdown.\\r\\n

\\r\\n \\r\\n \\\"btx\\r\\n\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n

Export a report

\\r\\n
\\r\\n
\\r\\n

Click the Export Report button.\\r\\n

\\r\\n \\r\\n \\\"btx\\r\\n

Search for the equipment to export.\\r\\n Enter equipment in the search field or select them manually.

\\r\\n \\r\\n \\\"btx\\r\\n

Click the Download Report\\r\\n button. The report will be downloaded to the local storage as a PDF.

\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n

View historical report

\\r\\n
\\r\\n
\\r\\n

Select the date range for displaying\\r\\n data.

\\r\\n \\r\\n \\\"btx\\r\\n

Select all the data to generate a report:\\r\\n Location, Equipment, Sensor Type, and one or more positions and sides for sensors.

\\r\\n \\r\\n \\\"btx\\r\\n

Click the Generate Report button.

\\r\\n \\r\\n \\\"btx\\r\\n

A generated report with all applied settings is available.

\\r\\n \\r\\n \\\"btx\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n

Export a report

\\r\\n
\\r\\n
\\r\\n

Click the Download Report\\r\\n button.

\\r\\n \\r\\n \\\"btx\\r\\n

Then, the report will be downloaded to the local storage as a PDF.

\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n

View active notifications

\\r\\n
\\r\\n
\\r\\n

The list of all active notifications is available by default on the BTX\\r\\n Notifications page. While viewing the history of notifications, the Active Notifications\\r\\n button allows to display notifications currently being triggered.

\\r\\n \\r\\n \\\"btx\\r\\n

Upon clicking the info button, the equipment's live data is available.

\\r\\n \\r\\n \\\"btx\\r\\n \\r\\n \\\"btx\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n

Search for notifications history

\\r\\n
\\r\\n
\\r\\n

Click on the date picker to set the date\\r\\n range for the alerts. Select a day (current), week (last 7 days), month (last 30 days), or\\r\\n set a custom date range. To apply range to alerts, click on the Apply Range button.

\\r\\n \\r\\n \\\"btx\\r\\n

Then the list of all alerts (active and inactive) for the selected date\\r\\n range is available.

\\r\\n \\r\\n \\\"btx\\r\\n

Click the Filters dropdown to\\r\\n filter alerts by type and location.

\\r\\n \\r\\n \\\"btx\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n

Export notifications

\\r\\n
\\r\\n
\\r\\n

Click on the Export button.

\\r\\n \\r\\n \\\"btx\\r\\n

Select the date range of notifications to export.

\\r\\n \\r\\n \\\"btx\\r\\n

Select alert types. All types are selected by default.

\\r\\n \\r\\n \\\"btx\\r\\n

Select locations to export notifications from. All locations are selected\\r\\n by default.

\\r\\n \\r\\n \\\"btx\\r\\n

Click on the Download Report button. The report will be downloaded to the\\r\\n local storage as a CSV.

\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n

Location view and bin details

\\r\\n
\\r\\n
\\r\\n

Select the necessary location in the Location\\r\\n dropdown.

\\r\\n \\r\\n \\r\\n \\\"ktx\\r\\n \\r\\n \\r\\n \\r\\n \\\"ktx\\r\\n \\r\\n

The 2D overview of the location is available on the screen. The color of the bin represents its average\\r\\n temperature according to set ranges or high-level alarm\\r\\n triggered (HL). Zoom the location picture by clicking on the zoom icon or by scrolling a mouse wheel..

\\r\\n

View all cables data:

\\r\\n

Click the View all cables data button to view the temperature of the cables for the entire location.

\\r\\n \\r\\n \\\"ktx\\r\\n \\r\\n \\r\\n \\\"ktx\\r\\n \\r\\n \\\"ktx\\r\\n

View bin details:

\\r\\n

1. By clicking on the specific bin on the\\r\\n 2D overview picture.

\\r\\n \\r\\n \\r\\n \\\"ktx\\r\\n \\r\\n \\r\\n \\r\\n \\\"ktx\\r\\n \\r\\n

2. By clicking on the bin name in the right\\r\\n side panel.

\\r\\n \\r\\n \\r\\n \\\"ktx\\r\\n \\r\\n \\r\\n \\r\\n \\\"ktx\\r\\n \\r\\n
\\r\\n

On the Bin Details page, set up:

\\r\\n
    \\r\\n
  • Bin display mode - 2D, 3D
  • \\r\\n
  • Measure for the table - temperature, resistance
  • \\r\\n
  • Measurement system - F, C
  • \\r\\n
\\r\\n \\r\\n \\\"ktx\\r\\n

If the bin is part of a unit, click on View Unit\\r\\n to see the unit picture and\\r\\n navigate to other bins within that unit.

\\r\\n \\r\\n \\\"ktx\\r\\n

Manually get current data by clicking on Read Bin\\r\\n Data.

\\r\\n \\r\\n \\\"ktx\\r\\n

Navigate to other bins of the location using the Bins dropdown.

\\r\\n \\r\\n \\\"ktx\\r\\n

View a table with the bin temperature values per cable and device with a\\r\\n helpful\\r\\n temperature legend on the right side.\\r\\n

\\r\\n \\r\\n \\\"ktx\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n

Data reading cycle/schedule

\\r\\n
\\r\\n
\\r\\n

Click the Clock button.

\\r\\n \\r\\n \\\"ktx\\r\\n

Set the KTX data reading schedule either as a cycle or as a specific day\\r\\n and time of\\r\\n reading.

\\r\\n \\r\\n \\\"ktx\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n

Set temperature ranges

\\r\\n
\\r\\n
\\r\\n

Click the Wrench button.\\r\\n

\\r\\n \\r\\n \\\"ktx\\r\\n

Add new temperature ranges or edit/delete existing ones.

\\r\\n \\r\\n \\\"ktx\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n

Export a report

\\r\\n
\\r\\n
\\r\\n

Click the Export Report button.

\\r\\n

In KTX Current Data, export a current data report from the Location view, Location Details or Bin Details page.

\\r\\n \\r\\n \\r\\n \\\"ktx\\r\\n \\r\\n \\r\\n \\r\\n \\\"ktx\\r\\n \\r\\n \\r\\n \\\"ktx\\r\\n

Search for the bins to export. Enter bins in the search field or select\\r\\n them manually.

\\r\\n \\r\\n \\r\\n \\\"ktx\\r\\n \\r\\n \\r\\n \\\"ktx\\r\\n \\r\\n

Click the Download Report\\r\\n button. The report, with the selected settings, is downloaded to the local\\r\\n storage as a PDF.

\\r\\n \\r\\n \\r\\n \\\"ktx\\r\\n \\r\\n \\r\\n \\\"ktx\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n

View historical report

\\r\\n
\\r\\n
\\r\\n

Select storage and period and click the Load Data button to load historical data.

\\r\\n

You can select one or more storages/houses that belong only to one location or the entire location to display in a table.\\r\\n Selecting different locations is not available.

\\r\\n

After the data is loaded, in case additional or other items are selected in the settings, the Load Data button is displayed to reload the data again.

\\r\\n \\\"ktx\\r\\n \\r\\n \\\"ktx\\r\\n

Adjust the report by selecting a specific day/time of the week’s data reading and measuring system.

\\r\\n \\r\\n \\\"ktx\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n

Export a report

\\r\\n
\\r\\n
\\r\\n

Click the Export Report button.\\r\\n

\\r\\n \\r\\n \\\"ktx\\r\\n

The generated data for the selected settings will be downloaded to the local storage as a PDF report.

\\r\\n

* If only one bin was selected in the Storage, all the reading dates for the selected period will be included in the report by default.\\r\\n If more than bin/house/entire location was selected in the Storage, you should select only one reading date on the right-side panel and this reading data will be included in the report.\\r\\n

\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n

View active notifications

\\r\\n
\\r\\n
\\r\\n

The list of all active notifications is available by default on the KTX\\r\\n Notifications page. When the history of alerts is being viewed, the Active Notifications\\r\\n button will display the list of notifications currently being triggered.

\\r\\n \\r\\n \\\"ktx\\r\\n

Upon clicking the info button the storage current data is available.

\\r\\n \\r\\n \\\"ktx\\r\\n \\r\\n \\\"ktx\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n

Search for notifications history

\\r\\n
\\r\\n
\\r\\n

Click on the date picker to set the date\\r\\n range for the alerts. Select a day(current), week (last 7 days), month (last 30 days), or\\r\\n set a custom date range. To apply range to alerts, click on the Apply Range button.

\\r\\n \\r\\n \\\"ktx\\r\\n

Then the list of all alerts (active and inactive) for the selected date\\r\\n range is\\r\\n available.

\\r\\n \\r\\n \\\"ktx\\r\\n

Click the Filters dropdown to\\r\\n filter alerts by type and location.\\r\\n

\\r\\n \\r\\n \\\"ktx\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n

Export notifications

\\r\\n
\\r\\n
\\r\\n

Click on the Export button.

\\r\\n \\r\\n \\\"ktx\\r\\n

Select the date range of alerts to export.

\\r\\n \\r\\n \\\"ktx\\r\\n

Select alert types. All types are selected by default.

\\r\\n \\r\\n \\\"ktx\\r\\n

Select locations to export alerts from. All locations are selected by\\r\\n default.

\\r\\n \\r\\n \\\"ktx\\r\\n

Click on the Download Report button. The report will be downloaded to the\\r\\n local storage as a CSV.

\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n

View levels in storage

\\r\\n
\\r\\n
\\r\\n

The image with the storage filling percentage and all the storage live\\r\\n data is\\r\\n available including:

\\r\\n
    \\r\\n
  • stored material;
  • \\r\\n
  • capacity;
  • \\r\\n
  • temperature values.
  • \\r\\n
\\r\\n \\r\\n \\r\\n \\\"itx\\r\\n \\r\\n \\r\\n \\r\\n \\\"itx\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n

Edit Live Data Settings

\\r\\n
\\r\\n
\\r\\n

Upon clicking the Wrench button,\\r\\n select the preferred measurement for level display within the storage.

\\r\\n \\r\\n \\r\\n \\\"itx\\r\\n \\r\\n \\\"itx\\r\\n \\r\\n \\r\\n \\r\\n \\\"itx\\r\\n \\r\\n \\\"itx\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n

Edit a storage

\\r\\n
\\r\\n
\\r\\n

Edit the storage name and stored material by clicking on the Pencil button.\\r\\n

\\r\\n \\r\\n \\\"itx\\r\\n \\r\\n \\\"itx\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n

View radar details

\\r\\n
\\r\\n
\\r\\n

Click the Radar button.

\\r\\n \\r\\n \\r\\n \\\"itx\\r\\n \\r\\n \\r\\n \\r\\n \\\"itx\\r\\n \\r\\n

The pop-up with the last data updating time and the data of all storage\\r\\n radars is\\r\\n available:

\\r\\n \\r\\n \\r\\n \\\"itx\\r\\n \\r\\n \\r\\n \\r\\n \\\"itx\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n

Storage search

\\r\\n
\\r\\n
\\r\\n

Use a search field to enter the storage name or stored material and then\\r\\n click on\\r\\n Search.

\\r\\n \\r\\n \\r\\n \\\"itx\\r\\n \\r\\n \\r\\n \\r\\n \\\"itx\\r\\n \\r\\n

Also, use the Filters dropdown to filter storages by locations or specific\\r\\n storages.\\r\\n

\\r\\n \\r\\n \\r\\n \\\"itx\\r\\n \\r\\n \\r\\n \\r\\n \\\"itx\\r\\n \\r\\n

Select sorting for the storage display.

\\r\\n \\r\\n \\r\\n \\\"itx\\r\\n \\r\\n \\r\\n \\r\\n \\\"itx\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n

Export a live data report

\\r\\n
\\r\\n
\\r\\n

Click the Export Report button.

\\r\\n \\r\\n \\r\\n \\\"itx\\r\\n \\r\\n \\r\\n \\r\\n \\\"itx\\r\\n \\r\\n

Select the format to export. Export a\\r\\n live data report in PDF, CSV, and PNG (ZIP).

\\r\\n \\r\\n \\r\\n \\\"itx\\r\\n \\r\\n \\r\\n \\r\\n \\\"itx\\r\\n \\r\\n

Click the Download Report\\r\\n button. The report is downloaded to the local storage.

\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n

View active alerts

\\r\\n
\\r\\n
\\r\\n

The list of all active notifications is available by default on the ITX\\r\\n Notifications page. When the history of alerts is being viewed, the Active Notifications\\r\\n button will display the list of notifications currently being triggered.

\\r\\n \\r\\n \\\"itx\\r\\n

Upon clicking the info button the storage current data is available.

\\r\\n \\r\\n \\\"itx\\r\\n \\r\\n \\\"itx\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n

Search for alerts history

\\r\\n
\\r\\n
\\r\\n

Click the date picker to set the date\\r\\n range for the alerts. Select a day (current), week (last 7 days), month (last 30 days), or\\r\\n set a custom date range. To apply range to alerts, click on the\\r\\n Apply Range button.\\r\\n

\\r\\n \\r\\n \\\"itx\\r\\n

Then the list of all alerts (active and inactive) for the selected date\\r\\n range is\\r\\n available.

\\r\\n \\r\\n \\\"itx\\r\\n

Click the Filters dropdown to filter\\r\\n alerts by type and location.

\\r\\n \\r\\n \\\"itx\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n

Export alerts

\\r\\n
\\r\\n
\\r\\n

Click on the Export button.

\\r\\n \\r\\n \\\"itx\\r\\n

Select the date range of notifications to export.

\\r\\n \\r\\n \\\"itx\\r\\n

Select alert types. All types are selected by default.

\\r\\n \\r\\n \\\"itx\\r\\n

Select locations to export notifications from. All locations are selected\\r\\n by default.

\\r\\n \\r\\n \\\"itx\\r\\n

Click on the Download Report button. The report will be downloaded to the\\r\\n local storage as a CSV.

\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n

View a report

\\r\\n
\\r\\n
\\r\\n

Select the date range for displaying\\r\\n data.

\\r\\n \\r\\n \\\"itx\\r\\n

Select all the storage and measurement\\r\\n data to generate a report: Location,\\r\\n Storage, Reading Unit (Storage, Individual), and Measurement.

\\r\\n \\r\\n \\\"itx\\r\\n

Click the Generate Report\\r\\n button.

\\r\\n \\r\\n \\\"itx\\r\\n

A generated report with all applied settings is available.

\\r\\n \\r\\n \\\"itx\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n

Export a report

\\r\\n
\\r\\n
\\r\\n

Click the Export Report button.\\r\\n

\\r\\n \\r\\n \\\"itx\\r\\n

Select the format to export. Export a historical data report in PDF, CSV,\\r\\n and PNG (ZIP).

\\r\\n \\r\\n \\\"itx\\r\\n

Click the Download Report\\r\\n button. The report is downloaded to the local storage.

\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\"","export default \"\\r\\n

Update Project

\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n {{col.header}}\\r\\n \\r\\n \\r\\n {{col.header}}\\r\\n \\r\\n \\r\\n
\\r\\n {{col.header}}\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n {{rowData[col.dataField]==null?'-': rowData[col.dataField]| date:'medium'}}\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n {{rowData[col.dataField]==null?'-': rowData[col.dataField]}}\\r\\n \\r\\n \\r\\n \\r\\n {{rowData[col.dataField]}}\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n There are no initialized updaters for this project.\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\"","export default \"\\r\\n

Version History

\\r\\n

Location name: {{_locationName}}

\\r\\n

Project name: {{_projectName}}

\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n {{col.header}}\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n {{rowData[col.dataField] | date:'medium'}}\\r\\n \\r\\n \\r\\n {{rowData[col.dataField]}}\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n The selected project has not been updated yet.\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n\"","export default \"\\r\\n

\\r\\n {{ !!_isAddPopup ? \\\"Add Updater Configuration\\\" : \\\"Edit Updater Configuration\\\" }}\\r\\n

\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n Projects\\r\\n \\r\\n \\r\\n At least one project must be selected\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n \\r\\n
\\r\\n
\\r\\n\"","export default \"\\r\\n
\\r\\n

Are you sure?

\\r\\n
\\r\\n

Do you really want to delete this updater device configuration?

\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n {{_error}}\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\"","export default \"\\r\\n

Upload sensors for {{ _location.locationName }}

\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n Example: sensors.json\\r\\n
\\r\\n {{_errorMessage}}\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n\"","export default \" \\r\\n

Are you sure?

\\r\\n
\\r\\n

Do you really want to close this form without saving changes?

\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\"","export default \"\\r\\n

Upload Configuration For {{_locationName}}

\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n Example: config.xml\\r\\n
\\r\\n {{_errorMessage}}\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n Sys = {{binsList.sys}}\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n Port can`t be blank!\\r\\n Range 0-65535\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n Remote Port can`t be blank!\\r\\n Range 0-65535\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n IP Address can`t be blank!\\r\\n Incorrect IP format!\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n Bins: {{binsList.binsListLabel}}\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n\"","export default \"\\r\\n
\\r\\n

Are you sure?

\\r\\n
\\r\\n

Do you really want to cancel uploading of this equipment?

\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\"","export default \"\\r\\n

{{_title}}

\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n Field\\r\\n is required\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n Field\\r\\n is required\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n Field is\\r\\n required\\r\\n Should be between 3 and 50 symbols\\r\\n
\\r\\n
\\r\\n {{_equipmentForm.errors.unique}}\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n Field is\\r\\n required\\r\\n Should be between 1 and 65536\\r\\n \\r\\n {{ _generalAddressErrorText }}\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n Field is\\r\\n required\\r\\n Should be between 1 and 65536\\r\\n \\r\\n {{ _generalAddressErrorText }}\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n Should be between 1 and 65536\\r\\n \\r\\n {{ _generalAddressErrorText }}\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n Field is\\r\\n required\\r\\n Should be between 1 and 65536\\r\\n \\r\\n {{ _generalAddressErrorText }}\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n Field\\r\\n is required\\r\\n Should be between 1 and 16\\r\\n \\r\\n {{ _generalBitErrorText }}\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n Field is\\r\\n required\\r\\n Should be between 1 and 65536\\r\\n \\r\\n {{ _generalAddressErrorText }}\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n Field\\r\\n is required\\r\\n Should be between 1 and 16\\r\\n \\r\\n {{ _generalBitErrorText }}\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\"","export default \"\\r\\n
\\r\\n

Are you sure?

\\r\\n
\\r\\n

Do you really want to cancel sensor uploading?

\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\"","export default \"
\\r\\n \\r\\n \\r\\n
\"","export default \"\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n

{{_location.locationName}} equipment

\\r\\n \\r\\n \\r\\n \\r\\n

{{equipment.name}}

\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n Note: This location already contains equipment. It will be replaced by this configuration file.\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n\\r\\n \\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\"","export default \"
\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n Field is required\\r\\n
\\r\\n
\\r\\n\\r\\n \\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n Field is required\\r\\n
\\r\\n
\\r\\n\\r\\n \\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n Field is required\\r\\n Should\\r\\n be between 3 and 50 symbols\\r\\n
\\r\\n \\r\\n {{_equipmentForm.errors.unique}}\\r\\n
\\r\\n
\\r\\n\\r\\n \\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n Field is required\\r\\n Should\\r\\n be between 1 and 65536\\r\\n
\\r\\n
\\r\\n {{ _generalAddressErrorText }}\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n Field is required\\r\\n Should\\r\\n be between 1 and 65536\\r\\n
\\r\\n
\\r\\n {{ _generalAddressErrorText }}\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n Should be between 1 and 65536\\r\\n
\\r\\n
\\r\\n {{ _generalAddressErrorText }}\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n Field is required\\r\\n Should\\r\\n be between 1 and 65536\\r\\n
\\r\\n
\\r\\n {{ _generalAddressErrorText }}\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n Field\\r\\n is required\\r\\n Should\\r\\n be between 1 and 16\\r\\n
\\r\\n
\\r\\n {{ _generalBitErrorText }}\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n Field is\\r\\n required\\r\\n Should\\r\\n be between 1 and 65536\\r\\n
\\r\\n
\\r\\n {{ _generalAddressErrorText }}\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n Field\\r\\n is required\\r\\n Should\\r\\n be between 1 and 16\\r\\n
\\r\\n
\\r\\n {{ _generalBitErrorText }}\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n\\r\\n
\\r\\n

Sensors

\\r\\n \\r\\n \\r\\n \\r\\n {{ col.header }}\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n \\r\\n Sensors with similar values \\r\\n Please remove incorrect sensor\\r\\n
\\r\\n \\r\\n \\r\\n\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n {{ _sensorTypeLabel(rowData.type) ? _sensorTypeLabel(rowData.type) : '-' }}\\r\\n Is required\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n {{ _sensorPositionLabel(rowData.position) ? _sensorPositionLabel(rowData.position) : '-' }}\\r\\n Is required\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n {{ _sensorSideLabel(rowData.side) ? _sensorSideLabel(rowData.side) : '-' }}\\r\\n Is required\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n {{ rowData.modbusAddress ? rowData.modbusAddress : '-' }}\\r\\n Is required\\r\\n Should be between 1 and 65535\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n {{ rowData.warningAddress ? rowData.warningAddress : '-' }}\\r\\n Is required\\r\\n Should be between 1 and 65536\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n {{ rowData.warningAddressBit ? rowData.warningAddressBit : '-' }}\\r\\n Is required\\r\\n Should be between 1 and 16\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n {{ rowData.alarmAddress ? rowData.alarmAddress : '-' }}\\r\\n Is required\\r\\n Should be between 1 and 16\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n {{ rowData.alarmAddressBit ? rowData.alarmAddressBit : '-' }}\\r\\n Is required alarmAddressBit\\r\\n Should be between 1 and 16\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n {{ rowData.rateOfChangeWarningAddress ? rowData.rateOfChangeWarningAddress : '-' }}\\r\\n Is required\\r\\n Should be between 1 and 16\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n {{ rowData.rateOfChangeWarningAddressBit ? rowData.rateOfChangeWarningAddressBit : '-' }}\\r\\n Is required\\r\\n Should be between 1 and 16\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n {{ rowData.rateOfChangeAlarmAddress ? rowData.rateOfChangeAlarmAddress : '-' }}\\r\\n Is required\\r\\n Should be between 1 and 16\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n {{ rowData.rateOfChangeAlarmAddressBit ? rowData.rateOfChangeAlarmAddressBit : '-'}}\\r\\n Is required\\r\\n Should be between 1 and 16\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n\"","export default \"\\r\\n

Are you sure?

\\r\\n
\\r\\n

Do you really want to delete this {{_isSensorDeletePopup ? 'sensor' : 'equipment'}}?

\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\"","export default \"\\r\\n

{{ _activeEquipment ? _activeEquipment.name : ''}}

\\r\\n

{{ _receivingTimestamp }}

\\r\\n\\r\\n

MAINTENANCE REQUIRED

\\r\\n

Time till maintenance required: {{_activeEquipment.maintenanceCountDownValue > 0 ? _activeEquipment.maintenanceCountDownValue : 'No data'}}

\\r\\n

Total running hours: {{_activeEquipment.totalRunHoursValue > 0 ? _activeEquipment.totalRunHoursValue : 'No data'}}

\\r\\n
\\r\\n
\\r\\n
0\\\">\\r\\n
\\r\\n

1\\\">{{ _leftSchemeSideName }}

\\r\\n

1\\\">{{ _rightSchemeSideName }}

\\r\\n\\r\\n
\\r\\n
\\r\\n
{{marker.sensorMarkerData}}
\\r\\n
{{marker.sensorValueData}}
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
0\\\">\\r\\n
0\\\">\\r\\n
\\r\\n
\\r\\n {{sensor.label}}\\r\\n {{sensor.value == '--' ? 'No data' : sensor.value + '°F'}}\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n {{sensor.label}}\\r\\n {{sensor.value == '--' ? 'No data' : sensor.value + '°F'}}\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
0\\\">\\r\\n
\\r\\n
\\r\\n {{sensor.label}}\\r\\n {{sensor.value == '--' ? 'No data' : sensor.value + '°F'}}\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n {{sensor.label}}\\r\\n {{sensor.value == '--' ? 'No data' : sensor.value + '°F'}}\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\"","export default \"\\r\\n
\\r\\n

Congratulations!

\\r\\n
\\r\\n

Uploading was successful

\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\"","export default \"\\r\\n \\r\\n

Install Firmware

\\r\\n

Location name: {{_locationName}}

\\r\\n

Project name: {{_projectName}}

\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n Example: firmware.zip\\r\\n
\\r\\n {{_errorMessage}}\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\"","export default \"\\r\\n

Upload firmware for {{ _directoryName.toUpperCase() }}

\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n Example: firmware.zip\\r\\n
\\r\\n {{_errorMessage}}\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n\"","export default \"\\r\\n
\\r\\n

Are you sure?

\\r\\n
\\r\\n

\\r\\n File: {{ _projectName }} already exists in {{ _selectedProjectGroup }} project.\\r\\n
Do you want to rebase it?\\r\\n

\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n\"","export default \"\\r\\n

Edit Profile

\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n Field is\\r\\n required\\r\\n Should be between 3 and 50 symbols\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n Field is required\\r\\n Should be between 3 and 50 symbols\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n Field is required\\r\\n Should be between 3 and 50 symbols\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n\"","export default \"\\r\\n

Add Vendor

\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n \\r\\n Incorrect Email format!\\r\\n \\r\\n Email should be between 3 and 50 symbols\\r\\n Field is\\r\\n required\\r\\n
\\r\\n The user with such email address already exists in the system.\\r\\n
\\r\\n
0\\\"\\r\\n [ngClass]=\\\"{\\r\\n 'has-error': _submitted && _noBinSelected,\\r\\n 'active': !_submitted && !_noBinSelected\\r\\n }\\\" >\\r\\n \\r\\n \\r\\n
\\r\\n Need to select at least one storage\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n\"","export default \"\\r\\n

Are you sure?

\\r\\n
\\r\\n

Do you really want to delete this user?

\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\"","export default \"\\r\\n

Edit Vendor

\\r\\n
\\r\\n
\\r\\n
\\r\\n
0\\\"\\r\\n [ngClass]=\\\"{\\r\\n 'has-error': _submitted && _noBinSelected,\\r\\n 'active': !_submitted && !_noBinSelected\\r\\n }\\\" >\\r\\n \\r\\n \\r\\n
\\r\\n Need to select at least one storage\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n\"","export default \"
\\r\\n
\\r\\n

Sales Users

\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n {{col.header}}\\r\\n \\r\\n \\r\\n {{col.header}}\\r\\n \\r\\n \\r\\n
\\r\\n {{col.header}}\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n {{ !rowData[col.dataField] ? \\\"Not registered\\\" : rowData[col.dataField] }}\\r\\n \\r\\n \\r\\n \\r\\n {{ !rowData[col.dataField] ? \\\"Not registered\\\" : rowData[col.dataField] }}\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n {{rowData[col.dataField] | date:'short'}}\\r\\n \\r\\n \\r\\n {{ rowData[col.dataField] == _userStatus.Locked ? \\\"Locked\\\" : \\\"Unlocked\\\" }}\\r\\n \\r\\n \\r\\n {{rowData[col.dataField]}}\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n There is no service user yet\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n\\r\\n\"","export default \"
\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n {{col.header}}\\r\\n \\r\\n \\r\\n {{col.header}}\\r\\n \\r\\n \\r\\n
\\r\\n {{col.header}}\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n {{ !rowData[col.dataField] ? \\\"Not registered\\\" : rowData[col.dataField] }}\\r\\n \\r\\n \\r\\n \\r\\n {{ !rowData[col.dataField] ? \\\"Not registered\\\" : rowData[col.dataField] }}\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n {{rowData[col.dataField] | date:'short'}}\\r\\n \\r\\n \\r\\n {{rowData[col.dataField]}}\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n\\r\\n \\r\\n \\r\\n \\r\\n There is no service user yet\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n\\r\\n\"","export default \"
\\r\\n
\\r\\n

Service Users

\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n\"","export default \"
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n {{col.header}}\\r\\n \\r\\n \\r\\n {{col.header}}\\r\\n \\r\\n \\r\\n
\\r\\n {{col.header}}\\r\\n \\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n {{col.header}}\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n {{rowData[col.dataField]}}\\r\\n \\r\\n \\r\\n {{ !rowData[col.dataField] ? \\\"Not registered\\\" : rowData[col.dataField] }}\\r\\n \\r\\n \\r\\n {{ !rowData[col.dataField] ? 'Not registered' : rowData[col.dataField] }}\\r\\n \\r\\n \\r\\n {{ !rowData[col.dataField] ? 'Not registered' : rowData[col.dataField] }}\\r\\n \\r\\n \\r\\n {{ rowData[col.dataField] == _userStatus.Locked ? \\\"Locked\\\" : \\\"Unlocked\\\" }}\\r\\n \\r\\n \\r\\n {{ rowData[col.dataField]}}\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n {{ rowData[col.dataField] | date:'short'}}\\r\\n \\r\\n \\r\\n {{ rowData[col.dataField]}}\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n {{ _searchPhrase ? \\\"No search results found\\\": \\\"There is no vendor yet\\\" }}\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n\\r\\n\"","export default \"
\\r\\n
\\r\\n
\\r\\n

Vendors

\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n\\r\\n\"","export default \"
\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n Copyright @ Remote monitoring system\\r\\n |\\r\\n Privacy\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\"","export default \"
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n

Reset password

\\r\\n

Please enter your email address to request a password reset.

\\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n Email can`t be blank!\\r\\n Incorrect Email format!\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n

Email sent!

\\r\\n

We will send a message to {{_userEmail}} if it exists in the system, so you can pick your new password.

\\r\\n

Didn't get the email? Try again

\\r\\n
\\r\\n \\r\\n
\\r\\n\\r\\n \\r\\n
\\r\\n Copyright @ Remote monitoring system\\r\\n |\\r\\n Privacy\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\"","export default \"
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n

Enter your new password

\\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n Password can`t be blank!\\r\\n Password should contain at least 6 symbols\\r\\n Password should be no more than 50 symbols\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n\\r\\n
\\r\\n Confirm Password can't be blank\\r\\n Confirm Password should contain at least 6 symbols\\r\\n Confirm Password should be no more than 50 symbols\\r\\n
\\r\\n\\r\\n
\\r\\n Password and Confirm password should match\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n Copyright @ Remote monitoring system\\r\\n |\\r\\n Privacy\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\"","export default \"
\\r\\n
\\r\\n \\r\\n

Privacy Policy

\\r\\n
\\r\\n
\\r\\n

What is this Privacy Policy for?

\\r\\n

\\r\\n This privacy policy governs the website rolfesatboone.com.\\r\\n
\\r\\n The policy specifically sets out the different areas where user privacy is concerned and outlines the obligations and requirements of the users, the website, and website owners. It also details how this website processes, stores and protects user data and information. \\r\\n

\\r\\n

The Website

\\r\\n

\\r\\n This website and its owners take a proactive approach to user privacy and ensure that the necessary steps are taken to protect the privacy of its users while using this website. This website complies with the user privacy laws of the United States.\\r\\n

\\r\\n

Use of Cookies

\\r\\n

\\r\\n This website uses cookies to better the user’s experience. Where applicable, this website uses a cookie control \\r\\n system that enables the user to allow or disable the use of cookies on their computer/device during his or her\\r\\n first visit. This complies with the law that requires websites to obtain explicit consent from users before the user leaves\\r\\n behind “cookies” on a user’s computer/device and/or the website reads the users files.\\r\\n

\\r\\n

\\r\\n Cookies are small files saved to the user’s computer’s hard drive that track, \\r\\n save and store information about the user’s interactions and usage of the website. \\r\\n This allows the website’s server to provide the users with a tailored experience within this website. \\r\\n

\\r\\n

\\r\\n Users that do not want this website to use and save cookies \\r\\n should take necessary steps within their web browser’s security \\r\\n settings to block all cookies from this website and its external vendors. \\r\\n

\\r\\n

\\r\\n This website uses tracking software to monitor its visitors to better understand how they use this site. This software is provided by Google Analytics and uses cookies to track visitor usage.\\r\\n The software will save a cookie to your computer’s hard drive to track and monitor your use of the website. It will not store, save or collect personal information. You can read Google’s privacy policy at Google Privacy Policy .\\r\\n

\\r\\n

\\r\\n Other cookies may be stored to your computer’s hard drive by\\r\\n external vendors when this website uses referral programs, \\r\\n sponsored links or advertisements. These cookies are used \\r\\n for conversion and referral tracking and typically expire after\\r\\n 30 days, though some may take longer. No personal information is stored, saved or collected.\\r\\n

\\r\\n\\r\\n

Contact & Communication

\\r\\n

\\r\\n Users contacting this website and/or its owners do so at their own \\r\\n discretion and provide any such personal details requested at their\\r\\n own risk.\\r\\n Your personal information is kept private and stored securely pursuant to\\r\\n the Data Protection Act 1998. Although every effort has been made to ensure \\r\\n a safe and secure process, users acknowledge and accept that they are using \\r\\n all forms and processes at their own risk.\\r\\n

\\r\\n

This website and its owners use any information \\r\\n submitted to provide you with further information about the products \\r\\n and services they offer and/or to assist you in answering any questions\\r\\n you may have submitted. This includes using your details to subscribe \\r\\n you to any email newsletter program the website operates pursuant your\\r\\n complete understanding and express permission. However, your details are not passed on to any third parties.

\\r\\n\\r\\n

Rolfes@Boone BTX, KTX and ITX App Users

\\r\\n

\\r\\n When Rolfes@Boone’s products are installed, you will be asked for \\r\\n information about your system. We use this data to program the \\r\\n system to function in an optimal manner, when applicable. We may \\r\\n also aggregate your data with data from other buildings in order \\r\\n to create reports and benchmarks. Rolfes@Boone may also send you \\r\\n information and reports regarding your System’s operations, software \\r\\n updates, savings opportunities, or promotions directly onscreen in the\\r\\n web portal, or via email.\\r\\n

\\r\\n

\\r\\n By registering your System, you agree to receive e-mails \\r\\n from Rolfes@Boone relating to software updates for your System,\\r\\n mobile apps and web portal, as well as status updates for web portal service.\\r\\n You can opt out of receiving these update emails via the “Unsubscribe” link at the bottom of every update e-mail.\\r\\n

\\r\\n\\r\\n

Account Deletion

\\r\\n

If you choose to delete your account, you can make this request by contacting MobileSupport@rolfesatboone.com. \\r\\n Please be aware that once deleted, your account cannot be reactivated. Consequently, you will lose permanent access to your account activity and other related information.\\r\\n The removal of your data from third-party services will be done in compliance with their respective regulations and policies.

\\r\\n\\r\\n

Email

\\r\\n

This website operates an email program that informs subscribers about products and topics \\r\\n supplied through this website. Users can subscribe to this program through an online automated process or manually through a written agreement.

\\r\\n

Subscriptions are taken in compliance with Spam Laws detailed\\r\\n in the Privacy and Electronic Communications Regulations 2003. All personal \\r\\n details relating to subscriptions are held securely and in accordance with \\r\\n the Data Protection Act 1998. No personal details are passed on to third \\r\\n parties or shared with companies/people outside of the company that operates\\r\\n this website. Under the Data Protection Act 1998, you may request a copy of\\r\\n personal information held about you by this website’s email program.\\r\\n A small fee will be payable. If you would like a copy of the information \\r\\n held on you please write to the business address at the bottom of this policy.

\\r\\n

Email marketing campaigns published by this website or its \\r\\n owners may contain tracking facilities within the actual email. Subscriber \\r\\n activity is tracked and stored in a database for future analysis and evaluation.\\r\\n Such tracked activity may include the opening of emails, forwarding of emails,\\r\\n the clicking of links within the email content, times, dates and frequency of\\r\\n activity [this is by no far a comprehensive list].

\\r\\n

This information is used to refine future email campaigns and\\r\\n supply the user with more relevant content based around their activity.

\\r\\n

In compliance with Spam Laws and the Privacy and Electronic\\r\\n Communications Regulations 2003 subscribers are given the opportunity to unsubscribe at\\r\\n any time through an automated system. This process is detailed at the footer of each \\r\\n email campaign. If an automated un-subscription system is unavailable, clear instructions on how to unsubscribe will by detailed.

\\r\\n \\r\\n

External Links

\\r\\n

Although this website only looks to include quality,\\r\\n safe and relevant external links, users are advised to use caution \\r\\n before clicking any external web links mentioned throughout this website.\\r\\n The owners of this website cannot guarantee or verify the contents of any externally\\r\\n linked website despite their best efforts. Users click on external links at their \\r\\n own risk and this website and its owners cannot be held liable for any damages or implications caused by visiting any external links mentioned.

\\r\\n

Advertisements and Sponsored Links

\\r\\n

This website may contain sponsored links and advertisements. These partners may have their own detailed privacy policies.

\\r\\n

Clicking on any such advertiser’s link will \\r\\n send you to the advertiser’s website through a referral program \\r\\n that may use cookies to track the number of referrals sent from \\r\\n this website. This may include the use of cookies that may in \\r\\n turn be saved on your computer’s hard drive. Users should click \\r\\n on sponsored external links at their own risk and this website \\r\\n and its owners cannot be held liable for any damages or implications caused by visiting any external links mentioned.

\\r\\n

Social Media Platforms

\\r\\n

\\r\\n Communication, engagement, and actions taken through external social media platforms \\r\\n that this website and its owners participate on are custom to the terms and conditions \\r\\n as well as the privacy policies held with each social media platform respectively.\\r\\n

\\r\\n

\\r\\n Users are advised to use social media platforms wisely and communicate/engage \\r\\n on them with due care and caution regarding their own privacy and personal details.\\r\\n This website and its owners will never ask for personal or sensitive information\\r\\n through social media platforms. Users wishing to discuss sensitive details should \\r\\n use primary communication channels such as by telephone or email.\\r\\n

\\r\\n

\\r\\n This website may use social sharing buttons that help share web content \\r\\n directly from web pages to social media platforms. Users are advised before \\r\\n using social sharing buttons that they do so at their own discretion and understand \\r\\n that the social media platform may track and save your request to share a web page through your social media platform account.\\r\\n

\\r\\n

Shortened Links in Social Media

\\r\\n

This website and its owners through their social media\\r\\n platform accounts may share web links to relevant web pages.\\r\\n Some social media platforms shorten lengthy URLs [web addresses] (this is an example: http:/ bit.ly/zyVUBo).

\\r\\n

Users are advised to take caution and use good judgement before\\r\\n clicking any shortened URLs published on social media platforms by this website\\r\\n and its owners. Despite the best efforts to ensure only genuine URLs are published,\\r\\n many social media platforms are prone to spam and hacking. Therefore, this website\\r\\n and its owners cannot be held liable for any damages or implications caused by visiting any shortened links.

\\r\\n

Your California privacy rights

\\r\\n

California residents can now ask companies with whom \\r\\n they have an established business relationship to provide certain \\r\\n information about the companies’ sharing of personal information\\r\\n with third parties for direct marketing purposes during the past year.

\\r\\n

Greensleeves does not share personal information\\r\\n about its customers with third parties for their own marketing purposes.

\\r\\n

Resources & Further Information

\\r\\n \\r\\n

Please note that this privacy policy may change from time to time.\\r\\n Any changes to this Privacy Policy will be posted on this page so that you are \\r\\n always aware of the information that we collect, how we use it, and under what circumstances we disclose it.

\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\"","export default \"
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n

Login to start

\\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n Email can`t be\\r\\n blank!\\r\\n Incorrect Email\\r\\n format!\\r\\n Email\\r\\n should be between 3 and 50 symbols\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n Password\\r\\n can`t be blank!\\r\\n Length\\r\\n of password must\\r\\n be more than 6 and less than 50 chars\\r\\n
\\r\\n Wrong Login\\r\\n or Password. Please, try again.\\r\\n Sorry, you\\r\\n don`t have permission for the requested resource.\\r\\n Sorry, you\\r\\n do not have access to the system. Please contact an administrator\\r\\n
\\r\\n\\r\\n
\\r\\n Forgot password?\\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n Copyright @ Remote monitoring system\\r\\n |\\r\\n Privacy\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\"","export enum SensorStatusEnum {\r\n NoError = 0,\r\n OpenTC = 1,\r\n NoResponse = 2,\r\n MaxRise = 3,\r\n HighLimit = 4,\r\n}\r\n\r\nexport enum ModeTypesEnum {\r\n Rotation = 0,\r\n Click = 1,\r\n}\r\n\r\nexport enum MeasureTypeEnum {\r\n Temperature = 0,\r\n Resistance = 1,\r\n}\r\n\r\nexport enum BinTypeEnum {\r\n Circular = 1,\r\n Rectangle = 2,\r\n Unit = 3\r\n}\r\n\r\nexport enum SchemeSizeEnum {\r\n small = 0,\r\n large = 1,\r\n mobile = 2,\r\n}\r\n\r\nexport const schemesSizeInterval = {\r\n [SchemeSizeEnum.small]: {\r\n from: 1,\r\n to: 350\r\n },\r\n [SchemeSizeEnum.large]: {\r\n from: 351,\r\n to: 1000\r\n }\r\n};\r\n\r\nexport const scheme2DParams = {\r\n [SchemeSizeEnum.mobile]: {\r\n fontSizeRatio: 15,\r\n dotRadiusRatio: 40\r\n },\r\n [SchemeSizeEnum.small]: {\r\n fontSizeRatio: 15,\r\n dotRadiusRatio: 53\r\n },\r\n [SchemeSizeEnum.large]: {\r\n fontSizeRatio: 25,\r\n dotRadiusRatio: 65\r\n },\r\n};\r\n\r\nexport const scheme3DParams = {\r\n [SchemeSizeEnum.mobile]: {\r\n fontScale: 30,\r\n cableRadiusRatio: 285,\r\n sensorRadiusRatio: 70\r\n },\r\n [SchemeSizeEnum.small]: {\r\n fontScale: 35,\r\n cableRadiusRatio: 285,\r\n sensorRadiusRatio: 67\r\n },\r\n [SchemeSizeEnum.large]: {\r\n fontScale: 50,\r\n cableRadiusRatio: 400,\r\n sensorRadiusRatio: 80\r\n },\r\n};\r\n\r\nexport const unit2DParams = {\r\n [SchemeSizeEnum.mobile]: {\r\n fontSizeRatio: 25,\r\n dotRadiusRatio: 100\r\n },\r\n [SchemeSizeEnum.small]: {\r\n fontSizeRatio: 20,\r\n dotRadiusRatio: 90\r\n },\r\n [SchemeSizeEnum.large]: {\r\n fontSizeRatio: 40,\r\n dotRadiusRatio: 130\r\n },\r\n};\r\n","function webpackEmptyAsyncContext(req) {\n\t// Here Promise.resolve().then() is used instead of new Promise() to prevent\n\t// uncaught exception popping up in devtools\n\treturn Promise.resolve().then(function() {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t});\n}\nwebpackEmptyAsyncContext.keys = function() { return []; };\nwebpackEmptyAsyncContext.resolve = webpackEmptyAsyncContext;\nmodule.exports = webpackEmptyAsyncContext;\nwebpackEmptyAsyncContext.id = \"./src/$$_lazy_route_resource lazy recursive\";","import { Component } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'greensleeves-root',\r\n templateUrl: './app.component.html'\r\n})\r\nexport class AppComponent {\r\n}\r\n","import { BrowserModule } from '@angular/platform-browser';\r\nimport { NgModule } from '@angular/core';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { HTTP_INTERCEPTORS, HttpClientModule } from '@angular/common/http';\r\nimport { RouterModule } from '@angular/router';\r\n\r\nimport { RoutePaths, CommonModule } from './common';\r\nimport { SignInModule } from './sign-in';\r\nimport { CompleteRegistrationModule } from './complete-registration';\r\nimport { MainModule } from './main';\r\nimport { AppComponent } from './app.component';\r\nimport { PasswordRecoverModule } from './password-recover';\r\nimport { PasswordUpdateModule } from './password-update';\r\nimport { PrivacyModule } from './privacy';\r\nimport { AuthInterceptor } from './main/auth.interceptor';\r\n\r\n@NgModule({\r\n declarations: [\r\n AppComponent,\r\n ],\r\n imports: [\r\n BrowserModule.withServerTransition({ appId: 'greensleeves' }),\r\n HttpClientModule,\r\n FormsModule,\r\n CommonModule,\r\n MainModule,\r\n SignInModule,\r\n PrivacyModule,\r\n PasswordRecoverModule,\r\n PasswordUpdateModule,\r\n CompleteRegistrationModule,\r\n RouterModule.forRoot([\r\n { path: '', redirectTo: RoutePaths.SIGN_IN, pathMatch: 'full' },\r\n { path: '**', redirectTo: RoutePaths.SIGN_IN }\r\n ]),\r\n ],\r\n providers:[\r\n {\r\n provide: HTTP_INTERCEPTORS,\r\n useClass: AuthInterceptor,\r\n multi: true,\r\n },\r\n ],\r\n bootstrap: [AppComponent]\r\n})\r\nexport class AppModule { }\r\n","import { NgModule } from '@angular/core';\r\nimport { HttpClientModule } from '@angular/common/http';\r\n\r\nimport { HttpService, AuthorizeService, LocalStorageService, AccountService } from './services';\r\n\r\n@NgModule({\r\n imports: [\r\n ],\r\n providers: [\r\n HttpService,\r\n AuthorizeService,\r\n LocalStorageService,\r\n AccountService,\r\n ]\r\n})\r\nexport class CommonModule { }\r\n","export class ApiRoutes {\r\n public static readonly endpoint: string = '/api';\r\n\r\n private static readonly authBaseUrl: string = '/auth';\r\n\r\n private static readonly accountBaseUrl: string = '/account';\r\n\r\n private static readonly companyBaseUrl: string = '/company';\r\n\r\n static Auth = class {\r\n public static readonly login: string = `${ApiRoutes.authBaseUrl}/loginWeb`;\r\n public static readonly logout: string = `${ApiRoutes.authBaseUrl}/logout`;\r\n public static readonly refreshToken: string = `${ApiRoutes.authBaseUrl}/refreshToken`;\r\n };\r\n\r\n static Account = class {\r\n public static readonly resetPassword: string = `${ApiRoutes.accountBaseUrl}/ResetPassword`;\r\n public static readonly updatePassword: string = `${ApiRoutes.accountBaseUrl}/UpdatePassword`;\r\n public static readonly completeRegistration: string = `${ApiRoutes.accountBaseUrl}/CompleteRegistration`;\r\n public static readonly addCompanyAdmin: string = `${ApiRoutes.accountBaseUrl}/AddCompanyAdmin`;\r\n public static readonly editCompanyAdmin: string = `${ApiRoutes.accountBaseUrl}/EditCompanyAdmin`;\r\n public static readonly addCompanyUser: string = `${ApiRoutes.accountBaseUrl}/AddCompanyUser`;\r\n public static readonly editCompanyUser: string = `${ApiRoutes.accountBaseUrl}/EditCompanyUser`;\r\n public static readonly editServiceUser: string = `${ApiRoutes.accountBaseUrl}/EditServiceUser`;\r\n public static readonly deleteUser: string = `${ApiRoutes.accountBaseUrl}/DeleteUser`;\r\n public static readonly getAllServiceUser: string = `${ApiRoutes.accountBaseUrl}/GetAllServiceUsers`;\r\n public static readonly addServiceUser: string = `${ApiRoutes.accountBaseUrl}/AddServiceUser`;\r\n public static readonly deleteVendor: string = `${ApiRoutes.accountBaseUrl}/DeleteVendor`;\r\n public static readonly addVendor: string = `${ApiRoutes.accountBaseUrl}/AddVendor`;\r\n public static readonly completeRegistrationVendor: string = `${ApiRoutes.accountBaseUrl}/CompleteRegistrationVendor`;\r\n public static readonly editVendorForCompany: string = `${ApiRoutes.accountBaseUrl}/EditVendorForCompany`;\r\n public static readonly getProfile:string=`${ApiRoutes.accountBaseUrl}/GetProfile`;\r\n public static readonly editProfile:string=`${ApiRoutes.accountBaseUrl}/EditProfile`;\r\n public static readonly getAllSalesUser: string = `${ApiRoutes.accountBaseUrl}/GetAllSalesUsers`;\r\n public static readonly editSalesUser: string = `${ApiRoutes.accountBaseUrl}/EditSalesUser`;\r\n public static readonly addSalesUser: string = `${ApiRoutes.accountBaseUrl}/AddSalesUser`;\r\n }\r\n\r\n static Company = class {\r\n public static readonly getAllCompanyAdmin: string = `${ApiRoutes.companyBaseUrl}/GetAllCompanyAdmins`;\r\n public static readonly getAllCompanyAdminForCompany: string = `${ApiRoutes.companyBaseUrl}/GetAllCompanyAdminsForCompany`;\r\n public static readonly getAllCompanyUser: string = `${ApiRoutes.companyBaseUrl}/GetAllCompanyUsers`;\r\n public static readonly getAllVendorsForCompany: string = `${ApiRoutes.companyBaseUrl}/GetAllVendorsForCompany`;\r\n public static readonly getAllEmailReportConfigurationsForCompany: string = `${ApiRoutes.companyBaseUrl}/GetAllEmailReportConfigurationsForCompany`;\r\n public static readonly addEditEmailReportConfigurationForCompany: string = `${ApiRoutes.companyBaseUrl}/AddEditEmailReportConfigurationForCompany`;\r\n public static readonly deleteEmailReportConfigurationForCompany: string = `${ApiRoutes.companyBaseUrl}/DeleteEmailReportConfigurationForCompany`;\r\n };\r\n}\r\n","export * from './route-paths.constants';\r\nexport * from './api-routes.constants';\r\nexport * from './local-storage-keys.constants';\r\n","export const LocalStorageKeys = Object.freeze({\r\n LOGIN_INFO: 'login_info',\r\n AUTH_TOKEN: 'auth_token'\r\n});","export const RoutePaths = {\r\n MAIN_ADMIN: 'admin',\r\n MAIN_USER: 'user',\r\n SIGN_IN: 'sign-in',\r\n PASSWORD_RECOVER: 'password-recover',\r\n PASSWORD_UPDATE: 'password-update',\r\n COMPLETE_REGISTRATION: 'complete-registration',\r\n PRIVACY: 'privacy',\r\n COMPANY_USER: 'company-user',\r\n VENDOR: 'vendor',\r\n SALES_USER:'aqs'\r\n};\r\n","export enum ErrorCodeEnum {\r\n InternalError = -1,\r\n Base = 1000,\r\n Security = 2000,\r\n NotFound = 3000,\r\n LocationNotFound=3003,\r\n ItxStorageNotFound=3015,\r\n ItxRadarAlreadyExixtsInThisLocation = 3017,\r\n BadRequest = 4000,\r\n InvalidModelState = 5000,\r\n InvalidUserEmailOrPassword = 5001,\r\n InvalidToken=5002,\r\n PermissionError = 5003,\r\n UserIsLocked=5004,\r\n NotUniqueLocationName = 6000,\r\n NotUniqueCompanyName = 6003,\r\n ArduinoDeviceAlreadyAssigned = 6004,\r\n UserAlreadyExist = 8000,\r\n RaspberryDeviceAlreadyAssigned = 6005,\r\n ItxDeviceAlreadyAssigned = 6006,\r\n PasswordAndConfirmPasswordShouldMatch = 9000,\r\n AbsentXmlElement = 9001,\r\n AbsentXmlAttribute = 9002,\r\n WrongFormatOfValue = 9003,\r\n WrongFormatOfConfigFile = 9004,\r\n QuoteNotFound = 1002,\r\n}\r\n","export * from './user-role.enum';\r\nexport * from './error-code.enum';\r\n","export enum UserRoleEnum {\r\n CompanyAdmin = 0,\r\n CompanyUser = 1,\r\n ServiceUser = 2,\r\n Vendor = 3,\r\n SalesUser = 4,\r\n}","import jwt_decode from 'jwt-decode';\r\nimport { TreeNode } from 'primeng';\r\nimport { UserRoleEnum } from '../enums';\r\nimport { ProjectEnum, SensorTypeEnum } from '../../main/enums';\r\n\r\n\r\nexport class CommonFunctions {\r\n public static checkIfTimeNotExpired(expiresAt: number): boolean {\r\n const dateTimeNowInSeconds = Date.now() / 1000;\r\n return expiresAt - 60 > dateTimeNowInSeconds;\r\n }\r\n\r\n public static getRoleFromInvitationToken(token: string): UserRoleEnum {\r\n try {\r\n const tokenInfo = jwt_decode(token);\r\n return this.convertRoleStringToUserRoleEnum(tokenInfo['http://schemas.microsoft.com/ws/2008/06/identity/claims/role']);\r\n }\r\n catch (Error) {\r\n console.log(Error);\r\n return null;\r\n }\r\n }\r\n\r\n public static containsProject(projects: number, project: ProjectEnum): boolean {\r\n return (projects & project) === project;\r\n }\r\n\r\n public static compareTreeNodeLabels(a: TreeNode, b: TreeNode): number {\r\n return a.label.localeCompare(b.label, undefined, {\r\n numeric: true,\r\n sensitivity: 'base',\r\n });\r\n }\r\n\r\n public static compareStrings(a: string, b: string): number {\r\n return a.localeCompare(b, undefined, {\r\n numeric: true,\r\n sensitivity: 'base',\r\n });\r\n }\r\n\r\n private static convertRoleStringToUserRoleEnum(role: string): UserRoleEnum {\r\n if (role === 'Vendor') {\r\n return UserRoleEnum.Vendor;\r\n }\r\n else if (role === 'CompanyAdmin') {\r\n return UserRoleEnum.CompanyAdmin;\r\n }\r\n else if (role === 'CompanyUser') {\r\n return UserRoleEnum.CompanyUser;\r\n }\r\n else if (role === 'ServiceUser') {\r\n return UserRoleEnum.ServiceUser;\r\n }\r\n else if (role === 'SalesUser') {\r\n return UserRoleEnum.SalesUser\r\n }\r\n }\r\n\r\n public static btxGetSensorMeasure(sensorType: SensorTypeEnum): string {\r\n switch (sensorType) {\r\n case SensorTypeEnum.CurrentDesignLoad:\r\n return ' %';\r\n case SensorTypeEnum.CurrentAmpDraw:\r\n return ' A';\r\n case SensorTypeEnum.Vibration:\r\n return ' in/sec';\r\n case SensorTypeEnum.Speed:\r\n return ' rpm'\r\n case SensorTypeEnum.GrainDepth:\r\n return ' ft';\r\n default:\r\n return ' °F';\r\n }\r\n }\r\n}","import { CapacityUnitEnum, SensorTypeEnum, SizeMeasureEnum } from \"../../main/enums\";\r\n\r\nexport class ConvertDataFunctions {\r\n // To hhhh:mm:ss or hh:mm:ss\r\n public static secondsToString(totalSeconds: number, is4HoursFormat?: boolean): string {\r\n if (totalSeconds === 0) {\r\n return '';\r\n }\r\n\r\n const hours = Math.floor(totalSeconds / 3600);\r\n totalSeconds %= 3600;\r\n const minutes = Math.floor(totalSeconds / 60);\r\n const seconds = totalSeconds % 60;\r\n\r\n return [hours, minutes, seconds]\r\n .map((v, i) => {\r\n if (i === 0 && is4HoursFormat) {\r\n switch (true) {\r\n case (v < 10):\r\n return '000' + v;\r\n case (v < 100):\r\n return '00' + v;\r\n case (v < 1000):\r\n return '0' + v;\r\n default:\r\n return v;\r\n }\r\n }\r\n return v < 10 ? '0' + v : v\r\n })\r\n .join(\":\")\r\n }\r\n\r\n public static stringToSeconds(value: string, args?: any): number {\r\n const arr = value.split(\":\");\r\n let result = 0;\r\n for (let index = 0; index < arr.length; index++) {\r\n if (arr[index] === \"00\") {\r\n continue;\r\n }\r\n switch (index) {\r\n case 0:\r\n result += +arr[index] * 60 * 60;\r\n break;\r\n case 1:\r\n result += +arr[index] * 60;\r\n break;\r\n case 2:\r\n result += +arr[index];\r\n }\r\n }\r\n return result;\r\n }\r\n\r\n public static celsiusToFahrenheit(celsius: number): number {\r\n return Math.round((celsius * (9 / 5)) + 32)\r\n }\r\n\r\n public static fahrenheitToCelsius(fahrenheit: number, withRounding?: boolean): number {\r\n const result = withRounding ? Math.round((fahrenheit - 32) * (5 / 9)) : (fahrenheit - 32) * (5 / 9);\r\n return result;\r\n }\r\n\r\n public static deltaCelsiusToDeltaFahrenheit(celsiusDelta: number): number {\r\n const result = Math.round(celsiusDelta * 9 / 5);\r\n return result;\r\n }\r\n\r\n public static deltaFahrenheitToDeltaCelsius(fahrenheitDelta: number): number {\r\n const result = fahrenheitDelta * 5 / 9;\r\n return result\r\n }\r\n\r\n public static convertSizeFromFt(value: number, convertTo: SizeMeasureEnum): number {\r\n var result: number;\r\n switch (convertTo) {\r\n case SizeMeasureEnum.M: {\r\n result = value * 0.3048;\r\n break;\r\n }\r\n case SizeMeasureEnum.In: {\r\n result = value * 12;\r\n break;\r\n }\r\n default:\r\n result = value;\r\n }\r\n return result;\r\n }\r\n\r\n public static convertSizeToFt(value: number, sizeUnit: SizeMeasureEnum): number {\r\n let result: number;\r\n switch (sizeUnit) {\r\n case SizeMeasureEnum.In:\r\n result = value / 12;\r\n break;\r\n case SizeMeasureEnum.M:\r\n result = value / 0.3048;\r\n break;\r\n default:\r\n result = value;\r\n }\r\n return result;\r\n }\r\n\r\n public static convertFromGal(value: number, capacityUnit: CapacityUnitEnum): number {\r\n let result: number;\r\n switch (capacityUnit) {\r\n case CapacityUnitEnum.Bbl:\r\n result = value / 42;\r\n break;\r\n case CapacityUnitEnum.HL:\r\n result = value / 26.417205236;\r\n break;\r\n case CapacityUnitEnum.KL:\r\n result = value / 264.17205236;\r\n break;\r\n case CapacityUnitEnum.L:\r\n result = value / 0.264172;\r\n break;\r\n default:\r\n result = value;\r\n }\r\n return result;\r\n }\r\n\r\n public static convertToGal(value: number, capacityUnit: CapacityUnitEnum): number {\r\n let result: number;\r\n switch (capacityUnit) {\r\n case CapacityUnitEnum.Bbl:\r\n result = value * 42;\r\n break;\r\n case CapacityUnitEnum.HL:\r\n result = value * 26.417205236;\r\n break;\r\n case CapacityUnitEnum.KL:\r\n result = value * 264.17205236;\r\n break;\r\n case CapacityUnitEnum.L:\r\n result = value * 0.264172;\r\n break;\r\n default:\r\n result = value;\r\n }\r\n return result;\r\n }\r\n\r\n public static convertFromFt3(value: number, capacityUnit: CapacityUnitEnum): number {\r\n let result: number;\r\n switch (capacityUnit) {\r\n case CapacityUnitEnum.M_3:\r\n result = value / 35.3147;\r\n break;\r\n case CapacityUnitEnum.Bsh:\r\n result = value * 0.80356395494834;\r\n break;\r\n default:\r\n result = value;\r\n }\r\n return result;\r\n }\r\n public static convertToFt3(value: number, capacityUnit: CapacityUnitEnum): number {\r\n let result: number;\r\n switch (capacityUnit) {\r\n case CapacityUnitEnum.M_3:\r\n result = value * 35.3147;\r\n break;\r\n case CapacityUnitEnum.Bsh:\r\n result = value / 0.80356395494834;\r\n break;\r\n default:\r\n result = value;\r\n }\r\n return result;\r\n }\r\n\r\n public static roundAndUsString(num: number, digits: number): string {\r\n switch (digits) {\r\n case 1:\r\n return (Math.round(num * 10) / 10).toLocaleString('en-Us');\r\n case 2:\r\n return (Math.round(num * 100) / 100).toLocaleString('en-Us');\r\n default:\r\n return (Math.round(num * 1000) / 1000).toLocaleString('en-Us');\r\n }\r\n }\r\n\r\n public static aqsMakeStringFromFtToFtIn(valueInFt): string {\r\n let ft = Math.floor(valueInFt / 12);\r\n let inch = Math.round(valueInFt % 12);\r\n if (inch == 12) {\r\n ft++;\r\n inch = 0;\r\n }\r\n return `${ft}-${inch}`;\r\n // STR$(INT(AA/12))+\"-\"+RIGHT$(STR$(CINT(AA-(INT(AA/12)*12)))\r\n }\r\n\r\n public static secondsToHHMMString(totalSeconds: number, is4HoursFormat?: boolean): string {\r\n if (totalSeconds === 0) {\r\n return '00:00';\r\n }\r\n const hours = Math.floor(totalSeconds / 3600);\r\n totalSeconds %= 3600;\r\n const minutes = Math.floor(totalSeconds / 60);\r\n return [hours, minutes]\r\n .map((v, i) => {\r\n return v < 10 ? '0' + v : v\r\n })\r\n .join(\":\")\r\n }\r\n}\r\n","export * from './commonFunctions';\r\nexport * from './convert-data.functions';\r\n","export * from './constants';\r\nexport * from './services';\r\nexport * from './common.module';\r\nexport * from './enums';\r\nexport * from './models';\r\nexport * from './functions';\r\nexport * from './validators';\r\n","export class CompleteRegistrationModel {\r\n constructor(\r\n public token: string,\r\n public firstName: string,\r\n public lastName: string,\r\n public password: string,\r\n public confirmPassword: string) { }\r\n}\r\n\r\nexport class CompleteRegistrationVendorModel extends CompleteRegistrationModel {\r\n constructor(\r\n public companyName: string,\r\n public token: string,\r\n public firstName: string,\r\n public lastName: string,\r\n public password: string,\r\n public confirmPassword: string) { super(token, firstName, lastName, password, confirmPassword); }\r\n}","export * from './complete-registration.model';\r\nexport * from './password-recover.model';\r\nexport * from './password-update.model';","export class PasswordRecoverModel {\r\n constructor(\r\n public email: string) \r\n { }\r\n }","export class PasswordUpdateModel {\r\n constructor(\r\n public token: string,\r\n public password: string,\r\n public confirmPassword: string)\r\n { }\r\n }","import { ErrorCodeEnum } from '../enums';\r\n\r\nexport class ErrorModel {\r\n public code: ErrorCodeEnum;\r\n public message: string;\r\n public errors: string[];\r\n}","export * from './user';\r\nexport * from './login-model';\r\nexport * from './error.model';\r\nexport * from './account-models';\r\nexport * from './refresh.model';","export * from './login-post.model';\r\nexport * from './login-view.model';\r\n","export class LoginPostModel {\r\n constructor(\r\n public email: string,\r\n public password: string)\r\n { }\r\n}","import { UserRoleEnum } from '../../enums';\r\n\r\nexport class LoginViewModel {\r\n public id: string;\r\n public role: UserRoleEnum;\r\n public authToken: string;\r\n public refreshToken: string;\r\n public expiresAt: number;\r\n public companyId: number;\r\n public projects: number | null;\r\n}\r\n\r\nexport class LoginGetModel {\r\n public id: string;\r\n public role: number;\r\n public authToken: string;\r\n public refreshToken: string;\r\n public expiresAt: number;\r\n public companyId: number;\r\n public projects: number | null;\r\n\r\n public static toViewModel(getModel: LoginGetModel): LoginViewModel {\r\n const viewModel = new LoginViewModel();\r\n\r\n viewModel.id = getModel.id;\r\n viewModel.role = getModel.role;\r\n viewModel.authToken = getModel.authToken;\r\n viewModel.refreshToken = getModel.refreshToken;\r\n viewModel.expiresAt = getModel.expiresAt;\r\n viewModel.companyId = getModel.companyId;\r\n viewModel.projects = getModel.projects;\r\n\r\n return viewModel;\r\n }\r\n}\r\n","export class RefreshViewModel {\r\n constructor(\r\n public authToken: string,\r\n public refreshToken: string,\r\n public expiresAt: number,\r\n ) { }\r\n}\r\n\r\nexport class RefreshGetModel {\r\n public authToken: string;\r\n public refreshToken: string;\r\n public expiresAt: number;\r\n\r\n public static toViewModel(getModel: RefreshGetModel): RefreshViewModel {\r\n const viewModel = new RefreshViewModel(getModel.authToken, getModel.refreshToken, getModel.expiresAt);\r\n return viewModel;\r\n }\r\n}\r\n\r\nexport class RefreshPostModel {\r\n constructor(\r\n public authToken: string,\r\n public refreshToken: string,\r\n ) { }\r\n}","export * from './user.model';","export class User {\r\n public id: number;\r\n public name: string;\r\n public role: string;\r\n}\r\n","export * from './local-storage.service';\r\n","import { Injectable } from '@angular/core';\r\n\r\nimport { LocalStorageKeys } from '../../constants';\r\nimport { LoginViewModel } from '../../models';\r\n\r\n@Injectable()\r\nexport class LocalStorageService {\r\n constructor() {}\r\n\r\n public getLoginInfo(): LoginViewModel {\r\n const valueToReturn = localStorage.getItem(LocalStorageKeys.LOGIN_INFO);\r\n if (valueToReturn !== null) {\r\n const toReturn = JSON.parse(valueToReturn);\r\n return toReturn;\r\n }\r\n\r\n return null;\r\n }\r\n\r\n public setLoginInfo(value: LoginViewModel) {\r\n const valueToSave = JSON.stringify(value);\r\n localStorage.setItem(LocalStorageKeys.LOGIN_INFO, valueToSave);\r\n this.saveAuthToken(value.authToken);\r\n }\r\n\r\n public getAuthToken(): string {\r\n const valueToReturn = localStorage.getItem(LocalStorageKeys.AUTH_TOKEN);\r\n if (valueToReturn !== null) {\r\n return JSON.parse(valueToReturn);\r\n }\r\n\r\n return null;\r\n }\r\n\r\n public setAuthToken(value: string) {\r\n this.saveAuthToken(value);\r\n }\r\n\r\n public clear() {\r\n localStorage.clear();\r\n }\r\n\r\n private saveAuthToken(value: string) {\r\n const valueToSave = JSON.stringify(value);\r\n localStorage.setItem(LocalStorageKeys.AUTH_TOKEN, valueToSave);\r\n }\r\n}","import { Injectable } from '@angular/core';\r\nimport { Router } from '@angular/router';\r\n\r\nimport { ApiRoutes} from '../../constants';\r\nimport { LocalStorageService } from '../common';\r\nimport { HttpService } from './http.service';\r\nimport { CompleteRegistrationModel, CompleteRegistrationVendorModel, PasswordRecoverModel, PasswordUpdateModel } from '../../models';\r\n\r\n@Injectable()\r\nexport class AccountService {\r\n public redirectUrl: string = null;\r\n\r\n constructor(\r\n private _httpService: HttpService,\r\n private _localStorageService: LocalStorageService,\r\n private _router: Router) {\r\n }\r\n\r\n public async completeRegistration(completeRegistrationModel : CompleteRegistrationModel){\r\n try {\r\n const result = this._httpService.post(ApiRoutes.Account.completeRegistration, completeRegistrationModel);\r\n } catch(error) {\r\n console.log(error);\r\n return null;\r\n }\r\n }\r\n\r\n public async completeRegistrationVendor(completeRegistrationVendorModel : CompleteRegistrationVendorModel){\r\n try {\r\n const result = this._httpService.post(ApiRoutes.Account.completeRegistrationVendor, completeRegistrationVendorModel);\r\n } catch(error) {\r\n console.log(error);\r\n return null;\r\n }\r\n }\r\n public async passwordRecover(passwordRecoverModel : PasswordRecoverModel){\r\n try {\r\n const result = this._httpService.post(ApiRoutes.Account.resetPassword, passwordRecoverModel);\r\n } catch(error) {\r\n console.log(error);\r\n return null;\r\n }\r\n }\r\n\r\n public async passwordUpdate(passwordUpdateModel : PasswordUpdateModel){\r\n try {\r\n const result = this._httpService.post(ApiRoutes.Account.updatePassword, passwordUpdateModel);\r\n } catch(error) {\r\n console.log(error);\r\n return null;\r\n }\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { Router } from '@angular/router';\r\n\r\nimport { ApiRoutes, RoutePaths } from '../../constants';\r\nimport { LocalStorageService } from '../common';\r\nimport { HttpService } from './http.service';\r\nimport { LoginPostModel, LoginGetModel, LoginViewModel, ErrorModel, RefreshGetModel, RefreshPostModel } from '../../models';\r\nimport { ErrorCodeEnum, UserRoleEnum } from '../../enums';\r\nimport { CommonFunctions } from '../../functions';\r\n\r\n@Injectable()\r\nexport class AuthorizeService {\r\n public redirectUrl: string = null;\r\n\r\n constructor(\r\n private _httpService: HttpService,\r\n private _localStorageService: LocalStorageService,\r\n private _router: Router) {\r\n }\r\n\r\n public async login(userEmail: string, password: string): Promise {\r\n try {\r\n const requestModel = new LoginPostModel(userEmail, password);\r\n const result = await this._httpService.post(ApiRoutes.Auth.login, requestModel);\r\n const loginViewModel = LoginGetModel.toViewModel(result);\r\n\r\n this._localStorageService.setLoginInfo(loginViewModel);\r\n this.navigateByUserRoleOrRedirectUrl(loginViewModel);\r\n\r\n return loginViewModel;\r\n } catch (error) {\r\n if (error instanceof ErrorModel) {\r\n return error;\r\n }\r\n\r\n console.log(error);\r\n return null;\r\n }\r\n }\r\n\r\n public checkIfAuthorizedAndNavigate(): boolean {\r\n const loginViewModel = this._localStorageService.getLoginInfo();\r\n\r\n if (loginViewModel && CommonFunctions.checkIfTimeNotExpired(loginViewModel.expiresAt)) {\r\n this.navigateByUserRoleOrRedirectUrl(loginViewModel);\r\n return true;\r\n }\r\n }\r\n\r\n public async logout(): Promise {\r\n try {\r\n await this._httpService.post(ApiRoutes.Auth.logout, {});\r\n this._localStorageService.clear();\r\n this._router.navigate([RoutePaths.SIGN_IN]);\r\n } catch (error) {\r\n if (error instanceof ErrorModel) {\r\n return Promise.reject(error);\r\n }\r\n\r\n console.log(error);\r\n return null;\r\n }\r\n }\r\n\r\n public getToken(): string {\r\n return this._localStorageService.getAuthToken();\r\n }\r\n\r\n public async refreshTokens() {\r\n try {\r\n const loginViewModel = this._localStorageService.getLoginInfo();\r\n const requestModel = new RefreshPostModel(loginViewModel.authToken, loginViewModel.refreshToken);\r\n const result = await this._httpService.post(ApiRoutes.Auth.refreshToken, requestModel);\r\n const refreshViewModel = RefreshGetModel.toViewModel(result);\r\n\r\n loginViewModel.authToken = refreshViewModel.authToken;\r\n loginViewModel.refreshToken = refreshViewModel.refreshToken;\r\n loginViewModel.expiresAt = refreshViewModel.expiresAt;\r\n\r\n this._localStorageService.setLoginInfo(loginViewModel);\r\n\r\n return refreshViewModel;\r\n } catch (error) {\r\n if (error instanceof ErrorModel) {\r\n if (error.code == ErrorCodeEnum.InvalidToken) {\r\n this._localStorageService.clear();\r\n this._router.navigate([RoutePaths.SIGN_IN]);\r\n }\r\n return error;\r\n }\r\n\r\n console.log(error);\r\n return null;\r\n }\r\n }\r\n\r\n private navigateByUserRoleOrRedirectUrl(loginViewModel: LoginViewModel) {\r\n if (this.redirectUrl) {\r\n this._router.navigateByUrl(this.redirectUrl);\r\n } else {\r\n switch (loginViewModel.role) {\r\n case (UserRoleEnum.CompanyAdmin):\r\n this._router.navigate([RoutePaths.MAIN_ADMIN]);\r\n break;\r\n case (UserRoleEnum.ServiceUser):\r\n this._router.navigate([RoutePaths.MAIN_USER]);\r\n break;\r\n case (UserRoleEnum.CompanyUser):\r\n this._router.navigate([RoutePaths.COMPANY_USER]);\r\n break;\r\n case (UserRoleEnum.Vendor):\r\n this._router.navigate([RoutePaths.VENDOR]);\r\n break;\r\n case (UserRoleEnum.SalesUser):\r\n this._router.navigate([RoutePaths.SALES_USER]);\r\n break;\r\n }\r\n }\r\n this.redirectUrl = null;\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { HttpClient, HttpHeaders, HttpErrorResponse } from '@angular/common/http';\r\n\r\nimport { ApiRoutes } from '../../constants';\r\nimport { ErrorModel } from '../../models';\r\n\r\n@Injectable()\r\nexport class HttpService {\r\n constructor(\r\n private _http: HttpClient,\r\n ) { }\r\n\r\n public async post(url: string, body: any): Promise {\r\n const options = { headers: this.generateJsonHeaders() };\r\n const data = JSON.stringify(body);\r\n return await this._http.post(`${ApiRoutes.endpoint}${url}`, data, options).toPromise()\r\n .then((response) => {\r\n return response;\r\n })\r\n .catch(async (error: HttpErrorResponse) => {\r\n await this.handleErrorResponse(error);\r\n });\r\n }\r\n\r\n public async put(url: string, body: any): Promise {\r\n const options = { headers: this.generateJsonHeaders() };\r\n const data = JSON.stringify(body);\r\n return await this._http.put(`${ApiRoutes.endpoint}${url}`, data, options).toPromise()\r\n .then((response) => {\r\n return response;\r\n })\r\n .catch(async (error: HttpErrorResponse) => {\r\n await this.handleErrorResponse(error);\r\n });\r\n }\r\n\r\n public async postData(url: string, data: FormData): Promise {\r\n const options = { headers: this.generateJsonHeaders() };\r\n return await this._http.post(`${ApiRoutes.endpoint}${url}`, data, options).toPromise()\r\n .then((response) => {\r\n return response;\r\n })\r\n .catch(async (error: HttpErrorResponse) => {\r\n await this.handleErrorResponse(error);\r\n });\r\n }\r\n\r\n public async postDataWithContent(url: string, data: FormData): Promise {\r\n const options = { headers: new HttpHeaders() };\r\n return await this._http.post(`${ApiRoutes.endpoint}${url}`, data, options).toPromise()\r\n .then((response) => {\r\n return response;\r\n })\r\n .catch(async (error: HttpErrorResponse) => {\r\n await this.handleErrorResponse(error);\r\n });\r\n }\r\n\r\n public async get(url: string, params: { [key: string] : any | any[] } = {}): Promise {\r\n const options = { headers: this.generateJsonHeaders(), params };\r\n return await this._http.get(`${ApiRoutes.endpoint}${url}`, options).toPromise()\r\n .then((response) => {\r\n return response;\r\n })\r\n .catch(async (error: HttpErrorResponse) => {\r\n await this.handleErrorResponse(error);\r\n });\r\n }\r\n\r\n public async getArrayBuffer(url: string, params: { [key: string] : any | any[] } = {}): Promise {\r\n return await this._http.get(`${ApiRoutes.endpoint}${url}`, { headers: this.generateJsonHeaders(), responseType: 'arraybuffer', params }).toPromise()\r\n .then((response) => {\r\n return response;\r\n })\r\n .catch(async (error: HttpErrorResponse) => {\r\n await this.handleErrorResponse(error);\r\n });\r\n }\r\n\r\n public async postArrayBuffer(url: string, data: any): Promise {\r\n return await this._http.post(`${ApiRoutes.endpoint}${url}`, data, { headers: this.generateJsonHeaders(), responseType: 'arraybuffer'}).toPromise()\r\n .then((response) => {\r\n return response;\r\n })\r\n .catch(async (error: HttpErrorResponse) => {\r\n await this.handleErrorResponse(error);\r\n });\r\n }\r\n\r\n public async delete(url: string, params: { [key: string] : any | any[] } = {}): Promise {\r\n const options = { headers: this.generateJsonHeaders(), params };\r\n return await this._http.delete(`${ApiRoutes.endpoint}${url}`, options).toPromise()\r\n .then((response) => {\r\n return response;\r\n })\r\n .catch(async (error: HttpErrorResponse) => {\r\n await this.handleErrorResponse(error);\r\n });\r\n }\r\n\r\n private async handleErrorResponse(error: HttpErrorResponse) {\r\n console.log(error);\r\n\r\n if (error.error) {\r\n const errorModel = Object.assign(new ErrorModel(), error.error);\r\n throw errorModel;\r\n }\r\n\r\n throw error;\r\n }\r\n\r\n private generateJsonHeaders(): HttpHeaders {\r\n let headers = new HttpHeaders();\r\n headers = headers.set('Content-Type', 'application/json; charset=utf-8');\r\n\r\n return headers;\r\n }\r\n}\r\n","export * from './authorize.service';\r\nexport * from './http.service';\r\nexport * from './account.service';","export * from './common';\r\nexport * from './http';","import { FormControl } from '@angular/forms';\r\n\r\nexport function digitsValidator(control: FormControl) {\r\n return /^[0-9]*$/.test(control.value) ? null : { 'digitsValidator': 'Should contain only digits' };\r\n}\r\n\r\nexport function digitsFractionalValidator(control: FormControl) {\r\n return /^(0|[1-9]\\d*)?(\\.\\d+)?(?<=\\d)$/.test(control.value) ? null : { 'digitsValidator': 'Should contain only digits' };\r\n}\r\n\r\nexport function emailValidator(options: { message: string, maxNameLength?: number, maxDomainLength?: number } = null ) {\r\n const { message, maxNameLength, maxDomainLength } = {\r\n ...{ message: 'Email not valid', maxDomainLength: 255, maxNameLength: 64 },\r\n ...options\r\n };\r\n const regexString = `^(?=^.${maxNameLength > 0 ? `{1,${maxNameLength}}` : '*'}@.${maxDomainLength > 0 ? `{1,${maxDomainLength}}` : '*'}$)(([^<>()\\\\[\\\\]\\\\\\\\.,;:\\\\s@\"]+(\\\\.[^<>()\\\\[\\\\]\\\\\\\\.,;:\\\\s@\"]+)*)|(\".+\"))@((\\\\[[0-9]{1,3}\\\\.[0-9]{1,3}\\\\.[0-9]{1,3}\\\\.[0-9]{1,3}])|(([a-zA-Z\\\\-0-9]+\\\\.)+[a-zA-Z]{2,}))$`;\r\n const regexp = new RegExp(regexString);\r\n return (control: FormControl) => {\r\n return regexp.test(control.value) ? null : { 'emailValidator': message };\r\n }\r\n}\r\n\r\nexport function checkboxValidator(control: FormControl) {\r\n return control.value && control.value.some(() => true) ? null : {'checkboxValidator': 'At least one checkbox should be picked'};\r\n}\r\n\r\nexport function ipValidator(control: FormControl) {\r\n const regexp = new RegExp('^(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[1-9]).(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9]).(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9]).(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])$'\r\n );\r\n return regexp.test(control.value) ? null : {'ipValidator': 'Incorrect IP format!'}\r\n}","export * from './common-validators';","import { CommonFunctions } from './../common/functions/commonFunctions';\r\nimport { Component, OnInit } from '@angular/core';\r\nimport { FormBuilder, FormGroup, Validators } from '@angular/forms';\r\nimport { Router, ActivatedRoute } from '@angular/router';\r\n\r\nimport { RoutePaths, AccountService, UserRoleEnum, CompleteRegistrationVendorModel } from '../common';\r\n\r\n//TODO\r\n//Check invalid messages\r\n@Component({\r\n selector: 'greensleeves-registration',\r\n templateUrl: './complete-registration.component.html'\r\n})\r\n\r\nexport class CompleteRegistrationComponent implements OnInit {\r\n private _token: string;\r\n _completeRegistrationFormGroup: FormGroup;\r\n _isSubmit = false;\r\n _isShowPassword: boolean;\r\n _isShowPasswordConfirm: boolean;\r\n _privacyLink = RoutePaths.PRIVACY;\r\n _userRole: UserRoleEnum;\r\n\r\n get _isVendor() {\r\n return this._userRole === UserRoleEnum.Vendor;\r\n }\r\n constructor(\r\n private formBuilder: FormBuilder,\r\n private route: ActivatedRoute,\r\n private router: Router,\r\n private activatedRoute: ActivatedRoute,\r\n private _accountService: AccountService,\r\n ) { }\r\n\r\n ngOnInit() {\r\n this.activatedRoute.queryParams.subscribe(params => {\r\n this._token = params['token'];\r\n });\r\n this._userRole = CommonFunctions.getRoleFromInvitationToken(this._token);\r\n\r\n this._completeRegistrationFormGroup = this.formBuilder.group({\r\n companyName: [this._isVendor?'':'empty', Validators.compose([Validators.required, Validators.minLength(1), Validators.maxLength(50)])],\r\n firstName: ['', Validators.compose([Validators.required, Validators.minLength(3), Validators.maxLength(50)])],\r\n lastName: ['', Validators.compose([Validators.required, Validators.minLength(3), Validators.maxLength(50)])],\r\n password: ['', Validators.compose([Validators.required, Validators.minLength(6), Validators.maxLength(50)])],\r\n confirm: ['', Validators.compose([Validators.required, Validators.minLength(6), Validators.maxLength(50)])]\r\n });\r\n }\r\n\r\n get f() { return this._completeRegistrationFormGroup.controls; }\r\n\r\n onSubmit() {\r\n this._isSubmit = true;\r\n const companyName = this._isVendor?this.f.companyName.value.trim():'';\r\n const firstName = this.f.firstName.value.trim();\r\n const lastName = this.f.lastName.value.trim();\r\n const password = this.f.password.value.trim();\r\n const confirm = this.f.confirm.value.trim();\r\n\r\n if (this._completeRegistrationFormGroup.invalid) {\r\n return;\r\n }\r\n if (password != confirm) {\r\n return;\r\n }\r\n\r\n const completeRegistrationModel = new CompleteRegistrationVendorModel(companyName,this._token, firstName, lastName, password, password);\r\n const result = this._isVendor?this._accountService.completeRegistrationVendor(completeRegistrationModel)\r\n :this._accountService.completeRegistration(completeRegistrationModel);\r\n if (result != null) {\r\n this.router.navigateByUrl(RoutePaths.SIGN_IN);\r\n }\r\n }\r\n\r\n onSwitchShowHidePassword() {\r\n this._isShowPassword = !this._isShowPassword;\r\n }\r\n\r\n onSwitchShowHidePasswordConfirmation() {\r\n this._isShowPasswordConfirm = !this._isShowPasswordConfirm;\r\n }\r\n}\r\n","import { CommonModule } from '@angular/common';\r\nimport { BrowserModule } from '@angular/platform-browser';\r\nimport { NgModule } from '@angular/core';\r\nimport { RouterModule } from '@angular/router';\r\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\r\n\r\nimport { CompleteRegistrationComponent } from './complete-registration.component';\r\nimport { RoutePaths } from '../common';\r\n\r\n@NgModule({\r\n declarations: [\r\n CompleteRegistrationComponent,\r\n ],\r\n imports: [\r\n BrowserModule,\r\n CommonModule,\r\n FormsModule,\r\n ReactiveFormsModule,\r\n RouterModule.forChild([\r\n { path: RoutePaths.COMPLETE_REGISTRATION, component: CompleteRegistrationComponent },\r\n ])\r\n ]\r\n})\r\n\r\nexport class CompleteRegistrationModule { }\r\n","export * from './complete-registration.module';\r\n","import { Injectable } from '@angular/core';\r\nimport { Router } from '@angular/router';\r\n\r\nimport { AuthorizeService, LocalStorageService } from '../common';\r\nimport { CommonFunctions } from '../common';\r\nimport { RoutePaths } from '../common';\r\n\r\n@Injectable()\r\nexport class AccessTokenFactory {\r\n constructor(\r\n private _authorizeService: AuthorizeService,\r\n private _localStorageService: LocalStorageService,\r\n private _router: Router,\r\n ) { }\r\n\r\n public async getAuthorizationAttributeValue(): Promise {\r\n let loginInfo = this._localStorageService.getLoginInfo();\r\n const isNotExpired = CommonFunctions.checkIfTimeNotExpired(loginInfo.expiresAt)\r\n if (!isNotExpired) {\r\n const result = await this._authorizeService.refreshTokens();\r\n if (!result) {\r\n this._router.navigate([RoutePaths.SIGN_IN]);\r\n }\r\n\r\n loginInfo = this._localStorageService.getLoginInfo();\r\n }\r\n\r\n return Promise.resolve(loginInfo.authToken);\r\n }\r\n}","import { Injectable } from '@angular/core';\r\nimport { CanActivate, ActivatedRouteSnapshot, RouterStateSnapshot } from '@angular/router';\r\nimport { Router } from '@angular/router';\r\n\r\nimport { RoutePaths } from '../common';\r\nimport { AuthorizeService, LocalStorageService } from '../common';\r\nimport { CommonFunctions } from '../common';\r\n\r\n@Injectable()\r\nexport class AuthGuard implements CanActivate {\r\n constructor(\r\n private _router: Router,\r\n private _authService: AuthorizeService,\r\n private _localStorageService: LocalStorageService) { }\r\n\r\n async canActivate(\r\n next: ActivatedRouteSnapshot,\r\n state: RouterStateSnapshot): Promise {\r\n let isValid = this.isLoginInfoValid(next);\r\n\r\n if (isValid) {\r\n return true;\r\n } else {\r\n await this._authService.refreshTokens();\r\n isValid = this.isLoginInfoValid(next);\r\n\r\n if (isValid) {\r\n return true;\r\n }\r\n\r\n this._authService.redirectUrl = state.url;\r\n this._router.navigate([RoutePaths.SIGN_IN]);\r\n return false;\r\n }\r\n }\r\n\r\n private isLoginInfoValid(next: ActivatedRouteSnapshot): boolean {\r\n const loginInfo = this._localStorageService.getLoginInfo();\r\n const expectedRole = next.data.expectedRole;\r\n\r\n return loginInfo && loginInfo.role === expectedRole && CommonFunctions.checkIfTimeNotExpired(loginInfo.expiresAt);\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { HttpInterceptor, HttpRequest, HttpHandler, HttpEvent, HttpErrorResponse } from '@angular/common/http';\r\nimport { Observable, of } from 'rxjs';\r\nimport { switchMap, catchError } from 'rxjs/operators';\r\nimport { Router } from '@angular/router';\r\nimport { throwError } from 'rxjs/internal/observable/throwError';\r\n\r\nimport { ErrorModel, RoutePaths } from '../common';\r\nimport { LocalStorageService, AuthorizeService } from '../common';\r\n\r\n@Injectable()\r\nexport class AuthInterceptor implements HttpInterceptor {\r\n constructor(\r\n private _localStorageService: LocalStorageService,\r\n private _authorizeService: AuthorizeService,\r\n private _router: Router,\r\n ) { }\r\n\r\n intercept(\r\n request: HttpRequest,\r\n next: HttpHandler\r\n ): Observable> {\r\n const modifiedRequest = this.normalizeRequestHeaders(request);\r\n return next.handle(modifiedRequest)\r\n .pipe(\r\n catchError(error => {\r\n if (error instanceof HttpErrorResponse && error.status === 401) {\r\n return this.tryAuthWithRefreshToken(request, next, error);\r\n } else {\r\n return throwError(error);\r\n }\r\n }),\r\n switchMap((event: HttpEvent) => {\r\n return of(event);\r\n })\r\n );\r\n }\r\n\r\n private async tryAuthWithRefreshToken(request: HttpRequest, next: HttpHandler, error: any): Promise> {\r\n const result = await this._authorizeService.refreshTokens();\r\n if (!result || result instanceof ErrorModel) {\r\n this._router.navigate([RoutePaths.SIGN_IN]);\r\n }\r\n\r\n const modifiedRequest = this.normalizeRequestHeaders(request);\r\n return next.handle(modifiedRequest).toPromise();\r\n }\r\n\r\n private normalizeRequestHeaders(request: HttpRequest) {\r\n let requestToRetrun = request;\r\n const token = this._localStorageService.getAuthToken();\r\n if (token) {\r\n const headers = request.headers.set('Authorization', `Bearer ${token}`);\r\n requestToRetrun = request.clone({ headers });\r\n }\r\n return requestToRetrun;\r\n }\r\n}","import { _isNumberValue } from '@angular/cdk/coercion';\r\nimport { Component, OnInit, ViewChild } from '@angular/core';\r\nimport { NgForm } from '@angular/forms';\r\nimport { ActivatedRoute } from '@angular/router';\r\nimport { switchMap } from 'rxjs/operators';\r\n\r\nimport { AccountProfileModel, ComputationSheetAddEditModel, ComputationSheetDescription, ComputationSheetModel, ComputationSheetResponseModel, CustomerCompany, CustomerStorageLocation, PartInfoAddEditModel, PartInfoModel, PartInfoResponseModel, ReportComputationSheetModel } from '@models';\r\nimport { AqsComputationSheetResavePopupComponent, ComputationSheetReportPopupComponent, ComputationSheetShareReportPopupComponent } from '@popups';\r\nimport { ErrorModel } from '../../../common';\r\nimport { PartTypeEnum } from '../../enums';\r\nimport { AccountDatasourceService, AqsQuoteStorageDataSourceService } from '../../services';\r\nimport { ComputationSheetTableComponent } from './computation-sheet-table';\r\n\r\n@Component({\r\n selector: 'greensleeves-aqs-computation-sheet-tab',\r\n templateUrl: './aqs-computation-sheet-tab.component.html',\r\n styles: [],\r\n})\r\nexport class AqsComputationSheetTabComponent implements OnInit {\r\n @ViewChild('groupForm', { static: true })\r\n private form: NgForm;\r\n\r\n @ViewChild(ComputationSheetReportPopupComponent, { read: false, static: false })\r\n private _exportReportModal: ComputationSheetReportPopupComponent;\r\n\r\n @ViewChild(ComputationSheetShareReportPopupComponent, { read: false, static: false })\r\n private _shareReportModal: ComputationSheetShareReportPopupComponent;\r\n\r\n @ViewChild(AqsComputationSheetResavePopupComponent, { read: false, static: false })\r\n private resaveModal: AqsComputationSheetResavePopupComponent;\r\n\r\n @ViewChild('ductTable', { read: false, static: false })\r\n private ductTable: ComputationSheetTableComponent;\r\n @ViewChild('fansTable', { read: false, static: false })\r\n private fansTable: ComputationSheetTableComponent;\r\n @ViewChild('manifoldTable', { read: false, static: false })\r\n private manifoldTable: ComputationSheetTableComponent;\r\n @ViewChild('miscellaneousEquipmentTable', { read: false, static: false })\r\n private miscellaneousEquipmentTable: ComputationSheetTableComponent;\r\n\r\n _computationSheet: ComputationSheetModel;\r\n\r\n _isSaveRun = false;\r\n _isSuccessSaved = false;\r\n _isChangedTables = false;\r\n _isSubmited: boolean = false;\r\n _isLoad: boolean = false;\r\n\r\n _tableName = {\r\n duct: \"Duct and accessories\",\r\n fans: \"Fans and accessories\",\r\n manifold: \"Manifold and accessories\",\r\n miscellaneous: \"Miscellaneous equipment\"\r\n }\r\n\r\n constructor(\r\n private _accountSource: AccountDatasourceService,\r\n private _computationSheetService: AqsQuoteStorageDataSourceService,\r\n private _route: ActivatedRoute,) {\r\n }\r\n\r\n ngOnInit() {\r\n let quoteId: number;\r\n this._route.queryParams.subscribe((queryParam: any) => {\r\n quoteId = queryParam['id'];\r\n });\r\n\r\n this.initializeModel();\r\n if (!isNaN(quoteId)) {\r\n this.downloadComputationSheetById(quoteId);\r\n }\r\n }\r\n\r\n isChangedTables(isChanged: boolean) {\r\n this._isChangedTables = isChanged;\r\n this._isSubmited = false;\r\n }\r\n\r\n onChangeCrewTravelNet() {\r\n if (!_isNumberValue(this._computationSheet.crewTravelNetPrice)) {\r\n this._computationSheet.crewTravelNetPrice = 0;\r\n }\r\n }\r\n\r\n onChangeFreightNet() {\r\n if (!_isNumberValue(this._computationSheet.freightNetPrice)) {\r\n this._computationSheet.freightNetPrice = 0;\r\n }\r\n }\r\n\r\n checkPercentage(percentageField: string) {\r\n let regex = /^([0-9]{1,2}){1}(\\.[0-9]{1,2})?$/\r\n\r\n switch (percentageField) {\r\n case \"materialDiscount\":\r\n if (!regex.test(this._computationSheet.materialDiscountPercentage.toString())) {\r\n this._computationSheet.materialDiscountPercentage = 0;\r\n }\r\n break;\r\n case \"laborDiscount\":\r\n if (!regex.test(this._computationSheet.laborDiscountPercentage.toString())) {\r\n this._computationSheet.laborDiscountPercentage = 0;\r\n }\r\n break;\r\n case \"materialTax\":\r\n if (!regex.test(this._computationSheet.materialTaxPercentage.toString())) {\r\n this._computationSheet.materialTaxPercentage = 0;\r\n }\r\n break;\r\n case \"laborTax\":\r\n if (!regex.test(this._computationSheet.laborTaxPercentage.toString())) {\r\n this._computationSheet.laborTaxPercentage = 0;\r\n }\r\n break;\r\n case \"crewTravelTax\":\r\n if (!regex.test(this._computationSheet.crewTravelTaxPercentage.toString())) {\r\n this._computationSheet.crewTravelTaxPercentage = 0;\r\n }\r\n break;\r\n case \"freightTax\":\r\n if (!regex.test(this._computationSheet.freightTaxPercentage.toString())) {\r\n this._computationSheet.freightTaxPercentage = 0;\r\n }\r\n break;\r\n default:\r\n break;\r\n }\r\n }\r\n\r\n calculateTotalFreightWeight(): number {\r\n var result = 0;\r\n\r\n this._computationSheet.ductTable.forEach(item => {\r\n var a = item.quantity * item.weight;\r\n result += a;\r\n })\r\n\r\n this._computationSheet.fansTable.forEach(item => {\r\n var a = item.quantity * item.weight;\r\n result += a;\r\n })\r\n\r\n this._computationSheet.manifoldTable.forEach(item => {\r\n var a = item.quantity * item.weight;\r\n result += a;\r\n })\r\n\r\n this._computationSheet.miscellaneousEquipmentTable.forEach(item => {\r\n var a = item.quantity * item.weight;\r\n result += a;\r\n })\r\n\r\n this._computationSheet.totalFreightWeight = result;\r\n\r\n return this._computationSheet.totalFreightWeight;\r\n }\r\n\r\n calculateMaterialPriceWithDiscountAndTax(): number {\r\n let totalMaterialPrice = this.getTotalPriceAllMaterials();\r\n\r\n let discount = (totalMaterialPrice * this._computationSheet.materialDiscountPercentage) / 100;\r\n let materialPriceWithDiscount = totalMaterialPrice - discount;\r\n\r\n let tax = (materialPriceWithDiscount * this._computationSheet.materialTaxPercentage) / 100;\r\n\r\n this._computationSheet.materialPriceWithDiscountAndTax = this.roundToTwoDecimalPlaces(materialPriceWithDiscount + tax);\r\n\r\n return this._computationSheet.materialPriceWithDiscountAndTax;\r\n }\r\n\r\n getTotalPriceAllMaterials(): number {\r\n let totalMaterialPrice = 0;\r\n\r\n this._computationSheet.ductTable.forEach(item => {\r\n totalMaterialPrice += item.totalPriceMaterial;\r\n });\r\n\r\n this._computationSheet.fansTable.forEach(item => {\r\n totalMaterialPrice += item.totalPriceMaterial;\r\n });\r\n\r\n this._computationSheet.manifoldTable.forEach(item => {\r\n totalMaterialPrice += item.totalPriceMaterial;\r\n });\r\n\r\n this._computationSheet.miscellaneousEquipmentTable.forEach(item => {\r\n totalMaterialPrice += item.totalPriceMaterial;\r\n });\r\n\r\n this._computationSheet.totalPriceAllMaterials = this.roundToTwoDecimalPlaces(totalMaterialPrice);\r\n return totalMaterialPrice;\r\n }\r\n\r\n calculateLaborPriceWithDiscountAndTax(): number {\r\n let totalLaborPrice = this.getTotalPriceAllLabors();\r\n\r\n let discount = (totalLaborPrice * this._computationSheet.laborDiscountPercentage) / 100;\r\n let laborPriceWithDiscount = totalLaborPrice - discount;\r\n\r\n let tax = (laborPriceWithDiscount * this._computationSheet.laborTaxPercentage) / 100;\r\n\r\n this._computationSheet.laborPriceWithDiscountAndTax = this.roundToTwoDecimalPlaces(laborPriceWithDiscount + tax);\r\n\r\n return this._computationSheet.laborPriceWithDiscountAndTax;\r\n }\r\n\r\n getTotalPriceAllLabors(): number {\r\n let totalLaborPrice = 0;\r\n\r\n this._computationSheet.ductTable.forEach(item => {\r\n totalLaborPrice += item.totalPriceLabor;\r\n });\r\n\r\n this._computationSheet.fansTable.forEach(item => {\r\n totalLaborPrice += item.totalPriceLabor;\r\n });\r\n\r\n this._computationSheet.manifoldTable.forEach(item => {\r\n totalLaborPrice += item.totalPriceLabor;\r\n });\r\n\r\n this._computationSheet.miscellaneousEquipmentTable.forEach(item => {\r\n totalLaborPrice += item.totalPriceLabor;\r\n });\r\n\r\n this._computationSheet.totalPriceAllLabors = this.roundToTwoDecimalPlaces(totalLaborPrice);\r\n return totalLaborPrice;\r\n }\r\n\r\n calculateCrewTravelPriceWithTax(): number {\r\n let result: number;\r\n\r\n let tax = (this._computationSheet.crewTravelNetPrice * this._computationSheet.crewTravelTaxPercentage) / 100;\r\n\r\n if (tax === 0) {\r\n result = this._computationSheet.crewTravelNetPrice;\r\n } else {\r\n result = this._computationSheet.crewTravelNetPrice + tax;\r\n }\r\n\r\n this._computationSheet.crewTravelNetWithTax = this.roundToTwoDecimalPlaces(Number(result));\r\n\r\n return this._computationSheet.crewTravelNetWithTax;\r\n }\r\n\r\n calculateFreightNetPriceWithTax(): number {\r\n let result: number;\r\n\r\n let tax = (this._computationSheet.freightNetPrice * this._computationSheet.freightTaxPercentage) / 100;\r\n\r\n if (tax === 0) {\r\n result = this._computationSheet.freightNetPrice;\r\n } else {\r\n result = this._computationSheet.freightNetPrice + tax;\r\n }\r\n\r\n this._computationSheet.freightNetWithTax = this.roundToTwoDecimalPlaces(Number(result));\r\n\r\n return this._computationSheet.freightNetWithTax;\r\n }\r\n\r\n calculateGrandTotal(): number {\r\n let result = this._computationSheet.materialPriceWithDiscountAndTax +\r\n this._computationSheet.laborPriceWithDiscountAndTax +\r\n this._computationSheet.crewTravelNetWithTax +\r\n this._computationSheet.freightNetWithTax;\r\n\r\n this._computationSheet.grandTotal = this.roundToTwoDecimalPlaces(result);\r\n\r\n return result;\r\n }\r\n\r\n public onClickShareReport() {\r\n let model = this.buildReportModel()\r\n this._shareReportModal.showDownloadComputationSheetReport(model);\r\n }\r\n\r\n onClickExportReport() {\r\n let model = this.buildReportModel()\r\n this._exportReportModal.showDownloadComputationSheetReport(model);\r\n }\r\n\r\n onClickSaveComputationSheet() {\r\n this._isSubmited = true;\r\n\r\n if (this.form.invalid || !this.tablesIsValid()) {\r\n return;\r\n }\r\n\r\n if (!this._computationSheet.id) {\r\n this.saveComputationSheet();\r\n } else {\r\n this.resaveModal.showConfirmPopup();\r\n }\r\n }\r\n\r\n async editComputationSheet() {\r\n this._isSaveRun = true;\r\n\r\n let rowsForDelete = this.getRowIdsForDelete();\r\n\r\n let model = this.buildComputationSheetAddEditModel(true);\r\n model.partsInfoIdsForDelete = rowsForDelete;\r\n let result = await this._computationSheetService.editComputationSheet(model) as ComputationSheetResponseModel;\r\n this.processingResultAddEdit(result);\r\n }\r\n\r\n private getRowIdsForDelete(): number[] {\r\n let rowsForDelete: number[] = [];\r\n\r\n if (this.ductTable._rowsWillBeRemoved.length > 0) {\r\n rowsForDelete = rowsForDelete.concat(this.ductTable._rowsWillBeRemoved);\r\n }\r\n\r\n if (this.fansTable._rowsWillBeRemoved.length > 0) {\r\n rowsForDelete = rowsForDelete.concat(this.fansTable._rowsWillBeRemoved);\r\n }\r\n\r\n if (this.manifoldTable._rowsWillBeRemoved.length > 0) {\r\n rowsForDelete = rowsForDelete.concat(this.manifoldTable._rowsWillBeRemoved);\r\n }\r\n\r\n if (this.miscellaneousEquipmentTable._rowsWillBeRemoved.length > 0) {\r\n rowsForDelete = rowsForDelete.concat(this.miscellaneousEquipmentTable._rowsWillBeRemoved);\r\n }\r\n\r\n if (this.ductTable._table.length == 1 &&\r\n this.ductTable.isEmptyRow(0)\r\n && this.ductTable._table[0].id) {\r\n rowsForDelete.push(this.ductTable._table[0].id)\r\n }\r\n\r\n if (this.fansTable._table.length == 1 &&\r\n this.fansTable.isEmptyRow(0)\r\n && this.fansTable._table[0].id) {\r\n rowsForDelete.push(this.fansTable._table[0].id)\r\n }\r\n\r\n if (this.manifoldTable._table.length == 1 &&\r\n this.manifoldTable.isEmptyRow(0)\r\n && this.manifoldTable._table[0].id) {\r\n rowsForDelete.push(this.manifoldTable._table[0].id)\r\n }\r\n\r\n if (this.miscellaneousEquipmentTable._table.length == 1 &&\r\n this.miscellaneousEquipmentTable.isEmptyRow(0)\r\n && this.miscellaneousEquipmentTable._table[0].id) {\r\n rowsForDelete.push(this.miscellaneousEquipmentTable._table[0].id)\r\n }\r\n\r\n return rowsForDelete;\r\n }\r\n\r\n async downloadComputationSheetById(id: number) {\r\n this._isLoad = true;\r\n let result = await this._computationSheetService.getComputationSheetById(id) as ComputationSheetResponseModel;\r\n\r\n if (!(result instanceof ErrorModel)) {\r\n this._computationSheet = new ComputationSheetModel()\r\n this._computationSheet.id = result.id;\r\n this._computationSheet.customerCompany = new CustomerCompany();\r\n Object.assign(this._computationSheet.customerCompany, result.customerCompany);\r\n this._computationSheet.customerStorageLocation = new CustomerStorageLocation();\r\n Object.assign(this._computationSheet.customerStorageLocation, result.customerStorageLocation);\r\n this._computationSheet.description = new ComputationSheetDescription();\r\n Object.assign(this._computationSheet.description, result.description);\r\n this._computationSheet.crewTravelNetPrice = result.crewTravelNetPrice;\r\n this._computationSheet.freightNetPrice = result.freightNetPrice;\r\n this._computationSheet.materialDiscountPercentage = result.materialDiscountPercentage;\r\n this._computationSheet.laborDiscountPercentage = result.laborDiscountPercentage;\r\n this._computationSheet.materialTaxPercentage = result.materialTaxPercentage;\r\n this._computationSheet.laborTaxPercentage = result.laborTaxPercentage;\r\n this._computationSheet.crewTravelTaxPercentage = result.crewTravelTaxPercentage;\r\n this._computationSheet.freightTaxPercentage = result.freightTaxPercentage;\r\n this._computationSheet.preparedBy = result.preparedBy;\r\n this._computationSheet.leadTime = result.leadTime;\r\n this._computationSheet.ductTable = [];\r\n this._computationSheet.fansTable = [];\r\n this._computationSheet.manifoldTable = [];\r\n this._computationSheet.miscellaneousEquipmentTable = [];\r\n\r\n result.partInfos = result.partInfos.sort((a, b) => a.position - b.position);\r\n\r\n result.partInfos.forEach(item => {\r\n let partInfo = new PartInfoModel();\r\n Object.assign(partInfo, item);\r\n\r\n switch (item.partType) {\r\n case PartTypeEnum.duct:\r\n this._computationSheet.ductTable.push(partInfo);\r\n break;\r\n case PartTypeEnum.fans:\r\n this._computationSheet.fansTable.push(partInfo);\r\n break;\r\n case PartTypeEnum.manifold:\r\n this._computationSheet.manifoldTable.push(partInfo);\r\n break;\r\n case PartTypeEnum.miscellaneousEquipment:\r\n this._computationSheet.miscellaneousEquipmentTable.push(partInfo);\r\n break;\r\n default:\r\n break;\r\n }\r\n })\r\n\r\n this.ductTable._table = this._computationSheet.ductTable;\r\n this.fansTable._table = this._computationSheet.fansTable;\r\n this.manifoldTable._table = this._computationSheet.manifoldTable;\r\n this.miscellaneousEquipmentTable._table = this._computationSheet.miscellaneousEquipmentTable;\r\n\r\n this.ductTable.setTable()\r\n this.fansTable.setTable()\r\n this.manifoldTable.setTable()\r\n this.miscellaneousEquipmentTable.setTable()\r\n }\r\n\r\n this._isChangedTables = false;\r\n this.form.form.markAsPristine();\r\n this._isLoad = false;\r\n }\r\n\r\n async saveComputationSheet() {\r\n this._isSaveRun = true;\r\n let model = this.buildComputationSheetAddEditModel();\r\n let result = await this._computationSheetService.addComputationSheet(model) as ComputationSheetResponseModel;\r\n this.processingResultAddEdit(result);\r\n };\r\n\r\n tablesIsValid(): boolean {\r\n return this.isValidTable(this._computationSheet.ductTable) &&\r\n this.isValidTable(this._computationSheet.fansTable) &&\r\n this.isValidTable(this._computationSheet.manifoldTable) &&\r\n this.isValidTable(this._computationSheet.miscellaneousEquipmentTable)\r\n }\r\n\r\n isInvalidForReport(): boolean {\r\n return this.form.invalid || this.form.dirty || !this.tablesIsValid() || this._isChangedTables;\r\n }\r\n\r\n private processingResultAddEdit(result: ComputationSheetResponseModel) {\r\n if (result instanceof ErrorModel) {\r\n return;\r\n } else if (result) {\r\n this._isSuccessSaved = true;\r\n setTimeout(() => { this._isSuccessSaved = false; }, 3000);\r\n\r\n this._computationSheet.id = result.id;\r\n this.setIdIntoTables(result.partInfos);\r\n\r\n this._isChangedTables = false;\r\n this.form.form.markAsPristine();\r\n }\r\n\r\n this._isSaveRun = false;\r\n }\r\n\r\n private setIdIntoTables(partInfos: PartInfoResponseModel[]) {\r\n partInfos.forEach(item => {\r\n\r\n switch (item.partType) {\r\n case PartTypeEnum.duct:\r\n this._computationSheet.ductTable[item.position].id = item.id;\r\n break;\r\n case PartTypeEnum.fans:\r\n this._computationSheet.fansTable[item.position].id = item.id;\r\n break;\r\n case PartTypeEnum.manifold:\r\n this._computationSheet.manifoldTable[item.position].id = item.id;\r\n break;\r\n case PartTypeEnum.miscellaneousEquipment:\r\n this._computationSheet.miscellaneousEquipmentTable[item.position].id = item.id;\r\n break;\r\n default:\r\n break;\r\n }\r\n });\r\n }\r\n\r\n private buildReportModel(): ReportComputationSheetModel {\r\n let reportModel = new ReportComputationSheetModel();\r\n\r\n reportModel.id = this._computationSheet.id;\r\n reportModel.customerCompany = new CustomerCompany();\r\n Object.assign(reportModel.customerCompany, this._computationSheet.customerCompany);\r\n reportModel.customerStorageLocation = new CustomerStorageLocation();\r\n Object.assign(reportModel.customerStorageLocation, this._computationSheet.customerStorageLocation);\r\n reportModel.description = new ComputationSheetDescription();\r\n Object.assign(reportModel.description, this._computationSheet.description);\r\n reportModel.crewTravelNetPrice = this._computationSheet.crewTravelNetPrice;\r\n reportModel.freightNetPrice = this._computationSheet.freightNetPrice;\r\n reportModel.materialDiscountPercentage = this._computationSheet.materialDiscountPercentage;\r\n reportModel.laborDiscountPercentage = this._computationSheet.laborDiscountPercentage;\r\n reportModel.materialTaxPercentage = this._computationSheet.materialTaxPercentage;\r\n reportModel.laborTaxPercentage = this._computationSheet.laborTaxPercentage;\r\n reportModel.crewTravelTaxPercentage = this._computationSheet.crewTravelTaxPercentage;\r\n reportModel.freightTaxPercentage = this._computationSheet.freightTaxPercentage;\r\n reportModel.preparedBy = this._computationSheet.preparedBy;\r\n reportModel.partInfos = this.fillPartsInfoReportModel();\r\n reportModel.totalFreightWeight = this._computationSheet.totalFreightWeight;\r\n reportModel.totalPriceAllMaterials = this._computationSheet.totalPriceAllMaterials;\r\n reportModel.totalPriceAllLabors = this._computationSheet.totalPriceAllLabors;\r\n reportModel.materialPriceWithDiscountAndTax = this._computationSheet.materialPriceWithDiscountAndTax;\r\n reportModel.laborPriceWithDiscountAndTax = this._computationSheet.laborPriceWithDiscountAndTax;\r\n reportModel.crewTravelNetWithTax = this._computationSheet.crewTravelNetWithTax;\r\n reportModel.freightNetWithTax = this._computationSheet.freightNetWithTax;\r\n reportModel.grandTotal = this._computationSheet.grandTotal;\r\n reportModel.leadTime = this._computationSheet.leadTime;\r\n return reportModel;\r\n }\r\n\r\n private fillPartsInfoReportModel(): PartInfoModel[] {\r\n this.setTableTypes();\r\n let partInfos: PartInfoModel[] = [];\r\n\r\n if (!this.isEmptyTable(this._computationSheet.ductTable)) {\r\n Array.prototype.push.apply(partInfos, this._computationSheet.ductTable);\r\n }\r\n\r\n if (!this.isEmptyTable(this._computationSheet.fansTable)) {\r\n Array.prototype.push.apply(partInfos, this._computationSheet.fansTable);\r\n }\r\n\r\n if (!this.isEmptyTable(this._computationSheet.manifoldTable)) {\r\n Array.prototype.push.apply(partInfos, this._computationSheet.manifoldTable);\r\n }\r\n\r\n if (!this.isEmptyTable(this._computationSheet.miscellaneousEquipmentTable)) {\r\n Array.prototype.push.apply(partInfos, this._computationSheet.miscellaneousEquipmentTable);\r\n }\r\n\r\n return partInfos;\r\n }\r\n\r\n private setTableTypes() {\r\n this._computationSheet.ductTable.forEach(item => {\r\n item.partType = PartTypeEnum.duct;\r\n });\r\n\r\n this._computationSheet.fansTable.forEach(item => {\r\n item.partType = PartTypeEnum.fans;\r\n });\r\n\r\n this._computationSheet.manifoldTable.forEach(item => {\r\n item.partType = PartTypeEnum.manifold;\r\n });\r\n\r\n this._computationSheet.miscellaneousEquipmentTable.forEach(item => {\r\n item.partType = PartTypeEnum.miscellaneousEquipment;\r\n });\r\n }\r\n\r\n private roundToTwoDecimalPlaces(number: number): number {\r\n return Math.round((number + Number.EPSILON) * 100) / 100;\r\n }\r\n\r\n private isValidTable(table: PartInfoModel[]): boolean {\r\n let isValid: boolean = true;\r\n\r\n for (let item of table) {\r\n if (item.quantity == 0 || item.description == '') {\r\n isValid = false;\r\n }\r\n }\r\n\r\n return this.isEmptyTable(table) || isValid;\r\n }\r\n\r\n private isEmptyTable(table: PartInfoModel[]): boolean {\r\n return table.length === 1 &&\r\n (table[0].partNumber === undefined || table[0].partNumber === '') &&\r\n (table[0].quantity === 0 || !_isNumberValue(table[0].quantity)) &&\r\n table[0].description === '' &&\r\n (table[0].weight === 0 || !_isNumberValue(table[0].weight)) &&\r\n (table[0].unitPriceMaterial === 0 || !_isNumberValue(table[0].unitPriceMaterial)) &&\r\n (table[0].unitPriceLabor === 0 || !_isNumberValue(table[0].unitPriceLabor))\r\n }\r\n\r\n private buildComputationSheetAddEditModel(isEditModel: boolean = false): ComputationSheetAddEditModel {\r\n this.setTableTypes();\r\n let computationSheetAddEditModel = new ComputationSheetAddEditModel();\r\n\r\n if (isEditModel) {\r\n computationSheetAddEditModel.id = this._computationSheet.id;\r\n }\r\n\r\n computationSheetAddEditModel.customerCompany = new CustomerCompany();\r\n Object.assign(computationSheetAddEditModel.customerCompany, this._computationSheet.customerCompany);\r\n computationSheetAddEditModel.customerStorageLocation = new CustomerStorageLocation();\r\n Object.assign(computationSheetAddEditModel.customerStorageLocation, this._computationSheet.customerStorageLocation);\r\n computationSheetAddEditModel.description = new ComputationSheetDescription();\r\n Object.assign(computationSheetAddEditModel.description, this._computationSheet.description);\r\n computationSheetAddEditModel.crewTravelNetPrice = this._computationSheet.crewTravelNetPrice;\r\n computationSheetAddEditModel.freightNetPrice = this._computationSheet.freightNetPrice;\r\n computationSheetAddEditModel.materialDiscountPercentage = this._computationSheet.materialDiscountPercentage;\r\n computationSheetAddEditModel.laborDiscountPercentage = this._computationSheet.laborDiscountPercentage;\r\n computationSheetAddEditModel.materialTaxPercentage = this._computationSheet.materialTaxPercentage;\r\n computationSheetAddEditModel.laborTaxPercentage = this._computationSheet.laborTaxPercentage;\r\n computationSheetAddEditModel.crewTravelTaxPercentage = this._computationSheet.crewTravelTaxPercentage;\r\n computationSheetAddEditModel.freightTaxPercentage = this._computationSheet.freightTaxPercentage;\r\n computationSheetAddEditModel.preparedBy = this._computationSheet.preparedBy;\r\n computationSheetAddEditModel.leadTime = this._computationSheet.leadTime;\r\n\r\n computationSheetAddEditModel.partInfos = [];\r\n\r\n if (!this.isEmptyTable(this._computationSheet.ductTable)) {\r\n Array.prototype.push.apply(computationSheetAddEditModel.partInfos, this.setTableToPartsInfoAddEditModel(this._computationSheet.ductTable, isEditModel));\r\n }\r\n\r\n if (!this.isEmptyTable(this._computationSheet.fansTable)) {\r\n Array.prototype.push.apply(computationSheetAddEditModel.partInfos, this.setTableToPartsInfoAddEditModel(this._computationSheet.fansTable, isEditModel));\r\n }\r\n\r\n if (!this.isEmptyTable(this._computationSheet.manifoldTable)) {\r\n Array.prototype.push.apply(computationSheetAddEditModel.partInfos, this.setTableToPartsInfoAddEditModel(this._computationSheet.manifoldTable, isEditModel));\r\n }\r\n\r\n if (!this.isEmptyTable(this._computationSheet.miscellaneousEquipmentTable)) {\r\n Array.prototype.push.apply(computationSheetAddEditModel.partInfos, this.setTableToPartsInfoAddEditModel(this._computationSheet.miscellaneousEquipmentTable, isEditModel));\r\n }\r\n\r\n return computationSheetAddEditModel;\r\n }\r\n\r\n private setTableToPartsInfoAddEditModel(partsInfo: PartInfoModel[], isEditModel): PartInfoAddEditModel[] {\r\n let result: PartInfoAddEditModel[] = [];\r\n\r\n for (let i = 0; i < partsInfo.length; i++) {\r\n let partInfo = new PartInfoAddEditModel();\r\n\r\n if (isEditModel) {\r\n partInfo.id = partsInfo[i].id;\r\n }\r\n\r\n partInfo.partNumber = partsInfo[i].partNumber;\r\n partInfo.quantity = partsInfo[i].quantity;\r\n partInfo.description = partsInfo[i].description;\r\n partInfo.weight = partsInfo[i].weight;\r\n partInfo.unitPriceMaterial = partsInfo[i].unitPriceMaterial;\r\n partInfo.unitPriceLabor = partsInfo[i].unitPriceLabor;\r\n partInfo.partType = partsInfo[i].partType;\r\n partInfo.position = i;\r\n\r\n result.push(partInfo);\r\n }\r\n\r\n return result;\r\n }\r\n\r\n private initializeModel() {\r\n this._computationSheet = new ComputationSheetModel();\r\n this._computationSheet.customerCompany = new CustomerCompany();\r\n this._computationSheet.customerCompany.name = '';\r\n this._computationSheet.customerCompany.companyName = '';\r\n this._computationSheet.customerCompany.city = '';\r\n this._computationSheet.customerCompany.contact = '';\r\n\r\n this._computationSheet.customerStorageLocation = new CustomerStorageLocation();\r\n this._computationSheet.customerStorageLocation.quoteNumber = '';\r\n this._computationSheet.customerStorageLocation.name = '';\r\n this._computationSheet.customerStorageLocation.city = '';\r\n this._computationSheet.customerStorageLocation.description = '';\r\n\r\n this._computationSheet.description = new ComputationSheetDescription();\r\n this._computationSheet.description.descriptionOfStorage = '';\r\n this._computationSheet.description.descriptionOfSystem = '';\r\n\r\n this._computationSheet.ductTable = [];\r\n this._computationSheet.fansTable = [];\r\n this._computationSheet.manifoldTable = [];\r\n this._computationSheet.miscellaneousEquipmentTable = [];\r\n\r\n this._computationSheet.crewTravelNetPrice = 0;\r\n this._computationSheet.freightNetPrice = 0;\r\n this._computationSheet.materialDiscountPercentage = 0;\r\n this._computationSheet.laborDiscountPercentage = 0;\r\n this._computationSheet.materialTaxPercentage = 0;\r\n this._computationSheet.laborTaxPercentage = 0;\r\n this._computationSheet.crewTravelTaxPercentage = 0;\r\n this._computationSheet.freightTaxPercentage = 0;\r\n this._computationSheet.totalFreightWeight = 0;\r\n this._computationSheet.totalPriceAllMaterials = 0;\r\n this._computationSheet.totalPriceAllLabors = 0;\r\n this._computationSheet.materialPriceWithDiscountAndTax = 0;\r\n this._computationSheet.laborPriceWithDiscountAndTax = 0;\r\n this._computationSheet.crewTravelNetWithTax = 0;\r\n this._computationSheet.freightNetWithTax = 0;\r\n this._computationSheet.grandTotal = 0;\r\n this._computationSheet.leadTime = '';\r\n\r\n this._accountSource.getProfile().then((profile: AccountProfileModel) => {\r\n let fistName = profile.firstName ? profile.firstName : '';\r\n let lastName = profile.lastName ? ' ' + profile.lastName : ''\r\n this._computationSheet.preparedBy = fistName + lastName;\r\n });\r\n }\r\n}","import { _isNumberValue } from '@angular/cdk/coercion';\r\nimport {\r\n AfterContentChecked,\r\n ChangeDetectorRef,\r\n Component,\r\n EventEmitter,\r\n Input,\r\n OnInit,\r\n Output,\r\n ViewChild\r\n} from '@angular/core';\r\n\r\nimport { PartInfoModel } from '@models';\r\nimport { AqsComputationSheetConfirmPopupComponent } from '@popups';\r\n\r\n@Component({\r\n selector: 'greensleeves-computation-sheet-table',\r\n templateUrl: './computation-sheet-table.component.html',\r\n styleUrls: [],\r\n})\r\n\r\nexport class ComputationSheetTableComponent implements OnInit, AfterContentChecked {\r\n @Input() _tableName: string;\r\n @Input() _table: PartInfoModel[] = [];\r\n @Input() _isSubmited: boolean;\r\n @Output() _isChangedTable = new EventEmitter()\r\n\r\n private regexIntOnly = /^[1-9]\\d*$/;\r\n\r\n @ViewChild(AqsComputationSheetConfirmPopupComponent, { read: false, static: false })\r\n private _deleteModal: AqsComputationSheetConfirmPopupComponent;\r\n private titleDeletePopup = \"Are you sure?\";\r\n private subtitleDeletePopup = \"Do you really want to delete this row?\";\r\n\r\n _rowsWillBeRemoved: number[] = [];\r\n\r\n _tableForChanges: PartInfoModel[] = [];\r\n _isDeleteRun = false;\r\n constructor(private _cdref: ChangeDetectorRef) { }\r\n\r\n ngOnInit() {\r\n if (this._table.length > 0) {\r\n this._table.forEach(item => {\r\n let newItem = new PartInfoModel();\r\n newItem = Object.assign(newItem, item);\r\n this._tableForChanges.push(newItem);\r\n })\r\n } else {\r\n this.addTableItem();\r\n }\r\n }\r\n\r\n setTable() {\r\n this._tableForChanges = [];\r\n this._table.forEach(item => {\r\n let newItem = new PartInfoModel();\r\n newItem = Object.assign(newItem, item);\r\n this._tableForChanges.push(newItem);\r\n })\r\n }\r\n\r\n ngAfterContentChecked(): void {\r\n this._cdref.detectChanges();\r\n }\r\n\r\n addTableItem() {\r\n this._tableForChanges.push(new PartInfoModel());\r\n\r\n let defaultParameters = new PartInfoModel();\r\n defaultParameters.partNumber = '';\r\n defaultParameters.quantity = 0;\r\n defaultParameters.description = '';\r\n defaultParameters.weight = 0;\r\n defaultParameters.unitPriceMaterial = 0;\r\n defaultParameters.unitPriceLabor = 0;\r\n defaultParameters.totalPriceMaterial = 0;\r\n defaultParameters.totalPriceLabor = 0;\r\n\r\n this._table.push(defaultParameters);\r\n this._isChangedTable.emit(true);\r\n }\r\n\r\n deleteTableItem(index: number) {\r\n if (this.isEmptyRow(index)) {\r\n this.deleteRow(index)\r\n } else {\r\n this._deleteModal.showConfirmPopup(this.titleDeletePopup, this.subtitleDeletePopup, index);\r\n }\r\n }\r\n\r\n deleteRow(index: number) {\r\n if (this._table[index].id) {\r\n this._rowsWillBeRemoved.push(this._table[index].id);\r\n }\r\n this._tableForChanges.splice(index, 1);\r\n this._table.splice(index, 1);\r\n this._isChangedTable.emit(true);\r\n }\r\n\r\n onChangePartNumber(index: number) {\r\n if (this._tableForChanges[index].partNumber !== null &&\r\n this._tableForChanges[index].partNumber !== this._table[index].partNumber) {\r\n\r\n this._table[index].partNumber = this._tableForChanges[index].partNumber;\r\n }\r\n }\r\n\r\n onChangeQuantity(index: number) {\r\n if (!_isNumberValue(this._tableForChanges[index].quantity)) {\r\n this._table[index].quantity = 0;\r\n }\r\n\r\n if (this._tableForChanges[index].quantity !== this._table[index].quantity) {\r\n\r\n this._table[index].quantity = Number(this._tableForChanges[index].quantity);\r\n }\r\n }\r\n\r\n onChangeDescription(index: number) {\r\n if (this._tableForChanges[index].description !== null &&\r\n this._tableForChanges[index].description !== this._table[index].description) {\r\n\r\n this._table[index].description = this._tableForChanges[index].description;\r\n }\r\n }\r\n\r\n onChangeWeight(index: number) {\r\n if (!_isNumberValue(this._tableForChanges[index].weight)) {\r\n this._table[index].weight = 0;\r\n }\r\n\r\n if (this._tableForChanges[index].weight !== this._table[index].weight) {\r\n this._table[index].weight = Number(this._tableForChanges[index].weight);\r\n }\r\n }\r\n\r\n onChangeUnitPriceMaterial(index: number) {\r\n if (!_isNumberValue(this._tableForChanges[index].unitPriceMaterial)) {\r\n this._table[index].unitPriceMaterial = 0;\r\n }\r\n\r\n if (this._tableForChanges[index].unitPriceMaterial !== this._table[index].unitPriceMaterial) {\r\n this._table[index].unitPriceMaterial = Number(this._tableForChanges[index].unitPriceMaterial);\r\n }\r\n }\r\n\r\n onChangeUnitPriceLabor(index: number) {\r\n if (!_isNumberValue(this._tableForChanges[index].unitPriceLabor)) {\r\n this._table[index].unitPriceLabor = 0\r\n }\r\n\r\n if (this._tableForChanges[index].unitPriceLabor !== this._table[index].unitPriceLabor) {\r\n this._table[index].unitPriceLabor = Number(this._tableForChanges[index].unitPriceLabor);\r\n }\r\n }\r\n\r\n calculateTotalPrice(index: number, parameter: string): number {\r\n let totalPrice: number;\r\n\r\n switch (parameter) {\r\n case 'material':\r\n let materialPrice = this._tableForChanges[index].unitPriceMaterial * this._tableForChanges[index].quantity;\r\n\r\n if (_isNumberValue(materialPrice)) {\r\n totalPrice = this.roundToTwoDecimalPlaces(materialPrice);\r\n this._table[index].totalPriceMaterial = totalPrice;\r\n }\r\n break;\r\n case 'labor':\r\n let laborPrice = this._tableForChanges[index].unitPriceLabor * this._tableForChanges[index].quantity;\r\n\r\n if (_isNumberValue(laborPrice)) {\r\n totalPrice = this.roundToTwoDecimalPlaces(laborPrice);\r\n this._table[index].totalPriceLabor = totalPrice;\r\n }\r\n break;\r\n default:\r\n break;\r\n }\r\n\r\n if (totalPrice === 0 || !_isNumberValue(totalPrice)) {\r\n return null;\r\n }\r\n\r\n return totalPrice;\r\n }\r\n\r\n numberOnly(event) {\r\n let input = event.target.value + String.fromCharCode(event.charCode);\r\n\r\n if (!this.regexIntOnly.test(input)) {\r\n event.preventDefault();\r\n }\r\n }\r\n\r\n pasteNumber(event) {\r\n let clipboardData = event.clipboardData;\r\n let pastedData = clipboardData.getData('Text');\r\n if (!this.regexIntOnly.test(pastedData)) {\r\n event.preventDefault();\r\n }\r\n }\r\n\r\n private roundToTwoDecimalPlaces(number: number): number {\r\n return Math.round((number + Number.EPSILON) * 100) / 100;\r\n }\r\n\r\n isEmptyRow(index: number): boolean {\r\n return (this._tableForChanges[index].partNumber == '' || this._tableForChanges[index].partNumber == null)\r\n && (Number(this._tableForChanges[index].quantity == 0) || this._tableForChanges[index].quantity == null)\r\n && (this._tableForChanges[index].description == '' || this._tableForChanges[index].description == null)\r\n && (Number(this._tableForChanges[index].weight) == 0 || this._tableForChanges[index].weight == null)\r\n && (Number(this._tableForChanges[index].unitPriceMaterial) == 0 || this._tableForChanges[index].unitPriceMaterial == null)\r\n && (Number(this._tableForChanges[index].unitPriceLabor) == 0 || this._tableForChanges[index].unitPriceLabor == null)\r\n }\r\n\r\n}\r\n","export * from './computation-sheet-table.component';","export * from './computation-sheet-table';\r\nexport * from './aqs-computation-sheet-tab.component';","import { Component, EventEmitter, Input, OnInit, Output, ViewChild, AfterViewInit, ChangeDetectorRef } from '@angular/core';\r\nimport { _isNumberValue } from '@angular/cdk/coercion';\r\n\r\nimport { AqsAirFlowDataViewModel, AqsFlatDuctModel, AqsFlatDuctSideParamsModel, AqsSelectedFanModel, FlatStorageParams } from '@models';\r\nimport { AqsAirflowFanTypeEnum, AqsFlatDuctingShapeTypeEnum, AqsFlatDuctCallMethodsBaseOnEntity, AqsFlatDuctSideNo } from '../../../enums';\r\nimport { AqsFlatDuctingShapesConstant } from '../../../constants';\r\nimport { AqsFlatDuctViewTabComponent } from './aqs-flat-duct-view-tab';\r\n\r\n@Component({\r\n selector: 'greensleeves-aqs-flat-duct-design',\r\n templateUrl: './aqs-flat-duct-design.component.html',\r\n styleUrls: []\r\n})\r\nexport class AqsFlatDuctDesignComponent implements OnInit, AfterViewInit {\r\n @Output() onChangedFlatDuctModel = new EventEmitter();\r\n\r\n @Input() _flatDuctModel: AqsFlatDuctModel;\r\n @Input() _flatStorage: FlatStorageParams;\r\n @Input() airflowData: AqsAirFlowDataViewModel[];\r\n @Input() numberFans: number;\r\n @Input() fanTypeModel: AqsAirflowFanTypeEnum;\r\n @Input() selectedFan: AqsSelectedFanModel;\r\n\r\n @ViewChild(AqsFlatDuctViewTabComponent, { read: false, static: false })\r\n private _drawDuct: AqsFlatDuctViewTabComponent;\r\n\r\n private oldFlatDuctModel: AqsFlatDuctModel;\r\n\r\n _ductDiameter: string;\r\n _openingDiameter: string;\r\n _nearCtrCtr: string;\r\n _farCtrCtr: string;\r\n _frontCtrCtr: string;\r\n _rearCtrCtr: string;\r\n _nearPerf: string;\r\n _farPerf: string;\r\n _frontPerf: string;\r\n _rearPerf: string;\r\n _nearSolid: string;\r\n _farSolid: string;\r\n _frontSolid: string;\r\n _rearSolid: string;\r\n _flatDuctShapes: { label: string, value: AqsFlatDuctingShapeTypeEnum }[] = [];\r\n _ductTable: AqsFlatDuctSideParamsModel[];\r\n oldDuctTable: AqsFlatDuctSideParamsModel[];\r\n largest: number; //LARGEST\r\n lowerLarge: number; //LOWERLARGE\r\n crossSec: number[][]; //CROSSSEC\r\n cfrfr: number[][]; //CFRFR\r\n cfrhr: number[][]; //CFRHR\r\n _maxCrossSectionalVelocity: number; //MCSV\r\n _maxSurfaceVelocity: number; //MSV\r\n _actualCrossSectionalVelocity: number; //CSV\r\n _actualSurfaceVelocity: number; //SURFACE\r\n recPerf: number[] = [0,0,0,0]; //RECPERF\r\n surface: number;\r\n\r\n constructor() { }\r\n\r\n ngOnInit() {\r\n for (const [key, value] of Object.entries(AqsFlatDuctingShapesConstant)) {\r\n this._flatDuctShapes.push({ label: value, value: Number(key)});\r\n }\r\n\r\n this.oldFlatDuctModel = new AqsFlatDuctModel();\r\n this.crossSec = [\r\n [-1,24,30,36,40,48,60,72,84,96,120],\r\n [7.25,.9063,1.2083,1.5104,1.7118,2.1146,2.7188,3.3229,3.9271,4.5313,5.7396],\r\n [11.25,1.4063,1.8750,2.3438,2.6563,3.2813,4.2188,5.1563,6.0938,7.0313,8.9063]\r\n ];\r\n this.cfrfr = [\r\n [12,2.566],\r\n [14,2.9],\r\n [16,3.3],\r\n [18,3.9],\r\n [20,4.233],\r\n [24,5.2],\r\n [30,6.4],\r\n [36,7.666]\r\n ];\r\n this.cfrhr = [\r\n [15,1.963],\r\n [19,2.5],\r\n [25.5,3.338],\r\n [30,3.927],\r\n [36,4.712],\r\n [38,5],\r\n [42,5.5],\r\n [51,6.67]\r\n ];\r\n }\r\n\r\n ngAfterViewInit() {\r\n this.fillDuctTable();\r\n this.onCalculateLargestAndLowerLarge();\r\n setTimeout(() => {\r\n if ((this._flatDuctModel.id === undefined || this._flatDuctModel.id == 0) && this._checkForEmptyUserFieldsDiameters()) {\r\n this.onCalculateRecommendAll();\r\n this.onConvertRecommendInputAll();\r\n } else {\r\n this._copyAllDataToOldModel();\r\n this.onCalculateAllSaved();\r\n this._copyAllFromOldModel();\r\n this.onConvertInputAll();\r\n }\r\n });\r\n }\r\n\r\n private _checkForEmptyUserFieldsDiameters(): boolean {\r\n return (\r\n (this._flatDuctModel.ductDiameter == undefined || this._flatDuctModel.ductDiameter == 0) &&\r\n (this._flatDuctModel.openingDiameter == undefined || this._flatDuctModel.openingDiameter == 0) &&\r\n this.oldFlatDuctModel.ductDiameter == undefined &&\r\n this.oldFlatDuctModel.openingDiameter == undefined\r\n )\r\n }\r\n\r\n private _copyAllFromOldModel() {\r\n this._flatDuctModel.ductDiameter = this.oldFlatDuctModel.ductDiameter;\r\n this._flatDuctModel.ductType = this.oldFlatDuctModel.ductType;\r\n this._flatDuctModel.openingDiameter = this.oldFlatDuctModel.openingDiameter;\r\n\r\n this._copyAllDataAqsFlatDuctSideType(this.oldFlatDuctModel.far, this._flatDuctModel.far);\r\n this._copyAllDataAqsFlatDuctSideType(this.oldFlatDuctModel.near, this._flatDuctModel.near);\r\n this._copyAllDataAqsFlatDuctSideType(this.oldFlatDuctModel.front, this._flatDuctModel.front);\r\n this._copyAllDataAqsFlatDuctSideType(this.oldFlatDuctModel.rear, this._flatDuctModel.rear);\r\n }\r\n\r\n //FDUCT 1030\r\n onCalculateLargestAndLowerLarge() {\r\n let j: number;\r\n for (j = 0; j < this.airflowData.length; j++) {\r\n if (this.airflowData[j].kcfm !== -1) {\r\n this.largest = j;\r\n break;\r\n }\r\n }\r\n\r\n for (let i = j + 1; i < this.airflowData.length; i++) {\r\n if (this.airflowData[i].kcfm > this.airflowData[this.largest].kcfm) {\r\n this.largest = i;\r\n }\r\n }\r\n\r\n this.lowerLarge = this.airflowData[this.largest].kcfm * this.numberFans * 1000;\r\n }\r\n\r\n //#region FDUCT GOSUB 8000:SCREEN 2:CLS 'recommendations\r\n\r\n onCalculateRecommendAll() {\r\n this.fillDuctTable();\r\n this.onCalculateRecommendDuctDia();\r\n this.onCalculateRecommendNumberFansEachSide();\r\n this.onCalculateRecommendCenterToCenter();\r\n this.onCalculateRecommendPerf();\r\n this.findDistanceToBeginDucts();\r\n this.findIdealAndMaxDuctLenghts();\r\n this.onCalculateRecommendInchesOfPerf();\r\n this.onCalculateRecommendSolid();\r\n this.onCalculateVelocities();\r\n }\r\n\r\n onCalculateAllSaved() {\r\n this.fillDuctTable();\r\n this.onCalculateRecommendDuctDia();\r\n this.onCalculateDuctDiaFromUserValues();\r\n this.onCalculateRecommendNumberFansEachSide();\r\n this.onCalculateRecommendCenterToCenter();\r\n this.onCalculateRecommendPerf();\r\n this.findDistanceToBeginDucts();\r\n this.findIdealAndMaxDuctLenghts();\r\n this.onCalculateRecommendInchesOfPerf();\r\n this.onCalculateRecommendSolid();\r\n this.calculateVelocitiesFromSavedmodel();\r\n }\r\n\r\n //FDUCT 8020 'recommend ductdia *********\r\n onCalculateRecommendDuctDia() {\r\n if (this.fanTypeModel === AqsAirflowFanTypeEnum.Axial) {\r\n this._maxCrossSectionalVelocity = 3000;\r\n this._maxSurfaceVelocity = 40;\r\n } else {\r\n this._maxCrossSectionalVelocity = 3500;\r\n this._maxSurfaceVelocity = 45;\r\n }\r\n\r\n if (\r\n this.fanTypeModel === AqsAirflowFanTypeEnum.Centrifugal60HZ &&\r\n this.selectedFan.fanName !== '2003' &&\r\n this.selectedFan.fanName !== '2205' &&\r\n this.selectedFan.fanName !== '2250'\r\n ) {\r\n this._maxCrossSectionalVelocity = 4000;\r\n this._maxSurfaceVelocity = 50;\r\n }\r\n\r\n let minimalCSA = this.lowerLarge / (this._maxCrossSectionalVelocity * this.numberFans);\r\n this.surface = 0\r\n if (this._flatDuctModel.ductType === AqsFlatDuctingShapeTypeEnum.HalfRound) {\r\n let firstIf = false;\r\n for (let i = 0; i <= 7; i++) {\r\n if ((Math.pow((this.cfrhr[i][0] / 24), 2) * Math.PI / 2) >= minimalCSA) {\r\n this._flatDuctModel.ductDiameter = this.cfrhr[i][0];\r\n this.surface = this.cfrhr[i][1];\r\n firstIf = true;\r\n break;\r\n }\r\n }\r\n if (!firstIf) {\r\n this._flatDuctModel.ductDiameter = this.cfrhr[7][0];\r\n this.surface = this.cfrhr[7][0];\r\n }\r\n } else {\r\n let secondif = false;\r\n for (let i = 0; i <= 7; i++) {\r\n if ((Math.pow((this.cfrfr[i][0] / 24), 2) * Math.PI) >= minimalCSA) {\r\n this._flatDuctModel.ductDiameter = this.cfrfr[i][0];\r\n this.surface = this.cfrfr[i][1];\r\n secondif = true;\r\n break;\r\n }\r\n }\r\n if (!secondif) {\r\n this._flatDuctModel.ductDiameter = this.cfrfr[7][0];\r\n this.surface = this.cfrfr[7][1];\r\n }\r\n }\r\n\r\n this._flatDuctModel.openingDiameter = this._flatDuctModel.ductDiameter; //'RECOMMEND OPEN DIA **********\r\n this._ductDiameter = this._convertToDoubleQuoteString(this._flatDuctModel.ductDiameter);\r\n this._openingDiameter = this._convertToDoubleQuoteString(this._flatDuctModel.openingDiameter);\r\n }\r\n\r\n onCalculateDuctDiaFromUserValues() {\r\n if (this.oldFlatDuctModel.ductType == AqsFlatDuctingShapeTypeEnum.FullRound) {\r\n for (let index = 0; index < this.cfrfr.length; index++) {\r\n if (this.cfrfr[index][0] == this.oldFlatDuctModel.ductDiameter) {\r\n this.surface = this.cfrfr[index][1];\r\n break;\r\n }\r\n }\r\n } else {\r\n for (let index = 0; index < this.cfrhr.length; index++) {\r\n if (this.cfrhr[index][0] == this.oldFlatDuctModel.ductDiameter) {\r\n this.surface = this.cfrhr[index][1];\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n\r\n //FDUCT 8111 'RECOMMEND NUMBER FANS EA SIDE **********\r\n onCalculateRecommendNumberFansEachSide() {\r\n for (let k = 0; k <= 3; k++) {\r\n this._ductTable[k].numberFansPerSide = 0;\r\n this._saveSideParamArrayToType(this._ductTable[k]);\r\n }\r\n\r\n if (this._flatStorage.width > 120) {\r\n this._flatDuctModel.far.numberFansPerSide = Math.floor(this.numberFans / 2);\r\n this._flatDuctModel.near.numberFansPerSide = this.numberFans - this._flatDuctModel.far.numberFansPerSide;\r\n } else {\r\n this._flatDuctModel.near.numberFansPerSide = this.numberFans;\r\n }\r\n }\r\n\r\n //FDUCT 8114 'RECOMMEND CENTER TO CENTER ***************\r\n onCalculateRecommendCenterToCenter() {\r\n for (let k = 0; k <= 3; k++) {\r\n this._ductTable[k].ctroctr = 0;\r\n this._saveSideParamArrayToType(this._ductTable[k]);\r\n }\r\n\r\n for (let k = 0; k <= 3; k++) {\r\n if (this._ductTable[k].numberFansPerSide != 1 && this._ductTable[k].numberFansPerSide != 0) {\r\n if (k < 2) {\r\n this._ductTable[k].ctroctr = this._flatStorage.lenght * 12 / this._ductTable[k].numberFansPerSide;\r\n } else {\r\n this._ductTable[k].ctroctr = this._flatStorage.width * 12 / this._ductTable[k].numberFansPerSide;\r\n }\r\n this._saveSideParamArrayToType(this._ductTable[k]);\r\n }\r\n }\r\n\r\n for (let k = 0; k <= 3; k++) {\r\n this._saveSideParamArrayToType(this._ductTable[k]);\r\n }\r\n\r\n this.saveOutputCtrValues();\r\n }\r\n\r\n //FDUCT 8126 'recommend perf/run ***************\r\n onCalculateRecommendPerf() {\r\n this._actualSurfaceVelocity = this.lowerLarge / (Math.pow((this._flatDuctModel.openingDiameter / 24), 2) * Math.PI * this.numberFans);\r\n let recPerf = ((this.lowerLarge / this.numberFans) / this._maxSurfaceVelocity / this.surface) * 12;\r\n let temp = recPerf;\r\n recPerf = Math.floor(Math.floor(recPerf / 24) * 24 + 0.5);\r\n if (recPerf < temp) {\r\n recPerf += 24;\r\n }\r\n\r\n for ( let i = 0; i <= 3; i++) {\r\n this.recPerf[i] = recPerf;\r\n }\r\n }\r\n\r\n //FDUCT 8162 'find distances to begin ducts\r\n findDistanceToBeginDucts() {\r\n let sideParametr = 0;\r\n for (let sideno = 0; sideno <= 3; sideno++) {\r\n if (sideno < 2) {\r\n sideParametr = this._flatStorage.lenght\r\n } else {\r\n sideParametr = this._flatStorage.width\r\n }\r\n\r\n this._ductTable[sideno].distanceFromEdge =\r\n sideParametr * 6\r\n - (this._ductTable[sideno].numberFansPerSide - 1) * this._ductTable[sideno].ctroctr / 2;\r\n }\r\n }\r\n\r\n //FDUCT 8167 'find ideal & maximum duct lengths\r\n findIdealAndMaxDuctLenghts() {\r\n let intersect = 0;\r\n let max = 0;\r\n let ideal = 0;\r\n\r\n if (\r\n this._flatDuctModel.near.numberFansPerSide + this._flatDuctModel.far.numberFansPerSide != 0 &&\r\n this._flatDuctModel.front.numberFansPerSide + this._flatDuctModel.rear.numberFansPerSide != 0) {\r\n intersect = 1;\r\n }\r\n\r\n let union = [0,0];\r\n\r\n for (let sideno = 0; sideno <= 2; sideno+=2) {\r\n let isUnionEqualsOne = false;\r\n\r\n for (let i = 0; i < this._ductTable[sideno].numberFansPerSide; i++) {\r\n for (let j = 0; j < this._ductTable[sideno + 1].numberFansPerSide; j++) {\r\n if (Math.abs(\r\n (this._ductTable[sideno].distanceFromEdge + i * this._ductTable[sideno].ctroctr)\r\n - (this._ductTable[sideno + 1].distanceFromEdge + j * this._ductTable[sideno + 1].ctroctr))\r\n < this._flatDuctModel.ductDiameter) {\r\n union[sideno / 2] = 1;\r\n isUnionEqualsOne = true;\r\n }\r\n\r\n if (isUnionEqualsOne) {\r\n break;\r\n }\r\n }\r\n\r\n if (isUnionEqualsOne) {\r\n break;\r\n }\r\n }\r\n }\r\n\r\n for (let sideno = 0; sideno <= 3; sideno++) {\r\n let distance = this._flatStorage.lenght;\r\n if (sideno < 2) {\r\n distance = this._flatStorage.width\r\n }\r\n\r\n if (union[Math.floor(sideno / 2)] == 1) {\r\n max = distance * 6;\r\n ideal = distance * 6;\r\n } else {\r\n max = distance * 12;\r\n ideal = (distance * 12 - this.recPerf[sideno]) / 2 + this.recPerf[sideno];\r\n }\r\n\r\n max = Math.floor(Math.floor(max / 24) * 24 + 0.5);\r\n ideal = Math.floor(Math.floor(ideal / 24) * 24 + 0.5);\r\n\r\n this._ductTable[sideno].maxDuctLenght = max;\r\n this._ductTable[sideno].idealDuctLenght = ideal;\r\n }\r\n\r\n if (intersect == 1) {\r\n if (this._flatDuctModel.near.numberFansPerSide == 0) {\r\n max = this._flatDuctModel.far.distanceFromEdge - this._flatDuctModel.ductDiameter / 2;\r\n }\r\n else if (this._flatDuctModel.far.numberFansPerSide == 0) {\r\n max = this._flatDuctModel.near.distanceFromEdge - this._flatDuctModel.ductDiameter / 2;\r\n }\r\n else if (this._flatDuctModel.near.distanceFromEdge < this._flatDuctModel.far.distanceFromEdge) {\r\n max = this._flatDuctModel.near.distanceFromEdge - this._flatDuctModel.ductDiameter / 2;\r\n }\r\n else {\r\n max = this._flatDuctModel.far.distanceFromEdge - this._flatDuctModel.ductDiameter / 2;\r\n }\r\n }\r\n\r\n max = Math.floor(Math.floor(max / 24) * 24 + 0.5);\r\n\r\n this._flatDuctModel.front.maxDuctLenght = max;\r\n this._flatDuctModel.rear.maxDuctLenght = max;\r\n }\r\n\r\n //FDUCT 8192\r\n onCalculateRecommendInchesOfPerf() {\r\n for (let sideno = 0; sideno <= 3; sideno++) {\r\n if (this._ductTable[sideno].maxDuctLenght >= this.recPerf[sideno]) {\r\n this._ductTable[sideno].perfPerRun = this.recPerf[sideno]\r\n }\r\n else if (this._ductTable[sideno].maxDuctLenght < this.recPerf[sideno]) {\r\n this._ductTable[sideno].perfPerRun = this._ductTable[sideno].maxDuctLenght;\r\n }\r\n else {\r\n this._ductTable[sideno].perfPerRun = 0;\r\n }\r\n }\r\n\r\n this.saveOutputPerfValues();\r\n }\r\n\r\n //FDUCT 8190 'recommend inches of perf ************\r\n onCalculateRecommendSolid() {\r\n for (let sideno = 0; sideno <= 3; sideno++) {\r\n this._ductTable[sideno].solidPerRun = this._ductTable[sideno].idealDuctLenght - this._ductTable[sideno].perfPerRun;\r\n\r\n if (this._ductTable[sideno].solidPerRun + this._ductTable[sideno].perfPerRun > this._ductTable[sideno].maxDuctLenght) {\r\n this._ductTable[sideno].solidPerRun = this._ductTable[sideno].maxDuctLenght - this._ductTable[sideno].perfPerRun;\r\n }\r\n }\r\n\r\n this.saveOutputSolidValues();\r\n }\r\n\r\n //#endregion FDUCT GOSUB 8000:SCREEN 2:CLS 'recommendations\r\n\r\n //#region FDUCT GOSUB 7000: 'VELOCITIES\r\n\r\n //7000 'velocities **********************************************************\r\n onCalculateVelocities() {\r\n if (\r\n this._flatDuctModel.ductType == AqsFlatDuctingShapeTypeEnum.HalfRound &&\r\n Math.PI * Math.pow(this._flatDuctModel.openingDiameter, 2) <= Math.PI / 2 * Math.pow(this._flatDuctModel.ductDiameter, 2)\r\n ) {\r\n this._actualCrossSectionalVelocity = this.lowerLarge / (Math.pow(this._flatDuctModel.openingDiameter / 24, 2) * Math.PI * this.numberFans);\r\n //7060 IF DUCTTYPE=2 THEN IF PI*OPENDIA^2<=(PI/2*DUCTDIA^2) THEN CSV=LOWERLARGE/((OPENDIA/24)^2*PI*NUMBERFANS):GOTO 7100\r\n }\r\n else if (\r\n this._flatDuctModel.ductType == AqsFlatDuctingShapeTypeEnum.FullRound &&\r\n this._flatDuctModel.openingDiameter <= this._flatDuctModel.ductDiameter\r\n ) {\r\n this._actualCrossSectionalVelocity = this.lowerLarge / (Math.pow(this._flatDuctModel.openingDiameter / 24, 2) * Math.PI * this.numberFans);\r\n //7070 IF DUCTTYPE=1 THEN IF OPENDIA<=DUCTDIA THEN CSV=LOWERLARGE/((OPENDIA/24)^2*PI*NUMBERFANS):GOTO 7100\r\n }\r\n else if (this._flatDuctModel.ductType == AqsFlatDuctingShapeTypeEnum.FullRound) {\r\n this._actualCrossSectionalVelocity = this.lowerLarge / (Math.pow(this._flatDuctModel.ductDiameter / 24, 2) * Math.PI * this.numberFans);\r\n //7080 IF DUCTTYPE=1 THEN CSV=LOWERLARGE/((DUCTDIA/24)^2*PI*NUMBERFANS):GOTO 7100\r\n }\r\n else if (this._flatDuctModel.ductType == AqsFlatDuctingShapeTypeEnum.HalfRound) {\r\n this._actualCrossSectionalVelocity = this.lowerLarge / (Math.pow(this._flatDuctModel.ductDiameter / 24, 2) * Math.PI / 2 * this.numberFans);\r\n //7090 IF DUCTTYPE=2 THEN CSV=LOWERLARGE/((DUCTDIA/24)^2*(PI/2)*NUMBERFANS)\r\n }\r\n\r\n this._actualCrossSectionalVelocity = Math.floor(this._actualCrossSectionalVelocity + .5);\r\n //7100 CSV=INT(CSV+.5)\r\n\r\n this._actualSurfaceVelocity = (this.lowerLarge / this.numberFans) / this.surface;\r\n //SV=(LOWERLARGE/NUMBERFANS)/SURFACE\r\n\r\n let ftPerforated = 0;\r\n for (let i = 0; i <= 3; i++) {\r\n if (\r\n this._ductTable[i].numberFansPerSide != 0\r\n &&\r\n (this._ductTable[i].perfPerRun / 12 < ftPerforated\r\n || ftPerforated == 0)\r\n ) {\r\n ftPerforated = this._ductTable[i].perfPerRun / 12;\r\n //7117 IF DUCT(PERFPERRUN,I)/12= this._flatDuctModel.ductDiameter) {\r\n this._flatDuctModel.ductDiameter = this.cfrfr[i][0];\r\n this.surface = this.cfrfr[i][1];\r\n checkDuctDia = true;\r\n break;\r\n }\r\n }\r\n\r\n i = 7;\r\n if (!checkDuctDia) {\r\n this._flatDuctModel.ductDiameter = this.cfrfr[i][0];\r\n this.surface = this.cfrfr[i][1];\r\n }\r\n }\r\n else {\r\n let checkDuctDia = false;\r\n let i: number;\r\n for (i = 0; i <= 7; i++) {\r\n if (this.cfrhr[i][0] >= this._flatDuctModel.ductDiameter) {\r\n this._flatDuctModel.ductDiameter = this.cfrhr[i][0];\r\n this.surface = this.cfrhr[i][1];\r\n checkDuctDia = true;\r\n break;\r\n }\r\n }\r\n\r\n i = 7;\r\n if (!checkDuctDia) {\r\n this._flatDuctModel.ductDiameter = this.cfrhr[i][0];\r\n this.surface = this.cfrhr[i][1];\r\n }\r\n }\r\n\r\n this.changeDuctDiametr();\r\n\r\n //logic for changes\r\n this._flatDuctModel.openingDiameter = this._flatDuctModel.ductDiameter;\r\n this.changeOpeningDiameter();\r\n this.onChangeEntityCallNeededMethods(AqsFlatDuctCallMethodsBaseOnEntity.DuctDiameter);\r\n this.drawDuct();\r\n this.changeFlatDuctModel();\r\n }\r\n\r\n private changeDuctDiametr() {\r\n this.oldFlatDuctModel.ductDiameter = this._flatDuctModel.ductDiameter;\r\n this._ductDiameter = this._convertToDoubleQuoteString(this._flatDuctModel.ductDiameter);\r\n }\r\n\r\n //30250 'OPENDIA ALTERED ***********\r\n onChangeOpeningDiameter() {\r\n if (this._openingDiameter === undefined || this._openingDiameter === '') {\r\n this._openingDiameter = this._convertToDoubleQuoteString(this._flatDuctModel.openingDiameter);\r\n }\r\n\r\n let openDiaStringNumber = this._openingDiameter.replace(/[^0-9.]/g, '');\r\n if (openDiaStringNumber === undefined || openDiaStringNumber == '') {\r\n this._openingDiameter = this._convertToDoubleQuoteString(this._flatDuctModel.openingDiameter);\r\n }\r\n\r\n let integerValue = openDiaStringNumber.split('.')[0];\r\n let fractionalValue = openDiaStringNumber.split('.')[1];\r\n if (integerValue !== undefined && integerValue !== '') {\r\n if (fractionalValue !== undefined && fractionalValue != '') {\r\n fractionalValue = fractionalValue.replace(/[^0-9]/g,'');\r\n openDiaStringNumber = integerValue + '.' + fractionalValue;\r\n } else {\r\n openDiaStringNumber = integerValue;\r\n }\r\n } else {\r\n openDiaStringNumber = '0';\r\n }\r\n\r\n this._flatDuctModel.openingDiameter = Number(openDiaStringNumber);\r\n\r\n if (this._flatDuctModel.openingDiameter < 6 || this._flatDuctModel.openingDiameter > 80){\r\n this._flatDuctModel.openingDiameter = this.oldFlatDuctModel.openingDiameter;\r\n }\r\n\r\n this.changeOpeningDiameter();\r\n //logic for changes\r\n this.onChangeEntityCallNeededMethods(AqsFlatDuctCallMethodsBaseOnEntity.DuctDiameter);\r\n this.drawDuct();\r\n this.changeFlatDuctModel();\r\n }\r\n\r\n private changeOpeningDiameter() {\r\n this.oldFlatDuctModel.openingDiameter = this._flatDuctModel.openingDiameter;\r\n this._openingDiameter = this._convertToDoubleQuoteString(this._flatDuctModel.openingDiameter);\r\n }\r\n\r\n //30301 '# FANS EA SIDE ALTERED ************\r\n onChangeNearFans() {\r\n if (\r\n this._flatDuctModel.near.numberFansPerSide < 0\r\n || this._flatDuctModel.near.numberFansPerSide > this.numberFans\r\n || this._flatDuctModel.near.numberFansPerSide == this.oldFlatDuctModel.near.numberFansPerSide\r\n ) {\r\n this._flatDuctModel.near.numberFansPerSide = this.oldFlatDuctModel.near.numberFansPerSide;\r\n } else {\r\n let original = this.oldFlatDuctModel.near.numberFansPerSide;\r\n let temp = this._flatDuctModel.near.numberFansPerSide;\r\n let makeup = this.numberFans - this._flatDuctModel.near.numberFansPerSide;\r\n\r\n for (let i = 1; i <= 3; i++) {\r\n this._ductTable[i].numberFansPerSide = 0;\r\n this._saveSideParamArrayToType(this._ductTable[i]);\r\n }\r\n\r\n if (makeup != 0) {\r\n if (temp <= makeup) {\r\n this._flatDuctModel.far.numberFansPerSide = temp;\r\n makeup -= temp;\r\n } else {\r\n this._flatDuctModel.far.numberFansPerSide = makeup;\r\n makeup = 0;\r\n }\r\n\r\n if (makeup != 0) {\r\n temp = Math.round(makeup / 2);\r\n this._flatDuctModel.front.numberFansPerSide = temp;\r\n makeup -= temp;\r\n\r\n if (makeup != 0) {\r\n this._flatDuctModel.rear.numberFansPerSide = makeup;\r\n }\r\n }\r\n }\r\n\r\n this._copyFromNewModelToOldNumberFans();\r\n\r\n //logic for changes\r\n this.onChangeEntityCallNeededMethods(AqsFlatDuctCallMethodsBaseOnEntity.NumberFans);\r\n this.drawDuct();\r\n this.changeFlatDuctModel();\r\n }\r\n }\r\n\r\n //30320 IF SIDENO<>FARSIDE THEN 30340\r\n onChangeFarFans() {\r\n if (\r\n this._flatDuctModel.far.numberFansPerSide < 0\r\n || this._flatDuctModel.far.numberFansPerSide > this.numberFans\r\n || this._flatDuctModel.far.numberFansPerSide == this.oldFlatDuctModel.far.numberFansPerSide\r\n ) {\r\n this._flatDuctModel.far.numberFansPerSide = this.oldFlatDuctModel.far.numberFansPerSide;\r\n } else {\r\n let original = this.oldFlatDuctModel.far.numberFansPerSide;\r\n let temp = this._flatDuctModel.far.numberFansPerSide;\r\n let makeup = this.numberFans - this._flatDuctModel.far.numberFansPerSide;\r\n\r\n for (let i = 2; i <= 3; i++) {\r\n this._ductTable[i].numberFansPerSide = 0;\r\n this._saveSideParamArrayToType(this._ductTable[i]);\r\n }\r\n\r\n if (makeup < this._flatDuctModel.near.numberFansPerSide) {\r\n this._flatDuctModel.near.numberFansPerSide = makeup;\r\n } else {\r\n makeup -= this._flatDuctModel.near.numberFansPerSide;\r\n temp = Math.round(makeup / 2);\r\n this._flatDuctModel.front.numberFansPerSide = temp;\r\n makeup -= temp;\r\n\r\n if (makeup != 0) {\r\n this._flatDuctModel.rear.numberFansPerSide = makeup;\r\n }\r\n }\r\n this._copyFromNewModelToOldNumberFans();\r\n\r\n //logic for changes\r\n this.onChangeEntityCallNeededMethods(AqsFlatDuctCallMethodsBaseOnEntity.NumberFans);\r\n this.drawDuct();\r\n this.changeFlatDuctModel();\r\n }\r\n }\r\n\r\n //30340 IF SIDENO<>FRONTSIDE THEN 30360\r\n onChangeFrontFans() {\r\n if (\r\n this._flatDuctModel.front.numberFansPerSide < 0\r\n || this._flatDuctModel.front.numberFansPerSide > this.numberFans\r\n || this._flatDuctModel.front.numberFansPerSide == this.oldFlatDuctModel.front.numberFansPerSide\r\n ) {\r\n this._flatDuctModel.front.numberFansPerSide = this.oldFlatDuctModel.front.numberFansPerSide;\r\n } else {\r\n let original = this.oldFlatDuctModel.front.numberFansPerSide;\r\n let temp = this._flatDuctModel.front.numberFansPerSide;\r\n let makeup = this.numberFans - this._flatDuctModel.front.numberFansPerSide;\r\n\r\n this._flatDuctModel.front.numberFansPerSide = temp;\r\n this._flatDuctModel.rear.numberFansPerSide = 0;\r\n\r\n if (makeup >= this._flatDuctModel.near.numberFansPerSide + this._flatDuctModel.far.numberFansPerSide) {\r\n makeup -= this._flatDuctModel.near.numberFansPerSide + this._flatDuctModel.far.numberFansPerSide\r\n this._flatDuctModel.rear.numberFansPerSide = makeup;\r\n } else {\r\n for (let i = 0; i <= 1; i++) {\r\n this._ductTable[i].numberFansPerSide = 0;\r\n this._saveSideParamArrayToType(this._ductTable[i]);\r\n }\r\n\r\n if (makeup != 0) {\r\n if (temp <= makeup) {\r\n this._flatDuctModel.rear.numberFansPerSide = temp;\r\n makeup -= temp;\r\n } else {\r\n this._flatDuctModel.rear.numberFansPerSide = makeup;\r\n makeup = 0;\r\n }\r\n\r\n if (makeup != 0) {\r\n temp = Math.round(makeup / 2);\r\n this._flatDuctModel.near.numberFansPerSide = temp;\r\n makeup = makeup - temp;\r\n\r\n if (makeup != 0) {\r\n this._flatDuctModel.far.numberFansPerSide = makeup;\r\n }\r\n }\r\n }\r\n }\r\n\r\n this._copyFromNewModelToOldNumberFans();\r\n\r\n //logic for changes\r\n this.onChangeEntityCallNeededMethods(AqsFlatDuctCallMethodsBaseOnEntity.NumberFans);\r\n this.drawDuct();\r\n this.changeFlatDuctModel();\r\n }\r\n }\r\n\r\n //30360 'UPDATE REARSIDE\r\n onChangeRearFans() {\r\n if (\r\n this._flatDuctModel.rear.numberFansPerSide < 0\r\n || this._flatDuctModel.rear.numberFansPerSide > this.numberFans\r\n || this._flatDuctModel.rear.numberFansPerSide == this.oldFlatDuctModel.rear.numberFansPerSide\r\n ) {\r\n this._flatDuctModel.rear.numberFansPerSide = this.oldFlatDuctModel.rear.numberFansPerSide;\r\n } else {\r\n let original = this.oldFlatDuctModel.rear.numberFansPerSide;\r\n let temp = this._flatDuctModel.rear.numberFansPerSide;\r\n let makeup = this.numberFans - this._flatDuctModel.rear.numberFansPerSide;\r\n\r\n for (let i = 0; i <= 2; i++) {\r\n this._ductTable[i].numberFansPerSide = 0;\r\n }\r\n\r\n if (makeup != 0) {\r\n if (temp <= makeup) {\r\n this._flatDuctModel.rear.numberFansPerSide = temp;\r\n makeup -= temp;\r\n } else {\r\n this._flatDuctModel.rear.numberFansPerSide = makeup;\r\n makeup = 0;\r\n }\r\n\r\n if (makeup != 0) {\r\n temp = Math.round(makeup / 2);\r\n this._flatDuctModel.near.numberFansPerSide = temp;\r\n makeup -= temp;\r\n\r\n if (makeup != 0) {\r\n this._flatDuctModel.near.numberFansPerSide = makeup;\r\n }\r\n }\r\n }\r\n this._copyFromNewModelToOldNumberFans();\r\n\r\n //logic for changes\r\n this.onChangeEntityCallNeededMethods(AqsFlatDuctCallMethodsBaseOnEntity.NumberFans);\r\n this.drawDuct();\r\n this.changeFlatDuctModel();\r\n }\r\n }\r\n\r\n //30401 'CTR TO CTR ALTERED************\r\n private onChangeAnyCtr(stringValue: string, sideParams: AqsFlatDuctSideParamsModel, oldSideParams: AqsFlatDuctSideParamsModel, sideNo: AqsFlatDuctSideNo) {\r\n if (sideParams.numberFansPerSide > 1) {\r\n let maxCtrtOctr = 0;\r\n if (sideNo < 2) {\r\n maxCtrtOctr = this._flatStorage.lenght * 12;\r\n } else {\r\n maxCtrtOctr = this._flatStorage.width * 12;\r\n }\r\n\r\n maxCtrtOctr = (maxCtrtOctr - this._flatDuctModel.ductDiameter) / (sideParams.numberFansPerSide - 1);\r\n let minCtrtOctr = this._flatDuctModel.ductDiameter;\r\n stringValue = stringValue.replace(/[^0-9.-]/g, '');\r\n let feetValue = stringValue.split('-')[0];\r\n let feetValueMainPart = feetValue.split('.')[0];\r\n let feetValueSecondPart = feetValue.split('.')[1];\r\n let inchesValue = stringValue.split('-')[1];\r\n if (inchesValue === undefined || inchesValue === '') {\r\n inchesValue = '0';\r\n }\r\n\r\n inchesValue = inchesValue.split('-')[0];\r\n if (inchesValue === undefined || inchesValue === '') {\r\n inchesValue = '0';\r\n }\r\n\r\n let inchesNumberValue = Math.floor(Number(inchesValue) + 0.5);\r\n let inches = 0;\r\n if (feetValueMainPart !== undefined) {\r\n inches = this._convertFeetToInches(Number(feetValueMainPart));\r\n\r\n if (feetValueSecondPart !== undefined && feetValueSecondPart !== '') {\r\n inchesNumberValue += Math.floor(Number('0.' + feetValueSecondPart) * 12 + 0.5);\r\n }\r\n\r\n inches += inchesNumberValue;\r\n }\r\n\r\n if (inches >= minCtrtOctr && inches <= maxCtrtOctr && inches !== sideParams.ctroctr) {\r\n sideParams.ctroctr = inches;\r\n oldSideParams.ctroctr = sideParams.ctroctr;\r\n }\r\n }\r\n }\r\n\r\n //19000 'FTINCHES$ TO INCHES ***************************************************\r\n convertInchesToCtrFormat(inchesCtr: number, numberFans: number):string {\r\n if (inchesCtr === 0 || numberFans == 0) {\r\n return 'N/A';\r\n }\r\n\r\n let feetCtrFirtsPartNumber = Math.floor(this._convertInchesToFeet(inchesCtr));\r\n let inchesCtrSecondPartNumber = inchesCtr % 12;\r\n if (inchesCtrSecondPartNumber < 10) {\r\n return feetCtrFirtsPartNumber.toString() + '” - 0' + inchesCtrSecondPartNumber.toString() + '’';\r\n }\r\n else if (inchesCtrSecondPartNumber >= 12) {\r\n feetCtrFirtsPartNumber += Math.floor(inchesCtrSecondPartNumber / 12);\r\n inchesCtrSecondPartNumber %= 12;\r\n }\r\n\r\n return feetCtrFirtsPartNumber.toString() + '” - ' + inchesCtrSecondPartNumber.toString() + '’';\r\n }\r\n\r\n onChangeNearCtr() {\r\n this.onChangeAnyCtr(this._nearCtrCtr, this._flatDuctModel.near, this.oldFlatDuctModel.near, AqsFlatDuctSideNo.Near);\r\n this.onChangeEntityCallNeededMethods(AqsFlatDuctCallMethodsBaseOnEntity.CtrCtr);\r\n this._nearCtrCtr = this.convertInchesToCtrFormat(\r\n this._getRoundToZeroDecimalPlaces(this._flatDuctModel.near.ctroctr),\r\n this._getRoundToZeroDecimalPlaces(this._flatDuctModel.near.numberFansPerSide)\r\n );\r\n this.drawDuct();\r\n this.changeFlatDuctModel();\r\n }\r\n\r\n onChangeFarCtr() {\r\n this.onChangeAnyCtr(this._farCtrCtr, this._flatDuctModel.far, this.oldFlatDuctModel.far, AqsFlatDuctSideNo.Far);\r\n this.onChangeEntityCallNeededMethods(AqsFlatDuctCallMethodsBaseOnEntity.CtrCtr);\r\n this._farCtrCtr = this.convertInchesToCtrFormat(\r\n this._getRoundToZeroDecimalPlaces(this._flatDuctModel.far.ctroctr),\r\n this._getRoundToZeroDecimalPlaces(this._flatDuctModel.far.numberFansPerSide)\r\n );\r\n this.drawDuct();\r\n this.changeFlatDuctModel();\r\n }\r\n\r\n onChangeFrontCtr() {\r\n this.onChangeAnyCtr(this._frontCtrCtr, this._flatDuctModel.front, this.oldFlatDuctModel.front, AqsFlatDuctSideNo.Front);\r\n this.onChangeEntityCallNeededMethods(AqsFlatDuctCallMethodsBaseOnEntity.CtrCtr);\r\n this._frontCtrCtr = this.convertInchesToCtrFormat(\r\n this._getRoundToZeroDecimalPlaces(this._flatDuctModel.front.ctroctr),\r\n this._getRoundToZeroDecimalPlaces(this._flatDuctModel.front.numberFansPerSide)\r\n );\r\n this.drawDuct();\r\n this.changeFlatDuctModel();\r\n }\r\n\r\n onChangeRearCtr() {\r\n this.onChangeAnyCtr(this._rearCtrCtr, this._flatDuctModel.rear, this.oldFlatDuctModel.rear, AqsFlatDuctSideNo.Rear);\r\n this.onChangeEntityCallNeededMethods(AqsFlatDuctCallMethodsBaseOnEntity.CtrCtr);\r\n this._rearCtrCtr = this.convertInchesToCtrFormat(\r\n this._getRoundToZeroDecimalPlaces(this._flatDuctModel.rear.ctroctr),\r\n this._getRoundToZeroDecimalPlaces(this._flatDuctModel.rear.numberFansPerSide)\r\n );\r\n this.drawDuct();\r\n this.changeFlatDuctModel();\r\n }\r\n\r\n //30501 'PERFORATED PER RUN ALTERED********\r\n onChangeNearPerf() {\r\n if (this._nearPerf !== undefined && this._nearPerf !== '') {\r\n let stringNumberValue = this._nearPerf.replace(/[^0-9.]/g, '');\r\n stringNumberValue = stringNumberValue.split('.')[0];\r\n if (stringNumberValue !== undefined && stringNumberValue !== '') {\r\n this._flatDuctModel.near.perfPerRun = Number(stringNumberValue);\r\n this._flatDuctModel.near.perfPerRun = this._convertFeetToInches(this._flatDuctModel.near.perfPerRun);\r\n this._flatDuctModel.near.perfPerRun = Math.floor(Math.floor(this._flatDuctModel.near.perfPerRun / 24) * 24 + .5);\r\n\r\n if (this._flatDuctModel.near.perfPerRun <= 0) {\r\n this._flatDuctModel.near.perfPerRun = this.oldFlatDuctModel.near.perfPerRun;\r\n }\r\n else if (this._flatDuctModel.near.perfPerRun !== this.oldFlatDuctModel.near.perfPerRun) {\r\n if (this._flatDuctModel.near.perfPerRun > this._flatDuctModel.near.maxDuctLenght) {\r\n this._flatDuctModel.near.perfPerRun = this._flatDuctModel.near.maxDuctLenght;\r\n }\r\n\r\n this.recPerf[0] = this._flatDuctModel.near.perfPerRun;\r\n\r\n //logic for methods to recalculate\r\n this.onChangeEntityCallNeededMethods(AqsFlatDuctCallMethodsBaseOnEntity.PerfRun);\r\n }\r\n }\r\n }\r\n\r\n this._nearPerf = this._convertNumberToRunFormat(this._convertInchesToFeet(this._flatDuctModel.near.perfPerRun), this._flatDuctModel.near.numberFansPerSide);\r\n this.drawDuct();\r\n this.changeFlatDuctModel();\r\n }\r\n\r\n //30501 'PERFORATED PER RUN ALTERED********\r\n onChangeFarPerf() {\r\n if (this._farPerf !== undefined && this._farPerf !== '') {\r\n let stringNumberValue = this._farPerf.replace(/[^0-9.]/g, '');\r\n stringNumberValue = stringNumberValue.split('.')[0];\r\n if (stringNumberValue !== undefined && stringNumberValue !== '') {\r\n this._flatDuctModel.far.perfPerRun = Number(stringNumberValue);\r\n this._flatDuctModel.far.perfPerRun = this._convertFeetToInches(this._flatDuctModel.far.perfPerRun);\r\n this._flatDuctModel.far.perfPerRun = Math.floor(Math.floor(this._flatDuctModel.far.perfPerRun / 24) * 24 + .5);\r\n\r\n if (this._flatDuctModel.far.perfPerRun <= 0) {\r\n this._flatDuctModel.far.perfPerRun = this.oldFlatDuctModel.far.perfPerRun;\r\n }\r\n else if (this._flatDuctModel.far.perfPerRun !== this.oldFlatDuctModel.far.perfPerRun) {\r\n if (this._flatDuctModel.far.perfPerRun > this._flatDuctModel.far.maxDuctLenght) {\r\n this._flatDuctModel.far.perfPerRun = this._flatDuctModel.far.maxDuctLenght;\r\n }\r\n\r\n this.recPerf[1] = this._flatDuctModel.far.perfPerRun;\r\n\r\n //logic for methods to recalculate\r\n this.onChangeEntityCallNeededMethods(AqsFlatDuctCallMethodsBaseOnEntity.PerfRun);\r\n }\r\n }\r\n }\r\n\r\n this._farPerf = this._convertNumberToRunFormat(this._convertInchesToFeet(this._flatDuctModel.far.perfPerRun), this._flatDuctModel.far.numberFansPerSide);\r\n this.drawDuct();\r\n this.changeFlatDuctModel();\r\n }\r\n\r\n //30501 'PERFORATED PER RUN ALTERED********\r\n onChangeFrontPerf() {\r\n if (this._frontPerf !== undefined && this._frontPerf !== '') {\r\n let stringNumberValue = this._frontPerf.replace(/[^0-9.]/g, '');\r\n stringNumberValue = stringNumberValue.split('.')[0];\r\n if (stringNumberValue !== undefined && stringNumberValue !== '') {\r\n this._flatDuctModel.front.perfPerRun = Number(stringNumberValue);\r\n this._flatDuctModel.front.perfPerRun = this._convertFeetToInches(this._flatDuctModel.front.perfPerRun);\r\n this._flatDuctModel.front.perfPerRun = Math.floor(Math.floor(this._flatDuctModel.front.perfPerRun / 24) * 24 + .5);\r\n\r\n if (this._flatDuctModel.front.perfPerRun <= 0) {\r\n this._flatDuctModel.front.perfPerRun = this.oldFlatDuctModel.front.perfPerRun;\r\n }\r\n else if (this._flatDuctModel.front.perfPerRun !== this.oldFlatDuctModel.front.perfPerRun) {\r\n if (this._flatDuctModel.front.perfPerRun > this._flatDuctModel.front.maxDuctLenght) {\r\n this._flatDuctModel.front.perfPerRun = this._flatDuctModel.front.maxDuctLenght;\r\n }\r\n\r\n this.recPerf[2] = this._flatDuctModel.front.perfPerRun;\r\n\r\n //logic for methods to recalculate\r\n this.onChangeEntityCallNeededMethods(AqsFlatDuctCallMethodsBaseOnEntity.PerfRun);\r\n }\r\n }\r\n }\r\n\r\n this._frontPerf = this._convertNumberToRunFormat(this._convertInchesToFeet(this._flatDuctModel.front.perfPerRun), this._flatDuctModel.front.numberFansPerSide);\r\n this.drawDuct();\r\n this.changeFlatDuctModel();\r\n }\r\n\r\n //30501 'PERFORATED PER RUN ALTERED********\r\n onChangeRearPerf() {\r\n if (this._rearPerf !== undefined && this._rearPerf !== '') {\r\n let stringNumberValue = this._rearPerf.replace(/[^0-9.]/g, '');\r\n stringNumberValue = stringNumberValue.split('.')[0];\r\n if (stringNumberValue !== undefined && stringNumberValue !== '') {\r\n this._flatDuctModel.rear.perfPerRun = Number(stringNumberValue);\r\n this._flatDuctModel.rear.perfPerRun = this._convertFeetToInches(this._flatDuctModel.rear.perfPerRun);\r\n this._flatDuctModel.rear.perfPerRun = Math.floor(Math.floor(this._flatDuctModel.rear.perfPerRun / 24) * 24 + .5);\r\n\r\n if (this._flatDuctModel.rear.perfPerRun <= 0) {\r\n this._flatDuctModel.rear.perfPerRun = this.oldFlatDuctModel.rear.perfPerRun;\r\n }\r\n else if (this._flatDuctModel.rear.perfPerRun !== this.oldFlatDuctModel.rear.perfPerRun) {\r\n if (this._flatDuctModel.rear.perfPerRun > this._flatDuctModel.rear.maxDuctLenght) {\r\n this._flatDuctModel.rear.perfPerRun = this._flatDuctModel.rear.maxDuctLenght;\r\n }\r\n\r\n this.recPerf[3] = this._flatDuctModel.rear.perfPerRun;\r\n\r\n //logic for methods to recalculate\r\n this.onChangeEntityCallNeededMethods(AqsFlatDuctCallMethodsBaseOnEntity.PerfRun);\r\n }\r\n }\r\n }\r\n\r\n this._rearPerf = this._convertNumberToRunFormat(this._convertInchesToFeet(this._flatDuctModel.rear.perfPerRun), this._flatDuctModel.rear.numberFansPerSide);\r\n this.drawDuct();\r\n this.changeFlatDuctModel();\r\n }\r\n\r\n //30600 'SOLID PER RUN ALTERED***********\r\n onChangeNearSolid() {\r\n if (this._flatDuctModel.near.numberFansPerSide !== 0 && this._nearSolid !== undefined && this._nearSolid !== '') {\r\n let stringNumberValue = this._nearSolid.replace(/[^0-9.]/g, '');\r\n stringNumberValue = stringNumberValue.split('.')[0];\r\n if (stringNumberValue !== undefined && stringNumberValue !== '') {\r\n this._flatDuctModel.near.solidPerRun = Number(stringNumberValue);\r\n this._flatDuctModel.near.solidPerRun = this._convertFeetToInches(this._flatDuctModel.near.solidPerRun);\r\n this._flatDuctModel.near.solidPerRun = Math.floor(Math.floor(this._flatDuctModel.near.solidPerRun / 24) * 24 + .5);\r\n\r\n if (\r\n this._flatDuctModel.near.solidPerRun <= 0 ||\r\n this._flatDuctModel.near.solidPerRun === this.oldFlatDuctModel.near.solidPerRun ||\r\n this._flatDuctModel.near.solidPerRun > this._flatDuctModel.near.maxDuctLenght - 16) {\r\n this._flatDuctModel.near.solidPerRun = this.oldFlatDuctModel.near.solidPerRun;\r\n } else {\r\n this.oldFlatDuctModel.near.solidPerRun = this._flatDuctModel.near.solidPerRun;\r\n\r\n if (this._flatDuctModel.near.solidPerRun + this._flatDuctModel.near.perfPerRun > this._flatDuctModel.near.maxDuctLenght) {\r\n this._flatDuctModel.near.perfPerRun = this._flatDuctModel.near.maxDuctLenght - this._flatDuctModel.near.solidPerRun;\r\n }\r\n }\r\n }\r\n }\r\n\r\n this._nearSolid = this._convertNumberToRunFormat(this._convertInchesToFeet(this._flatDuctModel.near.solidPerRun), this._flatDuctModel.near.numberFansPerSide);\r\n this.drawDuct();\r\n this.changeFlatDuctModel();\r\n }\r\n\r\n //30600 'SOLID PER RUN ALTERED***********\r\n onChangeFarSolid() {\r\n if (this._flatDuctModel.far.numberFansPerSide !== 0 && this._farSolid !== undefined && this._farSolid !== '') {\r\n let stringNumberValue = this._farSolid.replace(/[^0-9.]/g, '');\r\n stringNumberValue = stringNumberValue.split('.')[0];\r\n if (stringNumberValue !== undefined && stringNumberValue !== '') {\r\n this._flatDuctModel.far.solidPerRun = Number(stringNumberValue);\r\n this._flatDuctModel.far.solidPerRun = this._convertFeetToInches(this._flatDuctModel.far.solidPerRun);\r\n this._flatDuctModel.far.solidPerRun = Math.floor(Math.floor(this._flatDuctModel.far.solidPerRun / 24) * 24 + .5);\r\n\r\n if (\r\n this._flatDuctModel.far.solidPerRun <= 0 ||\r\n this._flatDuctModel.far.solidPerRun === this.oldFlatDuctModel.far.solidPerRun ||\r\n this._flatDuctModel.far.solidPerRun > this._flatDuctModel.far.maxDuctLenght - 16) {\r\n this._flatDuctModel.far.solidPerRun = this.oldFlatDuctModel.far.solidPerRun;\r\n } else {\r\n this.oldFlatDuctModel.far.solidPerRun = this._flatDuctModel.far.solidPerRun;\r\n\r\n if (this._flatDuctModel.far.solidPerRun + this._flatDuctModel.far.perfPerRun > this._flatDuctModel.far.maxDuctLenght) {\r\n this._flatDuctModel.far.perfPerRun = this._flatDuctModel.far.maxDuctLenght - this._flatDuctModel.far.solidPerRun;\r\n }\r\n }\r\n }\r\n }\r\n\r\n this._farSolid = this._convertNumberToRunFormat(this._convertInchesToFeet(this._flatDuctModel.far.solidPerRun), this._flatDuctModel.far.numberFansPerSide);\r\n this.drawDuct();\r\n this.changeFlatDuctModel();\r\n }\r\n\r\n //30600 'SOLID PER RUN ALTERED***********\r\n onChangeFrontSolid() {\r\n if (this._flatDuctModel.front.numberFansPerSide !== 0 && this._frontSolid !== undefined && this._frontSolid !== '') {\r\n let stringNumberValue = this._frontSolid.replace(/[^0-9.]/g, '');\r\n stringNumberValue = stringNumberValue.split('.')[0];\r\n if (stringNumberValue !== undefined && stringNumberValue !== '') {\r\n this._flatDuctModel.front.solidPerRun = Number(stringNumberValue);\r\n this._flatDuctModel.front.solidPerRun = this._convertFeetToInches(this._flatDuctModel.front.solidPerRun);\r\n this._flatDuctModel.front.solidPerRun = Math.floor(Math.floor(this._flatDuctModel.front.solidPerRun / 24) * 24 + .5);\r\n\r\n if (\r\n this._flatDuctModel.front.solidPerRun <= 0 ||\r\n this._flatDuctModel.front.solidPerRun === this.oldFlatDuctModel.front.solidPerRun ||\r\n this._flatDuctModel.front.solidPerRun > this._flatDuctModel.front.maxDuctLenght - 16) {\r\n this._flatDuctModel.front.solidPerRun = this.oldFlatDuctModel.front.solidPerRun;\r\n } else {\r\n this.oldFlatDuctModel.front.solidPerRun = this._flatDuctModel.front.solidPerRun;\r\n\r\n if (this._flatDuctModel.front.solidPerRun + this._flatDuctModel.front.perfPerRun > this._flatDuctModel.front.maxDuctLenght) {\r\n this._flatDuctModel.front.perfPerRun = this._flatDuctModel.front.maxDuctLenght - this._flatDuctModel.front.solidPerRun;\r\n }\r\n }\r\n }\r\n }\r\n\r\n this._frontSolid = this._convertNumberToRunFormat(this._convertInchesToFeet(this._flatDuctModel.front.solidPerRun), this._flatDuctModel.front.numberFansPerSide);\r\n this.drawDuct();\r\n this.changeFlatDuctModel();\r\n }\r\n\r\n //30600 'SOLID PER RUN ALTERED***********\r\n onChangeRearSolid() {\r\n if (this._flatDuctModel.rear.numberFansPerSide !== 0 && this._rearSolid !== undefined && this._rearSolid !== '') {\r\n let stringNumberValue = this._rearSolid.replace(/[^0-9.]/g, '');\r\n stringNumberValue = stringNumberValue.split('.')[0];\r\n if (stringNumberValue !== undefined && stringNumberValue !== '') {\r\n this._flatDuctModel.rear.solidPerRun = Number(stringNumberValue);\r\n this._flatDuctModel.rear.solidPerRun = this._convertFeetToInches(this._flatDuctModel.rear.solidPerRun);\r\n this._flatDuctModel.rear.solidPerRun = Math.floor(Math.floor(this._flatDuctModel.rear.solidPerRun / 24) * 24 + .5);\r\n\r\n if (\r\n this._flatDuctModel.rear.solidPerRun <= 0 ||\r\n this._flatDuctModel.rear.solidPerRun === this.oldFlatDuctModel.rear.solidPerRun ||\r\n this._flatDuctModel.rear.solidPerRun > this._flatDuctModel.rear.maxDuctLenght - 16) {\r\n this._flatDuctModel.rear.solidPerRun = this.oldFlatDuctModel.rear.solidPerRun;\r\n } else {\r\n this.oldFlatDuctModel.rear.solidPerRun = this._flatDuctModel.rear.solidPerRun;\r\n\r\n if (this._flatDuctModel.rear.solidPerRun + this._flatDuctModel.rear.perfPerRun > this._flatDuctModel.rear.maxDuctLenght) {\r\n this._flatDuctModel.rear.perfPerRun = this._flatDuctModel.rear.maxDuctLenght - this._flatDuctModel.rear.solidPerRun;\r\n }\r\n }\r\n }\r\n }\r\n\r\n this._rearSolid = this._convertNumberToRunFormat(this._convertInchesToFeet(this._flatDuctModel.rear.solidPerRun), this._flatDuctModel.rear.numberFansPerSide);\r\n this.drawDuct();\r\n this.changeFlatDuctModel();\r\n }\r\n //#endregion\r\n\r\n //#region helpers methods\r\n\r\n private _convertNumberToRunFormat(value: number, numberFans: number):string {\r\n if (value == undefined || value == 0 || numberFans == undefined || numberFans == 0) {\r\n return 'N/A'\r\n }\r\n\r\n return value.toString() + '’';\r\n }\r\n\r\n private _convertToDoubleQuoteString(numberValue: number):string {\r\n return numberValue.toString() + '”';\r\n }\r\n\r\n private _convertInchesToFeet(inch: number):number {\r\n return Math.floor(this._getRoundToZeroDecimalPlaces(inch) + .5) / 12;\r\n }\r\n\r\n private _convertFeetToInches(feet: number):number {\r\n return feet * 12;\r\n }\r\n\r\n private _saveSideParamArrayToType(sideParams: AqsFlatDuctSideParamsModel) {\r\n switch (sideParams.name){\r\n case 'Near':\r\n this._flatDuctModel.near = sideParams;\r\n break;\r\n case 'Far':\r\n this._flatDuctModel.far = sideParams;\r\n break;\r\n case 'Front':\r\n this._flatDuctModel.front = sideParams;\r\n break;\r\n case 'Rear':\r\n this._flatDuctModel.rear = sideParams;\r\n break;\r\n }\r\n }\r\n\r\n numberOnly(event) {\r\n if (!_isNumberValue(event.key) && event.key !== '.' && event.key !== 'Enter') {\r\n event.preventDefault();\r\n }\r\n }\r\n\r\n numberAndDefisOnly(event) {\r\n if (!_isNumberValue(event.key) && event.key !== '.' && event.key !== 'Enter' && event.key !== '-') {\r\n event.preventDefault();\r\n }\r\n }\r\n\r\n private _copyAllDataAqsFlatDuctSideType(side: AqsFlatDuctSideParamsModel, cloneSide: AqsFlatDuctSideParamsModel) {\r\n cloneSide.ctroctr = side.ctroctr;\r\n cloneSide.distanceFromEdge = side.distanceFromEdge;\r\n cloneSide.idealDuctLenght = side.idealDuctLenght;\r\n cloneSide.maxDuctLenght = side.maxDuctLenght;\r\n cloneSide.numberFansPerSide = side.numberFansPerSide;\r\n cloneSide.perfPerRun = side.perfPerRun;\r\n cloneSide.solidPerRun = side.solidPerRun;\r\n }\r\n\r\n private _copyAllDataToOldModel() {\r\n this.oldFlatDuctModel.ductDiameter = this._flatDuctModel.ductDiameter;\r\n this.oldFlatDuctModel.ductType = this._flatDuctModel.ductType;\r\n this.oldFlatDuctModel.openingDiameter = this._flatDuctModel.openingDiameter;\r\n\r\n this._copyAllDataAqsFlatDuctSideType(this._flatDuctModel.far, this.oldFlatDuctModel.far);\r\n this._copyAllDataAqsFlatDuctSideType(this._flatDuctModel.near, this.oldFlatDuctModel.near);\r\n this._copyAllDataAqsFlatDuctSideType(this._flatDuctModel.front, this.oldFlatDuctModel.front);\r\n this._copyAllDataAqsFlatDuctSideType(this._flatDuctModel.rear, this.oldFlatDuctModel.rear);\r\n }\r\n\r\n private _copyFromNewModelToOldNumberFans() {\r\n this.oldFlatDuctModel.near.numberFansPerSide = this._flatDuctModel.near.numberFansPerSide;\r\n this.oldFlatDuctModel.far.numberFansPerSide = this._flatDuctModel.far.numberFansPerSide;\r\n this.oldFlatDuctModel.front.numberFansPerSide = this._flatDuctModel.front.numberFansPerSide;\r\n this.oldFlatDuctModel.rear.numberFansPerSide = this._flatDuctModel.rear.numberFansPerSide;\r\n }\r\n\r\n private _getRoundToZeroDecimalPlaces(number: number): number {\r\n return Math.round((number + Number.EPSILON) * 1) / 1;\r\n }\r\n //#endregion\r\n\r\n changeFlatDuctModel() {\r\n this.onChangedFlatDuctModel.emit();\r\n }\r\n\r\n calculateVelocitiesFromSavedmodel() {\r\n if (\r\n this.oldFlatDuctModel.ductType == AqsFlatDuctingShapeTypeEnum.HalfRound &&\r\n Math.PI * Math.pow(this.oldFlatDuctModel.openingDiameter, 2) <= Math.PI / 2 * Math.pow(this.oldFlatDuctModel.ductDiameter, 2)\r\n ) {\r\n this._actualCrossSectionalVelocity = this.lowerLarge / (Math.pow(this.oldFlatDuctModel.openingDiameter / 24, 2) * Math.PI * this.numberFans);\r\n //7060 IF DUCTTYPE=2 THEN IF PI*OPENDIA^2<=(PI/2*DUCTDIA^2) THEN CSV=LOWERLARGE/((OPENDIA/24)^2*PI*NUMBERFANS):GOTO 7100\r\n }\r\n else if (\r\n this.oldFlatDuctModel.ductType == AqsFlatDuctingShapeTypeEnum.FullRound &&\r\n this.oldFlatDuctModel.openingDiameter <= this.oldFlatDuctModel.ductDiameter\r\n ) {\r\n this._actualCrossSectionalVelocity = this.lowerLarge / (Math.pow(this.oldFlatDuctModel.openingDiameter / 24, 2) * Math.PI * this.numberFans);\r\n //7070 IF DUCTTYPE=1 THEN IF OPENDIA<=DUCTDIA THEN CSV=LOWERLARGE/((OPENDIA/24)^2*PI*NUMBERFANS):GOTO 7100\r\n }\r\n else if (this.oldFlatDuctModel.ductType == AqsFlatDuctingShapeTypeEnum.FullRound) {\r\n this._actualCrossSectionalVelocity = this.lowerLarge / (Math.pow(this.oldFlatDuctModel.ductDiameter / 24, 2) * Math.PI * this.numberFans);\r\n //7080 IF DUCTTYPE=1 THEN CSV=LOWERLARGE/((DUCTDIA/24)^2*PI*NUMBERFANS):GOTO 7100\r\n }\r\n else if (this.oldFlatDuctModel.ductType == AqsFlatDuctingShapeTypeEnum.HalfRound) {\r\n this._actualCrossSectionalVelocity = this.lowerLarge / (Math.pow(this.oldFlatDuctModel.ductDiameter / 24, 2) * Math.PI / 2 * this.numberFans);\r\n //7090 IF DUCTTYPE=2 THEN CSV=LOWERLARGE/((DUCTDIA/24)^2*(PI/2)*NUMBERFANS)\r\n }\r\n\r\n this._actualCrossSectionalVelocity = Math.floor(this._actualCrossSectionalVelocity + .5);\r\n //7100 CSV=INT(CSV+.5)\r\n\r\n this._actualSurfaceVelocity = (this.lowerLarge / this.numberFans) / this.surface;\r\n //SV=(LOWERLARGE/NUMBERFANS)/SURFACE\r\n\r\n this.fillDuctTableOld();\r\n let ftPerforated = 0;\r\n for (let i = 0; i <= 3; i++) {\r\n if (\r\n this.oldDuctTable[i].numberFansPerSide != 0\r\n &&\r\n (this.oldDuctTable[i].perfPerRun / 12 < ftPerforated\r\n || ftPerforated == 0)\r\n ) {\r\n ftPerforated = this.oldDuctTable[i].perfPerRun / 12;\r\n //7117 IF DUCT(PERFPERRUN,I)/12;\r\n\r\n @Input() _ductParams: AqsFlatDuctModel;\r\n @Input() _storageParams: FlatStorageParams;\r\n\r\n private ctx: CanvasRenderingContext2D;\r\n\r\n constructor() { }\r\n\r\n ngOnInit() {\r\n this.ctx = this.canvas.nativeElement.getContext('2d');\r\n this.drawDuct();\r\n }\r\n\r\n clearView() {\r\n if (this.ctx === undefined) {\r\n this.canvas.nativeElement.getContext('2d');\r\n }\r\n\r\n this.ctx.clearRect(0, 0, 745, 505);\r\n }\r\n\r\n drawDuct() {\r\n this.ctx.fillStyle = 'darkgrey';\r\n this.clearView();\r\n\r\n let xCenter = this.ctx.canvas.width / 2;\r\n let yCenter = this.ctx.canvas.height / 2;\r\n let biggest = this.ctx.canvas.width < this.ctx.canvas.height ? this.ctx.canvas.width : this.ctx.canvas.height;\r\n let scale = (this.ctx.canvas.width / this._storageParams.lenght) < (this.ctx.canvas.height / this._storageParams.width) ? (this.ctx.canvas.width - 75) / this._storageParams.lenght : ((this.ctx.canvas.height - 75) / this._storageParams.width);\r\n\r\n let fontSize = 24;\r\n this.ctx.font = `${fontSize}px serif`;\r\n let x = xCenter - this._storageParams.lenght / 2 * scale;\r\n let y = yCenter - this._storageParams.width * scale / 2;\r\n let w = xCenter + this._storageParams.lenght / 2 * scale - x;\r\n let h = yCenter + this._storageParams.width * scale / 2 - y;\r\n\r\n this.ctx.beginPath();\r\n this.ctx.rect(x, y, w, h);\r\n this.ctx.stroke();\r\n\r\n if (this._ductParams.far.numberFansPerSide !== 0) {\r\n for (let i = 0; i < this._ductParams.far.numberFansPerSide; i++) {\r\n let x1 = xCenter - this._storageParams.lenght / 2 * scale;\r\n let y1 = yCenter - this._storageParams.width * scale / 2;\r\n x1 += (this._ductParams.far.distanceFromEdge + i * this._ductParams.far.ctroctr - this._ductParams.ductDiameter / 2) / 12 * scale;\r\n let x2 = x1 + this._ductParams.ductDiameter / 12 * scale;\r\n let y2 = y1 + this._ductParams.far.solidPerRun / 12 * scale;\r\n let x3 = x1;\r\n let y3 = y2 + this._ductParams.far.perfPerRun / 12 * scale;\r\n\r\n this.ctx.beginPath();\r\n this.ctx.moveTo(x1, y1);\r\n this.ctx.lineTo(x2, y1);\r\n this.ctx.lineTo(x2, y2);\r\n this.ctx.lineTo(x1, y2);\r\n this.ctx.lineTo(x1, y1);\r\n this.ctx.stroke();\r\n\r\n this.ctx.beginPath();\r\n this.ctx.moveTo(x2, y2);\r\n this.ctx.lineTo(x2, y3);\r\n this.ctx.lineTo(x3, y3);\r\n this.ctx.lineTo(x3, y2);\r\n this.ctx.lineTo(x2, y2);\r\n this.ctx.fill();\r\n this.ctx.stroke();\r\n }\r\n }\r\n\r\n if (this._ductParams.near.numberFansPerSide !== 0) {\r\n for (let i = 0; i < this._ductParams.near.numberFansPerSide; i++) {\r\n let x1 = xCenter - this._storageParams.lenght / 2 * scale;\r\n let y1 = yCenter + this._storageParams.width * scale / 2;\r\n x1 += (this._ductParams.near.distanceFromEdge + i * this._ductParams.near.ctroctr - this._ductParams.ductDiameter / 2) / 12 * scale;\r\n let x2 = x1 + this._ductParams.ductDiameter / 12 * scale;\r\n let y2 = y1 - this._ductParams.near.solidPerRun / 12 * scale;\r\n let x3 = x1;\r\n let y3 = y2 - this._ductParams.near.perfPerRun / 12 * scale;\r\n\r\n this.ctx.beginPath();\r\n this.ctx.moveTo(x1, y1);\r\n this.ctx.lineTo(x2, y1);\r\n this.ctx.lineTo(x2, y2);\r\n this.ctx.lineTo(x1, y2);\r\n this.ctx.lineTo(x1, y1);\r\n this.ctx.stroke();\r\n\r\n this.ctx.beginPath();\r\n this.ctx.moveTo(x2, y2);\r\n this.ctx.lineTo(x2, y3);\r\n this.ctx.lineTo(x3, y3);\r\n this.ctx.lineTo(x3, y2);\r\n this.ctx.lineTo(x2, y2);\r\n this.ctx.fill();\r\n this.ctx.stroke();\r\n }\r\n }\r\n\r\n if (this._ductParams.front.numberFansPerSide !== 0) {\r\n for (let i = 0; i < this._ductParams.front.numberFansPerSide; i++) {\r\n let x1 = xCenter - this._storageParams.lenght / 2 * scale;\r\n let y1 = yCenter - this._storageParams.width / 2 * scale;\r\n y1 += (this._ductParams.front.distanceFromEdge + i * this._ductParams.front.ctroctr - this._ductParams.ductDiameter /2) / 12 * scale;\r\n let y2 = y1 + this._ductParams.ductDiameter / 12 * scale;\r\n let x2 = x1 + this._ductParams.front.solidPerRun / 12 * scale;\r\n let y3 = y1;\r\n let x3 = x2 + this._ductParams.front.perfPerRun / 12 * scale;\r\n\r\n this.ctx.beginPath();\r\n this.ctx.moveTo(x1, y1);\r\n this.ctx.lineTo(x2, y1);\r\n this.ctx.lineTo(x2, y2);\r\n this.ctx.lineTo(x1, y2);\r\n this.ctx.lineTo(x1, y1);\r\n this.ctx.stroke();\r\n\r\n this.ctx.beginPath();\r\n this.ctx.moveTo(x2, y2);\r\n this.ctx.lineTo(x2, y3);\r\n this.ctx.lineTo(x3, y3);\r\n this.ctx.lineTo(x3, y2);\r\n this.ctx.lineTo(x2, y2);\r\n this.ctx.fill();\r\n this.ctx.stroke();\r\n }\r\n }\r\n\r\n if (this._ductParams.rear.numberFansPerSide !== 0) {\r\n for (let i = 0; i < this._ductParams.rear.numberFansPerSide; i++) {\r\n let x1 = xCenter + this._storageParams.lenght / 2 * scale;\r\n let y1 = yCenter - this._storageParams.width / 2 * scale;\r\n y1 += (this._ductParams.rear.distanceFromEdge + i * this._ductParams.rear.ctroctr - this._ductParams.ductDiameter /2) / 12 * scale;\r\n let y2 = y1 + this._ductParams.ductDiameter / 12 * scale;\r\n let x2 = x1 - this._ductParams.rear.solidPerRun / 12 * scale;\r\n let y3 = y1;\r\n let x3 = x2 - this._ductParams.rear.perfPerRun / 12 * scale;\r\n\r\n this.ctx.beginPath();\r\n this.ctx.moveTo(x1, y1);\r\n this.ctx.lineTo(x2, y1);\r\n this.ctx.lineTo(x2, y2);\r\n this.ctx.lineTo(x1, y2);\r\n this.ctx.lineTo(x1, y1);\r\n this.ctx.stroke();\r\n\r\n this.ctx.beginPath();\r\n this.ctx.moveTo(x2, y2);\r\n this.ctx.lineTo(x2, y3);\r\n this.ctx.lineTo(x3, y3);\r\n this.ctx.lineTo(x3, y2);\r\n this.ctx.lineTo(x2, y2);\r\n this.ctx.fill();\r\n this.ctx.stroke();\r\n }\r\n }\r\n\r\n let bottomLabel = 'Near side';\r\n let leftLabel = 'Front';\r\n this.ctx.save();\r\n this.ctx.fillStyle = 'black';\r\n this.ctx.fillText(bottomLabel, xCenter - bottomLabel.length / 2 * fontSize / 2, yCenter + this._storageParams.width / 2 * scale + fontSize);\r\n this.ctx.translate(x - 5, yCenter + leftLabel.length / 2 * fontSize / 2);\r\n this.ctx.rotate((-90 * Math.PI / 180));\r\n this.ctx.fillText(leftLabel, 0, 0);\r\n this.ctx.restore();\r\n }\r\n}\r\n","export * from './aqs-flat-duct-view-tab.component';\r\n","export * from './aqs-flat-duct-design.component';\r\nexport * from './aqs-flat-duct-view-tab/aqs-flat-duct-view-tab.component';\r\n","import { Component, OnInit, Input, Output, ViewChild, EventEmitter, AfterViewInit, OnDestroy } from '@angular/core';\r\nimport { Subscription } from 'rxjs';\r\nimport { FormBuilder, FormControl, FormGroup, Validators } from '@angular/forms';\r\nimport { AqsConfirmPopupComponent } from '@popups';\r\nimport { FlatStorageParams } from '@models';\r\nimport { FlatStorageConst } from '../../../constants';\r\nimport { AQSFlatStorageTypesEnum } from '../../../enums';\r\nimport { AqsFlatViewTabComponent } from './aqs-flat-view-tab';\r\n\r\n@Component({\r\n selector: 'greensleeves-aqs-flat-storage-params',\r\n templateUrl: './aqs-flat-storage-params.component.html',\r\n styleUrls: []\r\n})\r\n\r\nexport class AqsFlatStorageParamsComponent implements OnInit, AfterViewInit, OnDestroy {\r\n @Input() _storageParams: FlatStorageParams;\r\n\r\n @Output() onChangedFlatConfiguration = new EventEmitter();\r\n\r\n @ViewChild(AqsConfirmPopupComponent, { read: false, static: false })\r\n private confirmModal: AqsConfirmPopupComponent;\r\n\r\n @ViewChild(AqsFlatViewTabComponent, { read: false, static: false })\r\n private _drawFlatStorage: AqsFlatViewTabComponent;\r\n\r\n _flatStorageTypes: {label: string, value: AQSFlatStorageTypesEnum} [] = [];\r\n _flatStorageForm: FormGroup;\r\n private confirmSubscription: Subscription;\r\n private oldCalculatedStorageParams: FlatStorageParams;\r\n\r\n //parameters\r\n _storageType: AQSFlatStorageTypesEnum;\r\n _width: number;\r\n _lenght: number;\r\n _height: number;\r\n _effectiveDepth: number;\r\n _buCapacityPile: number;\r\n _repose?: number;\r\n _rise?: number;\r\n _qAllHeight?: number\r\n _offsetLenght: number;\r\n _offsetWidth: number;\r\n _roof: number;\r\n\r\n\r\n constructor(private _formBuilder: FormBuilder) { }\r\n\r\n ngOnInit() {\r\n for (const [key, value] of Object.entries(FlatStorageConst)) {\r\n this._flatStorageTypes.push({ label: value, value: Number(key)});\r\n }\r\n\r\n this._storageType = this._storageParams.storageType;\r\n this._width = this._getRoundToOneDecimalPlaces(this._storageParams.width);\r\n this._lenght = this._getRoundToOneDecimalPlaces(this._storageParams.lenght);\r\n this._height = this._getRoundToOneDecimalPlaces(this._storageParams.height);\r\n this._effectiveDepth = this._getRoundToOneDecimalPlaces(this._storageParams.effectiveDepth);\r\n this._buCapacityPile = this._getRoundToOneDecimalPlaces(this._storageParams.buCapacityPile);\r\n this._repose = this._getRoundToOneDecimalPlaces(this._storageParams.repose);\r\n this._rise = this._getRoundToOneDecimalPlaces(this._storageParams.rise);\r\n this._qAllHeight = this._getRoundToOneDecimalPlaces(this._storageParams.qAllHeight);\r\n this._offsetLenght = this._getRoundToOneDecimalPlaces(this._storageParams.offsetLenght);\r\n this._offsetWidth = this._getRoundToOneDecimalPlaces(this._storageParams.offsetWidth);\r\n this._roof = this._getRoundToOneDecimalPlaces(this._storageParams.roof);\r\n\r\n this.oldCalcualtionsOnInit();\r\n this.initFrom();\r\n }\r\n\r\n oldCalcualtionsOnInit() {\r\n this.oldCalculatedStorageParams = new FlatStorageParams();\r\n this.oldCalculatedStorageParams.width = this._storageParams.width;\r\n this.oldCalculatedStorageParams.lenght = this._storageParams.lenght;\r\n this.oldCalculatedStorageParams.height = this._storageParams.height;\r\n this.oldCalculatedStorageParams.offsetLenght = this._storageParams.offsetLenght;\r\n this.oldCalculatedStorageParams.offsetWidth = this._storageParams.offsetWidth;\r\n this.oldCalculatedStorageParams.roof = this._storageParams.roof;\r\n\r\n this.oldCalculatedStorageParams.getCalculateCapacity();\r\n }\r\n\r\n ngAfterViewInit() {\r\n this.confirmSubscription = this.confirmModal.confirm.subscribe(confirm => {\r\n if (!confirm) {\r\n this._buCapacityPile = this._getRoundToOneDecimalPlaces(this._storageParams.buCapacityPile);\r\n this._effectiveDepth = this._getRoundToOneDecimalPlaces(this._storageParams.effectiveDepth);\r\n } else {\r\n this._storageParams.buCapacityPile = this._buCapacityPile;\r\n this._storageParams.effectiveDepth = this._effectiveDepth;\r\n }\r\n });\r\n }\r\n\r\n ngOnDestroy() {\r\n this.confirmSubscription.unsubscribe();\r\n }\r\n\r\n onChangeStorageType() {\r\n if (this._storageType != this._storageParams.storageType){\r\n this._storageParams.storageType = this._storageType;\r\n }\r\n\r\n //make changes on parameters when storage type changes\r\n this._storageParams.onChangeStorageType();\r\n this._buCapacityPile = this._getRoundToOneDecimalPlaces(this._storageParams.buCapacityPile);\r\n this._effectiveDepth = this._getRoundToOneDecimalPlaces(this._storageParams.effectiveDepth);\r\n this.oldCalculatedStorageParams.buCapacityPile = this._storageParams.buCapacityPile;\r\n this.oldCalculatedStorageParams.effectiveDepth = this._storageParams.effectiveDepth;\r\n this._qAllHeight = this._getRoundToOneDecimalPlaces(this._storageParams.qAllHeight);\r\n this._repose = this._getRoundToOneDecimalPlaces(this._storageParams.repose);\r\n this._rise = this._getRoundToOneDecimalPlaces(this._storageParams.rise);\r\n this._width =this._getRoundToOneDecimalPlaces(this._storageParams.width);\r\n this._lenght =this._getRoundToOneDecimalPlaces(this._storageParams.lenght);\r\n this._height =this._getRoundToOneDecimalPlaces(this._storageParams.height);\r\n\r\n this.drawStorage()\r\n this.changeFlatConfiguration();\r\n }\r\n\r\n getFlatStorageType(value: AQSFlatStorageTypesEnum): string {\r\n return this._flatStorageTypes.find(x => x.value === value).label;\r\n }\r\n\r\n onChangeWidth() {\r\n if (this._width == null || this._width <= 1){\r\n this._width = this._getRoundToOneDecimalPlaces(this._storageParams.width);\r\n }\r\n else if (this._width != this._storageParams.width) {\r\n if (this._width > 999999) {\r\n this._width = 999999;\r\n }\r\n\r\n this._storageParams.width = this._width;\r\n this._storageParams.onChangeWidth();\r\n\r\n if (this._storageType !== AQSFlatStorageTypesEnum.Flat) {\r\n this._qAllHeight = this._getRoundToOneDecimalPlaces(this._storageParams.qAllHeight);\r\n }\r\n\r\n this.getCalculateCapacity();\r\n this.drawStorage();\r\n this.changeFlatConfiguration();\r\n }\r\n }\r\n\r\n onChangeLenght() {\r\n if (this._lenght == null || this._lenght <= 1){\r\n this._lenght = this._getRoundToOneDecimalPlaces(this._storageParams.lenght);\r\n }\r\n else if (this._storageParams.lenght != this._lenght) {\r\n if (this._lenght > 999999) {\r\n this._lenght = 999999;\r\n }\r\n\r\n this._storageParams.lenght = this._lenght;\r\n this._storageParams.onChangeLenght();\r\n\r\n if (this._storageType !== AQSFlatStorageTypesEnum.Flat) {\r\n this._qAllHeight = this._getRoundToOneDecimalPlaces(this._storageParams.qAllHeight);\r\n }\r\n\r\n this.getCalculateCapacity();\r\n this.drawStorage();\r\n this.changeFlatConfiguration();\r\n }\r\n }\r\n\r\n onChangeHeight() {\r\n if (this._height == null || this._height <= 1){\r\n this._height = this._getRoundToOneDecimalPlaces(this._storageParams.height);\r\n }\r\n else if (this._height != this._storageParams.height) {\r\n if (this._height > 999999) {\r\n this._height = 999999;\r\n }\r\n\r\n //set all height param consider on height change\r\n if (this._height >= this._storageParams.height){\r\n this._qAllHeight = this._getRoundToOneDecimalPlaces(this._storageParams.qAllHeight + this._height - (+this._storageParams.height));\r\n }\r\n else {\r\n this._qAllHeight -= this._getRoundToOneDecimalPlaces(this._storageParams.height - this._height);\r\n }\r\n\r\n //capacity will changes and redraw in QAllHeight\r\n this._storageParams.height = this._height;\r\n this.onChangeQAllHeight();\r\n this.drawStorage();\r\n this.changeFlatConfiguration();\r\n }\r\n }\r\n\r\n onChangeBuCapacity() {\r\n if (this._buCapacityPile == null || this._buCapacityPile <= 1){\r\n this._buCapacityPile = this._getRoundToOneDecimalPlaces(this._storageParams.buCapacityPile);\r\n }\r\n else if (this._buCapacityPile != this._getRoundToOneDecimalPlaces(this._storageParams.buCapacityPile)) {\r\n //popup\r\n this.confirmModal.showForConfirmCapacityAndEffDepth(\r\n this._effectiveDepth,\r\n this.oldCalculatedStorageParams.effectiveDepth,\r\n this._buCapacityPile,\r\n this.oldCalculatedStorageParams.buCapacityPile\r\n );\r\n this.changeFlatConfiguration();\r\n }\r\n }\r\n\r\n onChangeEffectiveDepth() {\r\n if (this._effectiveDepth == null || this._effectiveDepth <= 1){\r\n this._effectiveDepth = this._getRoundToOneDecimalPlaces(this._storageParams.effectiveDepth);\r\n }\r\n else if (this._effectiveDepth != this._getRoundToOneDecimalPlaces(this._storageParams.effectiveDepth)) {\r\n //popup\r\n this.confirmModal.showForConfirmCapacityAndEffDepth(\r\n this._effectiveDepth,\r\n this.oldCalculatedStorageParams.effectiveDepth,\r\n this._buCapacityPile,\r\n this.oldCalculatedStorageParams.buCapacityPile\r\n );\r\n this.changeFlatConfiguration();\r\n }\r\n }\r\n\r\n onChangeRise() {\r\n if (this._rise == null || this._rise <= 1 || this._rise > 67){\r\n this._rise = this._getRoundToOneDecimalPlaces(this._storageParams.rise);\r\n }\r\n else if (this._rise != this._storageParams.rise) {\r\n this._storageParams.rise = this._rise;\r\n this._storageParams.onChangeRise();\r\n this._qAllHeight = this._getRoundToOneDecimalPlaces(this._storageParams.qAllHeight);\r\n this._repose = this._getRoundToOneDecimalPlaces(this._storageParams.repose);\r\n this.getCalculateCapacity();\r\n this.drawStorage();\r\n this.changeFlatConfiguration();\r\n }\r\n }\r\n\r\n onChangeRepose() {\r\n if (this._repose == null || this._repose <= 1 || this._repose > 79){\r\n this._repose = this._getRoundToOneDecimalPlaces(this._storageParams.repose)\r\n }\r\n else if (this._storageParams.repose != this._repose) {\r\n this._storageParams.repose = this._repose;\r\n this._storageParams.onChangeRepose();\r\n this._qAllHeight = this._getRoundToOneDecimalPlaces(this._storageParams.qAllHeight);\r\n this._rise = this._getRoundToOneDecimalPlaces(this._storageParams.rise);\r\n this.getCalculateCapacity();\r\n this.drawStorage();\r\n this.changeFlatConfiguration();\r\n }\r\n }\r\n\r\n onChangeQAllHeight() {\r\n if (this._qAllHeight == null || this._qAllHeight <= this._height){\r\n this._qAllHeight = this._getRoundToOneDecimalPlaces(this._storageParams.qAllHeight);\r\n }\r\n else if (this._qAllHeight != this._storageParams.qAllHeight) {\r\n this._storageParams.qAllHeight = this._getRoundToOneDecimalPlaces(this._qAllHeight);\r\n this._storageParams.onChangeQAllHeight();\r\n this._rise = this._getRoundToOneDecimalPlaces(this._storageParams.rise);\r\n this._repose = this._getRoundToOneDecimalPlaces(this._storageParams.repose);\r\n this.getCalculateCapacity();\r\n this.drawStorage();\r\n this.changeFlatConfiguration();\r\n }\r\n }\r\n\r\n getCalculateCapacity() {\r\n this._storageParams.getCalculateCapacity();\r\n this._buCapacityPile = this._getRoundToOneDecimalPlaces(this._storageParams.buCapacityPile);\r\n this._effectiveDepth = this._getRoundToOneDecimalPlaces(this._storageParams.effectiveDepth);\r\n }\r\n\r\n getCalculateRoofParams() {\r\n this._storageParams.getCalculateRoofParams();\r\n this._qAllHeight = this._getRoundToOneDecimalPlaces(this._storageParams.qAllHeight);\r\n this._repose = this._getRoundToOneDecimalPlaces(this._storageParams.repose);\r\n this._rise = this._getRoundToOneDecimalPlaces(this._storageParams.rise);\r\n }\r\n\r\n private initFrom() {\r\n this._flatStorageForm = this._formBuilder.group({\r\n width: new FormControl(100, Validators.compose([\r\n Validators.required,\r\n Validators.max(99999),\r\n ])),\r\n length: new FormControl(120, Validators.compose([\r\n Validators.required,\r\n Validators.max(99999),\r\n ])),\r\n height: new FormControl(10, Validators.compose([\r\n Validators.required,\r\n Validators.max(99999),\r\n ])),\r\n });\r\n }\r\n\r\n drawStorage() {\r\n this._drawFlatStorage.clearView();\r\n this._drawFlatStorage.drawStorage();\r\n }\r\n\r\n private _getRoundToOneDecimalPlaces(number: number): number {\r\n return Math.round((number + Number.EPSILON) * 10) / 10;\r\n }\r\n private _getRoundToZeroDecimalPlaces(number: number): number {\r\n return Math.round((number + Number.EPSILON));\r\n }\r\n\r\n changeFlatConfiguration() {\r\n this.onChangedFlatConfiguration.emit();\r\n }\r\n}\r\n\r\n","import { Component, ElementRef, Input, OnInit, ViewChild } from '@angular/core';\r\nimport { FlatStorageParams } from '@models';\r\nimport { AQSFlatStorageTypesEnum } from '../../../../enums';\r\n\r\n@Component({\r\n selector: 'greensleeves-aqs-flat-view-tab',\r\n templateUrl: './aqs-flat-view-tab.component.html',\r\n styleUrls: []\r\n})\r\nexport class AqsFlatViewTabComponent implements OnInit {\r\n @ViewChild('viewCanvas', { static: true })\r\n canvas: ElementRef;\r\n\r\n @Input() _storageParams: FlatStorageParams;\r\n\r\n private ctx: CanvasRenderingContext2D;\r\n constructor() { }\r\n\r\n ngOnInit() {\r\n this.ctx = this.canvas.nativeElement.getContext('2d');\r\n this.drawStorage();\r\n }\r\n\r\n private getCalculateCoef(): number {\r\n let biggestSide = this._storageParams.width;\r\n if (biggestSide < this._storageParams.lenght) biggestSide = this._storageParams.lenght;\r\n if (biggestSide < this._storageParams.height) biggestSide = this._storageParams.height;\r\n\r\n if (this._storageParams.height == biggestSide) {\r\n if (this._storageParams.lenght / 5 >= this._storageParams.width || this._storageParams.width / 5 >= this._storageParams.lenght) {\r\n return this._storageParams.lenght > this._storageParams.width ? this.ctx.canvas.width / (2 * biggestSide + 2 * this._storageParams.lenght) : this.ctx.canvas.width / (2 * biggestSide + 2 * this._storageParams.width);\r\n }\r\n return this.ctx.canvas.width / (2 * biggestSide + this._storageParams.lenght + this._storageParams.width);\r\n }\r\n else return this.ctx.canvas.width / (biggestSide + this._storageParams.lenght + this._storageParams.width);\r\n }\r\n\r\n clearView() {\r\n this.ctx.clearRect(0, 0, window.innerWidth, window.innerHeight);\r\n }\r\n\r\n drawStorage() {\r\n this.clearView();\r\n\r\n let k = this.getCalculateCoef();\r\n if (\r\n this._storageParams.width < this._storageParams.lenght + this._storageParams.lenght/5\r\n && this._storageParams.width > this._storageParams.lenght - this._storageParams.lenght/5) {\r\n k = k * 2 / 3;\r\n }\r\n let x = (this.ctx.canvas.width * 3) / 7;\r\n let y = (this.ctx.canvas.height * 6) / 9;\r\n let wx = this._storageParams.width * k;\r\n let wy = this._storageParams.lenght * k;\r\n let h = this._storageParams.height * k;\r\n let roofY = (this._storageParams.qAllHeight - this._storageParams.height) * k;\r\n let kl = wy / wx;\r\n\r\n if (wx > wy) {\r\n x += wx * 0.3;\r\n }\r\n\r\n\r\n this.ctx.beginPath();\r\n this.ctx.moveTo(x, y);\r\n this.ctx.lineTo(x - wx, y - wx * 0.5);\r\n this.ctx.lineTo(x - wx, y - h - wx * 0.5);\r\n this.ctx.lineTo(x, y - h);\r\n this.ctx.closePath();\r\n this.ctx.strokeStyle = \"#000000\";\r\n this.ctx.stroke();\r\n\r\n this.ctx.beginPath();\r\n this.ctx.moveTo(x, y);\r\n this.ctx.lineTo(x + wy, y - wy * 0.5);\r\n this.ctx.lineTo(x + wy, y - h - wy * 0.5);\r\n this.ctx.lineTo(x, y - h);\r\n this.ctx.closePath();\r\n this.ctx.strokeStyle = \"#000000\";\r\n this.ctx.stroke();\r\n\r\n if (this._storageParams.storageType == AQSFlatStorageTypesEnum.Flat) {\r\n this.ctx.beginPath();\r\n this.ctx.moveTo(x, y - h);\r\n this.ctx.lineTo(x - wx, y - h - wx * 0.5);\r\n this.ctx.lineTo(x - wx + wy, y - h - (wx * 0.5 + wy * 0.5));\r\n this.ctx.lineTo(x + wy, y - h - wy * 0.5);\r\n this.ctx.closePath();\r\n this.ctx.strokeStyle = \"#000000\";\r\n this.ctx.stroke();\r\n }\r\n\r\n if (this._storageParams.storageType == AQSFlatStorageTypesEnum.Peaked) {\r\n this.ctx.beginPath();\r\n this.ctx.moveTo(x, y - h);\r\n this.ctx.lineTo(x - wx, y - h - wx * 0.5);\r\n this.ctx.lineTo(x - wx + wy, y - h - (wx * 0.5 + wy * 0.5));\r\n\r\n this.ctx.moveTo(x, y - h);\r\n this.ctx.lineTo(x - wx / 2, y - h - wx / 4 - roofY);\r\n this.ctx.lineTo(x - wx, y - h - wx * 0.5);\r\n this.ctx.moveTo(x - wx / 2, y - h - wx / 4 - roofY);\r\n this.ctx.lineTo(x - wx / 2 + wy, y - h - wx / 4 - wy / 2 - roofY);\r\n this.ctx.lineTo(x + wy, y - h - wy * 0.5);\r\n this.ctx.moveTo(x - wx / 2 + wy, y - h - wx / 4 - wy / 2 - roofY);\r\n this.ctx.lineTo(x - wx + wy, y - h - (wx * 0.5 + wy * 0.5));\r\n\r\n this.ctx.stroke();\r\n }\r\n\r\n if (this._storageParams.storageType == AQSFlatStorageTypesEnum.Sloped) {\r\n this.ctx.beginPath();\r\n this.ctx.moveTo(x, y - h);\r\n this.ctx.lineTo(x - wx, y - h - wx * 0.5);\r\n this.ctx.lineTo(x - wx + wy, y - h - (wx * 0.5 + wy * 0.5));\r\n this.ctx.lineTo(x + wy, y - h - wy * 0.5);\r\n\r\n this.ctx.moveTo(x, y - h);\r\n this.ctx.lineTo(x - wx / 2 + wy / 4, y - h - wx / 4 - wy / 8 - roofY);\r\n this.ctx.lineTo(x - wx, y - h - wx * 0.5);\r\n this.ctx.moveTo(x - wx / 2 + wy / 4, y - h - wx / 4 - wy / 8 - roofY);\r\n this.ctx.lineTo(x + (wy * 3) / 4 - wx / 2, y - h - (wy * 3) / 8 - wx / 4 - roofY);\r\n this.ctx.lineTo(x - wx + wy, y - h - (wx * 0.5 + wy * 0.5));\r\n this.ctx.moveTo(x + (wy * 3) / 4 - wx / 2, y - h - (wy * 3) / 8 - wx / 4 - roofY);\r\n this.ctx.lineTo(x + wy, y - h - wy * 0.5);\r\n\r\n this.ctx.stroke();\r\n }\r\n\r\n if (this._storageParams.storageType == AQSFlatStorageTypesEnum.Truncated) {\r\n this.ctx.beginPath();\r\n this.ctx.moveTo(x, y - h);\r\n this.ctx.lineTo(x - wx, y - h - wx * 0.5);\r\n this.ctx.lineTo(x - wx + wy, y - h - (wx * 0.5 + wy * 0.5));\r\n this.ctx.lineTo(x + wy, y - h - wy * 0.5);\r\n\r\n this.ctx.moveTo(x, y - h);\r\n this.ctx.lineTo(x + wy / 4 - wx / 4, y - h - wy / 8 - wx / 8 - roofY);\r\n this.ctx.moveTo(x - wx, y - h - wx * 0.5);\r\n this.ctx.lineTo(x - (wx * 3) / 4 + wy / 4, y - h - (wx * 3) / 8 - wy / 8 - roofY);\r\n this.ctx.lineTo(x + wy / 4 - wx / 4, y - h - wy / 8 - wx / 8 - roofY);\r\n this.ctx.moveTo(x - (wx * 3) / 4 + wy / 4, y - h - (wx * 3) / 8 - wy / 8 - roofY);\r\n this.ctx.lineTo(x - (wx * 3) / 4 + (wy * 3) / 4, y - h - (wx * 3) / 8 - (wy * 3) / 8 - roofY);\r\n this.ctx.lineTo(x - wx + wy, y - h - (wx * 0.5 + wy * 0.5));\r\n this.ctx.moveTo(x - (wx * 3) / 4 + (wy * 3) / 4, y - h - (wx * 3) / 8 - (wy * 3) / 8 - roofY);\r\n this.ctx.lineTo(x + (wy * 3) / 4 - wx / 4, y - h - (wy * 3) / 8 - wx / 8 - roofY);\r\n this.ctx.lineTo(x + wy, y - h - wy * 0.5);\r\n this.ctx.moveTo(x + (wy * 3) / 4 - wx / 4, y - h - (wy * 3) / 8 - wx / 8 - roofY);\r\n this.ctx.lineTo(x + wy / 4 - wx / 4, y - h - wy / 8 - wx / 8 - roofY);\r\n\r\n this.ctx.stroke();\r\n }\r\n }\r\n\r\n}\r\n","export * from './aqs-flat-view-tab.component'\r\n","import { switchMap } from 'rxjs/operators';\r\nimport { Component, OnInit, ViewChild } from '@angular/core';\r\nimport { ActivatedRoute } from '@angular/router';\r\n\r\nimport {\r\n AqsAirflowViewModel, AqsCoverSheetModel,\r\n AqsExhausterViewModel, AqsFlatDuctModel,\r\n AqsSelectedFanModel, FlatStorageParams,\r\n IncludeFlowOption, QuoteFlatStorageViewModel,\r\n QuoteFlatStorageReportModel\r\n} from '@models';\r\nimport { AqsFlushDuctDesignEnum, AqsPagesEnum, AqsSessionTypeEnum } from '../../enums';\r\nimport { AqsPageLabel } from '../../constants';\r\nimport { AqsAirflowDatasourceService, AqsQuoteStorageDataSourceService } from '../../services';\r\nimport { AqsCoverSheetComponent } from '../common';\r\nimport { ErrorCodeEnum, ErrorModel } from '../../../common';\r\nimport { AqsComputationSheetResavePopupComponent, ComputationSheetReportPopupComponent, ComputationSheetShareReportPopupComponent } from '@popups';\r\n\r\n@Component({\r\n selector: 'greensleeves-aqs-flat-storage-tab',\r\n templateUrl: './aqs-flat-storage-tab.component.html',\r\n styles: []\r\n})\r\nexport class AqsFlatStorageTabComponent implements OnInit {\r\n @ViewChild(AqsCoverSheetComponent, { read: false, static: false })\r\n private coverSheetComponent: AqsCoverSheetComponent;\r\n\r\n @ViewChild(ComputationSheetReportPopupComponent, { read: false, static: false })\r\n private _exportReportModal: ComputationSheetReportPopupComponent;\r\n\r\n @ViewChild(AqsComputationSheetResavePopupComponent, { read: false, static: false })\r\n private reSaveModal: AqsComputationSheetResavePopupComponent;\r\n\r\n @ViewChild(ComputationSheetShareReportPopupComponent, { read: false, static: false })\r\n private _shareReportModal: ComputationSheetShareReportPopupComponent;\r\n\r\n _quoteFlatStorage: QuoteFlatStorageViewModel;\r\n _pageIndex: AqsPagesEnum;\r\n _pageEnum = AqsPagesEnum;\r\n _coverSheetPageIndex: AqsPagesEnum = AqsPagesEnum.CoverSheet;\r\n _pages: { index: AqsPagesEnum, label: string }[] = [];\r\n _currentPageError: boolean = false;\r\n _isSaveRun: boolean = false;\r\n _isLoad: boolean = false;\r\n _isSuccessSaved: boolean = false;\r\n _isChangedTables: boolean = false;\r\n\r\n private title: string = 'Save Flat Storage Quote';\r\n\r\n constructor(private _aqsAirflowService: AqsAirflowDatasourceService, private _route: ActivatedRoute,\r\n private _quoteDataService: AqsQuoteStorageDataSourceService) { }\r\n\r\n async ngOnInit() {\r\n this._aqsAirflowService.getAllFanTypesWithFans();\r\n this._quoteDataService.getAllComputationSheetForBinding();\r\n\r\n this._isLoad = true;\r\n this._pages.push({ index: AqsPagesEnum.FlatStorageConfiguration, label: AqsPageLabel[AqsPagesEnum.FlatStorageConfiguration] });\r\n this._quoteFlatStorage = new QuoteFlatStorageViewModel();\r\n this._quoteFlatStorage.commodities = [];\r\n this._quoteFlatStorage.flatStorage = new FlatStorageParams();\r\n\r\n let quoteId: number;\r\n this._route.queryParams.subscribe((queryParam: any) => {\r\n quoteId = queryParam['id'];\r\n });\r\n\r\n if (!isNaN(quoteId)) {\r\n let result = await this._quoteDataService.getQuoteFlatStorage(quoteId);\r\n if (result) {\r\n if (!(result instanceof ErrorModel)) {\r\n let quote = result as QuoteFlatStorageViewModel;\r\n this._quoteFlatStorage.id = quote.id;\r\n this._quoteFlatStorage.session = quote.session;\r\n this._quoteFlatStorage.linkComputationSheetId = quote.linkComputationSheetId;\r\n this._quoteFlatStorage.airflowConfiguration = new AqsAirflowViewModel();\r\n Object.assign(this._quoteFlatStorage.airflowConfiguration, result.airflowConfiguration);\r\n this._quoteFlatStorage.airflowConfiguration.airflowData = [];\r\n Object.assign(this._quoteFlatStorage.airflowConfiguration.airflowData, result.airflowConfiguration.airflowData);\r\n this._quoteFlatStorage.airflowConfiguration.selectedFan = result.airflowConfiguration.selectedFan;\r\n this._quoteFlatStorage.coverSheet = new AqsCoverSheetModel();\r\n Object.assign(this._quoteFlatStorage.coverSheet, result.coverSheet);\r\n Object.assign(this._quoteFlatStorage.commodities, result.commodities);\r\n Object.assign(this._quoteFlatStorage.flatStorage, result.flatStorage);\r\n this._quoteFlatStorage.includeFlowOption = new IncludeFlowOption();\r\n Object.assign(this._quoteFlatStorage.includeFlowOption, result.includeFlowOption);\r\n this._quoteFlatStorage.includeFlowOption.includeDesign = result.includeFlowOption.includeDesign;\r\n this._pageIndex = AqsPagesEnum.FlatStorageConfiguration;\r\n\r\n if (result.exhausterSheet) {\r\n this._quoteFlatStorage.exhausterSheet = new AqsExhausterViewModel();\r\n Object.assign(this._quoteFlatStorage.exhausterSheet, result.exhausterSheet);\r\n }\r\n\r\n if (result.flatDuctModel) {\r\n this._quoteFlatStorage.flatDuctModel = new AqsFlatDuctModel();\r\n Object.assign(this._quoteFlatStorage.flatDuctModel, result.flatDuctModel);\r\n }\r\n\r\n this.fillPagesList();\r\n }\r\n else if (result instanceof ErrorModel && (result.code == ErrorCodeEnum.PermissionError || result.code == ErrorCodeEnum.QuoteNotFound)) {\r\n console.log(result.errors);\r\n }\r\n }\r\n }\r\n\r\n this._quoteFlatStorage.session = AqsSessionTypeEnum.FlatSessionType;\r\n this._pageIndex = AqsPagesEnum.FlatStorageConfiguration;\r\n this._isLoad = false;\r\n }\r\n\r\n fillPagesList() {\r\n if (this._quoteFlatStorage.airflowConfiguration)\r\n this._pages.push({ index: AqsPagesEnum.DetermineTargetAirflow, label: AqsPageLabel[AqsPagesEnum.DetermineTargetAirflow] });\r\n if (this._quoteFlatStorage.exhausterSheet)\r\n this._pages.push({ index: AqsPagesEnum.ExhausterRecommendations, label: AqsPageLabel[AqsPagesEnum.ExhausterRecommendations] });\r\n if (this._quoteFlatStorage.flatDuctModel)\r\n this._pages.push({ index: AqsPagesEnum.DuctDesign, label: AqsPageLabel[AqsPagesEnum.DuctDesign] });\r\n if (this._quoteFlatStorage.coverSheet)\r\n this._pages.push({ index: AqsPagesEnum.CoverSheet, label: AqsPageLabel[AqsPagesEnum.CoverSheet] });\r\n }\r\n\r\n async onClickSaveButton() {\r\n if (this.coverSheetComponent.checkModelBeforeSave()) {\r\n if (this._quoteFlatStorage.id == undefined || this._quoteFlatStorage.id == 0) {\r\n this._isSaveRun = true;\r\n let result = await this._quoteDataService.addQuoteFlatStorage(this._quoteFlatStorage);\r\n if (!(result instanceof ErrorModel)) {\r\n this._isSuccessSaved = true;\r\n setTimeout(() => { this._isSuccessSaved = false; }, 3000);\r\n this._isChangedTables = false;\r\n this._quoteFlatStorage = result;\r\n } else {\r\n console.log(result);\r\n }\r\n this._isSaveRun = false;\r\n }\r\n else {\r\n this.reSaveModal.showConfirmPopup(this.title);\r\n }\r\n }\r\n }\r\n\r\n async editQuote() {\r\n if (this.coverSheetComponent.checkModelBeforeSave()) {\r\n this._isSaveRun = true;\r\n let result = await this._quoteDataService.editFlatStorage(this._quoteFlatStorage);\r\n if (!(result instanceof ErrorModel)) {\r\n this._isSuccessSaved = true;\r\n setTimeout(() => { this._isSuccessSaved = false; }, 3000);\r\n this._isChangedTables = false;\r\n this._quoteFlatStorage = result;\r\n } else {\r\n console.log(result);\r\n }\r\n this._isSaveRun = false;\r\n }\r\n }\r\n\r\n async saveAsNewQuote() {\r\n this._quoteFlatStorage.id = 0;\r\n this._quoteFlatStorage.coverSheet.id = 0;\r\n this._quoteFlatStorage.flatStorage.id = 0;\r\n this._quoteFlatStorage.airflowConfiguration.id = 0;\r\n this._quoteFlatStorage.airflowConfiguration.airflowData.forEach(item => {\r\n item.id = 0;\r\n });\r\n\r\n if (this._quoteFlatStorage.includeFlowOption.includeExhauster) {\r\n this._quoteFlatStorage.exhausterSheet.id = 0;\r\n }\r\n\r\n if (this._quoteFlatStorage.includeFlowOption.includeDesign == AqsFlushDuctDesignEnum.Duct) {\r\n this._quoteFlatStorage.flatDuctModel.id = 0;\r\n this._quoteFlatStorage.flatDuctModel.far.id = 0;\r\n this._quoteFlatStorage.flatDuctModel.front.id = 0;\r\n this._quoteFlatStorage.flatDuctModel.near.id = 0;\r\n this._quoteFlatStorage.flatDuctModel.rear.id = 0;\r\n }\r\n this.onClickSaveButton();\r\n }\r\n\r\n onChangePage(newPageIndex: AqsPagesEnum) {\r\n this._pageIndex = newPageIndex;\r\n }\r\n\r\n onBackPage() {\r\n let currentPageindex = this._pages.findIndex(p => p.index == this._pageIndex);\r\n if (currentPageindex != 0) {\r\n this._pageIndex = this._pages[--currentPageindex].index;\r\n }\r\n }\r\n\r\n onNextPage() {\r\n switch (this._pageIndex) {\r\n case AqsPagesEnum.FlatStorageConfiguration:\r\n if (!this._currentPageError && this._quoteFlatStorage.commodities.length > 0) {\r\n if (!this._quoteFlatStorage.airflowConfiguration) {\r\n this._quoteFlatStorage.commodities.sort((a, b) => { return a.name.localeCompare(b.name) });\r\n this._quoteFlatStorage.airflowConfiguration = new AqsAirflowViewModel();\r\n }\r\n if (!this._quoteFlatStorage.includeFlowOption) this._quoteFlatStorage.includeFlowOption = new IncludeFlowOption();\r\n this.addedNextPage(AqsPagesEnum.DetermineTargetAirflow);\r\n }\r\n break;\r\n case AqsPagesEnum.DetermineTargetAirflow:\r\n if (this.checkCurrentPage()) {\r\n if (this._quoteFlatStorage.includeFlowOption.includeExhauster) {\r\n if (!this._quoteFlatStorage.exhausterSheet) this._quoteFlatStorage.exhausterSheet = new AqsExhausterViewModel();\r\n this.addedNextPage(AqsPagesEnum.ExhausterRecommendations);\r\n break;\r\n }\r\n else if (this._quoteFlatStorage.includeFlowOption.includeDesign) {\r\n if (!this._quoteFlatStorage.flatDuctModel) this._quoteFlatStorage.flatDuctModel = new AqsFlatDuctModel();\r\n this.addedNextPage(AqsPagesEnum.DuctDesign);\r\n break;\r\n }\r\n else {\r\n this._quoteFlatStorage.exhausterSheet = null;\r\n this._quoteFlatStorage.flatDuctModel = null;\r\n if (!this._quoteFlatStorage.coverSheet) this._quoteFlatStorage.coverSheet = new AqsCoverSheetModel();\r\n this.addedNextPage(AqsPagesEnum.CoverSheet);\r\n }\r\n }\r\n break;\r\n case AqsPagesEnum.ExhausterRecommendations:\r\n if (this.checkCurrentPage()) {\r\n if (this._quoteFlatStorage.includeFlowOption.includeDesign == AqsFlushDuctDesignEnum.Duct) {\r\n if (!this._quoteFlatStorage.flatDuctModel) this._quoteFlatStorage.flatDuctModel = new AqsFlatDuctModel();\r\n this.addedNextPage(AqsPagesEnum.DuctDesign);\r\n break;\r\n } else {\r\n this._quoteFlatStorage.flatDuctModel = null;\r\n if (!this._quoteFlatStorage.coverSheet) this._quoteFlatStorage.coverSheet = new AqsCoverSheetModel();\r\n this.addedNextPage(AqsPagesEnum.CoverSheet);\r\n }\r\n }\r\n break;\r\n case AqsPagesEnum.DuctDesign:\r\n if (this.checkCurrentPage()) {\r\n if (!this._quoteFlatStorage.coverSheet) this._quoteFlatStorage.coverSheet = new AqsCoverSheetModel();\r\n this.addedNextPage(AqsPagesEnum.CoverSheet);\r\n }\r\n break;\r\n };\r\n }\r\n\r\n checkCurrentPage() {\r\n switch (this._pageIndex) {\r\n case AqsPagesEnum.FlatStorageConfiguration:\r\n return !this._currentPageError && this._quoteFlatStorage.commodities.length > 0;\r\n case AqsPagesEnum.DetermineTargetAirflow:\r\n return this._quoteFlatStorage.airflowConfiguration.airflowData.length > 0 && !this._quoteFlatStorage.airflowConfiguration.airflowData.some(m => m.kcfm == -1 || m.kcfm == null);\r\n case AqsPagesEnum.ExhausterRecommendations:\r\n return !this._currentPageError;\r\n case AqsPagesEnum.DuctDesign:\r\n return !this._currentPageError;\r\n default:\r\n return true;\r\n }\r\n }\r\n\r\n changeQuoteModel() {\r\n this._isChangedTables = true;\r\n switch (this._pageIndex) {\r\n case AqsPagesEnum.FlatStorageConfiguration:\r\n this.removeNextPages(AqsPagesEnum.FlatStorageConfiguration);\r\n this._quoteFlatStorage.airflowConfiguration = null;\r\n this._quoteFlatStorage.exhausterSheet = null;\r\n this._quoteFlatStorage.flatDuctModel = null;\r\n break;\r\n case AqsPagesEnum.DetermineTargetAirflow:\r\n this.removeNextPages(AqsPagesEnum.DetermineTargetAirflow);\r\n this._quoteFlatStorage.exhausterSheet = null;\r\n this._quoteFlatStorage.flatDuctModel = null;\r\n break;\r\n case AqsPagesEnum.ExhausterRecommendations:\r\n break;\r\n case AqsPagesEnum.DuctDesign:\r\n break;\r\n }\r\n }\r\n\r\n changedFlowOptions() {\r\n if (this._pageIndex == AqsPagesEnum.DetermineTargetAirflow) {\r\n this.removeNextPages(AqsPagesEnum.DetermineTargetAirflow);\r\n }\r\n }\r\n\r\n onClickExportReport() {\r\n let model = this.buildReportModel();\r\n this._exportReportModal.showDownloadQuoteFlatStorageReport(model);\r\n }\r\n\r\n onClickShareReport() {\r\n let model = this.buildReportModel();\r\n this._shareReportModal.showDownloadQuoteFlatStorageReport(model);\r\n }\r\n\r\n private removeNextPages(fromPages: AqsPagesEnum) {\r\n let index = this._pages.findIndex(i => i.index == fromPages);\r\n this._pages.splice(++index, this._pages.length);\r\n }\r\n\r\n private addedNextPage(aqsPage: AqsPagesEnum) {\r\n if (!this._pages.some(i => i.index == aqsPage)) {\r\n this._pages.push({ index: aqsPage, label: AqsPageLabel[aqsPage] });\r\n this._pageIndex = aqsPage;\r\n }\r\n else {\r\n let currentPageindex = this._pages.findIndex(p => p.index == this._pageIndex);\r\n this._pageIndex = this._pages[++currentPageindex].index;\r\n }\r\n }\r\n\r\n private buildReportModel(): QuoteFlatStorageReportModel {\r\n let model = new QuoteFlatStorageReportModel();\r\n model.coverSheet = this._quoteFlatStorage.coverSheet;\r\n model.flatStorage = this._quoteFlatStorage.flatStorage;\r\n model.commodities = this._quoteFlatStorage.commodities;\r\n model.airflowConfiguration = this._quoteFlatStorage.airflowConfiguration;\r\n model.includeFlowOption = this._quoteFlatStorage.includeFlowOption;\r\n model.exhausterSheet = this._quoteFlatStorage.exhausterSheet;\r\n model.ductDesign = this._quoteFlatStorage.flatDuctModel;\r\n return model;\r\n }\r\n\r\n checkForError() {\r\n if (!this._quoteFlatStorage.flatStorage.storageType) {\r\n console.log('Storage type is undefined: ' + this._quoteFlatStorage.flatStorage.storageType);\r\n }\r\n if (this._quoteFlatStorage.airflowConfiguration.airflowData.length === 0) {\r\n console.log('Airflow data is empty, length = ' + this._quoteFlatStorage.airflowConfiguration.airflowData.length);\r\n }\r\n if (this._quoteFlatStorage.airflowConfiguration.numberfans === undefined) {\r\n console.log('Number of fans is undefined: ' + this._quoteFlatStorage.airflowConfiguration.numberfans);\r\n }\r\n if (this._quoteFlatStorage.airflowConfiguration.numberfans === 0) {\r\n console.log('Number of fans is 0: ' + this._quoteFlatStorage.airflowConfiguration.numberfans);\r\n }\r\n }\r\n}\r\n","export * from './aqs-flat-storage-tab.component';\r\nexport * from './aqs-flat-storage-params/aqs-flat-storage-params.component';\r\nexport * from './aqs-flat-storage-params/aqs-flat-view-tab/aqs-flat-view-tab.component';\r\nexport * from './aqs-flat-duct-design';\r\n","import { Component, ElementRef, NgZone, OnInit, ViewChild, AfterViewInit, OnDestroy } from '@angular/core';\r\nimport { FormBuilder, FormGroup } from '@angular/forms';\r\nimport { Subscription } from 'rxjs';\r\nimport PerfectScrollbar from 'perfect-scrollbar';\r\nimport { ActivatedRoute, Router } from '@angular/router';\r\nimport { TreeNode } from 'primeng';\r\n\r\nimport { AqsSavedQuoteModel } from '@models';\r\nimport { AqsSessionTypeEnum, AqsStorageTypeEnum, AqsStorageTypeStringEnum, ColumnTypeEnum } from '../../enums';\r\nimport { AqsQuoteStorageDataSourceService } from '@services';\r\nimport { AqsSessionsTypeContants, AqsStorageTypesTreeNodeConstants, MainRoutePaths } from '../../constants';\r\nimport { AqsComputationSheetConfirmPopupComponent, AqsNewQuotePopupComponent, ComputationSheetReportPopupComponent, ComputationSheetShareReportPopupComponent } from '@popups';\r\n\r\n@Component({\r\n selector: 'greensleeves-aqs-quotes-grid',\r\n templateUrl: './aqs-quotes.component.html',\r\n styleUrls: []\r\n})\r\n\r\nexport class AqsQuotesTabComponent implements OnInit, AfterViewInit, OnDestroy {\r\n @ViewChild(AqsNewQuotePopupComponent, { read: false, static: false })\r\n _newQuotePopup: AqsNewQuotePopupComponent;\r\n\r\n @ViewChild(ComputationSheetReportPopupComponent, { read: false, static: false })\r\n private _exportReportModal: ComputationSheetReportPopupComponent;\r\n\r\n @ViewChild(AqsComputationSheetConfirmPopupComponent, { read: false, static: false })\r\n private _deleteModal: AqsComputationSheetConfirmPopupComponent;\r\n\r\n @ViewChild(ComputationSheetShareReportPopupComponent, { read: false, static: false })\r\n private _shareReportModal: ComputationSheetShareReportPopupComponent;\r\n\r\n static QUOTE_NUMBER_KEY = 'quoteNumber';\r\n static CUSTOMER_NAME_KEY = 'customerName';\r\n static COMPANY_NAME_KEY = 'customerName';\r\n static CREATING_DATE_KEY = 'createdDate';\r\n static SORT_ORDER_DEFAULT = -1;\r\n\r\n _columnTypeEnum = ColumnTypeEnum;\r\n _sortField = AqsQuotesTabComponent.CREATING_DATE_KEY;\r\n _sortOrder = AqsQuotesTabComponent.SORT_ORDER_DEFAULT;\r\n _gridData: AqsSavedQuoteModel[];\r\n _savedData: AqsSavedQuoteModel[] = [];\r\n _companyNameKey = AqsQuotesTabComponent.COMPANY_NAME_KEY;\r\n _quoteNumberKey = AqsQuotesTabComponent.QUOTE_NUMBER_KEY;\r\n _customerNameKey = AqsQuotesTabComponent.CUSTOMER_NAME_KEY;\r\n _searchColumns = [this._companyNameKey, this._quoteNumberKey, this._customerNameKey];\r\n _searchPhrase: string = '';\r\n _initializeDeviceKey = 'isInitialized';\r\n _storageTypes: TreeNode[] = [];\r\n _nodeSelected: TreeNode[];\r\n _filterCounter: number;\r\n _isOpenFilterList: boolean = false;\r\n _storageTypesToFilter: AqsStorageTypeEnum[] = [];\r\n _sessionsImages = AqsSessionsTypeContants;\r\n _storageTypesNode = AqsStorageTypesTreeNodeConstants;\r\n _isSelectedAny: boolean = false;\r\n _selectedSavedQuotes: AqsSavedQuoteModel[] = [];\r\n\r\n _columnsView = [\r\n { header: 'Selected', columnType: ColumnTypeEnum.QuoteSelected, dataField: 'isSelected' },\r\n { header: 'Quote number', columnType: ColumnTypeEnum.QuoteText, dataField: AqsQuotesTabComponent.QUOTE_NUMBER_KEY },\r\n { header: 'Creation date', columnType: ColumnTypeEnum.Date, dataField: AqsQuotesTabComponent.CREATING_DATE_KEY },\r\n { header: 'Session type', columnType: ColumnTypeEnum.QuoteSessionType, dataField: 'sessionType' },\r\n { header: 'Storage type', columnType: ColumnTypeEnum.QuoteStorageType, dataField: 'storageType' },\r\n { header: 'Customer name', columnType: ColumnTypeEnum.CustomerName, dataField: 'customerName' },\r\n { header: 'Company name', columnType: ColumnTypeEnum.CompanyName, dataField: 'companyName' },\r\n { header: '', columnType: ColumnTypeEnum.Edit, width: 50 },\r\n { header: '', columnType: ColumnTypeEnum.Delete, width: 50 },\r\n ];\r\n\r\n private subscription: Subscription[] = [];\r\n _searchForm: FormGroup;\r\n _lastSearchPhrase: string;\r\n\r\n _initLoaders: { [key: number]: boolean } = {};\r\n\r\n private titleDeletePopup = \"Are you sure?\";\r\n private subtitleDeletePopup = \"Do you really want to delete this quote?\";\r\n\r\n constructor(\r\n private _quotesDataSourceService: AqsQuoteStorageDataSourceService,\r\n formBuilder: FormBuilder,\r\n private _router: Router,\r\n private _route: ActivatedRoute,) {\r\n this._searchForm = formBuilder.group({\r\n searchPhrase: [''],\r\n });\r\n }\r\n\r\n ngOnInit() {\r\n let sub = this._quotesDataSourceService.quotes$.subscribe(items => {\r\n this._gridData = items;\r\n })\r\n this._quotesDataSourceService.getAllSavedQuotes();\r\n this.fillStorageTypesNodes();\r\n this.subscription.push(sub);\r\n }\r\n\r\n ngAfterViewInit() {\r\n let exportCompleted = this._exportReportModal.exportCompleted.subscribe(item => {\r\n if (item) {\r\n this.unsectedQuotes();\r\n }\r\n })\r\n\r\n let shareCompleted = this._shareReportModal.shareCompleted.subscribe(item => {\r\n if (item) {\r\n this.unsectedQuotes();\r\n }\r\n })\r\n this.subscription.push(exportCompleted);\r\n this.subscription.push(shareCompleted);\r\n }\r\n\r\n ngOnDestroy() {\r\n this.subscription && this.subscription.forEach(subs => subs.unsubscribe());\r\n }\r\n\r\n createNewQuote() {\r\n this._newQuotePopup.showConfirmPopup();\r\n }\r\n\r\n async onEdit(quote: AqsSavedQuoteModel) {\r\n if (quote.sessionType == AqsSessionTypeEnum.FlatSessionType) {\r\n this._router.navigate([`../${MainRoutePaths.AQS_FLAT_STORAGE}`], { queryParams: { 'id': quote.quoteId }, relativeTo: this._route });\r\n }\r\n else if (quote.sessionType == AqsSessionTypeEnum.RoundSessionType) {\r\n this._router.navigate([`../${MainRoutePaths.AQS_ROUND_STORAGE}`], { queryParams: { 'id': quote.quoteId }, relativeTo: this._route });\r\n }\r\n else this._router.navigate([`../${MainRoutePaths.AQS_COMPUTATION_SHEET}`], { queryParams: { 'id': quote.quoteId }, relativeTo: this._route });\r\n }\r\n\r\n async onDelete(quote: AqsSavedQuoteModel) {\r\n this._deleteModal.showConfirmPopup(this.titleDeletePopup, this.subtitleDeletePopup, quote.quoteId);\r\n }\r\n\r\n async deleteQuote(quoteId: number) {\r\n if (quoteId) {\r\n const result = await this._quotesDataSourceService.deleteQuoteStorage(quoteId);\r\n if (result == true) {\r\n if (this._savedData.length >= this._gridData.length) {\r\n this._savedData = this._savedData.filter(q => q.quoteId != quoteId);\r\n }\r\n\r\n this._gridData = this._gridData.filter(q => q.quoteId != quoteId);\r\n }\r\n else {\r\n console.log(result);\r\n }\r\n }\r\n }\r\n\r\n onUpdateLastSearch() {\r\n this._lastSearchPhrase = this._searchForm.controls.searchPhrase.value;\r\n if (this._savedData.length < this._gridData.length) this._savedData = this._gridData;\r\n else this._gridData = this._savedData;\r\n\r\n this._gridData = this._gridData.filter(quote =>\r\n quote.companyName.includes(this._lastSearchPhrase) ||\r\n quote.quoteNumber.includes(this._lastSearchPhrase) ||\r\n quote.customerName.includes(this._lastSearchPhrase)\r\n );\r\n if (this._storageTypesToFilter.length > 0) {\r\n this._gridData = this._gridData.filter(quote =>\r\n this._storageTypesToFilter.includes(quote.storageType)\r\n );\r\n }\r\n }\r\n\r\n convertStorageTypeToStringValue(storageType: AqsStorageTypeEnum): AqsStorageTypeStringEnum {\r\n switch (storageType) {\r\n case AqsStorageTypeEnum.Conical:\r\n return AqsStorageTypeStringEnum.Conical;\r\n case AqsStorageTypeEnum.Flat:\r\n return AqsStorageTypeStringEnum.Flat;\r\n case AqsStorageTypeEnum.Peaked:\r\n return AqsStorageTypeStringEnum.Peaked;\r\n case AqsStorageTypeEnum.SideDraw:\r\n return AqsStorageTypeStringEnum.SideDraw;\r\n case AqsStorageTypeEnum.SlopedPeak:\r\n return AqsStorageTypeStringEnum.SlopedPeak;\r\n case AqsStorageTypeEnum.TruncatedPeak:\r\n return AqsStorageTypeStringEnum.TruncatedPeak;\r\n default:\r\n return AqsStorageTypeStringEnum.None;\r\n }\r\n }\r\n\r\n private fillStorageTypesNodes() {\r\n this._storageTypes.push(this._storageTypesNode[AqsSessionTypeEnum.RoundSessionType]);\r\n this._storageTypes.push(this._storageTypesNode[AqsSessionTypeEnum.FlatSessionType]);\r\n this._storageTypes.push(this._storageTypesNode[AqsSessionTypeEnum.ComputationSheetType]);\r\n }\r\n\r\n openFilterList() {\r\n this._isOpenFilterList = !this._isOpenFilterList;\r\n }\r\n\r\n onClickStorageTypeFilter() {\r\n this._filterCounter = 0;\r\n this._storageTypesToFilter = [];\r\n this._nodeSelected.forEach(i => {\r\n if (!i.children) {\r\n this._storageTypesToFilter.push(i.data);\r\n }\r\n });\r\n this._filterCounter = this._storageTypesToFilter.length;\r\n this.onUpdateLastSearch();\r\n }\r\n\r\n onChangeSelectedQuotes(quote: AqsSavedQuoteModel) {\r\n if (this._selectedSavedQuotes.includes(quote)) {\r\n this._selectedSavedQuotes.forEach((q, index) => {\r\n if (q.quoteId == quote.quoteId) this._selectedSavedQuotes.splice(index, 1);\r\n })\r\n } else {\r\n this._selectedSavedQuotes.push(quote);\r\n }\r\n\r\n this._isSelectedAny = this._selectedSavedQuotes.length > 0;\r\n }\r\n\r\n onClickExportReport() {\r\n this._exportReportModal.showDownloadListOfQuoteReport(\r\n this._selectedSavedQuotes.map(x => x.quoteId),\r\n this._selectedSavedQuotes.map(x => x.quoteNumber));\r\n }\r\n\r\n onClickShareReport() {\r\n this._shareReportModal.showDownloadListOfQuoteReport(\r\n this._selectedSavedQuotes.map(x => x.quoteId),\r\n this._selectedSavedQuotes.map(x => x.quoteNumber));\r\n }\r\n\r\n onRedirectNewQuote(sessionType: AqsSessionTypeEnum) {\r\n if (sessionType == AqsSessionTypeEnum.RoundSessionType) this._router.navigate([`../${MainRoutePaths.AQS_ROUND_STORAGE}`], { relativeTo: this._route });\r\n else if (sessionType == AqsSessionTypeEnum.FlatSessionType) this._router.navigate([`../${MainRoutePaths.AQS_FLAT_STORAGE}`], { relativeTo: this._route });\r\n else this._router.navigate([`../${MainRoutePaths.AQS_COMPUTATION_SHEET}`], { relativeTo: this._route });\r\n }\r\n\r\n private unsectedQuotes() {\r\n this._gridData.forEach(element => {\r\n element.isSelected = false;\r\n });\r\n this._selectedSavedQuotes = [];\r\n this._isSelectedAny = false;\r\n }\r\n}\r\n","export * from './aqs-quotes.component';\r\n","import { AfterViewInit, Component, EventEmitter, Input, OnDestroy, OnInit, Output, ViewChild } from '@angular/core';\r\nimport { Subscription } from 'rxjs';\r\n\r\nimport { AqsRoundStorageWiewModel } from '@models';\r\nimport { AqsConfirmPopupComponent } from '@popups';\r\nimport { AqsRoundStorageTypeLabel } from './../../../constants';\r\nimport { AqsRoundStorageHopperTypeEnum } from './../../../enums';\r\nimport { AqsRoundViewTabComponent } from './aqs-round-view-tab';\r\n\r\n@Component({\r\n selector: 'greensleeves-aqs-round-configuration-tab',\r\n templateUrl: './aqs-round-configuration-tab.component.html',\r\n styles: []\r\n})\r\nexport class AqsRoundConfigurationTabComponent implements OnInit, AfterViewInit, OnDestroy {\r\n\r\n @Input() _roundStorage: AqsRoundStorageWiewModel;\r\n\r\n @Input() _currentPageError: boolean;\r\n @Output() _currentPageErrorChange = new EventEmitter();\r\n\r\n @Output() onChangedRoundConfiguration = new EventEmitter();\r\n\r\n @ViewChild(AqsRoundViewTabComponent, { read: false, static: false })\r\n private viewStoradgeComponent: AqsRoundViewTabComponent;\r\n\r\n @ViewChild(AqsConfirmPopupComponent, { read: false, static: false })\r\n private confirmModal: AqsConfirmPopupComponent;\r\n\r\n _storageHyperType: { label: string, value: AqsRoundStorageHopperTypeEnum }[] = [];\r\n\r\n _hopperType: AqsRoundStorageHopperTypeEnum;\r\n _dia: number;\r\n _height: number;\r\n _cap: number;\r\n _sw: number;\r\n _ledge: number;\r\n _pitch: number;\r\n _hopPitch: number;\r\n _outlet: number;\r\n _oheight: number;\r\n _repose: number;\r\n\r\n _effDepth: number;\r\n _capacity: number;\r\n\r\n _diaToSmallError = false;\r\n _heightOutOfRangeError = false;\r\n _capMoreDiaError = false;\r\n _ladgeOutHopperError = false;\r\n _noStemWallError = false;\r\n _noLadgeError = false;\r\n _outletOutOfRange = false;\r\n _outletAndOutOfRange = false;\r\n _outletOutHopperError = false;\r\n _outletToLargeError = false;\r\n _reposeOutOfRange = false;\r\n _pitchOutOfRange = false;\r\n _hopperpitchOutOfRange = false;\r\n private confirmSubscription: Subscription;\r\n constructor() { }\r\n\r\n ngOnInit() {\r\n for (const [key, value] of Object.entries(AqsRoundStorageTypeLabel)) {\r\n this._storageHyperType.push({ label: value, value: Number(key) });\r\n }\r\n\r\n this._hopperType = this._roundStorage.hopperType;\r\n this._dia = this._roundStorage.diameter;\r\n this._height = this._roundStorage.eaveHeight;\r\n this._cap = this._roundStorage.capDiameter;\r\n this._sw = this._roundStorage.steamwall;\r\n this._ledge = this._roundStorage.ledge;\r\n this._pitch = this._roundStorage.roofPitch;\r\n this._hopPitch = this._roundStorage.hopperPitch;\r\n this._outlet = this._roundStorage.outletDiameter;\r\n this._oheight = this._roundStorage.ovlHeight;\r\n this._repose = this._roundStorage.reposeAngle;\r\n this._capacity = this._roundStorage.capacity;\r\n this._effDepth = this._roundStorage.effDepth;\r\n\r\n }\r\n\r\n ngAfterViewInit() {\r\n this.confirmSubscription = this.confirmModal.confirm.subscribe(confirm => {\r\n if (confirm) {\r\n this._roundStorage.capacity = this._capacity;\r\n this._roundStorage.effDepth = this._effDepth;\r\n }\r\n else {\r\n this._capacity = this._roundStorage.capacity;\r\n this._effDepth = this._roundStorage.effDepth;\r\n this.changeRoundConfiguration();\r\n }\r\n });\r\n this.checkErrorAndOutModel();\r\n }\r\n\r\n ngOnDestroy() {\r\n this.confirmSubscription.unsubscribe();\r\n }\r\n\r\n onChangeHopperType() {\r\n this._roundStorage.hopperType = this._hopperType;\r\n this.setOvlHeight();\r\n this.checkErrorAndOutModel();\r\n this.setCapacityAndEffDepth();\r\n this.changeRoundConfiguration();\r\n }\r\n\r\n onChangeDiameter() {\r\n if (this._dia == null || this._dia < 0) {\r\n this._dia = this._roundStorage.diameter;\r\n }\r\n\r\n if (this._dia != this._roundStorage.diameter) {\r\n this._roundStorage.diameter = this._dia;\r\n this.setOvlHeight();\r\n this.setCapacityAndEffDepth();\r\n this.checkErrorAndOutModel();\r\n this.changeRoundConfiguration();\r\n }\r\n }\r\n\r\n onChangeEaveHeight() {\r\n if (this._height == null || this._height < 0) {\r\n this._height = this._roundStorage.eaveHeight;\r\n }\r\n\r\n if (this._height != this._roundStorage.eaveHeight) {\r\n this._roundStorage.eaveHeight = this._height;\r\n this.setOvlHeight();\r\n this.checkErrorAndOutModel();\r\n this.setCapacityAndEffDepth();\r\n this.changeRoundConfiguration();\r\n }\r\n }\r\n\r\n onChangeCapDiameter() {\r\n if (this._cap == null || this._cap < 0) {\r\n this._cap = this._roundStorage.capDiameter;\r\n }\r\n\r\n if (this._cap != this._roundStorage.capDiameter) {\r\n this._roundStorage.capDiameter = this._cap;\r\n this.setOvlHeight();\r\n this.checkErrorAndOutModel();\r\n this.setCapacityAndEffDepth();\r\n this.changeRoundConfiguration();\r\n }\r\n }\r\n\r\n onChangeStemwall() {\r\n if (this._sw == null || this._sw < 0) {\r\n this._sw = this._roundStorage.steamwall;\r\n }\r\n\r\n if (this._sw != this._roundStorage.steamwall) {\r\n this._roundStorage.steamwall = this._sw;\r\n this.checkErrorAndOutModel();\r\n this.setCapacityAndEffDepth();\r\n this.changeRoundConfiguration();\r\n }\r\n }\r\n\r\n onChangeLedge() {\r\n if (this._ledge == null || this._ledge < 0) {\r\n this._ledge = this._roundStorage.ledge;\r\n }\r\n\r\n if (this._ledge != this._roundStorage.ledge) {\r\n this._roundStorage.ledge = this._ledge;\r\n this.checkErrorAndOutModel();\r\n this.setCapacityAndEffDepth();\r\n this.changeRoundConfiguration();\r\n }\r\n }\r\n\r\n onChangePitch() {\r\n if (this._pitch == null || this._pitch < 0) {\r\n this._pitch = this._roundStorage.roofPitch;\r\n }\r\n\r\n if (this._pitch != this._roundStorage.roofPitch) {\r\n this._roundStorage.roofPitch = this._pitch;\r\n this._roundStorage.reposeAngle = this._pitch;\r\n this._repose = this._pitch;\r\n this.setOvlHeight();\r\n this.checkErrorAndOutModel();\r\n this.setCapacityAndEffDepth();\r\n this.changeRoundConfiguration();\r\n }\r\n }\r\n\r\n onChangeHopPitch() {\r\n if (this._hopPitch == null || this._hopPitch < 0) {\r\n this._hopPitch = this._roundStorage.hopperPitch;\r\n }\r\n\r\n if (this._hopPitch != this._roundStorage.hopperPitch) {\r\n this._roundStorage.hopperPitch = this._hopPitch;\r\n this.checkErrorAndOutModel();\r\n this.setCapacityAndEffDepth();\r\n this.changeRoundConfiguration();\r\n }\r\n }\r\n\r\n onChangeOutLet() {\r\n if (this._outlet == null || this._outlet < 0) {\r\n this._outlet = this._roundStorage.outletDiameter;\r\n }\r\n if (this._outlet != this._roundStorage.outletDiameter) {\r\n this._roundStorage.outletDiameter = this._outlet;\r\n this.checkErrorAndOutModel();\r\n this.setCapacityAndEffDepth();\r\n this.changeRoundConfiguration();\r\n }\r\n }\r\n\r\n onChangeOvlHeight() {\r\n if (this._oheight == null || this._oheight < 0) {\r\n this._oheight = this._roundStorage.ovlHeight;\r\n }\r\n if (this._oheight != this._roundStorage.ovlHeight) {\r\n this._roundStorage.ovlHeight = this._oheight;\r\n this.setRoofPitch();\r\n this.checkErrorAndOutModel();\r\n this.setCapacityAndEffDepth();\r\n this.changeRoundConfiguration();\r\n }\r\n }\r\n\r\n onChangeRepose() {\r\n if (this._repose == null || this._repose < 0) {\r\n this._repose = this._roundStorage.reposeAngle;\r\n }\r\n if (this._repose != this._roundStorage.reposeAngle) {\r\n this._roundStorage.reposeAngle = this._repose;\r\n this.checkErrorAndOutModel();\r\n this.setCapacityAndEffDepth();\r\n this.changeRoundConfiguration();\r\n }\r\n }\r\n\r\n onChangeEffDepthOrCapacity() {\r\n if (this._capacity != this._roundStorage.capacity || this._effDepth != this._roundStorage.effDepth) {\r\n if (this._capacity == null) this._capacity = 0;\r\n if (this._effDepth == null) this._effDepth = 0;\r\n let [calcEffDepth, calcCapacity] = this._roundStorage.getCalulatedDepthAndCapacity();\r\n this.confirmModal.showForConfirmCapacityAndEffDepth(this._effDepth, calcEffDepth, this._capacity, calcCapacity);\r\n }\r\n }\r\n\r\n setCapacityAndEffDepth() {\r\n this._roundStorage.calculateAndSetDepthAndCapacity();\r\n this._capacity = this._roundStorage.capacity;\r\n this._effDepth = this._roundStorage.effDepth;\r\n }\r\n\r\n changeRoundConfiguration() {\r\n this.onChangedRoundConfiguration.emit();\r\n }\r\n\r\n private setOvlHeight() {\r\n this._roundStorage.calculateAndSetOvlHeight();\r\n this._oheight = this._roundStorage.ovlHeight;\r\n }\r\n\r\n private setRoofPitch() {\r\n this._roundStorage.calculateAndSetRoofPich();\r\n this._pitch = this._roundStorage.roofPitch;\r\n this._repose = this._roundStorage.reposeAngle;\r\n }\r\n\r\n private checkErrorAndOutModel() {\r\n\r\n this._diaToSmallError = this._roundStorage.diameter < 10;\r\n this._heightOutOfRangeError = this._roundStorage.eaveHeight <= 0;\r\n this._capMoreDiaError = this._roundStorage.capDiameter >= this._roundStorage.diameter;\r\n this._ladgeOutHopperError = this._roundStorage.ledge > 0 && this._roundStorage.hopperPitch == 0;\r\n this._noStemWallError = this._roundStorage.hopperType == AqsRoundStorageHopperTypeEnum.SideDraw && this._roundStorage.hopperPitch > 0\r\n && this._roundStorage.steamwall > 0;\r\n this._noLadgeError = this._roundStorage.hopperType == AqsRoundStorageHopperTypeEnum.SideDraw && this._roundStorage.hopperPitch > 0\r\n && this._roundStorage.ledge > 0;\r\n this._outletAndOutOfRange = this._roundStorage.outletDiameter >= this._roundStorage.diameter - (2 * this._ledge);\r\n this._outletOutOfRange = this._roundStorage.outletDiameter < 0;\r\n this._outletOutHopperError = this._roundStorage.outletDiameter > 0 && this._roundStorage.hopperPitch == 0;\r\n this._outletToLargeError = this._roundStorage.hopperType == AqsRoundStorageHopperTypeEnum.SideDraw && this._roundStorage.outletDiameter >= this._roundStorage.diameter / 3;\r\n this._reposeOutOfRange = this._roundStorage.reposeAngle < 0 || this._roundStorage.reposeAngle > this._roundStorage.roofPitch;\r\n this._pitchOutOfRange = this._roundStorage.roofPitch < 0 || this._roundStorage.roofPitch > 50;\r\n this._hopperpitchOutOfRange = this._roundStorage.hopperType < 0 || this._roundStorage.hopperPitch > 50;\r\n this.setGlobalError();\r\n\r\n this.viewStoradgeComponent.reDraw(this._currentPageError);\r\n }\r\n\r\n private setGlobalError() {\r\n this._currentPageError = this._diaToSmallError || this._heightOutOfRangeError || this._capMoreDiaError || this._ladgeOutHopperError || this._noStemWallError\r\n || this._noLadgeError || this._outletOutOfRange || this._outletOutHopperError || this._outletToLargeError || this._reposeOutOfRange || this._pitchOutOfRange\r\n || this._hopperpitchOutOfRange || this._outletAndOutOfRange;\r\n this._currentPageErrorChange.emit(this._currentPageError);\r\n\r\n }\r\n}\r\n","import { Component, ElementRef, Input, OnInit, ViewChild } from '@angular/core';\r\n\r\nimport { AqsRoundStorageWiewModel } from '@models';\r\nimport { AqsRoundStorageHopperTypeEnum } from './../../../../enums';\r\n\r\n@Component({\r\n selector: 'greensleeves-aqs-round-view-tab',\r\n templateUrl: './aqs-round-view-tab.component.html',\r\n styles: []\r\n})\r\nexport class AqsRoundViewTabComponent implements OnInit {\r\n private FontSize: number = 23;\r\n\r\n @ViewChild('viewCanvas', { static: true })\r\n canvas: ElementRef;\r\n\r\n @Input() _roundStorage: AqsRoundStorageWiewModel;\r\n\r\n private ctx: CanvasRenderingContext2D;\r\n private width: number;\r\n private height: number;\r\n private scale: number;\r\n private heightOfTopPart: number;\r\n private roofHeight: number;\r\n private hopperHeight: number;\r\n constructor() { }\r\n\r\n ngOnInit() {\r\n this.ctx = this.canvas.nativeElement.getContext('2d');\r\n this.width = this.ctx.canvas.width;\r\n this.height = this.ctx.canvas.height;\r\n this.heightOfTopPart = this.height / 2.5;\r\n }\r\n\r\n public reDraw(error: boolean) {\r\n if (!error) {\r\n this.calculateScale();\r\n this.clearView();\r\n this.ctx.strokeStyle = 'black';\r\n this.drawScheme();\r\n }\r\n else {\r\n this.drawErrorBorder();\r\n }\r\n }\r\n\r\n private calculateScale() {\r\n this.roofHeight = (this._roundStorage.diameter / 2 - this._roundStorage.capDiameter / 2) * Math.tan(this._roundStorage.roofPitch * Math.PI / 180);\r\n this.hopperHeight = this._roundStorage.hopperType == AqsRoundStorageHopperTypeEnum.Conical\r\n ? (this._roundStorage.diameter / 2 - this._roundStorage.ledge - this._roundStorage.outletDiameter / 2) * Math.tan(this._roundStorage.hopperPitch * Math.PI / 180)\r\n : this._roundStorage.diameter * Math.tan(this._roundStorage.hopperPitch * Math.PI / 180);\r\n\r\n let fullHeight = this.roofHeight + this.hopperHeight + this._roundStorage.eaveHeight + this._roundStorage.steamwall;\r\n\r\n this.scale = this.heightOfTopPart / fullHeight;\r\n if (this._roundStorage.diameter * this.scale > this.heightOfTopPart) this.scale = this.heightOfTopPart / (this._roundStorage.diameter);\r\n\r\n }\r\n\r\n private clearView() {\r\n this.ctx.clearRect(0, 0, this.width, this.height);\r\n }\r\n\r\n private drawScheme() {\r\n this.drawCircleSchema();\r\n this.drawStorageSchema();\r\n }\r\n\r\n private drawCircleSchema() {\r\n this.drawTopCircle(this._roundStorage.diameter / 2);\r\n if (this._roundStorage.capDiameter > 0) {\r\n this.drawTopCircle(this._roundStorage.capDiameter / 2);\r\n }\r\n\r\n if (this._roundStorage.outletDiameter > 0 && this._roundStorage.hopperType == AqsRoundStorageHopperTypeEnum.Conical) {\r\n this.drawTopCircle(this._roundStorage.outletDiameter / 2);\r\n }\r\n\r\n if (this._roundStorage.ledge > 0) {\r\n let ladgeCircleDiameter = this._roundStorage.diameter - this._roundStorage.ledge*2;\r\n this.drawTopCircle(ladgeCircleDiameter / 2);\r\n }\r\n }\r\n\r\n private drawTopCircle(raidus: number) {\r\n this.ctx.beginPath();\r\n this.ctx.arc(this.width / 2, this.heightOfTopPart / 2, raidus * this.scale, 0, 2 * Math.PI, false);\r\n this.ctx.stroke()\r\n }\r\n\r\n private drawErrorBorder() {\r\n this.ctx.lineWidth = 3;\r\n this.ctx.strokeStyle = 'red';\r\n this.ctx.strokeRect(0, 0, this.width, this.height);\r\n this.ctx.lineWidth = 1;\r\n }\r\n\r\n private drawStorageSchema() {\r\n this.ctx.lineJoin = \"miter\";\r\n this.ctx.beginPath();\r\n let middleSLayerY = this.height - (this.height - this.heightOfTopPart) / 2;\r\n let middleSLayerX = this.width / 2;\r\n\r\n let x = middleSLayerX - this._roundStorage.diameter / 2 * this.scale;\r\n let y = middleSLayerY + (this._roundStorage.eaveHeight + this._roundStorage.steamwall) / 2 * this.scale;\r\n\r\n let startX = x;\r\n let startY = y;\r\n\r\n this.ctx.moveTo(x, y);\r\n y -= (this._roundStorage.eaveHeight + this._roundStorage.steamwall) * this.scale;\r\n this.ctx.lineTo(x, y);\r\n let roofStartX = x;\r\n let roofStartY = y;\r\n if (this._roundStorage.roofPitch != this._roundStorage.reposeAngle) {\r\n let pileHeight = this._roundStorage.diameter / 2 * Math.tan(this._roundStorage.reposeAngle * Math.PI / 180);\r\n if (pileHeight > this.roofHeight) {\r\n let diffY = 0;\r\n let diffX = 0;\r\n diffY = (pileHeight - this.roofHeight) * this.scale;\r\n diffX = (diffY / Math.tan(this._roundStorage.reposeAngle * Math.PI / 180)) * 2 * this.scale;\r\n if (diffX > this._roundStorage.capDiameter * this.scale) diffX = this._roundStorage.capDiameter * this.scale;\r\n x += this._roundStorage.diameter / 2 * this.scale - diffX / 2;\r\n y -= this.roofHeight * this.scale;\r\n this.ctx.lineTo(x, y);\r\n x += diffX;\r\n this.ctx.lineTo(x, y);\r\n x += this._roundStorage.diameter / 2 * this.scale - diffX / 2;\r\n y += this.roofHeight * this.scale;\r\n this.ctx.lineTo(x, y);\r\n }\r\n else {\r\n x += this._roundStorage.diameter / 2 * this.scale;\r\n y -= pileHeight * this.scale;\r\n this.ctx.lineTo(x, y);\r\n x += this._roundStorage.diameter / 2 * this.scale;\r\n y += pileHeight * this.scale;\r\n this.ctx.lineTo(x, y);\r\n }\r\n }\r\n else {\r\n x += (this._roundStorage.diameter / 2 - this._roundStorage.capDiameter / 2) * this.scale;\r\n y -= this.roofHeight * this.scale;\r\n this.ctx.lineTo(x, y);\r\n x += this._roundStorage.capDiameter * this.scale;\r\n this.ctx.lineTo(x, y);\r\n x += (this._roundStorage.diameter / 2 - this._roundStorage.capDiameter / 2) * this.scale;\r\n y += this.roofHeight * this.scale;\r\n this.ctx.lineTo(x, y);\r\n }\r\n\r\n\r\n y += (this._roundStorage.eaveHeight + this._roundStorage.steamwall) * this.scale;\r\n this.ctx.lineTo(x, y);\r\n if (this._roundStorage.hopperType == AqsRoundStorageHopperTypeEnum.SideDraw) {\r\n y += this.hopperHeight * this.scale;\r\n this.ctx.lineTo(x, y);\r\n x -= this._roundStorage.outletDiameter * this.scale;\r\n this.ctx.lineTo(x, y);\r\n this.ctx.lineTo(startX, startY);\r\n }\r\n else {\r\n if (this._roundStorage.ledge > 0) {\r\n x -= this._roundStorage.ledge * this.scale;\r\n this.ctx.lineTo(x, y);\r\n }\r\n x -= (this._roundStorage.diameter / 2 - this._roundStorage.ledge - this._roundStorage.outletDiameter / 2) * this.scale;\r\n y += this.hopperHeight * this.scale;\r\n this.ctx.lineTo(x, y);\r\n x -= this._roundStorage.outletDiameter * this.scale;\r\n this.ctx.lineTo(x, y);\r\n y -= this.hopperHeight * this.scale;\r\n x -= (this._roundStorage.diameter / 2 - this._roundStorage.ledge - this._roundStorage.outletDiameter / 2) * this.scale;\r\n this.ctx.lineTo(x, y);\r\n this.ctx.lineTo(startX, startY);\r\n }\r\n\r\n this.ctx.fillStyle = \"Bisque\";\r\n this.ctx.fill();\r\n this.ctx.stroke();\r\n //Roof\r\n if (this._roundStorage.roofPitch != this._roundStorage.reposeAngle) {\r\n this.ctx.beginPath();\r\n x = roofStartX;\r\n y = roofStartY;\r\n this.ctx.moveTo(x, y);\r\n x += (this._roundStorage.diameter / 2 - this._roundStorage.capDiameter / 2) * this.scale;\r\n y -= this.roofHeight * this.scale;\r\n this.ctx.lineTo(x, y);\r\n x += this._roundStorage.capDiameter * this.scale;\r\n this.ctx.lineTo(x, y);\r\n x += (this._roundStorage.diameter / 2 - this._roundStorage.capDiameter / 2) * this.scale;\r\n y += this.roofHeight * this.scale;\r\n this.ctx.lineTo(x, y);\r\n this.ctx.stroke();\r\n }\r\n\r\n this.ctx.fillStyle = \"black\";\r\n this.ctx.font = `${this.FontSize}px serif`\r\n\r\n this.drawDiameterLabel(startX, startY);\r\n this.drawEaveHeightLabel(startX, startY);\r\n this.drawOvLHeightLabel(startX, startY);\r\n this.drawRoofPithLabel(roofStartX, roofStartY);\r\n this.drawReposeLabel(roofStartX, roofStartY);\r\n this.drawStewallLabel(startX, startY);\r\n this.drawLedgeLabel(startX, startY);\r\n this.drawHopperPitchLabel(startX, startY);\r\n this.drawOutletDiameterlabel(startX, startY);\r\n this.drawCapDiameterLabel(startX, startY);\r\n }\r\n\r\n private drawOutletDiameterlabel(startX: number, startY: number) {\r\n if (this._roundStorage.outletDiameter > 0) {\r\n let x: number;\r\n let y: number;\r\n let posLabelRelativeToDia = this._roundStorage.hopperType == AqsRoundStorageHopperTypeEnum.Conical ? this._roundStorage.diameter / 2 : this._roundStorage.diameter - this._roundStorage.outletDiameter / 2;\r\n posLabelRelativeToDia *= this.scale;\r\n let numCount = this.getNumberCount(this._roundStorage.outletDiameter);\r\n x = startX + posLabelRelativeToDia - this.FontSize * numCount / 4;\r\n y = startY + this.hopperHeight * this.scale + this.FontSize;\r\n this.ctx.fillText(this._roundStorage.outletDiameter.toString(), x, y);\r\n }\r\n }\r\n\r\n private drawHopperPitchLabel(startX: number, startY: number) {\r\n if (this._roundStorage.hopperPitch > 0) {\r\n let x: number;\r\n let y: number;\r\n if (this._roundStorage.hopperType == AqsRoundStorageHopperTypeEnum.SideDraw) {\r\n x = startX + this.FontSize / 4;\r\n y = startY - 2;\r\n } else {\r\n x = startX + this._roundStorage.ledge * this.scale + this.FontSize / 4;\r\n y = startY - 2;\r\n }\r\n\r\n this.ctx.fillText(this._roundStorage.hopperPitch.toString(), x, y);\r\n }\r\n }\r\n\r\n private drawLedgeLabel(startX: number, startY: number) {\r\n if (this._roundStorage.ledge > 0 && this._roundStorage.hopperType == AqsRoundStorageHopperTypeEnum.Conical) {\r\n //left\r\n let x = startX + this._roundStorage.ledge / 2 * this.scale - this.FontSize / 4;\r\n let y = startY + this.FontSize;\r\n this.ctx.fillText(this._roundStorage.ledge.toString(), x, y);\r\n //right\r\n x = startX + (this._roundStorage.diameter - this._roundStorage.ledge / 2) * this.scale - this.FontSize / 4;\r\n this.ctx.fillText(this._roundStorage.ledge.toString(), x, y);\r\n }\r\n }\r\n\r\n private drawStewallLabel(startX: number, startY: number) {\r\n let numCount = this.getNumberCount(this._roundStorage.steamwall);\r\n if (this._roundStorage.steamwall > 0) {\r\n let x = this._roundStorage.steamwall * this.scale >= this.FontSize ? startX - 2 - this.FontSize / 2 * numCount : startX - 6 - this.FontSize * numCount;\r\n let y = this._roundStorage.steamwall * this.scale >= this.FontSize / 2 ? startY - this._roundStorage.steamwall / 2 * this.scale + this.FontSize / 2 : startY + this.FontSize / 2;\r\n this.ctx.fillText(this._roundStorage.steamwall.toString(), x, y);\r\n //left\r\n x = startX - 10;\r\n y = startY;\r\n this.ctx.beginPath();\r\n this.ctx.moveTo(x, y);\r\n x -= this.FontSize / 4;\r\n this.ctx.lineTo(x, y);\r\n x += this.FontSize / 8;\r\n this.ctx.moveTo(x, y);\r\n y += 5;\r\n this.ctx.lineTo(x, y);\r\n //right\r\n x = startX + this._roundStorage.diameter * this.scale + 10;\r\n y = startY;\r\n this.ctx.moveTo(x, y);\r\n x += this.FontSize / 4;\r\n this.ctx.lineTo(x, y);\r\n x -= this.FontSize / 8;\r\n this.ctx.moveTo(x, y);\r\n y += 5;\r\n this.ctx.lineTo(x, y);\r\n this.ctx.stroke();\r\n\r\n x = this._roundStorage.steamwall * this.scale >= this.FontSize ? startX + 2 + this._roundStorage.diameter * this.scale : startX + 6 + this._roundStorage.diameter * this.scale + this.FontSize / 2;\r\n y = this._roundStorage.steamwall * this.scale >= this.FontSize / 2 ? startY - this._roundStorage.steamwall / 2 * this.scale + this.FontSize / 2 : startY + this.FontSize / 2;\r\n this.ctx.fillText(this._roundStorage.steamwall.toString(), x, y);\r\n }\r\n }\r\n\r\n private drawCapDiameterLabel(startX: number, startY: number) {\r\n if (this._roundStorage.capDiameter > 0) {\r\n let numCount = this.getNumberCount(this._roundStorage.capDiameter)\r\n let x = startX + this._roundStorage.diameter / 2 * this.scale - this.FontSize * numCount / 4;\r\n let y = startY - (this._roundStorage.steamwall + this._roundStorage.eaveHeight + this.roofHeight) * this.scale + this.FontSize;\r\n this.ctx.fillText(this._roundStorage.capDiameter.toString(), x, y);\r\n }\r\n }\r\n\r\n private drawDiameterLabel(startX: number, startY: number) {\r\n let numCount = this.getNumberCount(this._roundStorage.diameter);\r\n this.ctx.beginPath()\r\n let x = startX + this._roundStorage.diameter / 2 * this.scale - this.FontSize * numCount / 4;\r\n let y = startY - (this._roundStorage.steamwall + this._roundStorage.eaveHeight + this.roofHeight) * this.scale - this.FontSize / 4;\r\n this.ctx.fillText(this._roundStorage.diameter.toString(), x, y);\r\n\r\n y -= this.FontSize / 4;\r\n x -= 1;\r\n this.ctx.moveTo(x, y);\r\n x -= this._roundStorage.diameter / 2 * this.scale - this.FontSize * numCount / 4;\r\n this.ctx.lineTo(x, y);\r\n y += this.FontSize / 8;\r\n this.ctx.moveTo(x, y);\r\n y -= this.FontSize / 4;\r\n this.ctx.lineTo(x, y);\r\n x = startX + this._roundStorage.diameter / 2 * this.scale + this.FontSize * numCount / 4;\r\n y = startY - (this._roundStorage.steamwall + this._roundStorage.eaveHeight + this.roofHeight) * this.scale - this.FontSize / 2;\r\n this.ctx.moveTo(x, y);\r\n x += this._roundStorage.diameter / 2 * this.scale - this.FontSize * numCount / 4 + 1;\r\n this.ctx.lineTo(x, y);\r\n y += this.FontSize / 8;\r\n this.ctx.moveTo(x, y);\r\n y -= this.FontSize / 4;\r\n this.ctx.lineTo(x, y);\r\n this.ctx.stroke();\r\n }\r\n\r\n private drawOvLHeightLabel(startX: number, startY: number) {\r\n this.ctx.beginPath()\r\n let x = startX + this._roundStorage.diameter * this.scale + 10;\r\n let y = startY - this._roundStorage.steamwall * this.scale;\r\n this.ctx.moveTo(x, y);\r\n x += this.FontSize / 4;\r\n this.ctx.lineTo(x, y);\r\n x -= this.FontSize / 8;\r\n this.ctx.moveTo(x, y);\r\n y -= (this._roundStorage.eaveHeight + this.roofHeight) / 2 * this.scale - this.FontSize / 2;\r\n this.ctx.lineTo(x, y);\r\n y -= this.FontSize;\r\n this.ctx.moveTo(x, y);\r\n y -= (this._roundStorage.eaveHeight + this.roofHeight) / 2 * this.scale - this.FontSize / 2;\r\n this.ctx.lineTo(x, y);\r\n x -= this.FontSize / 8;\r\n this.ctx.moveTo(x, y);\r\n x += this.FontSize / 4;\r\n this.ctx.lineTo(x, y);\r\n this.ctx.stroke();\r\n\r\n x = startX + 2 + this._roundStorage.diameter * this.scale;\r\n y = startY - (this._roundStorage.eaveHeight + this.roofHeight) / 2 * this.scale - this._roundStorage.steamwall * this.scale + this.FontSize / 4;\r\n this.ctx.fillText(this._roundStorage.ovlHeight.toString(), x, y);\r\n }\r\n\r\n private drawEaveHeightLabel(startX: number, startY: number) {\r\n let numCount = this.getNumberCount(this._roundStorage.eaveHeight);\r\n this.ctx.beginPath()\r\n let x = startX - 10;\r\n let y = startY - this._roundStorage.steamwall * this.scale;\r\n this.ctx.moveTo(x, y);\r\n x -= this.FontSize / 4;\r\n this.ctx.lineTo(x, y);\r\n x += this.FontSize / 8;\r\n this.ctx.moveTo(x, y);\r\n y -= this._roundStorage.eaveHeight / 2 * this.scale - this.FontSize / 2;\r\n this.ctx.lineTo(x, y);\r\n y -= this.FontSize;\r\n this.ctx.moveTo(x, y);\r\n y -= this._roundStorage.eaveHeight / 2 * this.scale - this.FontSize / 2;\r\n this.ctx.lineTo(x, y);\r\n x -= this.FontSize / 8;\r\n this.ctx.moveTo(x, y);\r\n x += this.FontSize / 4;\r\n this.ctx.lineTo(x, y);\r\n this.ctx.stroke();\r\n\r\n x = this._roundStorage.eaveHeight * this.scale >= this.FontSize ? startX - 2 - this.FontSize / 2 * numCount : startX - 2 - this.FontSize * numCount;\r\n y = startY - this._roundStorage.eaveHeight / 2 * this.scale - this._roundStorage.steamwall * this.scale + this.FontSize / 4;\r\n this.ctx.fillText(this._roundStorage.eaveHeight.toString(), x, y);\r\n }\r\n\r\n private drawRoofPithLabel(startX: number, startY: number) {\r\n if (this._roundStorage.roofPitch > 0) {\r\n let x = startX;\r\n let y = startY - this.FontSize / 1.5;\r\n this.ctx.fillText(this._roundStorage.roofPitch.toString(), x, y);\r\n }\r\n }\r\n\r\n private drawReposeLabel(startX: number, startY: number) {\r\n let x = startX + this._roundStorage.diameter / 7 * this.scale;\r\n let y = startY + this.FontSize / 4;\r\n if (this._roundStorage.reposeAngle > 0 && this._roundStorage.reposeAngle != this._roundStorage.roofPitch && this._roundStorage.diameter / 3 * this.scale > this.FontSize) {\r\n this.ctx.fillText(this._roundStorage.reposeAngle.toString(), x, y);\r\n }\r\n }\r\n\r\n private getNumberCount(number: number): number {\r\n let count = 0;\r\n do {\r\n number /= 10;\r\n number = number | 0;\r\n count++;\r\n } while (number != 0);\r\n return count;\r\n }\r\n\r\n}","export * from './aqs-round-view-tab.component';","export * from './aqs-round-configuration-tab.component';\r\nexport * from './aqs-round-view-tab';","import { Component, ElementRef, Input, OnInit, ViewChild } from '@angular/core';\r\n\r\nimport { AqsRoundStorageDuctDesignViewModel } from '@models';\r\nimport { AqsDuctTypeEnum, AqsRoundDuctDesignType } from 'src/app/main/enums';\r\n\r\n@Component({\r\n selector: 'greensleeves-aqs-round-duct-design-view-tab',\r\n templateUrl: './aqs-round-duct-design-view-tab.component.html',\r\n styles: []\r\n})\r\nexport class AqsRoundDuctDesignViewTabComponent implements OnInit {\r\n private FontSize: number = 23;\r\n\r\n @Input() _ductDesign: AqsRoundStorageDuctDesignViewModel;\r\n @ViewChild('viewCanvas', { static: true })\r\n canvas: ElementRef;\r\n\r\n private ctx: CanvasRenderingContext2D;\r\n private width: number;\r\n private height: number;\r\n\r\n private overheadCircleRadius: number = 120;\r\n private overheadCircleCenterX: number;\r\n private overheadCircleCenterY: number;\r\n\r\n private overheadScale: number;\r\n\r\n private textHeight: number = 16;\r\n private rectHeight: number = 18;\r\n\r\n constructor() { }\r\n\r\n ngOnInit() {\r\n this.ctx = this.canvas.nativeElement.getContext('2d');\r\n this.ctx.font = '16pt sans-serif';\r\n this.width = this.ctx.canvas.width;\r\n this.height = this.ctx.canvas.height;\r\n this.overheadCircleCenterX = this.width / 2;\r\n this.overheadCircleCenterY = this.overheadCircleRadius + 2;\r\n this.overheadScale = this.overheadCircleRadius * 2 / this._ductDesign.roundStorageDiameter;\r\n this.drawDuctDesignScheme();\r\n }\r\n\r\n drawDuctDesignScheme() {\r\n this.ctx.clearRect(0, 0, this.width, this.height);\r\n this.drawOverheadStorage()\r\n this.draw3DStorage();\r\n }\r\n\r\n draw3DStorage() {\r\n if (this._ductDesign.roundDuctDesignType == AqsRoundDuctDesignType.SingleFan ||\r\n this._ductDesign.roundDuctDesignType == AqsRoundDuctDesignType.MultipleFans) {\r\n this.draw3DNoHopperPitch();\r\n } else if (this._ductDesign.roundDuctDesignType == AqsRoundDuctDesignType.HopperPitchConical) {\r\n this.draw3DHopperConical();\r\n } else if (this._ductDesign.roundDuctDesignType == AqsRoundDuctDesignType.HopperPitchSideDraw) {\r\n this.draw3DHopperSideDraw();\r\n }\r\n }\r\n\r\n private draw3DHopperSideDraw() {\r\n let topAspect = 10 / 36;\r\n let sideAspect = 20 / 12;\r\n\r\n let hopperHeight = (Math.tan(this._ductDesign.hopperPitch * Math.PI / 180) *\r\n this._ductDesign.roundStorageDiameter) -\r\n (Math.tan(this._ductDesign.hopperPitch * Math.PI / 180) *\r\n this._ductDesign.outletDiameter);\r\n\r\n let totalY = hopperHeight + 4;\r\n let yTop = this.height - (this.overheadCircleRadius * 2 - 30);\r\n let yBottom = this.height - 50 - (50 - this._ductDesign.hopperPitch);\r\n let xLeft = 25;\r\n let xRight = this.width - 25;\r\n let yScale = (yBottom - yTop) / totalY;\r\n let xScale = yScale * 12 / 5;\r\n\r\n let xCenter = this.width / 2;\r\n\r\n if (xScale * this._ductDesign.roundStorageDiameter > xRight - xLeft) {\r\n xScale = (xRight - xLeft) / this._ductDesign.roundStorageDiameter;\r\n yScale = 5 * xScale / 12;\r\n }\r\n\r\n let outletY = yBottom;\r\n\r\n let groundY = outletY - (hopperHeight * 2 * yScale);\r\n let cutOffY = groundY - (8 * yScale);\r\n\r\n //Calculate Points\r\n let x: number[] = [];\r\n x.length = 4;\r\n let y: number[] = [];\r\n y.length = 4;\r\n\r\n x[0] = xCenter - (this._ductDesign.roundStorageDiameter * xScale / 2) - 15;\r\n y[0] = groundY - (this._ductDesign.openingDiameter / 24 * yScale);\r\n x[1] = xCenter - (this._ductDesign.roundStorageDiameter * xScale / 2);\r\n y[1] = y[0];\r\n x[2] = x[1];\r\n y[2] = groundY - (this._ductDesign.ductDiameter / 24 * yScale);\r\n x[3] = x[1] + (Math.cos(this._ductDesign.hopperPitch * Math.PI / 180) *\r\n this._ductDesign.perfDMax * xScale);\r\n y[3] = groundY + (Math.sin(this._ductDesign.hopperPitch * Math.PI / 180) *\r\n yScale * this._ductDesign.perfDMax * 2);\r\n\r\n let xEnd = x[2] + (this._ductDesign.roundStorageDiameter * xScale);\r\n\r\n let startArc = Math.PI / 2;\r\n let endArc = 3 * Math.PI / 2;\r\n\r\n if (this._ductDesign.ductType == AqsDuctTypeEnum.HalfRoundDuct) {\r\n y[2] = groundY;\r\n startArc = 0;\r\n endArc = Math.PI + (Math.PI / 8);\r\n }\r\n\r\n //DRAW FRONT WALL\r\n //Scalling step\r\n let step;\r\n if (this._ductDesign.hopperPitch <= 10) {\r\n step = 20;\r\n } else {\r\n let maxHoperPitch = 50;\r\n let pitch = this._ductDesign.hopperPitch * 100 / maxHoperPitch;\r\n step = 20 - (pitch * 18 / 100);\r\n }\r\n\r\n for (let i = xCenter; i < xEnd - (this._ductDesign.outletDiameter / 2 * xScale); i += step) {\r\n let yForDraw = groundY + (((i - xCenter) /\r\n (xEnd - (this._ductDesign.outletDiameter / 2 * xScale) - xCenter)) *\r\n (outletY - groundY));\r\n this.ctx.beginPath();\r\n this.ctx.ellipse(\r\n i,\r\n yForDraw,\r\n xEnd - i,\r\n (xEnd - i) * topAspect,\r\n 0,\r\n 0,\r\n Math.PI / 2,\r\n );\r\n this.ctx.stroke();\r\n }\r\n\r\n this.ctx.beginPath();\r\n this.ctx.fillStyle = 'white';\r\n this.ctx.ellipse(\r\n xCenter,\r\n groundY,\r\n this._ductDesign.roundStorageDiameter / 2 * xScale,\r\n this._ductDesign.roundStorageDiameter / 2 * xScale * topAspect,\r\n 0,\r\n 2 * Math.PI,\r\n 0,\r\n true\r\n );\r\n this.ctx.fill();\r\n this.ctx.fillStyle = 'black';\r\n\r\n // DRAW SOLID DUCT\r\n let solidAddx = this._ductDesign.ductType == AqsDuctTypeEnum.HalfRoundDuct ? 8 : 0\r\n let beginX = x[1] + ((this._ductDesign.perfDMax - this._ductDesign.perforatedDuctLengthFt) *\r\n Math.cos(this._ductDesign.hopperPitch * Math.PI / 180) * xScale);\r\n\r\n for (let i = x[2]; i < beginX + solidAddx; i++) {\r\n let yForDraw = y[2] + ((i - x[2]) / (x[3] - x[2]) * (y[3] - y[2]));\r\n this.ctx.beginPath();\r\n this.ctx.ellipse(\r\n i,\r\n yForDraw,\r\n yScale * this._ductDesign.ductDiameter / 24,\r\n (yScale * this._ductDesign.ductDiameter / 24) * sideAspect,\r\n 0,\r\n startArc,\r\n -endArc,\r\n true\r\n );\r\n this.ctx.stroke();\r\n }\r\n\r\n //DRAW DUCT WORK\r\n //Opening\r\n for (let i = x[0]; i < x[1]; i++) {\r\n this.ctx.beginPath();\r\n this.ctx.ellipse(\r\n i,\r\n y[0],\r\n yScale * this._ductDesign.openingDiameter / 24,\r\n (yScale * this._ductDesign.openingDiameter / 24) * sideAspect,\r\n 0,\r\n Math.PI / 2,\r\n -3 * Math.PI / 2,\r\n true\r\n );\r\n this.ctx.stroke();\r\n }\r\n\r\n //Perforated Duct\r\n let addx = this._ductDesign.ductType == AqsDuctTypeEnum.FullRoundDuct ? 0 : 12\r\n for (let i = beginX + addx; i < x[3] + addx; i += 4) {\r\n let yForDraw = y[2] + ((i - x[2]) / (x[3] - x[2]) * (y[3] - y[2]));\r\n this.ctx.beginPath();\r\n this.ctx.ellipse(\r\n i,\r\n yForDraw,\r\n yScale * this._ductDesign.ductDiameter / 24,\r\n (yScale * this._ductDesign.ductDiameter / 24) * sideAspect,\r\n 0,\r\n startArc,\r\n -endArc,\r\n true\r\n );\r\n this.ctx.stroke();\r\n }\r\n\r\n //Last Duct Ellipse\r\n if (this._ductDesign.ductType == AqsDuctTypeEnum.FullRoundDuct) {\r\n this.ctx.beginPath();\r\n this.ctx.ellipse(\r\n x[3],\r\n y[3],\r\n yScale * this._ductDesign.ductDiameter / 24,\r\n (yScale * this._ductDesign.ductDiameter / 24) * sideAspect,\r\n 0,\r\n 0,\r\n 2 * Math.PI\r\n );\r\n this.ctx.stroke();\r\n } else {\r\n this.ctx.beginPath();\r\n this.ctx.ellipse(\r\n x[3],\r\n y[3],\r\n yScale * this._ductDesign.ductDiameter / 24,\r\n (yScale * this._ductDesign.ductDiameter / 24) * sideAspect,\r\n 0,\r\n startArc,\r\n -endArc, true\r\n );\r\n this.ctx.stroke();\r\n }\r\n\r\n //DRAW BIN\r\n //Upper Ellipse\r\n this.ctx.beginPath();\r\n this.ctx.ellipse(\r\n xCenter,\r\n cutOffY,\r\n this._ductDesign.roundStorageDiameter / 2 * xScale,\r\n (this._ductDesign.roundStorageDiameter / 2 * xScale) * topAspect,\r\n 0,\r\n -3 * Math.PI / 2,\r\n Math.PI,\r\n true\r\n );\r\n this.ctx.stroke();\r\n\r\n //Outlet\r\n this.ctx.beginPath();\r\n this.ctx.ellipse(\r\n xEnd - (this._ductDesign.outletDiameter / 2 * xScale),\r\n outletY,\r\n this._ductDesign.outletDiameter / 2 * xScale,\r\n this._ductDesign.outletDiameter / 2 * xScale * topAspect,\r\n 0,\r\n -(3 * Math.PI / 2),\r\n 0,\r\n true\r\n );\r\n this.ctx.stroke();\r\n\r\n //Front Wall\r\n this.ctx.beginPath();\r\n this.ctx.moveTo(xEnd, cutOffY);\r\n this.ctx.lineTo(xEnd, outletY);\r\n this.ctx.stroke();\r\n\r\n this.ctx.beginPath();\r\n this.ctx.moveTo(\r\n xCenter,\r\n groundY + this._ductDesign.roundStorageDiameter * xScale * topAspect / 2);\r\n this.ctx.lineTo(\r\n xEnd - (this._ductDesign.outletDiameter * xScale / 2),\r\n outletY + (this._ductDesign.outletDiameter * xScale * topAspect / 2));\r\n this.ctx.stroke();\r\n\r\n this.ctx.beginPath();\r\n this.ctx.moveTo(\r\n xCenter,\r\n groundY + this._ductDesign.roundStorageDiameter * xScale * topAspect / 2);\r\n this.ctx.lineTo(\r\n xCenter,\r\n cutOffY + (this._ductDesign.roundStorageDiameter * xScale * topAspect / 2));\r\n this.ctx.stroke();\r\n\r\n //Outlet Cross\r\n let AX = Math.cos(Math.PI / 4) * this._ductDesign.outletDiameter / 2;\r\n let AY = AX;\r\n\r\n let leftX = xEnd - ((this._ductDesign.outletDiameter / 2 + AX) * xScale);\r\n let rightX = xEnd + ((AX - (this._ductDesign.outletDiameter / 2)) * xScale);\r\n let bottomY = outletY + (AY * xScale * topAspect);\r\n let topY = outletY - (AY * xScale * topAspect);\r\n\r\n this.ctx.beginPath();\r\n this.ctx.moveTo(leftX, topY);\r\n this.ctx.lineTo(rightX, topY);\r\n this.ctx.lineTo(rightX, bottomY);\r\n this.ctx.lineTo(leftX, bottomY);\r\n this.ctx.lineTo(leftX, topY);\r\n this.ctx.closePath();\r\n this.ctx.stroke();\r\n\r\n this.ctx.beginPath();\r\n this.ctx.moveTo(rightX, topY);\r\n this.ctx.lineTo(leftX, bottomY);\r\n this.ctx.stroke();\r\n\r\n this.ctx.beginPath();\r\n this.ctx.moveTo(rightX, bottomY);\r\n this.ctx.lineTo(leftX, topY);\r\n this.ctx.stroke();\r\n\r\n //Wall\r\n for (let i = cutOffY; i < groundY; i += 4) {\r\n this.ctx.beginPath();\r\n this.ctx.ellipse(\r\n xCenter,\r\n i,\r\n this._ductDesign.roundStorageDiameter / 2 * xScale,\r\n this._ductDesign.roundStorageDiameter / 2 * xScale * topAspect,\r\n 0,\r\n -3 * Math.PI / 2,\r\n Math.PI,\r\n true\r\n );\r\n this.ctx.stroke();\r\n }\r\n\r\n //Floor\r\n for (let i = xCenter; i < xEnd - (this._ductDesign.outletDiameter / 2 * xScale); i += 8) {\r\n let yForDraw = groundY + (((i - xCenter) /\r\n (xEnd - (this._ductDesign.outletDiameter / 2 * xScale) - xCenter)) *\r\n (outletY - groundY));\r\n this.ctx.beginPath();\r\n this.ctx.ellipse(\r\n i,\r\n yForDraw,\r\n xEnd - i,\r\n (xEnd - i) * topAspect,\r\n 0,\r\n 0,\r\n -Math.PI,\r\n true\r\n );\r\n this.ctx.stroke();\r\n }\r\n\r\n //White Ellipse Under Wall\r\n this.ctx.beginPath();\r\n this.ctx.strokeStyle = 'white';\r\n this.ctx.lineWidth = 2;\r\n this.ctx.ellipse(\r\n xCenter,\r\n groundY,\r\n this._ductDesign.roundStorageDiameter / 2 * xScale,\r\n this._ductDesign.roundStorageDiameter / 2 * xScale * topAspect,\r\n 0,\r\n -(3 * Math.PI / 2),\r\n 0,\r\n true\r\n );\r\n this.ctx.stroke();\r\n this.ctx.strokeStyle = 'black';\r\n this.ctx.lineWidth = 1;\r\n\r\n //LABELS\r\n //A\r\n let aYPosition = y[0] - (yScale * this._ductDesign.openingDiameter / 12);\r\n this.drawLabel('A', x[0] - 5, aYPosition - (this.rectHeight - this.textHeight));\r\n\r\n //B\r\n let bXPosition = xCenter - (this._ductDesign.roundStorageDiameter / 2 * xScale) +\r\n (this.ctx.measureText('B').width / 2);\r\n\r\n this.drawLabel(\r\n 'B',\r\n bXPosition,\r\n y[2] - (yScale * this._ductDesign.ductDiameter / 12) -\r\n ((this.rectHeight - this.textHeight) / 2));\r\n\r\n //C\r\n let perfStr: string;\r\n if (this._ductDesign.ductType == AqsDuctTypeEnum.FullRoundDuct) {\r\n let perfDMaxStr = Math.floor(this._ductDesign.perfDMax);\r\n\r\n if (perfDMaxStr / 2 !== Math.floor(this._ductDesign.perfDMax / 2)) {\r\n perfDMaxStr = perfDMaxStr - 1;\r\n }\r\n\r\n if (perfDMaxStr < 2) {\r\n perfDMaxStr = 2;\r\n }\r\n\r\n perfStr = `C (2-${perfDMaxStr})`;\r\n } else {\r\n let inchesDMax = Math.floor(this._ductDesign.perfDMax * 12);\r\n\r\n while (Math.floor(inchesDMax / 16) !== inchesDMax / 16) {\r\n inchesDMax = inchesDMax - 1;\r\n }\r\n\r\n if (inchesDMax < 16) {\r\n inchesDMax = 16;\r\n }\r\n\r\n perfStr = `C (1-4 to ${Math.floor(inchesDMax / 12)}-${Math.round(inchesDMax - (Math.floor(inchesDMax / 12) * 12))})`;\r\n }\r\n\r\n let perfHopperHeight = (y[2] + (((x[3] + addx) - x[2]) / (x[3] - x[2]) * (y[3] - y[2]))) -\r\n (y[2] + (((beginX + addx) - x[2]) / (x[3] - x[2]) * (y[3] - y[2])));\r\n\r\n let cYPosition = (y[2] + (((x[3] + addx) - x[2]) / (x[3] - x[2]) * (y[3] - y[2]))) - (perfHopperHeight / 2);\r\n\r\n this.drawLabel(\r\n perfStr,\r\n (this.width / 2) -\r\n (this.ctx.measureText(perfStr).width / 2),\r\n cYPosition);\r\n\r\n if (this._ductDesign.solidDuctLengthNoSingle > 0) {\r\n let dX = x[3];\r\n let dY = y[3];\r\n let t = this._ductDesign.perforatedDuctLengthFt + this._ductDesign.solidDuctLengthNoSingle / 12 / (this._ductDesign.ductType == AqsDuctTypeEnum.FullRoundDuct ? 2 : 1.5);\r\n let h = t * Math.sin(this._ductDesign.hopperPitch * Math.PI / 180);\r\n dX = dX - t * Math.cos(this._ductDesign.hopperPitch * Math.PI / 180) * xScale;\r\n dY = dY - h * yScale * sideAspect + this.textHeight / 2;\r\n this.drawLabel(this._ductDesign.letterSolidDuctLengthNoSingle, dX, dY);\r\n }\r\n\r\n\r\n //Draw Typical Of Runs Quantity\r\n if (this._ductDesign.numberOfDucts > 1) {\r\n this.drawTypicalOf(y[2] - (yScale * this._ductDesign.ductDiameter / 12) -\r\n (yScale * this._ductDesign.ductDiameter / 24))\r\n }\r\n }\r\n\r\n private draw3DNoHopperPitch() {\r\n let topAspect = 8 / 36;\r\n let sideAspect = 20 / 12;\r\n\r\n let totalY = this._ductDesign.steamwall + 4 + (this._ductDesign.roundStorageDiameter * topAspect);\r\n let yTop = this.height - (this.overheadCircleRadius * 2 - 30);\r\n let bottomY = this.height;\r\n let xLeft = 25;\r\n let xRight = this.width - 25;\r\n let yScale = (bottomY - yTop) / totalY;\r\n let xScale = yScale * 12 / 5;\r\n\r\n if (xScale * this._ductDesign.roundStorageDiameter > xRight - xLeft) {\r\n xScale = (xRight - xLeft) / this._ductDesign.roundStorageDiameter;\r\n yScale = 5 * xScale / 12;\r\n }\r\n\r\n let xCenter = this.width / 2;\r\n let yBottom = Math.floor(bottomY - (topAspect * this._ductDesign.roundStorageDiameter / 2 * xScale));\r\n let steamwallY = yBottom - (this._ductDesign.steamwall * 2 * yScale);\r\n let cutOffY = yBottom - ((this._ductDesign.steamwall * 2 + 6) * yScale);\r\n\r\n let x: number[] = [];\r\n x.length = 4;\r\n let y: number[] = [];\r\n y.length = 4;\r\n\r\n //Calculate points\r\n x[0] = xCenter - (this._ductDesign.roundStorageDiameter * xScale / 2) - 15;\r\n y[0] = Math.floor(steamwallY - (this._ductDesign.openingDiameter / 24 * yScale));\r\n\r\n if (this._ductDesign.steamwall > 0) {\r\n x[1] = xCenter - (((this._ductDesign.roundStorageDiameter / 2) -\r\n (this._ductDesign.openingDiameter / 24)) * xScale);\r\n } else {\r\n x[1] = xCenter - (this._ductDesign.roundStorageDiameter * xScale / 2);\r\n }\r\n\r\n y[1] = y[0];\r\n x[2] = x[1];\r\n y[3] = Math.floor(yBottom - (this._ductDesign.ductDiameter / 24 * yScale));\r\n y[2] = y[3];\r\n\r\n if (this._ductDesign.roundDuctDesignType == AqsRoundDuctDesignType.SingleFan) {\r\n x[3] = x[1] + ((this._ductDesign.solidDuctLengthFt + this._ductDesign.perforatedDuctLengthFt) * xScale);\r\n } else if (this._ductDesign.roundDuctDesignType == AqsRoundDuctDesignType.MultipleFans) {\r\n x[3] = xCenter;\r\n }\r\n\r\n let startArc = Math.PI / 2;\r\n let endArc = 3 * Math.PI / 2;\r\n\r\n if (this._ductDesign.ductType == AqsDuctTypeEnum.HalfRoundDuct) {\r\n y[3] = yBottom;\r\n startArc = Math.PI;\r\n endArc = 0;\r\n }\r\n\r\n let ductY;\r\n if (this._ductDesign.ductType == AqsDuctTypeEnum.FullRoundDuct) {\r\n ductY = this._ductDesign.steamwall > 0 ? y[3] : y[3] - (this._ductDesign.ductDiameter / 24 * yScale);\r\n } else {\r\n ductY = this._ductDesign.steamwall > 0 ?\r\n y[3] + (this._ductDesign.openingDiameter / 32 * yScale) :\r\n y[0] + (this._ductDesign.ductDiameter / 36 * yScale);\r\n }\r\n\r\n //Draw Solid Duct\r\n for (let i = x[2]; i < x[3] - (this._ductDesign.perforatedDuctLengthFt * xScale); i++) {\r\n this.ctx.beginPath();\r\n this.ctx.ellipse(\r\n i,\r\n ductY,\r\n yScale * this._ductDesign.ductDiameter / 24,\r\n (yScale * this._ductDesign.ductDiameter / 24) * sideAspect,\r\n 0,\r\n startArc,\r\n endArc);\r\n this.ctx.stroke();\r\n }\r\n\r\n //Draw Duct Work\r\n if (this._ductDesign.steamwall > 0) {\r\n //Opening Diameter\r\n for (let i = x[0]; i < x[1] + (this._ductDesign.openingDiameter / 72 * xScale); i++) {\r\n this.ctx.beginPath();\r\n this.ctx.ellipse(\r\n i,\r\n y[0] + (this._ductDesign.openingDiameter / 33 * xScale),\r\n yScale * this._ductDesign.openingDiameter / 24,\r\n (yScale * this._ductDesign.openingDiameter / 18) * sideAspect,\r\n 0,\r\n Math.PI / 2,\r\n (3 * Math.PI / 2),\r\n false);\r\n this.ctx.fill();\r\n }\r\n\r\n //Bottom Rounding\r\n for (let i = 1; i < this._ductDesign.openingDiameter / 24 * xScale; i++) {\r\n this.ctx.beginPath();\r\n this.ctx.ellipse(\r\n x[2],\r\n y[2] + (this._ductDesign.openingDiameter / 32 * yScale),\r\n i,\r\n i * (5 / 12),\r\n 0,\r\n Math.PI,\r\n -(3 * Math.PI / 2),\r\n true);\r\n this.ctx.fill();\r\n }\r\n\r\n //Steamwall Duct \r\n for (let i = y[1] + (this._ductDesign.openingDiameter / 120 * xScale);\r\n i < y[2] + (this._ductDesign.openingDiameter / 24 * yScale); i += 0.5) {\r\n this.ctx.beginPath();\r\n this.ctx.moveTo(x[1] - (xScale * this._ductDesign.openingDiameter / 24), i);\r\n this.ctx.lineTo(x[1] + (xScale * this._ductDesign.openingDiameter / 24), i);\r\n this.ctx.closePath()\r\n this.ctx.stroke();\r\n }\r\n\r\n //Top Rounding\r\n for (let i = 1; i < this._ductDesign.openingDiameter / 24 * xScale; i++) {\r\n this.ctx.beginPath();\r\n this.ctx.ellipse(\r\n x[1],\r\n y[1] + (this._ductDesign.openingDiameter / 120 * xScale),\r\n i,\r\n i * (5 / 12),\r\n 0,\r\n 3 * Math.PI / 2,\r\n -Math.PI / 2,\r\n true);\r\n this.ctx.fill();\r\n }\r\n\r\n this.ctx.beginPath();\r\n this.ctx.rect(x[2],\r\n y[2] + (this._ductDesign.openingDiameter / 24 * yScale),\r\n (xScale * this._ductDesign.openingDiameter / 24),\r\n (xScale * this._ductDesign.openingDiameter / 18) * topAspect)\r\n this.ctx.fill();\r\n } else {\r\n //Opening Diameter\r\n for (let i = x[0]; i < x[1]; i++) {\r\n this.ctx.beginPath();\r\n this.ctx.ellipse(\r\n i,\r\n y[0] - yScale * this._ductDesign.openingDiameter / 24,\r\n yScale * this._ductDesign.openingDiameter / 24,\r\n (yScale * this._ductDesign.openingDiameter / 24) * sideAspect,\r\n 0,\r\n Math.PI / 2,\r\n 3 * Math.PI / 2);\r\n this.ctx.stroke();\r\n }\r\n }\r\n\r\n let addY = this._ductDesign.steamwall > 0 ? (this._ductDesign.ductDiameter / 32 * yScale) : 0;\r\n this.ctx.beginPath();\r\n this.ctx.moveTo(xCenter - (this._ductDesign.roundStorageDiameter / 2 * xScale), cutOffY);\r\n this.ctx.lineTo(xCenter - (this._ductDesign.roundStorageDiameter / 2 * xScale), yBottom + addY);\r\n this.ctx.closePath();\r\n this.ctx.stroke();\r\n\r\n //Perforated Duct\r\n let delimer = this._ductDesign.ductType == AqsDuctTypeEnum.HalfRoundDuct ? 18 : 24\r\n\r\n let startPerfX = x[3] - (this._ductDesign.perforatedDuctLengthFt * xScale);\r\n let maxPerfI = this._ductDesign.steamwall > 0 &&\r\n this._ductDesign.roundDuctDesignType == AqsRoundDuctDesignType.SingleFan ? x[3] -\r\n (this._ductDesign.openingDiameter / delimer * xScale) : x[3];\r\n\r\n if (this._ductDesign.steamwall > 0 &&\r\n this._ductDesign.roundDuctDesignType == AqsRoundDuctDesignType.MultipleFans) {\r\n startPerfX = x[1]\r\n }\r\n\r\n for (let i = startPerfX + 3; i < maxPerfI; i += 3) {\r\n this.ctx.beginPath();\r\n this.ctx.ellipse(\r\n i,\r\n ductY,\r\n yScale * this._ductDesign.ductDiameter / 24,\r\n ((yScale * this._ductDesign.ductDiameter / 24) * sideAspect),\r\n 0,\r\n startArc,\r\n endArc);\r\n this.ctx.stroke();\r\n }\r\n\r\n if (this._ductDesign.ductType == AqsDuctTypeEnum.FullRoundDuct &&\r\n (x[3] < xCenter + (this._ductDesign.roundStorageDiameter / 2 * xScale) ||\r\n this._ductDesign.steamwall == 0)) {\r\n this.ctx.beginPath();\r\n this.ctx.ellipse(\r\n maxPerfI,\r\n ductY,\r\n yScale * this._ductDesign.ductDiameter / 24,\r\n (yScale * this._ductDesign.ductDiameter / 24) * sideAspect,\r\n 0,\r\n 0,\r\n Math.PI * 2);\r\n this.ctx.stroke();\r\n }\r\n\r\n //Draw Bin\r\n this.ctx.beginPath();\r\n this.ctx.ellipse(\r\n xCenter,\r\n cutOffY,\r\n this._ductDesign.roundStorageDiameter / 2 * xScale,\r\n this._ductDesign.roundStorageDiameter / 2 * xScale * topAspect,\r\n 0,\r\n 0,\r\n -Math.PI,\r\n true);\r\n this.ctx.stroke();\r\n\r\n let startLineY = this._ductDesign.ductType == AqsDuctTypeEnum.FullRoundDuct ?\r\n ductY + (this._ductDesign.ductDiameter / 14 * yScale) : ductY;\r\n this.ctx.beginPath();\r\n this.ctx.moveTo(this.width / 2, startLineY)\r\n this.ctx.ellipse(\r\n xCenter,\r\n yBottom,\r\n this._ductDesign.roundStorageDiameter / 2 * xScale,\r\n this._ductDesign.roundStorageDiameter / 2 * xScale * topAspect,\r\n 0,\r\n -13 * Math.PI / 8,\r\n Math.PI,\r\n true);\r\n this.ctx.stroke();\r\n\r\n this.ctx.beginPath();\r\n this.ctx.moveTo(this.width / 2, startLineY);\r\n this.ctx.lineTo(this.width / 2 - (this._ductDesign.roundStorageDiameter / 2 * xScale), startLineY);\r\n this.ctx.stroke();\r\n\r\n this.ctx.beginPath();\r\n this.ctx.ellipse(\r\n xCenter,\r\n steamwallY,\r\n this._ductDesign.roundStorageDiameter / 2 * xScale,\r\n this._ductDesign.roundStorageDiameter / 2 * xScale * topAspect,\r\n 0,\r\n 0,\r\n -Math.PI,\r\n true);\r\n this.ctx.stroke();\r\n\r\n this.ctx.beginPath();\r\n this.ctx.moveTo(xCenter + (this._ductDesign.roundStorageDiameter / 2 * xScale), cutOffY);\r\n this.ctx.lineTo(xCenter + (this._ductDesign.roundStorageDiameter / 2 * xScale), yBottom);\r\n this.ctx.closePath();\r\n this.ctx.stroke();\r\n\r\n for (let i = cutOffY; i < steamwallY; i += 4) {\r\n this.ctx.beginPath();\r\n this.ctx.ellipse(\r\n xCenter,\r\n i,\r\n this._ductDesign.roundStorageDiameter / 2 * xScale,\r\n this._ductDesign.roundStorageDiameter / 2 * xScale * topAspect,\r\n 0,\r\n -(13 * Math.PI / 8),\r\n 0,\r\n true);\r\n this.ctx.stroke();\r\n }\r\n\r\n for (let i = steamwallY; i < yBottom; i++) {\r\n this.ctx.beginPath();\r\n this.ctx.ellipse(\r\n xCenter,\r\n i,\r\n this._ductDesign.roundStorageDiameter / 2 * xScale,\r\n this._ductDesign.roundStorageDiameter / 2 * xScale * topAspect,\r\n 0,\r\n -(13 * Math.PI / 8),\r\n 0,\r\n true);\r\n this.ctx.stroke();\r\n }\r\n\r\n //LABELS\r\n let sizeB: TextMetrics = this.ctx.measureText('B');\r\n let sizeC: TextMetrics = this.ctx.measureText('C');\r\n let sizeD: TextMetrics = this.ctx.measureText('D');\r\n\r\n //A\r\n let aYPosition = this._ductDesign.steamwall > 0 ?\r\n (y[0] - (this._ductDesign.openingDiameter / 36 * xScale)) :\r\n y[0] - yScale * this._ductDesign.openingDiameter / 24 -\r\n ((yScale * this._ductDesign.openingDiameter / 11));\r\n\r\n this.drawLabel('A', x[0] - 5, aYPosition - (this.rectHeight - this.textHeight));\r\n\r\n //B\r\n let bXPosition = xCenter - (this._ductDesign.roundStorageDiameter / 2 * xScale) + (sizeB.width / 2);\r\n\r\n this.drawLabel(\r\n 'B',\r\n bXPosition,\r\n (ductY - (this._ductDesign.ductDiameter / 36 * xScale)) -\r\n (yScale * this._ductDesign.ductDiameter / 36) -\r\n ((this.rectHeight - this.textHeight) / 2));\r\n\r\n if (this._ductDesign.roundDuctDesignType == AqsRoundDuctDesignType.SingleFan) {\r\n //C\r\n let cXPosition = (x[3] - (this._ductDesign.perforatedDuctLengthFt * xScale)) -\r\n (this._ductDesign.solidDuctLengthFt * xScale / 2) - (sizeC.width / 2);\r\n if (cXPosition < bXPosition + (sizeB.width * 2)) {\r\n cXPosition = bXPosition + (sizeB.width * 2) - (sizeC.width / 2);\r\n }\r\n this.drawLabel(\r\n 'C',\r\n cXPosition,\r\n (ductY - (this._ductDesign.ductDiameter / 36 * xScale)) -\r\n (yScale * this._ductDesign.ductDiameter / 36) - ((this.rectHeight - this.textHeight) / 2));\r\n\r\n //D\r\n let dXPosition = maxPerfI <= cXPosition + sizeC.width + (sizeD.width * 4) ?\r\n cXPosition + (sizeC.width * 2) - (sizeD.width / 2) :\r\n startPerfX + (this._ductDesign.perforatedDuctLengthFt * xScale / 2) - (sizeD.width / 2);\r\n\r\n this.drawLabel(\r\n 'D',\r\n dXPosition,\r\n (ductY - (this._ductDesign.ductDiameter / 36 * xScale)) -\r\n (yScale * this._ductDesign.ductDiameter / 36) - ((this.rectHeight - this.textHeight) / 2));\r\n } else {\r\n if (this._ductDesign.ductType == AqsDuctTypeEnum.FullRoundDuct) {\r\n this.drawLabel(\r\n `C (2 to ${this._ductDesign.perfCMax})`,\r\n x[3] - (this._ductDesign.perforatedDuctLengthFt * xScale / 2),\r\n (ductY - (this._ductDesign.ductDiameter / 36 * xScale)) -\r\n (yScale * this._ductDesign.ductDiameter / 36));\r\n } else {\r\n let max = Math.floor(this._ductDesign.perfCMax / 12) + '-' +\r\n Math.round(this._ductDesign.perfCMax - (Math.floor(this._ductDesign.perfCMax / 12) * 12));\r\n let label = `C (1-4 to ${max})`;\r\n this.drawLabel(\r\n label,\r\n bXPosition + (this.ctx.measureText('B').width * 3),\r\n (ductY - (this._ductDesign.ductDiameter / 36 * xScale)) -\r\n (yScale * this._ductDesign.ductDiameter / 36));\r\n }\r\n\r\n if (this._ductDesign.solidDuctLengthNoSingle > 0) {\r\n this.drawLabel(\r\n this._ductDesign.letterSolidDuctLengthNoSingle,\r\n x[3] - (this._ductDesign.perforatedDuctLengthFt * xScale) - (this._ductDesign.solidDuctLengthNoSingle / 12 / 1.5 * xScale),\r\n ductY + (yScale * this._ductDesign.ductDiameter / 24 / (this._ductDesign.ductType == AqsDuctTypeEnum.FullRoundDuct ? 1 : 4)) * sideAspect + this.textHeight + 2,\r\n //false\r\n );\r\n }\r\n }\r\n\r\n //Typical Of Fans Quantity\r\n if (this._ductDesign.numberOfDucts > 1) {\r\n this.drawTypicalOf((ductY - (this._ductDesign.ductDiameter / 36 * xScale)) -\r\n (yScale * this._ductDesign.ductDiameter / 36));\r\n }\r\n }\r\n\r\n private draw3DHopperConical() {\r\n let drawType = this._ductDesign.steamwall > 0 ? 1 : 3;\r\n\r\n if (this._ductDesign.ledge == 0) {\r\n drawType = drawType + 1;\r\n }\r\n\r\n let hopperHeight = (Math.tan(this._ductDesign.hopperPitch * Math.PI / 180) *\r\n (this._ductDesign.roundStorageDiameter / 2 - this._ductDesign.ledge)) -\r\n (Math.tan(this._ductDesign.hopperPitch * Math.PI / 180) *\r\n (this._ductDesign.outletDiameter / 2));\r\n\r\n let topAspect = 8 / 36;\r\n let sideAspect = 20 / 12;\r\n let cutOff = this._ductDesign.steamwall + 4;\r\n let totalY = hopperHeight + cutOff;\r\n let yTop = this.height - (this.overheadCircleRadius * 2 - 30);\r\n let yBottom = this.height - 50 - (50 - this._ductDesign.hopperPitch);\r\n let xRight = this.width - 25;\r\n let xLeft = 25;\r\n let yScale = (yBottom - yTop) / totalY;\r\n let xScale = yScale * 12 / 5;\r\n\r\n if (xScale * this._ductDesign.roundStorageDiameter > xRight - xLeft) {\r\n xScale = (xRight - xLeft) / this._ductDesign.roundStorageDiameter;\r\n yScale = 5 * xScale / 12;\r\n }\r\n\r\n let xCenter = this.width / 2;\r\n let outletY = yBottom;\r\n let ledgeY = outletY - (hopperHeight * yScale);\r\n let steamwallY = ledgeY - (this._ductDesign.steamwall * xScale);\r\n let cutOffY = ledgeY - (cutOff * xScale);\r\n\r\n //Calculate Points\r\n let x: number[] = [];\r\n x.length = 5;\r\n let y: number[] = [];\r\n y.length = 5;\r\n\r\n x[0] = xCenter - (this._ductDesign.roundStorageDiameter * xScale / 2) - 15;\r\n y[0] = Math.floor(steamwallY - (this._ductDesign.openingDiameter / 24 * yScale));\r\n\r\n if (drawType < 3) {\r\n x[1] = xCenter - (((this._ductDesign.roundStorageDiameter / 2) - (this._ductDesign.openingDiameter / 24)) * xScale);\r\n } else {\r\n x[1] = xCenter - (this._ductDesign.roundStorageDiameter * xScale / 2);\r\n }\r\n\r\n y[1] = y[0];\r\n x[2] = x[1];\r\n y[2] = Math.floor(ledgeY - (this._ductDesign.openingDiameter / 24 * yScale));\r\n\r\n let startArc = Math.PI / 2;\r\n let endArc;\r\n if (this._ductDesign.ductType == AqsDuctTypeEnum.FullRoundDuct) {\r\n y[3] = Math.floor(ledgeY - (this._ductDesign.ductDiameter / 24 * yScale));\r\n x[3] = xCenter - ((this._ductDesign.roundStorageDiameter / 2 - this._ductDesign.ledge) * xScale);\r\n x[4] = xCenter - (this._ductDesign.outletDiameter / 2 * xScale);\r\n y[4] = Math.floor(outletY - (this._ductDesign.ductDiameter / 24 * yScale));\r\n endArc = 3 * Math.PI / 2;\r\n } else {\r\n y[3] = Math.floor(ledgeY + (this._ductDesign.ductDiameter / 6));\r\n x[3] = xCenter - ((this._ductDesign.roundStorageDiameter / 2 - this._ductDesign.ledge) * xScale);\r\n x[4] = xCenter - (this._ductDesign.outletDiameter / 2 * xScale);\r\n y[4] = Math.floor(outletY + (this._ductDesign.ductDiameter / 6));\r\n startArc = 0;\r\n endArc = Math.PI;\r\n }\r\n\r\n //Draw Solid Duct\r\n let addXForSteamwall = this._ductDesign.steamwall > 0 ? xScale * this._ductDesign.openingDiameter / 24 : 0;\r\n if (drawType == 1 || drawType == 3) {\r\n for (let i = x[2] + addXForSteamwall; i < x[3] - (this._ductDesign.perforatedCDuctLengthFt * xScale); i++) {\r\n this.ctx.beginPath();\r\n this.ctx.ellipse(\r\n i,\r\n y[3] - (yScale * this._ductDesign.ductDiameter / 36),\r\n yScale * this._ductDesign.ductDiameter / 24,\r\n (yScale * this._ductDesign.ductDiameter / 24) * sideAspect,\r\n 0,\r\n startArc,\r\n -endArc,\r\n true);\r\n this.ctx.stroke();\r\n }\r\n }\r\n\r\n let cone = Math.sqrt(Math.pow(hopperHeight, 2) +\r\n Math.pow((this._ductDesign.roundStorageDiameter / 2) -\r\n this._ductDesign.ledge -\r\n (this._ductDesign.outletDiameter / 2), 2));\r\n\r\n let beginX = xCenter - (this._ductDesign.outletDiameter / 2 * xScale) -\r\n ((this._ductDesign.perforatedDuctLengthFt / cone) *\r\n ((this._ductDesign.roundStorageDiameter / 2) -\r\n this._ductDesign.ledge -\r\n (this._ductDesign.outletDiameter / 2)) * xScale);\r\n\r\n let addXSolidD = this._ductDesign.ledge == 0 ? addXForSteamwall : 0;\r\n for (let i = x[3] + 4 + addXSolidD; i < beginX + 4; i++) {\r\n let yForDraw = (y[3] - (yScale * this._ductDesign.ductDiameter / 36)) + ((i - x[3]) / (x[4] - x[3]) * (y[4] - y[3]));\r\n this.ctx.beginPath();\r\n this.ctx.ellipse(\r\n i,\r\n yForDraw,\r\n yScale * this._ductDesign.ductDiameter / 24,\r\n (yScale * this._ductDesign.ductDiameter / 24) * sideAspect,\r\n 0,\r\n startArc,\r\n -endArc,\r\n true);\r\n this.ctx.stroke();\r\n }\r\n\r\n //Draw Duct Work\r\n //Opening Diameter\r\n if (drawType < 3) {\r\n for (let i = x[1] - 35 - (yScale * this._ductDesign.openingDiameter / 12); i < x[1] + (this._ductDesign.openingDiameter / 72 * xScale); i++) {\r\n this.ctx.beginPath();\r\n this.ctx.ellipse(\r\n i,\r\n y[0],\r\n yScale * this._ductDesign.openingDiameter / 24,\r\n (xScale * this._ductDesign.openingDiameter / 48) * sideAspect,\r\n 0,\r\n Math.PI / 2,\r\n 3 * Math.PI / 2);\r\n this.ctx.fill();\r\n }\r\n } else {\r\n for (let i = x[0]; i < x[1] + 3; i++) {\r\n this.ctx.beginPath();\r\n this.ctx.ellipse(\r\n i,\r\n y[0] - (yScale * this._ductDesign.openingDiameter / 36),\r\n yScale * this._ductDesign.openingDiameter / 24,\r\n (yScale * this._ductDesign.openingDiameter / 24) * sideAspect,\r\n 0,\r\n Math.PI / 2,\r\n 3 * Math.PI / 2);\r\n this.ctx.stroke();\r\n }\r\n }\r\n\r\n if (drawType < 3) {\r\n //Bottom Rounding\r\n for (let i = 1; i < this._ductDesign.openingDiameter / 24 * xScale; i++) {\r\n this.ctx.beginPath();\r\n this.ctx.ellipse(\r\n x[2],\r\n y[2],\r\n i,\r\n i * (5 / 12),\r\n 0,\r\n Math.PI,\r\n -(3 * Math.PI / 2),\r\n true);\r\n this.ctx.fill();\r\n }\r\n\r\n //Steamwall Duct\r\n for (let i = y[1] - (this._ductDesign.openingDiameter / 24 * yScale); i < y[2]; i++) {\r\n this.ctx.beginPath();\r\n this.ctx.ellipse(\r\n x[1],\r\n i,\r\n xScale * this._ductDesign.openingDiameter / 24,\r\n (xScale * this._ductDesign.openingDiameter / 24) * topAspect,\r\n 0,\r\n -Math.PI,\r\n 0,\r\n true);\r\n this.ctx.fill();\r\n }\r\n\r\n //Top Rounding\r\n for (let i = 1; i < this._ductDesign.openingDiameter / 24 * xScale; i++) {\r\n this.ctx.beginPath();\r\n this.ctx.ellipse(\r\n x[1],\r\n y[1] - (this._ductDesign.openingDiameter / 56 * xScale),\r\n i,\r\n i * (5 / 12),\r\n 0,\r\n -(3 * Math.PI / 2),\r\n Math.PI / 2,\r\n true);\r\n this.ctx.fill();\r\n }\r\n\r\n for (let i = x[1]; i < x[1] + (this._ductDesign.openingDiameter / 24 * xScale); i++) {\r\n this.ctx.beginPath();\r\n this.ctx.moveTo(i, y[2]);\r\n this.ctx.lineTo(i, y[2] + (this._ductDesign.openingDiameter / 24 * yScale));\r\n this.ctx.closePath();\r\n this.ctx.stroke();\r\n }\r\n }\r\n\r\n this.ctx.beginPath();\r\n this.ctx.moveTo(xCenter - (this._ductDesign.roundStorageDiameter / 2 * xScale), cutOffY);\r\n this.ctx.lineTo(xCenter - (this._ductDesign.roundStorageDiameter / 2 * xScale), ledgeY);\r\n this.ctx.moveTo(xCenter - (this._ductDesign.roundStorageDiameter / 2 * xScale), ledgeY);\r\n this.ctx.lineTo(xCenter - ((this._ductDesign.roundStorageDiameter / 2 - this._ductDesign.ledge) * xScale), ledgeY);\r\n this.ctx.stroke();\r\n\r\n if (drawType < 3) {\r\n this.ctx.beginPath();\r\n this.ctx.moveTo(x[2], ledgeY);\r\n this.ctx.lineTo(x[2] + (this._ductDesign.openingDiameter / 24 * xScale), ledgeY);\r\n this.ctx.closePath();\r\n this.ctx.stroke();\r\n }\r\n\r\n //Perf C Duct\r\n let addXPerfC = x[3] - (this._ductDesign.perforatedCDuctLengthFt * xScale) < x[1] &&\r\n this._ductDesign.steamwall > 0 ? addXForSteamwall : 0;\r\n for (let i = x[3] - (this._ductDesign.perforatedCDuctLengthFt * xScale) + addXPerfC; i < x[3]; i += 4) {\r\n this.ctx.beginPath();\r\n this.ctx.ellipse(\r\n i,\r\n y[3] - (yScale * this._ductDesign.ductDiameter / 36),\r\n yScale * this._ductDesign.ductDiameter / 24,\r\n (yScale * this._ductDesign.ductDiameter / 24) * sideAspect,\r\n 0,\r\n startArc,\r\n -endArc,\r\n true);\r\n this.ctx.stroke();\r\n }\r\n\r\n //Perf D Duct\r\n for (let i = beginX + 4; i < x[4]; i += 4) {\r\n let yForDraw = (y[3] - (yScale * this._ductDesign.ductDiameter / 36)) +\r\n ((i - x[3]) / (x[4] - x[3]) * (y[4] - y[3]));\r\n this.ctx.beginPath();\r\n this.ctx.ellipse(\r\n i,\r\n yForDraw,\r\n yScale * this._ductDesign.ductDiameter / 24,\r\n (yScale * this._ductDesign.ductDiameter / 24) * sideAspect,\r\n 0,\r\n startArc,\r\n -endArc,\r\n true);\r\n this.ctx.stroke();\r\n }\r\n\r\n //Last Ellipse\r\n if (this._ductDesign.ductType == AqsDuctTypeEnum.FullRoundDuct) {\r\n this.ctx.beginPath();\r\n this.ctx.ellipse(\r\n x[4],\r\n y[4] - (yScale * this._ductDesign.ductDiameter / 36),\r\n yScale * this._ductDesign.ductDiameter / 24,\r\n (yScale * this._ductDesign.ductDiameter / 24) * sideAspect,\r\n 0,\r\n 0,\r\n -(2 * Math.PI),\r\n true);\r\n this.ctx.stroke();\r\n } else {\r\n this.ctx.beginPath();\r\n this.ctx.ellipse(\r\n x[4],\r\n y[4] - (yScale * this._ductDesign.ductDiameter / 36),\r\n yScale * this._ductDesign.ductDiameter / 24,\r\n (yScale * this._ductDesign.ductDiameter / 24) * sideAspect,\r\n 0,\r\n 0,\r\n -Math.PI,\r\n true);\r\n this.ctx.stroke();\r\n }\r\n\r\n //Draw Bin \r\n this.ctx.beginPath();\r\n this.ctx.ellipse(\r\n xCenter,\r\n cutOffY,\r\n this._ductDesign.roundStorageDiameter / 2 * xScale,\r\n this._ductDesign.roundStorageDiameter / 2 * xScale * topAspect,\r\n 0,\r\n 0,\r\n -Math.PI,\r\n true);\r\n this.ctx.stroke();\r\n\r\n this.ctx.beginPath();\r\n this.ctx.ellipse(\r\n xCenter,\r\n outletY,\r\n this._ductDesign.outletDiameter / 2 * xScale,\r\n this._ductDesign.outletDiameter / 2 * xScale * topAspect,\r\n 0,\r\n 0,\r\n -(2 * Math.PI),\r\n true);\r\n this.ctx.stroke();\r\n\r\n this.ctx.beginPath();\r\n this.ctx.ellipse(\r\n xCenter,\r\n ledgeY,\r\n this._ductDesign.roundStorageDiameter / 2 * xScale,\r\n this._ductDesign.roundStorageDiameter / 2 * xScale * topAspect,\r\n 0,\r\n 0,\r\n - Math.PI,\r\n true);\r\n this.ctx.stroke();\r\n\r\n this.ctx.beginPath();\r\n this.ctx.ellipse(\r\n xCenter,\r\n steamwallY,\r\n this._ductDesign.roundStorageDiameter / 2 * xScale,\r\n this._ductDesign.roundStorageDiameter / 2 * xScale * topAspect,\r\n 0,\r\n 0,\r\n -Math.PI,\r\n true);\r\n this.ctx.stroke();\r\n\r\n if (this._ductDesign.ledge > 0) {\r\n this.ctx.beginPath();\r\n this.ctx.ellipse(\r\n xCenter,\r\n ledgeY,\r\n (this._ductDesign.roundStorageDiameter / 2 - this._ductDesign.ledge) * xScale,\r\n ((this._ductDesign.roundStorageDiameter / 2 - this._ductDesign.ledge) * xScale) * topAspect,\r\n 0,\r\n 0,\r\n -Math.PI,\r\n true);\r\n this.ctx.stroke();\r\n }\r\n\r\n this.ctx.beginPath();\r\n this.ctx.moveTo(xCenter - ((this._ductDesign.roundStorageDiameter / 2 - this._ductDesign.ledge) * xScale), ledgeY);\r\n this.ctx.lineTo(xCenter - (this._ductDesign.outletDiameter / 2 * xScale), outletY);\r\n this.ctx.closePath();\r\n this.ctx.stroke();\r\n\r\n this.ctx.beginPath();\r\n this.ctx.moveTo(xCenter + (this._ductDesign.roundStorageDiameter / 2 * xScale), cutOffY);\r\n this.ctx.lineTo(xCenter + (this._ductDesign.roundStorageDiameter / 2 * xScale), ledgeY);\r\n this.ctx.closePath();\r\n this.ctx.stroke();\r\n\r\n for (let i = ledgeY; i < outletY; i += 6) {\r\n let x = ((1 - ((i - ledgeY) / (outletY - ledgeY))) *\r\n (this._ductDesign.roundStorageDiameter - this._ductDesign.outletDiameter -\r\n (2 * this._ductDesign.ledge)) + this._ductDesign.outletDiameter)\r\n * xScale / 2;\r\n this.ctx.beginPath();\r\n this.ctx.ellipse(\r\n xCenter,\r\n i,\r\n x,\r\n x * topAspect,\r\n 0,\r\n -(13 * Math.PI / 8),\r\n 0,\r\n true);\r\n this.ctx.stroke();\r\n }\r\n\r\n for (let i = steamwallY; i < ledgeY; i++) {\r\n this.ctx.beginPath();\r\n this.ctx.ellipse(\r\n xCenter,\r\n i,\r\n this._ductDesign.roundStorageDiameter / 2 * xScale,\r\n this._ductDesign.roundStorageDiameter / 2 * xScale * topAspect,\r\n 0,\r\n -(13 * Math.PI / 8),\r\n 0, true);\r\n this.ctx.stroke();\r\n }\r\n\r\n for (let i = cutOffY; i < steamwallY; i += 4) {\r\n this.ctx.beginPath();\r\n this.ctx.ellipse(\r\n xCenter,\r\n i,\r\n this._ductDesign.roundStorageDiameter / 2 * xScale,\r\n this._ductDesign.roundStorageDiameter / 2 * xScale * topAspect,\r\n 0,\r\n -(13 * Math.PI / 8),\r\n 0,\r\n true);\r\n this.ctx.stroke();\r\n }\r\n\r\n //LABELS\r\n //A\r\n let aYPosition = y[0] - (yScale * this._ductDesign.openingDiameter / 36) -\r\n ((yScale * this._ductDesign.openingDiameter / 12))\r\n this.drawLabel('A', x[0] - 5, aYPosition - (this.rectHeight - this.textHeight));\r\n\r\n //B\r\n let bXPosition = xCenter - (this._ductDesign.roundStorageDiameter / 2 * xScale) +\r\n (this.ctx.measureText('B').width / 2);\r\n\r\n this.drawLabel(\r\n 'B',\r\n bXPosition,\r\n y[3] - (yScale * this._ductDesign.ductDiameter / 36) -\r\n (yScale * this._ductDesign.ductDiameter / 12)\r\n - ((this.rectHeight - this.textHeight) / 2));\r\n\r\n //C\r\n let cStr: string;\r\n let cXPosition: number;\r\n if (this._ductDesign.ledge > 0) {\r\n\r\n if (this._ductDesign.ductType == AqsDuctTypeEnum.FullRoundDuct) {\r\n cStr = `C (0-${this._ductDesign.perfCMax})`;\r\n } else {\r\n let perfCMaxStr = Math.floor(this._ductDesign.perfCMax / 12) + \"-\" +\r\n Math.round(this._ductDesign.perfCMax - (Math.floor(this._ductDesign.perfCMax / 12) * 12));\r\n cStr = `C (0 to ${perfCMaxStr})`;\r\n }\r\n\r\n cXPosition = x[3] - (this._ductDesign.perforatedCDuctLengthFt * xScale / 2) -\r\n (this.ctx.measureText(cStr).width / 2);\r\n\r\n if (cXPosition < bXPosition + (this.ctx.measureText('B').width * 2)) {\r\n cXPosition = bXPosition + (this.ctx.measureText('B').width * 2);\r\n }\r\n\r\n this.drawLabel(\r\n cStr,\r\n cXPosition,\r\n y[3] - (yScale * this._ductDesign.ductDiameter / 36) -\r\n (yScale * this._ductDesign.ductDiameter / 12));\r\n\r\n if (this._ductDesign.solidDuctCLengthNoSingle > 0) {\r\n let fXposition = x[3] - this._ductDesign.perforatedCDuctLengthFt * xScale - this._ductDesign.solidDuctCLengthNoSingle / 12 / 1.5 * xScale;\r\n let fYPostition = y[3] + (yScale * this._ductDesign.ductDiameter / 24 / (this._ductDesign.ductType == AqsDuctTypeEnum.FullRoundDuct ? 2 : 10)) * sideAspect + this.textHeight + 2;\r\n this.drawLabel(this._ductDesign.letterSolidDuctCLengthNoSingle, fXposition, fYPostition);\r\n }\r\n }\r\n\r\n //D\r\n let dStr: string;\r\n if (this._ductDesign.ductType == AqsDuctTypeEnum.FullRoundDuct) {\r\n dStr = `D (2-${this._ductDesign.perfDMax})`;\r\n } else {\r\n let perfDMaxStr = Math.floor(this._ductDesign.perfDMax / 12) + \"-\" +\r\n Math.round(this._ductDesign.perfDMax - (Math.floor(this._ductDesign.perfDMax / 12) * 12));\r\n dStr = `D (1-4 to ${perfDMaxStr})`;\r\n }\r\n let perfDHopperHeight = (y[3] - (yScale * this._ductDesign.ductDiameter / 36)) +\r\n ((beginX + 4 - x[3]) / (x[4] - x[3]) * (y[4] - y[3])) - (y[3] - (yScale * this._ductDesign.ductDiameter / 36)) +\r\n ((x[4] - x[3]) / (x[4] - x[3]) * (y[4] - y[3]));\r\n\r\n let addDistance = this._ductDesign.ductType == AqsDuctTypeEnum.FullRoundDuct ?\r\n (yScale * this._ductDesign.ductDiameter / 24) :\r\n (yScale * this._ductDesign.ductDiameter / 12);\r\n\r\n let dYPosition = (y[3] - addDistance) +\r\n ((x[4] - x[3]) / (x[4] - x[3]) * (y[4] - y[3]));\r\n\r\n let dXPosition = x[4] - (this._ductDesign.perforatedDuctLengthFt * xScale / 2);\r\n if (dYPosition - this.textHeight < y[3] - (yScale * this._ductDesign.ductDiameter / 36) -\r\n (yScale * this._ductDesign.ductDiameter / 12) &&\r\n dXPosition < cXPosition + this.ctx.measureText(cStr).width) {\r\n dYPosition = dYPosition + (perfDHopperHeight) + this.textHeight;\r\n } else {\r\n dYPosition = dYPosition - (perfDHopperHeight / 2)\r\n }\r\n\r\n this.drawLabel(\r\n dStr,\r\n dXPosition,\r\n dYPosition\r\n );\r\n\r\n if (this._ductDesign.solidDuctLengthNoSingle > 0) {\r\n let eX = x[4];\r\n let eY = y[3] + ((x[4] - x[3]) / (x[4] - x[3]) * (y[4] - y[3]));\r\n let t = this._ductDesign.perforatedDuctLengthFt + this._ductDesign.solidDuctLengthNoSingle / 12 / (this._ductDesign.ductType == AqsDuctTypeEnum.FullRoundDuct ? 2 : 1.5);\r\n let r = t * Math.sin(this._ductDesign.hopperPitch * Math.PI / 180);\r\n eX = eX - t * Math.cos(this._ductDesign.hopperPitch * Math.PI / 180) * xScale;\r\n eY = eY - r * yScale + this.textHeight * (this._ductDesign.ductType == AqsDuctTypeEnum.FullRoundDuct ? 1.5 : 1);\r\n this.drawLabel(\r\n this._ductDesign.letterSolidDuctLengthNoSingle,\r\n eX,\r\n eY\r\n );\r\n }\r\n //Draw Typical Of Runs Quantity\r\n if (this._ductDesign.numberOfDucts > 1) {\r\n this.drawTypicalOf(y[3] - (yScale * this._ductDesign.ductDiameter / 36) -\r\n (yScale * this._ductDesign.ductDiameter / 24))\r\n }\r\n }\r\n\r\n private drawTypicalOf(yPosition: number) {\r\n let textTypicalOf = `Typical of ${this._ductDesign.numberOfDucts} Runs`;\r\n\r\n let typicalSize: TextMetrics = this.ctx.measureText(textTypicalOf);\r\n let borderSize = 5;\r\n\r\n this.ctx.fillStyle = 'white';\r\n this.ctx.fillRect(\r\n (this.width / 2) - (typicalSize.width / 2) - borderSize,\r\n yPosition - (this.textHeight * 3) - borderSize,\r\n typicalSize.width + (borderSize * 2),\r\n this.rectHeight + (borderSize * 2));\r\n\r\n this.ctx.fillStyle = 'black';\r\n this.ctx.fillText(\r\n textTypicalOf,\r\n (this.width / 2) - (typicalSize.width / 2),\r\n yPosition - (this.textHeight * 2));\r\n }\r\n\r\n private drawLabel(text: string, x: number, y: number) {\r\n this.ctx.font = '16pt sans-serif';\r\n let textSize: TextMetrics = this.ctx.measureText(text);\r\n\r\n this.ctx.fillStyle = 'white';\r\n this.ctx.fillRect(\r\n x,\r\n y - this.textHeight,\r\n textSize.width,\r\n this.rectHeight);\r\n\r\n this.ctx.fillStyle = 'black';\r\n this.ctx.fillText(text, x, y);\r\n }\r\n\r\n private drawOverheadStorage() {\r\n this.ctx.lineWidth = 1;\r\n this.ctx.beginPath();\r\n this.ctx.arc(this.overheadCircleCenterX, this.overheadCircleCenterY, this.overheadCircleRadius, 0, Math.PI * 2, true);\r\n this.ctx.closePath()\r\n this.ctx.stroke();\r\n\r\n if (this._ductDesign.roundDuctDesignType == AqsRoundDuctDesignType.SingleFan) {\r\n this.drawSingleFanTypeOverhead();\r\n } else if (this._ductDesign.roundDuctDesignType == AqsRoundDuctDesignType.MultipleFans ||\r\n this._ductDesign.roundDuctDesignType == AqsRoundDuctDesignType.HopperPitchConical) {\r\n this.drawMultipleFansTypeOverhead();\r\n\r\n if (this._ductDesign.roundDuctDesignType == AqsRoundDuctDesignType.HopperPitchConical &&\r\n this._ductDesign.outletDiameter > 0) {\r\n let outletDiameterWithScale = this._ductDesign.outletDiameter * this.overheadScale;\r\n this.ctx.beginPath();\r\n this.ctx.arc(this.overheadCircleCenterX,\r\n this.overheadCircleCenterY,\r\n outletDiameterWithScale / 2,\r\n 0,\r\n Math.PI * 2);\r\n this.ctx.fillStyle = 'white';\r\n this.ctx.fill();\r\n this.ctx.stroke();\r\n this.ctx.fillStyle = 'black';\r\n }\r\n\r\n if (this._ductDesign.roundDuctDesignType == AqsRoundDuctDesignType.HopperPitchConical &&\r\n this._ductDesign.ledge > 0) {\r\n let diameterWithLedge = (this._ductDesign.roundStorageDiameter - (this._ductDesign.ledge * 2)) * this.overheadScale\r\n this.ctx.beginPath();\r\n this.ctx.arc(this.overheadCircleCenterX,\r\n this.overheadCircleCenterY,\r\n diameterWithLedge / 2,\r\n 0,\r\n Math.PI * 2);\r\n this.ctx.stroke();\r\n }\r\n } else if (this._ductDesign.roundDuctDesignType == AqsRoundDuctDesignType.HopperPitchSideDraw) {\r\n this.drawHopPitchSideDrawTypeOverhead();\r\n }\r\n }\r\n\r\n private drawHopPitchSideDrawTypeOverhead() {\r\n if (this._ductDesign.outletDiameter > 0) {\r\n let AX = Math.cos(Math.PI / 4) * this._ductDesign.outletDiameter / 2;\r\n let AY = AX;\r\n\r\n let leftX = this.overheadCircleCenterX +\r\n ((this._ductDesign.roundStorageDiameter / 2) -\r\n (this._ductDesign.outletDiameter / 2) - AX) * this.overheadScale;\r\n let rightX = this.overheadCircleCenterX +\r\n ((this._ductDesign.roundStorageDiameter / 2) -\r\n (this._ductDesign.outletDiameter / 2) + AX) * this.overheadScale;\r\n let upperY = this.overheadCircleCenterY - (AY * this.overheadScale);\r\n let lowerY = this.overheadCircleCenterY + (AY * this.overheadScale);\r\n\r\n this.ctx.moveTo(leftX, upperY);\r\n this.ctx.lineTo(leftX, lowerY);\r\n this.ctx.lineTo(rightX, lowerY);\r\n this.ctx.lineTo(rightX, upperY);\r\n this.ctx.lineTo(leftX, upperY);\r\n this.ctx.lineTo(rightX, lowerY);\r\n this.ctx.moveTo(rightX, upperY);\r\n this.ctx.lineTo(leftX, lowerY);\r\n this.ctx.closePath();\r\n this.ctx.stroke();\r\n }\r\n\r\n for (let i = 0; i < this._ductDesign.numberOfFans; i++) {\r\n for (let j = 0; j < this._ductDesign.ductsPerFan; j++) {\r\n let inDegree = this._ductDesign.innerDegree +\r\n (this._ductDesign.innerFanDegree * i) +\r\n (this._ductDesign.innerDuctDegree * j);\r\n\r\n let outDegree = 180 - this._ductDesign.outerDegree +\r\n (this._ductDesign.degreesBetweenFans * i) +\r\n (this._ductDesign.degreesBetweenDucts * j);\r\n let y = Math.sin(inDegree * Math.PI / 180) * (this._ductDesign.roundStorageDiameter / 2);\r\n let x = Math.cos(inDegree * Math.PI / 180) * (this._ductDesign.roundStorageDiameter / 2);\r\n x = x + this._ductDesign.roundStorageDiameter / 2;\r\n\r\n let ductPitch = Math.atan(this._ductDesign.coneHeight /\r\n Math.sqrt(Math.pow(this._ductDesign.roundStorageDiameter - x, 2) + Math.pow(y, 2)));\r\n let rr = Math.sqrt(Math.pow(this._ductDesign.roundStorageDiameter - x, 2) + Math.pow(y, 2)) -\r\n (Math.cos(ductPitch) * this._ductDesign.perfDMax);\r\n\r\n let yy = Math.sin((outDegree) * Math.PI / 180) * rr;\r\n let xx = Math.cos((outDegree) * Math.PI / 180) * rr;\r\n xx = this._ductDesign.roundStorageDiameter + xx;\r\n\r\n let addX = Math.cos((outDegree - 90) * Math.PI / 180) * (this._ductDesign.ductDiameter / 24);\r\n let addY = Math.sqrt(Math.pow(this._ductDesign.ductDiameter / 24, 2) - Math.pow(addX, 2));\r\n\r\n let pt1x = this.overheadCircleCenterX + ((x + addX - (this._ductDesign.roundStorageDiameter / 2)) * this.overheadScale);\r\n let pt2x = this.overheadCircleCenterX + ((addX + xx - (this._ductDesign.roundStorageDiameter / 2) - addX) * this.overheadScale);\r\n let pt3x = this.overheadCircleCenterX + ((xx - (this._ductDesign.roundStorageDiameter / 2) - addX) * this.overheadScale);\r\n let pt4x = this.overheadCircleCenterX + ((x - (this._ductDesign.roundStorageDiameter / 2) - addX) * this.overheadScale);\r\n let pt1y = this.overheadCircleCenterY - ((y + addY) * this.overheadScale);\r\n let pt2y = this.overheadCircleCenterY - ((yy + addY) * this.overheadScale);\r\n let pt3y = this.overheadCircleCenterY - ((yy - addY) * this.overheadScale);\r\n let pt4y = this.overheadCircleCenterY - ((y - addY) * this.overheadScale);\r\n\r\n this.ctx.beginPath();\r\n this.ctx.moveTo(pt1x, pt1y);\r\n this.ctx.lineTo(pt2x, pt2y);\r\n this.ctx.lineTo(pt3x, pt3y);\r\n this.ctx.lineTo(pt4x, pt4y);\r\n this.ctx.lineTo(pt1x, pt1y);\r\n this.ctx.fill();\r\n }\r\n }\r\n }\r\n\r\n private drawMultipleFansTypeOverhead() {\r\n let intervalDucts = this._ductDesign.degreesBetweenDucts;\r\n\r\n let arcSize = this.degreesToRadians(intervalDucts);\r\n\r\n let startAgle = 180;\r\n\r\n for (let i = 0; i < this._ductDesign.numberOfFans; i++) {\r\n let startDactAngle = startAgle;\r\n for (let j = 0; j < this._ductDesign.ductsPerFan; j++) {\r\n this.drawOverheadWithLineDegrees(arcSize, startDactAngle)\r\n if (j != this._ductDesign.ductsPerFan - 1) {\r\n startDactAngle = startDactAngle + intervalDucts;\r\n }\r\n }\r\n startAgle += this._ductDesign.degreesBetweenFans;\r\n }\r\n }\r\n\r\n private drawSingleFanTypeOverhead() {\r\n let ductDiameterWithScale = this._ductDesign.ductDiameter / 12 * this.overheadScale;\r\n\r\n let ductLengthIn = this._ductDesign.perforatedDuctLengthFt * 12;\r\n\r\n if (this._ductDesign.perforatedDuctLengthIn) {\r\n ductLengthIn = ductLengthIn + this._ductDesign.perforatedDuctLengthIn;\r\n }\r\n\r\n let solidLengthIn;\r\n if (this._ductDesign.solidDuctLengthFt) {\r\n ductLengthIn = ductLengthIn + this._ductDesign.solidDuctLengthFt * 12;\r\n solidLengthIn = this._ductDesign.solidDuctLengthFt * 12;\r\n }\r\n\r\n if (this._ductDesign.solidDuctLengthIn) {\r\n ductLengthIn = ductLengthIn + this._ductDesign.solidDuctLengthIn;\r\n solidLengthIn = solidLengthIn + this._ductDesign.solidDuctLengthIn;\r\n }\r\n\r\n let solidLengthWithScale;\r\n if (solidLengthIn) {\r\n let solidLengthPercentage = (solidLengthIn * 100) / (this._ductDesign.roundStorageDiameter * 12);\r\n solidLengthWithScale = (solidLengthPercentage * (this.overheadCircleRadius * 2)) / 100;\r\n }\r\n\r\n let ductLengthWithScale = ductLengthIn > this._ductDesign.roundStorageDiameter * 12 ?\r\n this._ductDesign.roundStorageDiameter * 12 * this.overheadScale :\r\n ductLengthIn / 12 * this.overheadScale;\r\n\r\n let ductLengthPercentage = (ductLengthIn * 100) / (this._ductDesign.roundStorageDiameter * 12);\r\n\r\n if (ductLengthPercentage > 100) {\r\n ductLengthPercentage = 100;\r\n }\r\n\r\n if (this._ductDesign.numberOfDucts % 2 !== 0) {\r\n let upperY = this.overheadCircleCenterY - (ductDiameterWithScale / 2);\r\n let lowerY = this.overheadCircleCenterY + (ductDiameterWithScale / 2);\r\n\r\n let coordinateY = lowerY - this.overheadCircleCenterY;\r\n let coordinateX = this.overheadCircleCenterX - Math.sqrt(Math.pow(this.overheadCircleRadius, 2) - Math.pow(coordinateY, 2));\r\n\r\n let finishX;\r\n if (ductLengthPercentage == 100) {\r\n finishX = this.width - coordinateX;\r\n } else {\r\n finishX = coordinateX + ductLengthWithScale;\r\n }\r\n\r\n this.drawOverheadPerfDuct(finishX, coordinateX, lowerY, coordinateX, upperY);\r\n\r\n if (solidLengthIn) {\r\n let finishXSolid = coordinateX + solidLengthWithScale;\r\n this.drawOverheadSolidDuct(finishXSolid, coordinateX, lowerY, coordinateX, upperY);\r\n }\r\n }\r\n\r\n if (this._ductDesign.numberOfDucts > 1) {\r\n let distanseCtrToCtrPercentage = ((this._ductDesign.distanceBetweenDuctsFt * 12 +\r\n this._ductDesign.distanceBetweenDuctsIn) * 100) / (this._ductDesign.roundStorageDiameter * 12);\r\n\r\n let distanceForDraw = (distanseCtrToCtrPercentage * (this.overheadCircleRadius * 2)) / 100;\r\n\r\n let distance = distanceForDraw;\r\n\r\n for (let i = 1; i <= Math.floor(this._ductDesign.numberOfDucts / 2); i++) {\r\n\r\n let firstDistance = this._ductDesign.numberOfDucts % 2 !== 0 ? distance : distance / 2\r\n\r\n let lowerY = this.overheadCircleCenterY - firstDistance + (ductDiameterWithScale / 2);\r\n let upperY = lowerY - ductDiameterWithScale;\r\n\r\n let lowerX = this.overheadCircleCenterX - (Math.sqrt(Math.pow(this.overheadCircleRadius, 2) - Math.pow(lowerY - this.overheadCircleCenterY, 2)));\r\n let upperX = this.overheadCircleCenterX - (Math.sqrt(Math.pow(this.overheadCircleRadius, 2) - Math.pow(upperY - this.overheadCircleCenterY, 2)));\r\n\r\n let finishX = lowerX + ductLengthWithScale;\r\n\r\n //Upper Duct\r\n this.drawOverheadPerfDuct(finishX, lowerX, lowerY, upperX, upperY);\r\n //Bottom Duct\r\n let bottomDuctUpperX = lowerX;\r\n let bottomDuctLowerX = upperX;\r\n let bottomDuctUpperY = this.overheadCircleCenterY + firstDistance - (ductDiameterWithScale / 2);\r\n let bottomDuctLowerY = bottomDuctUpperY + ductDiameterWithScale;\r\n this.drawOverheadPerfDuct(finishX, bottomDuctLowerX, bottomDuctLowerY, bottomDuctUpperX, bottomDuctUpperY);\r\n\r\n\r\n if (solidLengthWithScale) {\r\n let finishXSolid = lowerX + solidLengthWithScale;\r\n this.drawOverheadSolidDuct(finishXSolid, lowerX, lowerY, upperX, upperY);\r\n this.drawOverheadSolidDuct(finishXSolid, bottomDuctLowerX, bottomDuctLowerY, bottomDuctUpperX, bottomDuctUpperY);\r\n }\r\n\r\n distance = this._ductDesign.numberOfDucts % 2 !== 0 ? distance + distanceForDraw : distance + (distanceForDraw * 2)\r\n }\r\n }\r\n }\r\n\r\n private drawOverheadWithLineDegrees(arcSize, startingAngle) {\r\n this.ctx.beginPath();\r\n this.ctx.moveTo(this.overheadCircleCenterX, this.overheadCircleCenterY);\r\n this.ctx.arc(this.overheadCircleCenterX,\r\n this.overheadCircleCenterY,\r\n this.overheadCircleRadius,\r\n -this.degreesToRadians(startingAngle),\r\n -(startingAngle + arcSize), true);\r\n this.ctx.closePath();\r\n this.ctx.stroke();\r\n }\r\n\r\n private degreesToRadians(degrees) {\r\n return (degrees * Math.PI) / 180;\r\n }\r\n\r\n private drawOverheadPerfDuct(finishX, lowerX, lowerY, upperX, upperY) {\r\n this.ctx.beginPath();\r\n this.ctx.moveTo(finishX, upperY);\r\n this.ctx.lineTo(finishX, lowerY);\r\n this.ctx.closePath();\r\n this.ctx.stroke();\r\n\r\n this.ctx.beginPath();\r\n this.ctx.moveTo(lowerX, lowerY);\r\n this.ctx.lineTo(finishX, lowerY);\r\n this.ctx.moveTo(upperX, upperY);\r\n this.ctx.lineTo(finishX, upperY);\r\n this.ctx.closePath()\r\n this.ctx.stroke();\r\n }\r\n\r\n private drawOverheadSolidDuct(finishX, lowerX, lowerY, upperX, upperY) {\r\n this.ctx.beginPath();\r\n this.ctx.moveTo(upperX, upperY);\r\n this.ctx.lineTo(finishX, upperY);\r\n this.ctx.lineTo(finishX, lowerY);\r\n this.ctx.lineTo(lowerX, lowerY);\r\n this.ctx.lineTo(upperX, upperY);\r\n this.ctx.fill();\r\n }\r\n}","export * from './aqs-round-duct-design-view-tab.component';","import { _isNumberValue } from '@angular/cdk/coercion';\r\nimport { Component, EventEmitter, Input, OnInit, Output, ViewChild } from '@angular/core';\r\n\r\nimport { AqsAirflowViewModel, AqsRoundStorageDuctDesignModel, AqsRoundStorageDuctDesignViewModel, AqsRoundStorageWiewModel } from '@models';\r\nimport { AqsRoundDuctTypeLabel } from '../../../constants';\r\nimport { AqsAirflowFanTypeEnum, AqsDuctTypeEnum, AqsRoundDuctDesignType, AqsRoundStorageHopperTypeEnum } from '../../../enums';\r\nimport { ConvertDataFunctions } from './../../../../common';\r\nimport { AqsRoundDuctDesignViewTabComponent } from './aqs-round-duct-design-view-tab';\r\n\r\n@Component({\r\n selector: 'greensleeves-aqs-round-duct-design',\r\n templateUrl: './aqs-round-duct-design.component.html',\r\n styles: []\r\n})\r\nexport class AqsRoundDuctDesignComponent implements OnInit {\r\n @Input() ductConfiguration: AqsRoundStorageDuctDesignModel;\r\n @Output() ductConfigurationChange = new EventEmitter();\r\n\r\n @Input() storageConfiguration: AqsRoundStorageWiewModel;\r\n @Input() airflowConfiguration: AqsAirflowViewModel;\r\n\r\n @Output() onChangedDuctModel = new EventEmitter();\r\n\r\n @ViewChild(AqsRoundDuctDesignViewTabComponent, { read: false, static: false })\r\n private viewScheme: AqsRoundDuctDesignViewTabComponent;\r\n\r\n private perfDMax: number;\r\n private perfCMax: number;\r\n private kcfmMax: number;\r\n private lowerLarge: number;\r\n private surface: number;\r\n\r\n _ductDesign: AqsRoundStorageDuctDesignViewModel;\r\n\r\n _ductsPerFan: number;\r\n _degreesBetweenFans: number;\r\n _degreesBetweenDucts: number;\r\n\r\n _distanceBetweenDuctsFt: number;\r\n _distanceBetweenDuctsIn: number;\r\n _distanceBetweenDucts: string;\r\n\r\n _openingDiameter: number;\r\n _ductDiameter: number;\r\n\r\n _solidDuctLengthFt: number;\r\n _solidDuctLengthIn: number;\r\n _solidDuctLengthStr: string;\r\n\r\n _perforatedDuctLengthFt: number;\r\n _perforatedDuctLengthIn: number;\r\n _perforatedDuctLengthStr: string;\r\n\r\n _perforatedCDuctLengthFt: number;\r\n _perforatedCDuctLengthIn: number;\r\n _perforatedCDuctLengthStr: string;\r\n\r\n _solidDuctLengthNoSingle: number = null;\r\n _solidDuctLengthNoSingleFtIn: string;\r\n _letterSolidDuctLengthNoSingle: string;\r\n\r\n _solidDuctCLengthNoSingle: number = null;\r\n _solidDuctCLengthNoSingleFtIn: string;\r\n _letterSolidDuctCLengthNoSingle: string;\r\n\r\n _maxCrossSec: number;\r\n _maxSurface: number;\r\n _actCrossSec: number;\r\n _actSurface: number;\r\n _ductType: AqsDuctTypeEnum;\r\n\r\n _ductTypes: { label: string, value: AqsDuctTypeEnum }[] = [];\r\n\r\n _designTypeEnum = AqsRoundDuctDesignType;\r\n\r\n private cfr = [\r\n { diameter: 12, surface: 2.566 },\r\n { diameter: 14, surface: 2.9 },\r\n { diameter: 16, surface: 3.3 },\r\n { diameter: 18, surface: 3.9 },\r\n { diameter: 20, surface: 4.233 },\r\n { diameter: 24, surface: 5.2 },\r\n { diameter: 30, surface: 6.4 },\r\n { diameter: 36, surface: 7.666 },\r\n ];\r\n\r\n constructor() { }\r\n\r\n ngOnInit() {\r\n for (let [key, value] of Object.entries(AqsRoundDuctTypeLabel)) {\r\n this._ductTypes.push({ label: value, value: Number(key) });\r\n }\r\n\r\n this._ductDesign = new AqsRoundStorageDuctDesignViewModel();\r\n this._ductDesign.roundStorageDiameter = this.storageConfiguration.diameter;\r\n this._ductDesign.numberOfFans = this.airflowConfiguration.numberfans;\r\n this._ductDesign.hopperPitch = this.storageConfiguration.hopperPitch;\r\n this._ductDesign.outletDiameter = this.storageConfiguration.outletDiameter;\r\n this._ductDesign.steamwall = this.storageConfiguration.steamwall;\r\n this._ductDesign.ledge = this.storageConfiguration.ledge;\r\n this.kcfmMax = Math.max(...this.airflowConfiguration.airflowData.map(x => x.kcfm));\r\n this.lowerLarge = this.kcfmMax * this.airflowConfiguration.numberfans * 1000;\r\n\r\n if (!this.ductConfiguration.ductsPerFan) {\r\n this.setRecommendationsParams();\r\n } else {\r\n this.setMaxVelocities();\r\n this.setDuctDesignType();\r\n this.setSurface();\r\n\r\n Object.entries(this.ductConfiguration).forEach(([key, value]) => {\r\n if (value != undefined) {\r\n this._ductDesign[key] = value;\r\n }\r\n })\r\n\r\n this.processCalculate(false, true, true, true);\r\n }\r\n\r\n }\r\n\r\n onChangeDuctType() {\r\n this._ductDesign.ductType = this._ductType;\r\n\r\n if (this._ductDesign.roundDuctDesignType == AqsRoundDuctDesignType.SingleFan) {\r\n this._ductDesign.ductsPerFan = 1;\r\n }\r\n\r\n this.processCalculate(true);\r\n }\r\n\r\n onChangeDuctPerFan() {\r\n if ((this._ductDesign.roundDuctDesignType == AqsRoundDuctDesignType.HopperPitchSideDraw &&\r\n (this._ductsPerFan < 1 || this._ductsPerFan > 4)) ||\r\n (this._ductsPerFan < 1 || this._ductsPerFan > 10)) {\r\n this._ductsPerFan = this._ductDesign.ductsPerFan;\r\n } else {\r\n this._ductDesign.ductsPerFan = Math.round(this._ductsPerFan);\r\n this.processCalculate(true);\r\n }\r\n }\r\n\r\n onChangeOpeningDiameter() {\r\n if (this._openingDiameter < 1 || this._openingDiameter > 688) {\r\n this._openingDiameter = this._ductDesign.openingDiameter;\r\n } else {\r\n this._ductDesign.openingDiameter = Math.round(this._openingDiameter);\r\n\r\n if (this._ductDesign.roundDuctDesignType == AqsRoundDuctDesignType.MultipleFans &&\r\n this._ductType == AqsDuctTypeEnum.HalfRoundDuct) {\r\n this._ductDesign.perforatedDuctLengthFt = this.perfCMax;\r\n }\r\n this.processCalculate();\r\n }\r\n }\r\n\r\n onChangeDuctDiameter() {\r\n if (this.cfr.some(x => x.diameter == this._ductDiameter)) {\r\n this._ductDesign.ductDiameter = this._ductDiameter;\r\n this.surface = this.cfr.find(x => x.diameter == this._ductDiameter).surface;\r\n\r\n if (this._ductDesign.roundDuctDesignType == AqsRoundDuctDesignType.HopperPitchConical) {\r\n let x = this.getPerfLengthCoefHoppitchConical();\r\n\r\n this._ductDesign.perforatedDuctLengthFt = x * this.perfDMax;\r\n this._ductDesign.perforatedCDuctLengthFt = x * this.perfCMax;\r\n this.calcFullDuctPerfLength(true, x);\r\n } else {\r\n this._ductDesign.perforatedDuctLengthFt = this.getFtPerf(this.lowerLarge, this.surface);\r\n\r\n if (this._ductDesign.roundDuctDesignType == AqsRoundDuctDesignType.SingleFan) {\r\n this.calcSolidAndPerforatedLength(true);\r\n }\r\n }\r\n\r\n this.processCalculate();\r\n } else {\r\n this._ductDiameter = this._ductDesign.ductDiameter;\r\n }\r\n }\r\n\r\n onChangeSolidDuctLengthFt() {\r\n if (this._solidDuctLengthFt % 2 !== 0 ||\r\n this._solidDuctLengthFt >= this.perfDMax ||\r\n this._solidDuctLengthFt < 0 ||\r\n !_isNumberValue(this._solidDuctLengthFt)) {\r\n this._solidDuctLengthFt = this._ductDesign.solidDuctLengthFt;\r\n } else {\r\n this._ductDesign.solidDuctLengthFt = this._solidDuctLengthFt;\r\n if (this._ductDesign.solidDuctLengthFt + this._ductDesign.perforatedDuctLengthFt > this.perfDMax) {\r\n this._ductDesign.perforatedDuctLengthFt = this.perfDMax - this._ductDesign.solidDuctLengthFt;\r\n }\r\n\r\n this.processCalculate();\r\n }\r\n }\r\n\r\n onChangePerforatedDuctLengthFt() {\r\n switch (this._ductDesign.roundDuctDesignType) {\r\n case AqsRoundDuctDesignType.SingleFan:\r\n if (this._perforatedDuctLengthFt % 2 !== 0 ||\r\n this._perforatedDuctLengthFt > this.perfDMax ||\r\n this._perforatedDuctLengthFt < 0) {\r\n this._perforatedDuctLengthFt = this._ductDesign.perforatedDuctLengthFt;\r\n } else {\r\n this._ductDesign.perforatedDuctLengthFt = this._perforatedDuctLengthFt;\r\n if (this._ductDesign.perforatedDuctLengthFt + this._ductDesign.solidDuctLengthFt > this.perfDMax) {\r\n this._ductDesign.solidDuctLengthFt = Math.floor(this.perfDMax - this._ductDesign.perforatedDuctLengthFt);\r\n }\r\n this.processCalculate();\r\n }\r\n break;\r\n case AqsRoundDuctDesignType.MultipleFans:\r\n if (this._perforatedDuctLengthFt % 2 !== 0 ||\r\n this._perforatedDuctLengthFt > this.perfCMax ||\r\n this._perforatedDuctLengthFt <= 0) {\r\n this._perforatedDuctLengthFt = this._ductDesign.perforatedDuctLengthFt;\r\n } else {\r\n this._ductDesign.perforatedDuctLengthFt = this._perforatedDuctLengthFt;\r\n this._ductDesign.solidDuctLengthFt = this.perfCMax - this._ductDesign.perforatedDuctLengthFt;\r\n this.processCalculate();\r\n }\r\n break;\r\n case AqsRoundDuctDesignType.HopperPitchConical:\r\n case AqsRoundDuctDesignType.HopperPitchSideDraw:\r\n if (this._perforatedDuctLengthFt / 2 !== Math.floor(this._perforatedDuctLengthFt / 2) ||\r\n this._perforatedDuctLengthFt == this._ductDesign.perforatedDuctLengthFt ||\r\n this._perforatedDuctLengthFt > this.perfDMax ||\r\n this._perforatedDuctLengthFt < 2) {\r\n this._perforatedDuctLengthFt = this._ductDesign.perforatedDuctLengthFt;\r\n } else {\r\n this._ductDesign.perforatedDuctLengthFt = this._perforatedDuctLengthFt;\r\n this.processCalculate();\r\n }\r\n break;\r\n default:\r\n break;\r\n }\r\n }\r\n\r\n onChangePerforatedCDuctLengthFt() {\r\n if (this._perforatedCDuctLengthFt / 2 !== Math.floor(this._perforatedCDuctLengthFt / 2) ||\r\n this._perforatedCDuctLengthFt == this._ductDesign.perforatedCDuctLengthFt ||\r\n this._perforatedCDuctLengthFt > this.perfCMax ||\r\n this._perforatedCDuctLengthFt < 0) {\r\n this._perforatedCDuctLengthFt = this._ductDesign.perforatedCDuctLengthFt;\r\n } else {\r\n this._ductDesign.perforatedCDuctLengthFt = this._perforatedCDuctLengthFt;\r\n this.processCalculate();\r\n }\r\n }\r\n\r\n onChangeDistanseBetweenDucts() {\r\n let inches = this.parseFtInLengthStrToIn(this._distanceBetweenDucts);\r\n\r\n if (!inches) {\r\n this._distanceBetweenDucts = Math.floor(this._distanceBetweenDuctsFt) + '-' + this._distanceBetweenDuctsIn;\r\n return;\r\n }\r\n\r\n let temp = inches / 12;\r\n if (temp == this._ductDesign.degreesBetweenDucts ||\r\n temp * (this._ductDesign.numberOfDucts - 1) > this.storageConfiguration.diameter * 0.8 ||\r\n temp < this._ductDesign.ductDiameter / 12 ||\r\n temp < this._ductDesign.openingDiameter / 12) {\r\n this._distanceBetweenDucts = Math.floor(this._distanceBetweenDuctsFt) + '-' + this._distanceBetweenDuctsIn;\r\n return;\r\n }\r\n\r\n this._ductDesign.degreesBetweenDucts = temp;\r\n\r\n this.processCalculate(true, false);\r\n }\r\n\r\n onChangeSolidDuctLengthStr() {\r\n let inches = this.parseFtInLengthStrToIn(this._solidDuctLengthStr);\r\n\r\n if (inches == null) {\r\n this._solidDuctLengthStr = Math.floor(this._solidDuctLengthFt) + '-' + this._solidDuctLengthIn;\r\n return;\r\n }\r\n\r\n while (Math.floor(inches / 16) !== inches / 16) {\r\n inches = inches - 1;\r\n }\r\n\r\n let temp = inches / 12;\r\n\r\n if (temp == this._ductDesign.solidDuctLengthFt ||\r\n temp > this.perfDMax - (16 / 12) ||\r\n temp < 0) {\r\n this._solidDuctLengthStr = Math.floor(this._solidDuctLengthFt) + '-' + this._solidDuctLengthIn;\r\n return;\r\n }\r\n\r\n this._ductDesign.solidDuctLengthFt = temp;\r\n\r\n if (this._ductDesign.solidDuctLengthFt + this._ductDesign.perforatedDuctLengthFt > this.perfDMax) {\r\n this._ductDesign.perforatedDuctLengthFt = this.perfDMax - this._ductDesign.solidDuctLengthFt;\r\n\r\n let inches = Math.floor(this._ductDesign.perforatedDuctLengthFt * 12 + 0.5);\r\n while (Math.floor(inches / 16) !== inches / 16) {\r\n inches = inches - 1;\r\n }\r\n\r\n if (inches < 16) {\r\n inches = 16;\r\n }\r\n\r\n this._ductDesign.perforatedDuctLengthFt = inches / 12;\r\n }\r\n\r\n this.processCalculate();\r\n }\r\n\r\n onChangePerforatedDuctLengthStr() {\r\n let inches = this.parseFtInLengthStrToIn(this._perforatedDuctLengthStr);\r\n\r\n if (inches == null) {\r\n this._perforatedDuctLengthStr = Math.floor(this._perforatedDuctLengthFt) + '-' + this._perforatedDuctLengthIn;\r\n return;\r\n }\r\n\r\n if (this._ductDesign.roundDuctDesignType == AqsRoundDuctDesignType.MultipleFans) {\r\n if (inches > this.perfCMax) {\r\n inches = Math.floor(this.perfCMax);\r\n }\r\n } else if (this._ductDesign.roundDuctDesignType == AqsRoundDuctDesignType.HopperPitchConical) {\r\n if (inches > this.perfDMax) {\r\n inches = Math.floor(this.perfDMax);\r\n }\r\n } else if (this._ductDesign.roundDuctDesignType == AqsRoundDuctDesignType.HopperPitchSideDraw) {\r\n if (inches > Math.floor(this.perfDMax * 12)) {\r\n inches = Math.floor(this.perfDMax * 12);\r\n }\r\n }\r\n\r\n while (Math.floor(inches / 16) !== inches / 16) {\r\n inches = inches - 1;\r\n }\r\n\r\n if (this._ductDesign.roundDuctDesignType != AqsRoundDuctDesignType.SingleFan) {\r\n if (inches < 16) {\r\n inches = 16;\r\n }\r\n }\r\n\r\n if (this._ductDesign.roundDuctDesignType == AqsRoundDuctDesignType.SingleFan) {\r\n let temp = inches / 12;\r\n if (temp == this._ductDesign.perforatedDuctLengthFt ||\r\n temp > this.perfDMax ||\r\n inches < 16) {\r\n this._perforatedDuctLengthStr = Math.floor(this._perforatedDuctLengthFt) + '-' + this._perforatedDuctLengthIn;\r\n return;\r\n }\r\n\r\n this._ductDesign.perforatedDuctLengthFt = temp;\r\n\r\n if (this._ductDesign.solidDuctLengthFt + this._ductDesign.perforatedDuctLengthFt > this.perfDMax) {\r\n this._ductDesign.solidDuctLengthFt = this.perfDMax - this._ductDesign.perforatedDuctLengthFt;\r\n let inches = Math.floor(this._ductDesign.solidDuctLengthFt * 12 + 0.5);\r\n while (Math.floor(inches / 16) !== inches / 16) {\r\n inches = inches - 1;\r\n }\r\n\r\n if (inches < 0) {\r\n inches = 0;\r\n }\r\n\r\n this._ductDesign.solidDuctLengthFt = inches / 12;\r\n }\r\n }\r\n\r\n if (this._ductDesign.roundDuctDesignType != AqsRoundDuctDesignType.SingleFan) {\r\n let temp = inches / 12;\r\n\r\n if (temp == this._ductDesign.perforatedDuctLengthFt) {\r\n this._perforatedDuctLengthStr = Math.floor(this._perforatedDuctLengthFt) + '-' + this._perforatedDuctLengthIn;\r\n return;\r\n }\r\n\r\n this._ductDesign.perforatedDuctLengthFt = temp;\r\n }\r\n\r\n this.processCalculate();\r\n }\r\n\r\n onChangePerforatedCDuctLengthStr() {\r\n let inches = this.parseFtInLengthStrToIn(this._perforatedCDuctLengthStr);\r\n\r\n if (!inches) {\r\n this._perforatedCDuctLengthStr = Math.floor(this._perforatedCDuctLengthFt) + '-' + this._perforatedCDuctLengthIn;\r\n return;\r\n }\r\n\r\n if (this._ductDesign.roundDuctDesignType != AqsRoundDuctDesignType.SingleFan) {\r\n if (inches > this.perfCMax * 12) {\r\n inches = Math.floor(this.perfCMax * 12);\r\n }\r\n }\r\n\r\n while (Math.floor(inches / 16) !== inches / 16) {\r\n inches = inches - 1;\r\n }\r\n\r\n let temp = inches / 12;\r\n\r\n if (temp == this._ductDesign.perforatedCDuctLengthFt) {\r\n this._perforatedCDuctLengthStr = Math.floor(this._perforatedCDuctLengthFt) + '-' + this._perforatedCDuctLengthIn;\r\n return;\r\n }\r\n\r\n this._ductDesign.perforatedCDuctLengthFt = temp;\r\n\r\n this.processCalculate();\r\n }\r\n\r\n onChangeDegreesBetweenFans() {\r\n let maxDegree = this._ductDesign.roundDuctDesignType == AqsRoundDuctDesignType.HopperPitchSideDraw ? 100 : 360;\r\n\r\n if (this._degreesBetweenFans < 5 ||\r\n this._degreesBetweenFans * this.airflowConfiguration.numberfans > maxDegree) {\r\n this._degreesBetweenFans = this._ductDesign.degreesBetweenFans;\r\n return;\r\n }\r\n\r\n this._degreesBetweenFans = Math.floor(this._degreesBetweenFans * 10 + 0.5) / 10\r\n this._ductDesign.degreesBetweenFans = this._degreesBetweenFans;\r\n\r\n if (this._ductDesign.ductsPerFan > 1) {\r\n this._degreesBetweenDucts = Math.floor((this._degreesBetweenFans / this._ductDesign.ductsPerFan) * 10 + 0.5) / 10;\r\n this._ductDesign.degreesBetweenDucts = this._degreesBetweenDucts;\r\n }\r\n\r\n if (this._ductDesign.roundDuctDesignType == AqsRoundDuctDesignType.HopperPitchSideDraw) {\r\n this._ductDesign.perforatedDuctLengthFt = this.getFtPerf(this.lowerLarge, this.surface);\r\n\r\n this.processCalculate();\r\n } else {\r\n this.setPostModel();\r\n this.viewScheme.drawDuctDesignScheme();\r\n }\r\n }\r\n\r\n onChangeDegreeBetweenDucts() {\r\n if (this._degreesBetweenDucts < 5 / this._ductDesign.ductsPerFan ||\r\n this._degreesBetweenDucts * (this._ductDesign.ductsPerFan - 1) >= this._ductDesign.degreesBetweenFans) {\r\n this._degreesBetweenDucts = this._ductDesign.degreesBetweenDucts;\r\n return;\r\n }\r\n\r\n this._degreesBetweenDucts = Math.floor(this._degreesBetweenDucts * 10 + 0.5) / 10;\r\n this._ductDesign.degreesBetweenDucts = this._degreesBetweenDucts;\r\n\r\n if (this._ductDesign.roundDuctDesignType == AqsRoundDuctDesignType.HopperPitchSideDraw) {\r\n this._ductDesign.perforatedDuctLengthFt = this.getFtPerf(this.lowerLarge, this.surface);\r\n this.processCalculate();\r\n } else {\r\n this.setPostModel();\r\n this.viewScheme.drawDuctDesignScheme();\r\n }\r\n }\r\n\r\n\r\n\r\n private setRecommendationsParams() {\r\n this._ductDesign.ductsPerFan = 1;\r\n this.setMaxVelocities();\r\n this.setDuctDesignType();\r\n this.processCalculate(true, true, true);\r\n }\r\n\r\n private setDuctDesignType() {\r\n //RSINGLE.BAS\r\n if (this.storageConfiguration.hopperPitch == 0 &&\r\n this.airflowConfiguration.numberfans == 1) {\r\n this._ductDesign.roundDuctDesignType = AqsRoundDuctDesignType.SingleFan;\r\n } else if (this.storageConfiguration.hopperPitch == 0 &&\r\n this.airflowConfiguration.numberfans > 1) {\r\n //RDUCT.BAS\r\n this._ductDesign.roundDuctDesignType = AqsRoundDuctDesignType.MultipleFans;\r\n } else if (this.storageConfiguration.hopperPitch > 0 &&\r\n this.storageConfiguration.hopperType == AqsRoundStorageHopperTypeEnum.Conical) {\r\n //RCONE.BAS\r\n this._ductDesign.roundDuctDesignType = AqsRoundDuctDesignType.HopperPitchConical;\r\n } else if (this.storageConfiguration.hopperPitch > 0 &&\r\n this.storageConfiguration.hopperType == AqsRoundStorageHopperTypeEnum.SideDraw) {\r\n //RSIDE.BAS\r\n this._ductDesign.roundDuctDesignType = AqsRoundDuctDesignType.HopperPitchSideDraw;\r\n }\r\n }\r\n\r\n private setSurface() {\r\n if (this.ductConfiguration.ductType == AqsDuctTypeEnum.FullRoundDuct) {\r\n let index = this.cfr.findIndex(x => x.diameter == this.ductConfiguration.ductDiameter);\r\n this.surface = this.cfr[index].surface;\r\n } else {\r\n this.surface = 4.666;\r\n }\r\n }\r\n\r\n private setPostModel() {\r\n this.ductConfiguration.ductsPerFan = this._ductDesign.ductsPerFan;\r\n this.ductConfiguration.degreesBetweenFans = this._ductDesign.degreesBetweenFans;\r\n this.ductConfiguration.degreesBetweenDucts = this._ductDesign.degreesBetweenDucts;\r\n this.ductConfiguration.distanceBetweenDuctsFt = this._ductDesign.distanceBetweenDuctsFt;\r\n this.ductConfiguration.distanceBetweenDuctsIn = this._ductDesign.distanceBetweenDuctsIn;\r\n this.ductConfiguration.openingDiameter = this._ductDesign.openingDiameter;\r\n this.ductConfiguration.ductDiameter = this._ductDesign.ductDiameter;\r\n this.ductConfiguration.solidDuctLengthFt = this._ductDesign.solidDuctLengthFt;\r\n this.ductConfiguration.solidDuctLengthIn = this._ductDesign.solidDuctLengthIn;\r\n this.ductConfiguration.perforatedDuctLengthFt = this._ductDesign.perforatedDuctLengthFt;\r\n this.ductConfiguration.perforatedDuctLengthIn = this._ductDesign.perforatedDuctLengthIn;\r\n this.ductConfiguration.perforatedCDuctLengthFt = this._ductDesign.perforatedCDuctLengthFt;\r\n this.ductConfiguration.perforatedCDuctLengthIn = this._ductDesign.perforatedCDuctLengthIn;\r\n this.ductConfiguration.ductType = this._ductDesign.ductType;\r\n\r\n this.ductConfigurationChange.emit(this.ductConfiguration);\r\n this.onChangedDuctModel.emit();\r\n }\r\n\r\n private processCalculate(\r\n isPreDefParams: boolean = false,\r\n isChangeNotDegree: boolean = true,\r\n isInitialization: boolean = false,\r\n isRestore: boolean = false) {\r\n\r\n switch (this._ductDesign.roundDuctDesignType) {\r\n case AqsRoundDuctDesignType.SingleFan:\r\n this.setParamsForSingleFan(isPreDefParams, isChangeNotDegree);\r\n break;\r\n case AqsRoundDuctDesignType.MultipleFans:\r\n this.setParamsForMultipleFans(isPreDefParams);\r\n break;\r\n case AqsRoundDuctDesignType.HopperPitchConical:\r\n this.setParamsForConicalWithHoppitch(isPreDefParams);\r\n break;\r\n case AqsRoundDuctDesignType.HopperPitchSideDraw:\r\n this.setParamsForSideDrawWithHoppitch(isPreDefParams);\r\n break;\r\n default:\r\n break;\r\n }\r\n\r\n this.resetModels();\r\n\r\n if (!isRestore) {\r\n this.setPostModel();\r\n }\r\n\r\n if (!isInitialization) {\r\n this.viewScheme.drawDuctDesignScheme();\r\n }\r\n }\r\n\r\n private resetModels() {\r\n this._ductsPerFan = this._ductDesign.ductsPerFan;\r\n this._degreesBetweenFans = Math.round(this._ductDesign.degreesBetweenFans * 100) / 100;\r\n this._degreesBetweenDucts = this._ductDesign.degreesBetweenDucts.toString().length > 4 ?\r\n Number(this._ductDesign.degreesBetweenDucts.toFixed(4)) : Number(this._ductDesign.degreesBetweenDucts);\r\n this._distanceBetweenDuctsFt = this._ductDesign.distanceBetweenDuctsFt;\r\n this._distanceBetweenDuctsIn = this._ductDesign.distanceBetweenDuctsIn;\r\n this._openingDiameter = this._ductDesign.openingDiameter;\r\n this._ductDiameter = this._ductDesign.ductDiameter;\r\n this._solidDuctLengthFt = this._ductDesign.solidDuctLengthFt;\r\n this._solidDuctLengthIn = this._ductDesign.solidDuctLengthIn;\r\n this._perforatedDuctLengthFt = this._ductDesign.perforatedDuctLengthFt;\r\n this._perforatedDuctLengthIn = this._ductDesign.perforatedDuctLengthIn;\r\n this._perforatedCDuctLengthFt = this._ductDesign.perforatedCDuctLengthFt;\r\n this._perforatedCDuctLengthIn = this._ductDesign.perforatedCDuctLengthIn;\r\n this._maxCrossSec = this._ductDesign.maxVelocities.crossSec;\r\n this._maxSurface = this._ductDesign.maxVelocities.surface;\r\n this._actCrossSec = this._ductDesign.actVelocities.crossSec;\r\n this._actSurface = this._ductDesign.actVelocities.surface;\r\n this._ductType = this._ductDesign.ductType;\r\n this._distanceBetweenDucts = Math.floor(this._distanceBetweenDuctsFt) + '-' + Math.round(this._distanceBetweenDuctsIn);\r\n this._solidDuctLengthStr = Math.floor(this._solidDuctLengthFt) + '-' + Math.round(this._solidDuctLengthIn);\r\n this._perforatedDuctLengthStr = Math.floor(this._perforatedDuctLengthFt) + '-' + Math.round(this._perforatedDuctLengthIn);\r\n this._perforatedCDuctLengthStr = Math.floor(this._perforatedCDuctLengthFt) + '-' + Math.round(this._perforatedCDuctLengthIn);\r\n }\r\n\r\n private setParamsForSingleFan(isPreDefParams: boolean,\r\n isChangeNotDegrees: boolean) {\r\n this._ductDesign.numberOfDucts = this._ductDesign.ductsPerFan;\r\n if (isPreDefParams && isChangeNotDegrees) {\r\n this._ductDesign.degreesBetweenDucts = this.storageConfiguration.diameter / 6;\r\n\r\n if (this._ductDesign.degreesBetweenDucts * (this._ductDesign.ductsPerFan - 1) >\r\n 0.75 * this.storageConfiguration.diameter) {\r\n this._ductDesign.degreesBetweenDucts = (0.95 * this.storageConfiguration.diameter) /\r\n this._ductDesign.ductsPerFan;\r\n }\r\n\r\n this._ductDesign.degreesBetweenDucts = Math.round(this._ductDesign.degreesBetweenDucts * 12) / 12;\r\n }\r\n\r\n let inches = Math.floor(this._ductDesign.degreesBetweenDucts * 12 + 0.5);\r\n\r\n this._ductDesign.distanceBetweenDuctsFt = Math.floor(inches / 12);\r\n this._ductDesign.distanceBetweenDuctsIn = Math.round(inches - (Math.floor(inches / 12) * 12))\r\n\r\n let ftPerf: number;\r\n if (isPreDefParams) {\r\n this.surface = this.setDuctDiameter(this.lowerLarge);\r\n this._ductDesign.openingDiameter = this._ductDesign.ductDiameter;\r\n\r\n ftPerf = this.getFtPerf(this.lowerLarge, this.surface);\r\n }\r\n\r\n let yMax = (this._ductDesign.degreesBetweenDucts * (this._ductDesign.numberOfDucts - 1)) / 2;\r\n\r\n this.perfDMax = Math.pow((this.storageConfiguration.diameter / 2), 2) - Math.pow(yMax, 2);\r\n this.perfDMax = Math.sqrt(this.perfDMax);\r\n this.perfDMax = 2 * this.perfDMax;\r\n\r\n if (this.storageConfiguration.steamwall > 0) {\r\n this.perfDMax = this.perfDMax - (this._ductDesign.openingDiameter / 12);\r\n }\r\n\r\n if (isPreDefParams) {\r\n this._ductDesign.perforatedDuctLengthFt = ftPerf;\r\n }\r\n\r\n this.calcSolidAndPerforatedLength(isPreDefParams);\r\n this.setActVelocities();\r\n }\r\n\r\n private setParamsForMultipleFans(isPreDefParams: boolean = false) {\r\n this._ductDesign.numberOfDucts = this.airflowConfiguration.numberfans * this._ductDesign.ductsPerFan;\r\n\r\n if (isPreDefParams) {\r\n this._ductDesign.degreesBetweenFans = 360 / this.airflowConfiguration.numberfans;\r\n this._ductDesign.degreesBetweenDucts = this._ductDesign.degreesBetweenFans / this._ductDesign.ductsPerFan;\r\n\r\n this.surface = this.setDuctDiameter(this.lowerLarge);\r\n\r\n this._ductDesign.openingDiameter = this._ductDesign.ductDiameter;\r\n }\r\n\r\n let ftPerf = this.getFtPerf(this.lowerLarge, this.surface);\r\n\r\n this.perfCMax = this.storageConfiguration.diameter / 2;\r\n\r\n if (this.storageConfiguration.steamwall > 0) {\r\n this.perfCMax = this.perfCMax - (this._ductDesign.openingDiameter / 12)\r\n }\r\n\r\n let maxPerf = this.perfCMax;\r\n let x = ftPerf / maxPerf;\r\n\r\n if (isPreDefParams) {\r\n this._ductDesign.perforatedDuctLengthFt = x * this.perfCMax;\r\n }\r\n\r\n if (this._ductDesign.ductType == AqsDuctTypeEnum.FullRoundDuct) {\r\n this.perfCMax = Math.floor(this.perfCMax);\r\n\r\n if (this.perfCMax / 2 !== Math.floor(this.perfCMax / 2)) {\r\n this.perfCMax = this.perfCMax - 1;\r\n }\r\n\r\n if (this.perfCMax < 2) {\r\n this.perfCMax = 2;\r\n }\r\n\r\n this._ductDesign.perforatedDuctLengthFt = Math.floor(Math.floor(\r\n this._ductDesign.perforatedDuctLengthFt * 2) / 2)\r\n\r\n if (this._ductDesign.perforatedDuctLengthFt / 2 !== Math.floor(this._ductDesign.perforatedDuctLengthFt / 2)) {\r\n this._ductDesign.perforatedDuctLengthFt = this._ductDesign.perforatedDuctLengthFt + 1;\r\n }\r\n\r\n if (isPreDefParams) {\r\n if (this._ductDesign.perforatedDuctLengthFt < x * this.perfCMax) {\r\n this._ductDesign.perforatedDuctLengthFt = this._ductDesign.perforatedDuctLengthFt + 2;\r\n }\r\n }\r\n if (this._ductDesign.perforatedDuctLengthFt > this.perfCMax) {\r\n this._ductDesign.perforatedDuctLengthFt = this.perfCMax;\r\n }\r\n\r\n if (this._ductDesign.perforatedDuctLengthFt < 2) {\r\n this._ductDesign.perforatedDuctLengthFt = 2;\r\n }\r\n } else {\r\n this.perfCMax = Math.floor(this.perfCMax * 12);\r\n\r\n while (this.perfCMax / 16 !== Math.floor(this.perfCMax / 16)) {\r\n this.perfCMax = this.perfCMax - 1;\r\n this.perfCMax = Math.round(this.perfCMax);\r\n }\r\n\r\n if (this.perfCMax < 16) {\r\n this.perfCMax = 16;\r\n }\r\n\r\n this._ductDesign.perforatedDuctLengthFt = this._ductDesign.perforatedDuctLengthFt * 12;\r\n\r\n if (this._ductDesign.perforatedDuctLengthFt > this.perfCMax) {\r\n this._ductDesign.perforatedDuctLengthFt = this.perfCMax;\r\n }\r\n\r\n this._ductDesign.perforatedDuctLengthFt = Math.floor(this._ductDesign.perforatedDuctLengthFt);\r\n\r\n while (this._ductDesign.perforatedDuctLengthFt / 16 !== Math.floor(this._ductDesign.perforatedDuctLengthFt / 16)) {\r\n this._ductDesign.perforatedDuctLengthFt = this._ductDesign.perforatedDuctLengthFt - 1;\r\n Math.round(this._ductDesign.perforatedDuctLengthFt);\r\n }\r\n\r\n if (this._ductDesign.perforatedDuctLengthFt < 16) {\r\n this._ductDesign.perforatedDuctLengthFt = 16;\r\n }\r\n\r\n this._ductDesign.perforatedDuctLengthIn = Math.round(this._ductDesign.perforatedDuctLengthFt -\r\n (Math.floor(this._ductDesign.perforatedDuctLengthFt / 12) * 12))\r\n\r\n this._ductDesign.perforatedDuctLengthFt = this._ductDesign.perforatedDuctLengthFt / 12;\r\n }\r\n this._ductDesign.perfCMax = this.perfCMax;\r\n\r\n this._letterSolidDuctLengthNoSingle = 'D';\r\n let r = this.storageConfiguration.diameter * 6;\r\n this._solidDuctLengthNoSingle = r - this._ductDesign.perforatedDuctLengthFt * 12;\r\n if (this._solidDuctLengthNoSingle < 0) {\r\n this._solidDuctLengthNoSingle = 0;\r\n }\r\n this._solidDuctLengthNoSingleFtIn = ConvertDataFunctions.aqsMakeStringFromFtToFtIn(this._solidDuctLengthNoSingle);\r\n this._ductDesign.solidDuctLengthNoSingle = this._solidDuctLengthNoSingle;\r\n this._ductDesign.letterSolidDuctLengthNoSingle = this._letterSolidDuctLengthNoSingle;\r\n\r\n this.setActVelocities();\r\n }\r\n\r\n private setParamsForConicalWithHoppitch(isPreDefParams: boolean = false) {\r\n this._ductDesign.numberOfDucts = this.airflowConfiguration.numberfans * this._ductDesign.ductsPerFan;\r\n\r\n if (isPreDefParams) {\r\n this._ductDesign.degreesBetweenFans = 360 / this.airflowConfiguration.numberfans;\r\n this._ductDesign.degreesBetweenDucts = this._ductDesign.degreesBetweenFans / this._ductDesign.ductsPerFan;\r\n\r\n this.surface = this.setDuctDiameter(this.lowerLarge);\r\n\r\n this._ductDesign.openingDiameter = this._ductDesign.ductDiameter;\r\n }\r\n\r\n let hopperHeight = (Math.tan(this.storageConfiguration.hopperPitch * Math.PI / 180) * (this.storageConfiguration.diameter / 2 - this.storageConfiguration.ledge)) -\r\n (Math.tan(this.storageConfiguration.hopperPitch * Math.PI / 180) * (this.storageConfiguration.outletDiameter / 2));\r\n\r\n this.perfDMax = Math.sqrt(Math.pow(hopperHeight, 2) + Math.pow((this.storageConfiguration.diameter / 2) -\r\n this.storageConfiguration.ledge - (this.storageConfiguration.outletDiameter / 2), 2));\r\n this.perfCMax = this.storageConfiguration.ledge;\r\n\r\n if (this.storageConfiguration.steamwall > 0) {\r\n this.perfCMax = this.perfCMax - (this._ductDesign.openingDiameter / 12);\r\n }\r\n\r\n let x = this.getPerfLengthCoefHoppitchConical();\r\n\r\n if (isPreDefParams) {\r\n this._ductDesign.perforatedDuctLengthFt = x * this.perfDMax;\r\n this._ductDesign.perforatedCDuctLengthFt = x * this.perfCMax;\r\n }\r\n\r\n if (this._ductDesign.ductType == AqsDuctTypeEnum.FullRoundDuct) {\r\n this.calcFullDuctPerfLength(isPreDefParams, x);\r\n } else {\r\n this.perfCMax = Math.floor(this.perfCMax * 12);\r\n\r\n while (this.perfCMax / 16 !== Math.floor(this.perfCMax / 16)) {\r\n this.perfCMax = this.perfCMax - 1;\r\n this.perfCMax = Math.round(this.perfCMax);\r\n }\r\n\r\n this.perfDMax = Math.floor(this.perfDMax * 12);\r\n\r\n while (this.perfDMax / 16 !== Math.floor(this.perfDMax / 16)) {\r\n this.perfDMax = this.perfDMax - 1;\r\n this.perfDMax = Math.round(this.perfDMax);\r\n }\r\n\r\n if (this.perfCMax < 0) {\r\n this.perfCMax = 0;\r\n }\r\n\r\n if (this.perfDMax < 16) {\r\n this.perfDMax = 16;\r\n }\r\n\r\n this._ductDesign.perforatedCDuctLengthFt = this._ductDesign.perforatedCDuctLengthFt * 12;\r\n if (this._ductDesign.perforatedCDuctLengthFt > this.perfCMax) {\r\n this._ductDesign.perforatedCDuctLengthFt = this.perfCMax;\r\n }\r\n\r\n this._ductDesign.perforatedDuctLengthFt = this._ductDesign.perforatedDuctLengthFt * 12;\r\n if (this._ductDesign.perforatedDuctLengthFt > this.perfDMax) {\r\n this._ductDesign.perforatedDuctLengthFt = this.perfDMax;\r\n }\r\n this._ductDesign.perforatedCDuctLengthFt = Math.floor(this._ductDesign.perforatedCDuctLengthFt);\r\n this._ductDesign.perforatedDuctLengthFt = Math.floor(this._ductDesign.perforatedDuctLengthFt);\r\n\r\n while (this._ductDesign.perforatedCDuctLengthFt / 16 !== Math.floor(this._ductDesign.perforatedCDuctLengthFt / 16)) {\r\n this._ductDesign.perforatedCDuctLengthFt = this._ductDesign.perforatedCDuctLengthFt - 1;\r\n this._ductDesign.perforatedCDuctLengthFt = Math.round(this._ductDesign.perforatedCDuctLengthFt);\r\n }\r\n\r\n while (this._ductDesign.perforatedDuctLengthFt / 16 !== Math.floor(this._ductDesign.perforatedDuctLengthFt / 16)) {\r\n this._ductDesign.perforatedDuctLengthFt = this._ductDesign.perforatedDuctLengthFt - 1;\r\n this._ductDesign.perforatedDuctLengthFt = Math.round(this._ductDesign.perforatedDuctLengthFt);\r\n }\r\n\r\n if (this._ductDesign.perforatedCDuctLengthFt < 0) {\r\n this._ductDesign.perforatedCDuctLengthFt = 0;\r\n }\r\n\r\n if (this._ductDesign.perforatedDuctLengthFt < 16) {\r\n this._ductDesign.perforatedDuctLengthFt = 16;\r\n }\r\n\r\n this._ductDesign.perforatedCDuctLengthIn = Math.round(this._ductDesign.perforatedCDuctLengthFt - (Math.floor(this._ductDesign.perforatedCDuctLengthFt / 12) * 12))\r\n this._ductDesign.perforatedCDuctLengthFt = this._ductDesign.perforatedCDuctLengthFt / 12;\r\n\r\n\r\n this._ductDesign.perforatedDuctLengthIn = Math.round(this._ductDesign.perforatedDuctLengthFt - (Math.floor(this._ductDesign.perforatedDuctLengthFt / 12) * 12))\r\n this._ductDesign.perforatedDuctLengthFt = this._ductDesign.perforatedDuctLengthFt / 12;\r\n }\r\n\r\n this._ductDesign.perfCMax = this.perfCMax;\r\n this._ductDesign.perfDMax = this.perfDMax;\r\n\r\n this._letterSolidDuctLengthNoSingle = 'E';\r\n let rWithoutOutletAndLarge = this.storageConfiguration.diameter * 6 - this.storageConfiguration.outletDiameter * 6 - this.storageConfiguration.ledge * 12;\r\n let hopperPitchSide = rWithoutOutletAndLarge / Math.cos(this.storageConfiguration.hopperPitch * Math.PI / 180);\r\n this._solidDuctLengthNoSingle = hopperPitchSide - this._ductDesign.perforatedDuctLengthFt * 12;\r\n if (this._solidDuctLengthNoSingle < 0) {\r\n this._solidDuctLengthNoSingle = 0;\r\n }\r\n this._solidDuctLengthNoSingleFtIn = ConvertDataFunctions.aqsMakeStringFromFtToFtIn(this._solidDuctLengthNoSingle);\r\n this._ductDesign.solidDuctLengthNoSingle = this._solidDuctLengthNoSingle;\r\n this._ductDesign.letterSolidDuctLengthNoSingle = this._letterSolidDuctLengthNoSingle;\r\n\r\n if (this.storageConfiguration.ledge > 0) {\r\n this._letterSolidDuctCLengthNoSingle = 'F';\r\n this._solidDuctCLengthNoSingle = (this.storageConfiguration.ledge - this._ductDesign.perforatedCDuctLengthFt) * 12;\r\n if (this._solidDuctCLengthNoSingle < 0) {\r\n this._solidDuctCLengthNoSingle = 0;\r\n }\r\n this._solidDuctCLengthNoSingleFtIn = ConvertDataFunctions.aqsMakeStringFromFtToFtIn(this._solidDuctCLengthNoSingle);\r\n this._ductDesign.solidDuctCLengthNoSingle = this._solidDuctCLengthNoSingle;\r\n this._ductDesign.letterSolidDuctCLengthNoSingle = this._letterSolidDuctCLengthNoSingle;\r\n }\r\n\r\n this.setActVelocities();\r\n }\r\n\r\n private getPerfLengthCoefHoppitchConical(): number {\r\n let ftPerf = this.getFtPerf(this.lowerLarge, this.surface);\r\n\r\n let maxPerf;\r\n if (this.perfCMax > 0) {\r\n maxPerf = this.perfCMax + this.perfDMax;\r\n } else {\r\n maxPerf = this.perfDMax;\r\n }\r\n\r\n return ftPerf / maxPerf;\r\n }\r\n\r\n private calcFullDuctPerfLength(isPreDefParams: boolean, x: number) {\r\n this.perfDMax = Math.floor(this.perfDMax);\r\n\r\n if (this.perfDMax / 2 !== Math.floor(this.perfDMax / 2)) {\r\n this.perfDMax = this.perfDMax - 1;\r\n }\r\n\r\n this.perfCMax = Math.floor(this.perfCMax);\r\n\r\n if (this.perfCMax / 2 !== Math.floor(this.perfCMax / 2)) {\r\n this.perfCMax = this.perfCMax - 1;\r\n }\r\n\r\n if (this.perfDMax < 2) {\r\n this.perfDMax = 2;\r\n }\r\n\r\n if (this.perfCMax < 0) {\r\n this.perfCMax = 0;\r\n }\r\n\r\n this._ductDesign.perforatedCDuctLengthFt = Math.floor(Math.floor(this._ductDesign.perforatedCDuctLengthFt * 2) / 2);\r\n if (this._ductDesign.perforatedCDuctLengthFt / 2 !== Math.floor(this._ductDesign.perforatedCDuctLengthFt / 2)) {\r\n this._ductDesign.perforatedCDuctLengthFt = this._ductDesign.perforatedCDuctLengthFt + 1;\r\n }\r\n\r\n this._ductDesign.perforatedDuctLengthFt = Math.floor(Math.floor(this._ductDesign.perforatedDuctLengthFt * 2) / 2);\r\n if (this._ductDesign.perforatedDuctLengthFt / 2 !== Math.floor(this._ductDesign.perforatedDuctLengthFt / 2)) {\r\n this._ductDesign.perforatedDuctLengthFt = this._ductDesign.perforatedDuctLengthFt + 1;\r\n }\r\n\r\n if (isPreDefParams) {\r\n if (this._ductDesign.perforatedCDuctLengthFt < x * this.perfCMax) {\r\n this._ductDesign.perforatedCDuctLengthFt = this._ductDesign.perforatedCDuctLengthFt + 2;\r\n }\r\n\r\n if (this._ductDesign.perforatedDuctLengthFt < x * this.perfDMax) {\r\n this._ductDesign.perforatedDuctLengthFt = this._ductDesign.perforatedDuctLengthFt + 2;\r\n }\r\n }\r\n\r\n if (this._ductDesign.perforatedCDuctLengthFt > this.perfCMax) {\r\n this._ductDesign.perforatedCDuctLengthFt = this.perfCMax;\r\n }\r\n\r\n if (this._ductDesign.perforatedDuctLengthFt > this.perfDMax) {\r\n\r\n this._ductDesign.perforatedDuctLengthFt = this.perfDMax;\r\n }\r\n\r\n if (this._ductDesign.perforatedCDuctLengthFt < 0) {\r\n this._ductDesign.perforatedCDuctLengthFt = 0;\r\n }\r\n\r\n if (this._ductDesign.perforatedDuctLengthFt < 2) {\r\n this._ductDesign.perforatedDuctLengthFt = 2;\r\n }\r\n }\r\n\r\n private setParamsForSideDrawWithHoppitch(isPreDefParams: boolean = false) {\r\n this._ductDesign.numberOfDucts = this.airflowConfiguration.numberfans * this._ductDesign.ductsPerFan;\r\n\r\n if (isPreDefParams) {\r\n this._ductDesign.degreesBetweenFans = 30;\r\n\r\n if (this._ductDesign.degreesBetweenFans * this.airflowConfiguration.numberfans > 90) {\r\n this._ductDesign.degreesBetweenFans = 90 / this.airflowConfiguration.numberfans;\r\n }\r\n\r\n this._ductDesign.degreesBetweenDucts = this._ductDesign.degreesBetweenFans / this._ductDesign.ductsPerFan;\r\n }\r\n\r\n this._ductDesign.degreesBetweenFans = Math.round(this._ductDesign.degreesBetweenFans * 10) / 10;\r\n this._ductDesign.degreesBetweenDucts = Math.round(this._ductDesign.degreesBetweenDucts * 10) / 10;\r\n\r\n let ftPerf: number;\r\n if (isPreDefParams) {\r\n this.surface = this.setDuctDiameter(this.lowerLarge);\r\n this._ductDesign.openingDiameter = this._ductDesign.ductDiameter;\r\n\r\n ftPerf = this.getFtPerf(this.lowerLarge, this.surface);\r\n }\r\n\r\n let coneHeight = Math.tan(this.storageConfiguration.hopperPitch * Math.PI / 180) * this.storageConfiguration.diameter;\r\n let outerDegree = (((this.airflowConfiguration.numberfans - 1) * this._ductDesign.degreesBetweenFans) / 2) +\r\n (((this._ductDesign.ductsPerFan - 1) * this._ductDesign.degreesBetweenDucts) / 2);\r\n\r\n let innerDegree = 180 - (2 * outerDegree);\r\n let innerFanDegree = 2 * this._ductDesign.degreesBetweenFans;\r\n let innerDuctDegree = 2 * this._ductDesign.degreesBetweenDucts;\r\n\r\n this._ductDesign.coneHeight = coneHeight;\r\n this._ductDesign.outerDegree = outerDegree;\r\n this._ductDesign.innerDegree = innerDegree;\r\n this._ductDesign.innerFanDegree = innerFanDegree;\r\n this._ductDesign.innerDuctDegree = innerDuctDegree;\r\n\r\n let interceptDegree;\r\n if (this._ductDesign.ductsPerFan == 1) {\r\n interceptDegree = this._ductDesign.degreesBetweenFans / 2;\r\n } else {\r\n interceptDegree = this._ductDesign.degreesBetweenDucts / 2\r\n }\r\n\r\n let roverlap;\r\n if (this._ductDesign.ductsPerFan * this.airflowConfiguration.numberfans > 1) {\r\n roverlap = (this._ductDesign.ductDiameter / 24) / Math.sin(interceptDegree * Math.PI / 180);\r\n } else {\r\n roverlap = 0;\r\n }\r\n\r\n let rLimitter;\r\n if (this.storageConfiguration.outletDiameter > roverlap) {\r\n rLimitter = this.storageConfiguration.outletDiameter;\r\n } else {\r\n rLimitter = roverlap;\r\n }\r\n\r\n let Y = Math.sin(innerDegree * Math.PI / 180) * (this.storageConfiguration.diameter / 2);\r\n let X = Math.cos(innerDegree * Math.PI / 180) * (this.storageConfiguration.diameter / 2);\r\n\r\n let YY = Math.sin((180 - outerDegree) * Math.PI / 180) * rLimitter;\r\n let XX = Math.cos((180 - outerDegree) * Math.PI / 180) * rLimitter;\r\n\r\n X = this.storageConfiguration.diameter / 2 + X;\r\n XX = this.storageConfiguration.diameter + XX;\r\n\r\n this.perfDMax = Math.sqrt(Math.pow((XX - X), 2) + Math.pow((YY - Y), 2));\r\n\r\n let hopPitchMax = Math.sqrt(Math.pow((this.storageConfiguration.diameter - X), 2) + Math.pow(Y, 2));\r\n hopPitchMax = Math.atan(coneHeight / hopPitchMax);\r\n this.perfDMax = this.perfDMax / Math.cos(hopPitchMax);\r\n\r\n if (isPreDefParams) {\r\n this._ductDesign.perforatedDuctLengthFt = ftPerf;\r\n }\r\n\r\n if (this._ductDesign.ductType == AqsDuctTypeEnum.FullRoundDuct) {\r\n this._ductDesign.perforatedDuctLengthFt = Math.floor(this._ductDesign.perforatedDuctLengthFt);\r\n\r\n if (this._ductDesign.perforatedDuctLengthFt > this.perfDMax) {\r\n this._ductDesign.perforatedDuctLengthFt = Math.floor(this.perfDMax);\r\n }\r\n\r\n if (Math.floor(this._ductDesign.perforatedDuctLengthFt / 2) !== this._ductDesign.perforatedDuctLengthFt / 2) {\r\n this._ductDesign.perforatedDuctLengthFt = this._ductDesign.perforatedDuctLengthFt - 1;\r\n }\r\n\r\n if (this._ductDesign.perforatedDuctLengthFt < 2) {\r\n this._ductDesign.perforatedDuctLengthFt = 2;\r\n }\r\n\r\n this._ductDesign.perfDMax = this.perfDMax;\r\n } else {\r\n let inchesPerfD = Math.floor(this._ductDesign.perforatedDuctLengthFt * 12);\r\n\r\n if (inchesPerfD > this.perfDMax * 12) {\r\n inchesPerfD = Math.floor(this.perfDMax * 12);\r\n }\r\n\r\n while (Math.floor(inchesPerfD / 16) !== inchesPerfD / 16) {\r\n inchesPerfD = inchesPerfD - 1;\r\n }\r\n\r\n if (inchesPerfD < 16) {\r\n inchesPerfD = 16;\r\n }\r\n\r\n this._ductDesign.perforatedDuctLengthFt = inchesPerfD / 12;\r\n this._ductDesign.perforatedDuctLengthIn = Math.round(inchesPerfD - (Math.floor(inchesPerfD / 12) * 12));\r\n\r\n let inchesDMax = Math.floor(this.perfDMax * 12);\r\n\r\n while (Math.floor(inchesDMax / 16) !== inchesDMax / 16) {\r\n inchesDMax = inchesDMax - 1;\r\n }\r\n\r\n if (inchesDMax < 16) {\r\n inchesDMax = 16;\r\n }\r\n\r\n this._ductDesign.perfDMax = Math.round(inchesDMax / 12);\r\n }\r\n\r\n this._letterSolidDuctLengthNoSingle = 'D';\r\n this._solidDuctLengthNoSingle = (this._ductDesign.perfDMax - this._ductDesign.perforatedDuctLengthFt) * 12;\r\n if (this._solidDuctLengthNoSingle < 0) {\r\n this._solidDuctLengthNoSingle = 0;\r\n }\r\n this._solidDuctLengthNoSingleFtIn = ConvertDataFunctions.aqsMakeStringFromFtToFtIn(this._solidDuctLengthNoSingle);\r\n\r\n this._ductDesign.solidDuctLengthNoSingle = this._solidDuctLengthNoSingle;\r\n this._ductDesign.letterSolidDuctLengthNoSingle = this._letterSolidDuctLengthNoSingle;\r\n\r\n this.setActVelocities();\r\n }\r\n\r\n private calcSolidAndPerforatedLength(isPreDefParams: boolean) {\r\n switch (this._ductDesign.ductType) {\r\n case AqsDuctTypeEnum.FullRoundDuct:\r\n\r\n this._ductDesign.perforatedDuctLengthFt = Math.floor(this._ductDesign.perforatedDuctLengthFt);\r\n\r\n if (this._ductDesign.perforatedDuctLengthFt > this.perfDMax) {\r\n this._ductDesign.perforatedDuctLengthFt = Math.floor(this.perfDMax)\r\n }\r\n\r\n if (Math.floor(this._ductDesign.perforatedDuctLengthFt / 2) !== this._ductDesign.perforatedDuctLengthFt / 2) {\r\n this._ductDesign.perforatedDuctLengthFt = this._ductDesign.perforatedDuctLengthFt - 1;\r\n }\r\n\r\n if (this._ductDesign.perforatedDuctLengthFt < 2) {\r\n this._ductDesign.perforatedDuctLengthFt = 2;\r\n }\r\n\r\n if (isPreDefParams) {\r\n if (this.storageConfiguration.steamwall > 0) {\r\n this._ductDesign.solidDuctLengthFt = Math.floor((this.perfDMax +\r\n (this._ductDesign.openingDiameter / 12) -\r\n this._ductDesign.perforatedDuctLengthFt) / 2);\r\n } else {\r\n this._ductDesign.solidDuctLengthFt = Math.floor((this.perfDMax - this._ductDesign.perforatedDuctLengthFt) / 2);\r\n }\r\n }\r\n\r\n if (this._ductDesign.solidDuctLengthFt / 2 !== Math.floor(this._ductDesign.solidDuctLengthFt / 2)) {\r\n this._ductDesign.solidDuctLengthFt = this._ductDesign.solidDuctLengthFt - 1;\r\n }\r\n\r\n if (this._ductDesign.solidDuctLengthFt < 0) {\r\n this._ductDesign.solidDuctLengthFt = 0;;\r\n }\r\n break;\r\n case AqsDuctTypeEnum.HalfRoundDuct:\r\n let inches = Math.floor(this._ductDesign.perforatedDuctLengthFt * 12);\r\n\r\n if (inches > this.perfDMax * 12) {\r\n inches = Math.floor(this.perfDMax * 12);\r\n }\r\n\r\n while (Math.floor(inches / 16) !== inches / 16) {\r\n inches = inches - 1;\r\n }\r\n\r\n if (inches < 16) {\r\n inches = 16;\r\n }\r\n\r\n this._ductDesign.perforatedDuctLengthFt = inches / 12;\r\n this._ductDesign.perforatedDuctLengthIn = Math.round(inches - (Math.floor(inches / 12) * 12));\r\n\r\n if (isPreDefParams) {\r\n if (this.storageConfiguration.steamwall > 0) {\r\n this._ductDesign.solidDuctLengthFt = ((this.perfDMax +\r\n (this._ductDesign.openingDiameter / 12) -\r\n this._ductDesign.perforatedDuctLengthFt) / 2)\r\n } else {\r\n this._ductDesign.solidDuctLengthFt = ((this.perfDMax - this._ductDesign.perforatedDuctLengthFt) / 2);\r\n }\r\n }\r\n\r\n inches = Math.floor(this._ductDesign.solidDuctLengthFt * 12);\r\n\r\n if (inches < 0) {\r\n inches = 0;\r\n }\r\n\r\n while (Math.floor(inches / 16) !== inches / 16) {\r\n inches = inches - 1;\r\n }\r\n\r\n this._ductDesign.solidDuctLengthFt = inches / 12;\r\n this._ductDesign.solidDuctLengthIn = Math.round(inches - (Math.floor(inches / 12) * 12));\r\n\r\n break;\r\n default:\r\n break;\r\n }\r\n }\r\n\r\n private setActVelocities() {\r\n if (this._ductDesign.ductType == AqsDuctTypeEnum.HalfRoundDuct) {\r\n if (Math.PI * Math.pow(this._ductDesign.openingDiameter, 2) <= Math.PI / 2 * Math.pow(this._ductDesign.ductDiameter, 2)) {\r\n this._ductDesign.actVelocities.crossSec = this.lowerLarge / (Math.pow(this._ductDesign.openingDiameter / 24, 2) * Math.PI * this._ductDesign.numberOfDucts);\r\n } else {\r\n this._ductDesign.actVelocities.crossSec = this.lowerLarge / (Math.pow(this._ductDesign.ductDiameter / 24, 2) * (Math.PI / 2) * this._ductDesign.numberOfDucts);\r\n }\r\n } else if (this._ductDesign.ductType == AqsDuctTypeEnum.FullRoundDuct) {\r\n if (this._ductDesign.openingDiameter <= this._ductDesign.ductDiameter) {\r\n this._ductDesign.actVelocities.crossSec = this.lowerLarge / (Math.pow(this._ductDesign.openingDiameter / 24, 2) * Math.PI * this._ductDesign.numberOfDucts);\r\n } else {\r\n this._ductDesign.actVelocities.crossSec = this.lowerLarge / (Math.pow(this._ductDesign.ductDiameter / 24, 2) * Math.PI * this._ductDesign.numberOfDucts);\r\n }\r\n }\r\n\r\n this._ductDesign.actVelocities.crossSec = Math.floor(this._ductDesign.actVelocities.crossSec + 0.5);\r\n\r\n this._ductDesign.actVelocities.surface = (this.lowerLarge / this._ductDesign.numberOfDucts) / this.surface;\r\n if (this.perfCMax > 0 && this._ductDesign.perforatedCDuctLengthFt > 0) {\r\n this._ductDesign.actVelocities.surface = this._ductDesign.actVelocities.surface /\r\n (this._ductDesign.perforatedDuctLengthFt + this._ductDesign.perforatedCDuctLengthFt);\r\n } else {\r\n this._ductDesign.actVelocities.surface = this._ductDesign.actVelocities.surface / this._ductDesign.perforatedDuctLengthFt;\r\n }\r\n this._ductDesign.actVelocities.surface = Math.floor(this._ductDesign.actVelocities.surface * 10 + 0.5) / 10;\r\n }\r\n\r\n private getFtPerf(lowerLarge: number, surface: number): number {\r\n let reqdPerf = (lowerLarge / this._ductDesign.numberOfDucts) / this._ductDesign.maxVelocities.surface;\r\n let ftPerf = reqdPerf / surface;\r\n let x = ftPerf;\r\n ftPerf = Math.floor(Math.floor(ftPerf * 2) / 2)\r\n\r\n if (ftPerf / 2 !== Math.floor(ftPerf / 2)) {\r\n ftPerf = ftPerf + 1;\r\n }\r\n\r\n if (ftPerf < x) {\r\n ftPerf = ftPerf + 2;\r\n }\r\n\r\n return ftPerf;\r\n }\r\n\r\n private setDuctDiameter(lowerLarge: number): number {\r\n let minCSA = lowerLarge / (this._ductDesign.maxVelocities.crossSec * this._ductDesign.numberOfDucts);\r\n let surface;\r\n if (this._ductDesign.ductType == AqsDuctTypeEnum.HalfRoundDuct) {\r\n this._ductDesign.ductDiameter = 36;\r\n surface = 4.666;\r\n } else {\r\n for (let item of this.cfr) {\r\n if (Math.pow((item.diameter / 24), 2) * Math.PI >= minCSA) {\r\n this._ductDesign.ductDiameter = item.diameter;\r\n surface = item.surface;\r\n break;\r\n }\r\n }\r\n\r\n if (!this._ductDesign.ductDiameter) {\r\n this._ductDesign.ductDiameter = this.cfr[this.cfr.length - 1].diameter;\r\n surface = this.cfr[this.cfr.length - 1].surface;\r\n }\r\n }\r\n\r\n return surface;\r\n }\r\n\r\n private setMaxVelocities() {\r\n if (this.airflowConfiguration.fanType == AqsAirflowFanTypeEnum.Axial) {\r\n this._ductDesign.maxVelocities.crossSec = 3000;\r\n this._ductDesign.maxVelocities.surface = 40;\r\n } else {\r\n let selectedFan = parseFloat(this.airflowConfiguration.selectedFan.fanName);\r\n\r\n if (this.airflowConfiguration.fanType == AqsAirflowFanTypeEnum.Centrifugal60HZ &&\r\n (selectedFan < 2250 && selectedFan !== 2003 && selectedFan !== 2205)) {\r\n this._ductDesign.maxVelocities.crossSec = 4000;\r\n this._ductDesign.maxVelocities.surface = 50;\r\n } else {\r\n this._ductDesign.maxVelocities.crossSec = 3500;\r\n this._ductDesign.maxVelocities.surface = 45;\r\n }\r\n }\r\n }\r\n\r\n private parseFtInLengthStrToIn(length: string): number {\r\n let ftDistance: number;\r\n let inDistance: number;\r\n\r\n if (length !== '') {\r\n let ftInDistance = length.split('-');\r\n\r\n if (!_isNumberValue(ftInDistance[0])) {\r\n return null;\r\n } else {\r\n ftDistance = Math.round(Number(ftInDistance[0]))\r\n }\r\n\r\n if (_isNumberValue(ftInDistance[1])) {\r\n inDistance = Math.round(Number(ftInDistance[1]))\r\n }\r\n else {\r\n if (ftInDistance[1] == '' && ftInDistance[2] && _isNumberValue(ftInDistance[2])) {\r\n inDistance = - Math.round(Number(ftInDistance[2]))\r\n } else {\r\n inDistance = 0;\r\n }\r\n }\r\n } else {\r\n return null;\r\n }\r\n\r\n let inches = (ftDistance * 12) + inDistance;\r\n\r\n return inches;\r\n }\r\n\r\n numberAndHyphenOnly(event) {\r\n if (!_isNumberValue(event.key) &&\r\n event.key !== '-' &&\r\n event.key !== '.' &&\r\n event.key !== 'Enter') {\r\n event.preventDefault();\r\n }\r\n }\r\n\r\n}","export * from './aqs-round-duct-design.component';\r\nexport * from './aqs-round-duct-design-view-tab';","import { ColumnTypeEnum } from './../../../enums';\r\nimport { AqsFlushFloorDesignVelocityTableHeaderLabel } from './../../../constants';\r\nexport class CanvasFlushFloorSupportFunction {\r\n\r\n public static FontSize: number = 23;\r\n\r\n public static supportHeightOptions: { label: string, value: number }[] = [\r\n { label: '7.25', value: 7.25 },\r\n { label: '11.25', value: 11.25 },\r\n ];\r\n\r\n public static velocitiesFor2FanTableColumns = [\r\n { header: AqsFlushFloorDesignVelocityTableHeaderLabel.valueLabel, columnType: ColumnTypeEnum.Number, dataField: 'value', },\r\n { header: AqsFlushFloorDesignVelocityTableHeaderLabel.crossSectionLabel, columnType: ColumnTypeEnum.Csv, dataField: 'crossSectional' },\r\n { header: AqsFlushFloorDesignVelocityTableHeaderLabel.surfaceVelocityLabel, columnType: ColumnTypeEnum.Sv, dataField: 'surfaceVelocity' },\r\n ];\r\n\r\n public static aqsCalcDimensionBeforeTunnel(r: number, tunelSize: number, distanceFromCenter: number): number {\r\n if (tunelSize >= r * 2) {\r\n return 0;\r\n }\r\n let chord = Math.sqrt(Math.pow(r, 2) - Math.pow(distanceFromCenter, 2)) * 2;\r\n let x = (chord - tunelSize) / 2;\r\n if (x < 0) x = 0;\r\n return x;\r\n }\r\n\r\n public static aqsCalcTunnelSupport(tunnerWidth: number, tunnerLenght: number, maxSpan: number, minSpan: number): { totalTunnelSupport: number, span: number }[] {\r\n let tunnelSupports: { totalTunnelSupport: number, span: number }[] = [];\r\n let tunnelSupport: number = 1;\r\n let span: number = 0;\r\n let acturalDiameter = tunnerWidth - 6;\r\n do {\r\n span = (acturalDiameter - tunnelSupport * 1.5) / (tunnelSupport + 1);\r\n if (span >= minSpan && span <= maxSpan) {\r\n tunnelSupports.push({ totalTunnelSupport: Math.ceil(tunnerLenght / 10 * tunnelSupport), span: Math.round(span * 1000) / 1000 });\r\n }\r\n tunnelSupport++;\r\n } while (span > minSpan);\r\n if (tunnelSupports.length == 0) {\r\n tunnelSupports.push({ totalTunnelSupport: Math.ceil(tunnerLenght / 10), span: 7 })\r\n }\r\n return tunnelSupports;\r\n }\r\n\r\n public static clearCanvas(ctx: CanvasRenderingContext2D) {\r\n ctx.clearRect(0, 0, ctx.canvas.width, ctx.canvas.height);\r\n }\r\n\r\n public static calculateScale(ctx: CanvasRenderingContext2D, dia: number, indent: number = 60): number {\r\n let minSide = Math.min(...[ctx.canvas.width, ctx.canvas.height]) - indent;\r\n return minSide / (dia * 12);\r\n }\r\n\r\n public static drawErrorBorder(ctx: CanvasRenderingContext2D) {\r\n ctx.lineWidth = 3;\r\n ctx.strokeStyle = 'red';\r\n ctx.strokeRect(0, 0, ctx.canvas.width, ctx.canvas.height);\r\n ctx.lineWidth = 1;\r\n }\r\n\r\n public static drawCircleFromCenter(ctx: CanvasRenderingContext2D, raidus: number, scale: number) {\r\n ctx.beginPath();\r\n ctx.arc(ctx.canvas.width / 2, ctx.canvas.height / 2, raidus * scale, 0, 2 * Math.PI, false);\r\n ctx.stroke();\r\n }\r\n\r\n public static drawFlushFloorForTwoFans(ctx: CanvasRenderingContext2D, x: number[], y: number[], fillColor: string) {\r\n ctx.lineJoin = \"miter\";\r\n this.drawLinesTwoFans(ctx, x, y, fillColor);\r\n for (let i = 0; i < x.length; i++) {\r\n x[i] = ctx.canvas.width - x[i];\r\n }\r\n this.drawLinesTwoFans(ctx, x, y, fillColor);\r\n }\r\n\r\n public static drawVerticalLineWithLabelLeft(ctx: CanvasRenderingContext2D, scale: number, x: number, y: number, label: string, side: number) {\r\n ctx.fillText(label, x, y + CanvasFlushFloorSupportFunction.FontSize / 3);\r\n ctx.beginPath();\r\n y -= side / 2 * scale;\r\n x += CanvasFlushFloorSupportFunction.FontSize / 2;\r\n ctx.moveTo(x, y);\r\n x += CanvasFlushFloorSupportFunction.FontSize / 2;\r\n ctx.lineTo(x, y);\r\n x -= CanvasFlushFloorSupportFunction.FontSize / 4;\r\n ctx.moveTo(x, y);\r\n y += side * scale;\r\n ctx.lineTo(x, y);\r\n x -= CanvasFlushFloorSupportFunction.FontSize / 4;\r\n ctx.moveTo(x, y);\r\n x += CanvasFlushFloorSupportFunction.FontSize / 2;\r\n ctx.lineTo(x, y);\r\n ctx.stroke();\r\n }\r\n\r\n public static drawVerticalLineWithLabelRight(ctx: CanvasRenderingContext2D, scale: number, x: number, y: number, label: string, side: number) {\r\n ctx.fillText(label, x, y + CanvasFlushFloorSupportFunction.FontSize / 3);\r\n ctx.beginPath();\r\n y -= side / 2 * scale;\r\n x -= CanvasFlushFloorSupportFunction.FontSize / 3;\r\n ctx.moveTo(x, y);\r\n x += CanvasFlushFloorSupportFunction.FontSize / 2;\r\n ctx.lineTo(x, y);\r\n x -= CanvasFlushFloorSupportFunction.FontSize / 4;\r\n ctx.moveTo(x, y);\r\n y += side * scale;\r\n ctx.lineTo(x, y);\r\n x -= CanvasFlushFloorSupportFunction.FontSize / 4;\r\n ctx.moveTo(x, y);\r\n x += CanvasFlushFloorSupportFunction.FontSize / 2;\r\n ctx.lineTo(x, y);\r\n ctx.stroke();\r\n }\r\n\r\n public static drawHorizontalLineWithBottomLabel(ctx: CanvasRenderingContext2D, scale: number, x: number, y: number, label: string, side: number) {\r\n ctx.fillText(label, x, y);\r\n ctx.beginPath();\r\n x -= side / 2 * scale - CanvasFlushFloorSupportFunction.FontSize / 4;\r\n y -= CanvasFlushFloorSupportFunction.FontSize / 2;\r\n ctx.moveTo(x, y);\r\n y -= CanvasFlushFloorSupportFunction.FontSize / 2;\r\n ctx.lineTo(x, y);\r\n y += CanvasFlushFloorSupportFunction.FontSize / 4;\r\n ctx.moveTo(x, y);\r\n x += side * scale;\r\n ctx.lineTo(x, y);\r\n y += CanvasFlushFloorSupportFunction.FontSize / 4;\r\n ctx.moveTo(x, y);\r\n y -= CanvasFlushFloorSupportFunction.FontSize / 2;\r\n ctx.lineTo(x, y);\r\n ctx.stroke();\r\n }\r\n\r\n public static drawHorizontalLineWithTopLabel(ctx: CanvasRenderingContext2D, scale: number, x: number, y: number, label: string, side: number) {\r\n ctx.fillText(label, x, y);\r\n\r\n ctx.beginPath();\r\n x -= side / 2 * scale - CanvasFlushFloorSupportFunction.FontSize / 4;\r\n y += CanvasFlushFloorSupportFunction.FontSize / 3;\r\n ctx.moveTo(x, y);\r\n y -= CanvasFlushFloorSupportFunction.FontSize / 2;\r\n ctx.lineTo(x, y);\r\n y += CanvasFlushFloorSupportFunction.FontSize / 4;\r\n ctx.moveTo(x, y);\r\n x += side * scale;\r\n ctx.lineTo(x, y);\r\n y += CanvasFlushFloorSupportFunction.FontSize / 4;\r\n ctx.moveTo(x, y);\r\n y -= CanvasFlushFloorSupportFunction.FontSize / 2;\r\n ctx.lineTo(x, y);\r\n ctx.stroke();\r\n }\r\n\r\n public static drawObliqueLineBottomWithLabel(ctx: CanvasRenderingContext2D, scale: number, x: number, y: number, label: string, side: number) {\r\n ctx.beginPath();\r\n ctx.moveTo(x, y);\r\n x += (side / 2) * scale;\r\n y += scale * Math.sqrt(Math.pow(side, 2) - Math.pow(side / 2, 2));\r\n ctx.lineTo(x, y);\r\n ctx.stroke();\r\n y += CanvasFlushFloorSupportFunction.FontSize;\r\n ctx.fillText(label, x, y);\r\n }\r\n\r\n public static drawObliqueLineTopWithLabel(ctx: CanvasRenderingContext2D, scale: number, x: number, y: number, label: string, side: number) {\r\n ctx.beginPath();\r\n ctx.moveTo(x, y);\r\n x += (side / 2) * scale;\r\n y -= scale * Math.sqrt(Math.pow(side, 2) - Math.pow(side / 2, 2));\r\n ctx.lineTo(x, y);\r\n ctx.stroke();\r\n y -= CanvasFlushFloorSupportFunction.FontSize / 4;\r\n ctx.fillText(label, x, y);\r\n }\r\n\r\n public static drawLabelInRect(ctx: CanvasRenderingContext2D, x: number, y: number, label: string, offset: number = 2) {\r\n let textWidth = ctx.measureText(label).width;\r\n ctx.clearRect(x - (textWidth + offset * 2) / 2, y, textWidth + offset * 2, CanvasFlushFloorSupportFunction.FontSize - 2);\r\n ctx.beginPath();\r\n ctx.rect(x - (textWidth + offset * 2) / 2, y, textWidth + offset * 2, CanvasFlushFloorSupportFunction.FontSize - 2);\r\n ctx.stroke();\r\n ctx.fillText(label, x - textWidth / 2, y + CanvasFlushFloorSupportFunction.FontSize - 5);\r\n }\r\n\r\n public static drawFlushFloorForFourFans(ctx: CanvasRenderingContext2D, x: number[], y: number[], fillColor: string) {\r\n ctx.lineJoin = \"miter\";\r\n this.drawLinesFourFans(ctx, x, y, fillColor);\r\n for (let i = 0; i < x.length; i++) {\r\n x[i] = ctx.canvas.width - x[i];\r\n }\r\n this.drawLinesFourFans(ctx, x, y, fillColor);\r\n }\r\n\r\n public static drawFlushFloorForSixFans(ctx: CanvasRenderingContext2D, x: number[], y: number[], fillColor: string) {\r\n ctx.lineJoin = \"miter\";\r\n this.drawLinesSixFans(ctx, x, y, fillColor);\r\n for (let i = 0; i < x.length; i++) {\r\n x[i] = ctx.canvas.width - x[i];\r\n }\r\n this.drawLinesSixFans(ctx, x, y, fillColor);\r\n }\r\n\r\n public static drawCenterVerticalLineWithLabelRight(ctx: CanvasRenderingContext2D, scale: number, x: number, y: number, label: string, side: number) {\r\n ctx.fillText(label, x, y);\r\n ctx.beginPath();\r\n y -= side / 2 * scale;\r\n x -= CanvasFlushFloorSupportFunction.FontSize / 3;\r\n ctx.moveTo(x, y);\r\n x += CanvasFlushFloorSupportFunction.FontSize / 2;\r\n ctx.lineTo(x, y);\r\n x -= CanvasFlushFloorSupportFunction.FontSize / 4;\r\n ctx.moveTo(x, y);\r\n y += side * scale;\r\n ctx.lineTo(x, y);\r\n x -= CanvasFlushFloorSupportFunction.FontSize / 4;\r\n ctx.moveTo(x, y);\r\n x += CanvasFlushFloorSupportFunction.FontSize / 2;\r\n ctx.lineTo(x, y);\r\n ctx.stroke();\r\n }\r\n\r\n private static drawLinesTwoFans(ctx: CanvasRenderingContext2D, x: number[], y: number[], fillColor: string) {\r\n ctx.beginPath();\r\n ctx.moveTo(x[1], y[1]);\r\n ctx.lineTo(x[x.length - 2], y[x.length - 2]);\r\n ctx.moveTo(x[1], y[1]);\r\n for (let i = 2; i < x.length - 1; i++) {\r\n ctx.lineTo(x[i], y[i]);\r\n }\r\n\r\n ctx.fillStyle = fillColor;\r\n ctx.fill();\r\n ctx.stroke();\r\n\r\n ctx.beginPath();\r\n ctx.strokeStyle = 'grey';\r\n ctx.moveTo(x[x.length - 2], y[x.length - 2]);\r\n ctx.lineTo(x[x.length - 1], y[x.length - 1]);\r\n ctx.moveTo(x[0], y[0]);\r\n ctx.lineTo(x[1], y[1]);\r\n ctx.stroke();\r\n ctx.strokeStyle = 'black';\r\n }\r\n\r\n private static drawLinesFourFans(ctx: CanvasRenderingContext2D, x: number[], y: number[], fillColor: string) {\r\n ctx.beginPath();\r\n ctx.moveTo(x[1], y[1]);\r\n ctx.lineTo(x[8], y[8]);\r\n ctx.moveTo(x[1], y[1]);\r\n for (let i = 2; i < 9; i++) {\r\n ctx.lineTo(x[i], y[i]);\r\n }\r\n\r\n ctx.fillStyle = fillColor;\r\n ctx.fill();\r\n ctx.stroke();\r\n\r\n ctx.beginPath();\r\n ctx.moveTo(x[11], y[11]);\r\n for (let i = 12; i <= 14; i++) {\r\n ctx.lineTo(x[i], y[i]);\r\n }\r\n ctx.fillStyle = fillColor;\r\n ctx.fill();\r\n ctx.stroke();\r\n\r\n ctx.beginPath();\r\n ctx.moveTo(x[11], y[11]);\r\n ctx.lineTo(x[14], y[14]);\r\n ctx.stroke();\r\n\r\n ctx.beginPath();\r\n ctx.strokeStyle = 'grey';\r\n ctx.moveTo(x[8], y[8]);\r\n ctx.lineTo(x[9], y[9]);\r\n ctx.moveTo(x[0], y[0]);\r\n ctx.lineTo(x[1], y[1]);\r\n\r\n ctx.moveTo(x[14], y[14]);\r\n ctx.lineTo(x[15], y[15]);\r\n ctx.moveTo(x[10], y[10]);\r\n ctx.lineTo(x[11], y[11]);\r\n ctx.stroke();\r\n ctx.strokeStyle = 'black';\r\n }\r\n\r\n private static drawLinesSixFans(ctx: CanvasRenderingContext2D, x: number[], y: number[], fillColor: string) {\r\n ctx.beginPath();\r\n ctx.moveTo(x[1], y[1]);\r\n ctx.lineTo(x[8], y[8]);\r\n ctx.moveTo(x[1], y[1]);\r\n for (let i = 2; i <= 8; i++) {\r\n ctx.lineTo(x[i], y[i]);\r\n }\r\n ctx.fillStyle = fillColor;\r\n ctx.fill();\r\n ctx.stroke();\r\n\r\n ctx.beginPath();\r\n ctx.moveTo(x[11], y[11]);\r\n ctx.lineTo(x[14], y[14]);\r\n ctx.moveTo(x[11], y[11]);\r\n for (let i = 12; i <= 14; i++) {\r\n ctx.lineTo(x[i], y[i]);\r\n }\r\n ctx.fillStyle = fillColor;\r\n ctx.fill();\r\n ctx.stroke();\r\n\r\n ctx.beginPath();\r\n ctx.moveTo(x[17], y[17]);\r\n ctx.lineTo(x[20], y[20]);\r\n ctx.moveTo(x[17], y[17]);\r\n\r\n for (let i = 18; i <= 20; i++) {\r\n ctx.lineTo(x[i], y[i]);\r\n }\r\n ctx.fillStyle = fillColor;\r\n ctx.fill();\r\n ctx.stroke();\r\n\r\n ctx.beginPath();\r\n ctx.strokeStyle = 'grey';\r\n ctx.moveTo(x[0], y[0]);\r\n ctx.lineTo(x[1], y[1]);\r\n ctx.moveTo(x[8], y[8]);\r\n ctx.lineTo(x[9], y[9]);\r\n ctx.moveTo(x[10], y[10]);\r\n ctx.lineTo(x[11], y[11]);\r\n ctx.moveTo(x[14], y[14]);\r\n ctx.lineTo(x[15], y[15]);\r\n ctx.moveTo(x[16], y[16]);\r\n ctx.lineTo(x[17], y[17]);\r\n ctx.moveTo(x[20], y[20]);\r\n ctx.lineTo(x[21], y[21]);\r\n ctx.stroke();\r\n ctx.strokeStyle = 'black';\r\n }\r\n}\r\n","import { _isNumberValue } from '@angular/cdk/coercion';\r\nimport { Component, ElementRef, EventEmitter, Input, OnInit, Output, ViewChild } from '@angular/core';\r\n\r\nimport { CanvasFlushFloorSupportFunction } from '../aqs-canvas-flushfloor-support-functions';\r\nimport { ConvertDataFunctions } from './../../../../../common';\r\nimport { AqsFlushFloorCalculatedValues, AqsFlushFloorViewModel, AqsRoundStorageWiewModel } from './../../../../models';\r\n\r\n@Component({\r\n selector: 'greensleeves-aqs-round-flush-design-double-h',\r\n templateUrl: './aqs-round-flush-design-double-h.component.html',\r\n styles: []\r\n})\r\nexport class AqsRoundFlushDesignDoubleHComponent implements OnInit {\r\n @Input() storageConfiguration: AqsRoundStorageWiewModel;\r\n @Input() flushFloorConfiguration: AqsFlushFloorViewModel;\r\n @Input() calcValues: AqsFlushFloorCalculatedValues;\r\n\r\n @Output() currentPageErrorChange = new EventEmitter();\r\n @Output() onChangeFlushFloorModel = new EventEmitter();\r\n\r\n @Input() flushFloorTunnelFillColor: string;\r\n @Input() flushFloorTunnelStrokeColor: string\r\n\r\n @ViewChild('flushFloorCanvas', { static: true })\r\n private canvas: ElementRef;\r\n\r\n _a: string;\r\n _b: number;\r\n _c: number;\r\n _d: number;\r\n _e: number;\r\n _f: number;\r\n _g: number;\r\n _h: number;\r\n _i: string;\r\n\r\n private ii: number;\r\n\r\n _errorBToLarge: boolean = false;\r\n _errorBHUnableToDraw: boolean = false;\r\n _errorCToLarge: boolean = false;\r\n _errorCHUnableToDraw: boolean = false;\r\n _errorDToLarge: boolean = false;\r\n _errorAFUnableToDraw: boolean = false;\r\n _errorAFBeyondBinDia: boolean = false;\r\n _errorVelocities: boolean = false;\r\n private pageError: boolean = false;\r\n\r\n _supportHeightOptions = CanvasFlushFloorSupportFunction.supportHeightOptions;\r\n\r\n _tunnelSupportOptions1: { label: string, value: { totalTunnelSupport: number, span: number } }[];\r\n _tunnelSupport1: { totalTunnelSupport: number, span: number };\r\n\r\n _tunnelSupportOptions2: { label: string, value: { totalTunnelSupport: number, span: number } }[];\r\n _tunnelSupport2: { totalTunnelSupport: number, span: number };\r\n\r\n _tunnelSupportOptions3: { label: string, value: { totalTunnelSupport: number, span: number } }[];\r\n _tunnelSupport3: { totalTunnelSupport: number, span: number };\r\n\r\n _velocityTable: { value: string, crossSectional: number, surfaceVelocity: number, error: boolean }[];\r\n\r\n _columnsView = CanvasFlushFloorSupportFunction.velocitiesFor2FanTableColumns;\r\n\r\n private ctx: CanvasRenderingContext2D;\r\n private width: number;\r\n private height: number;\r\n private scale: number;\r\n constructor() { }\r\n\r\n ngOnInit() {\r\n this.ctx = this.canvas.nativeElement.getContext('2d');\r\n this.width = this.ctx.canvas.width;\r\n this.height = this.ctx.canvas.height;\r\n if (this.flushFloorConfiguration.aa == null) {\r\n this.calculatedRecommendationParameters();\r\n }\r\n\r\n this.fillInputValues();\r\n\r\n }\r\n\r\n onChangeValueA() {\r\n if (this._a != '') {\r\n let splitStrings = this._a.split('-');\r\n let val = parseFloat(splitStrings[0]);\r\n if (!isNaN(val) && (val >= 2 && val < 1000)) {\r\n this.flushFloorConfiguration.aa = val * 12;\r\n if (splitStrings.length > 1) {\r\n let index = this._a.indexOf('-');\r\n val = parseFloat(this._a.slice(++index));\r\n if (!isNaN(val)) {\r\n this.flushFloorConfiguration.aa += val;\r\n }\r\n }\r\n\r\n this.calcI();\r\n this.checkError();\r\n this.calcTunnelSupport(1);\r\n this.onChangeFlushFloorModel.emit();\r\n }\r\n }\r\n this._a = ConvertDataFunctions.aqsMakeStringFromFtToFtIn(this.flushFloorConfiguration.aa);\r\n }\r\n\r\n onChangeValueB() {\r\n if (this.checkValue(this._b)) {\r\n this.flushFloorConfiguration.ee = this._b * 12;\r\n this.calcI();\r\n this.calculateVelocities();\r\n this.checkError();\r\n this.calcTunnelSupport(1);\r\n this.onChangeFlushFloorModel.emit();\r\n }\r\n else this._b = Math.round(this.flushFloorConfiguration.ee / 12);\r\n }\r\n\r\n onChangeValueC() {\r\n if (this.checkValue(this._c)) {\r\n this.flushFloorConfiguration.ff = this._c * 12;\r\n this.calculateVelocities();\r\n this.checkError();\r\n this.calcTunnelSupport(2);\r\n this.onChangeFlushFloorModel.emit();\r\n }\r\n else this._c = Math.round(this.flushFloorConfiguration.ff / 12);\r\n }\r\n\r\n onChangeValueD() {\r\n if (this.checkValue(this._d)) {\r\n this.flushFloorConfiguration.hh = this._d * 12;\r\n this.calculateVelocities();\r\n this.checkError();\r\n this.calcTunnelSupport(3);\r\n this.onChangeFlushFloorModel.emit();\r\n }\r\n else this._d = Math.round(this.flushFloorConfiguration.hh / 12);\r\n }\r\n\r\n onChangeValueE() {\r\n if (this._e >= 0 && this._e <= 100 && this._e != null) {\r\n this.flushFloorConfiguration.cc = this._e;\r\n this.flushFloorConfiguration.bb = (this.calcValues.rad * this._e) / 100;\r\n this.reDrawSchema();\r\n this.onChangeFlushFloorModel.emit();\r\n //2960 IF VAL(FLAG$)>=0 AND VAL(FLAG$)<=100 THEN III=VAL(FLAG$):II=(RAD*III)/100\r\n }\r\n else this._e = this.flushFloorConfiguration.cc;\r\n }\r\n\r\n onChangeValueF() {\r\n if (this._f != null) {\r\n let calcValue = this.calcValues.checkValueByCrossSec(this._f, this.calcValues.maxTunnelWidth);\r\n if (calcValue != this.flushFloorConfiguration.jj) {\r\n this.flushFloorConfiguration.jj = calcValue;\r\n this.calculateVelocities();\r\n this.checkError();\r\n this.calcTunnelSupport(1);\r\n this.onChangeFlushFloorModel.emit();\r\n }\r\n }\r\n // 3040 FOR I=1 TO 7:IF VAL(FLAG$)<=CROSSSEC(0,I) THEN 3060\r\n // 3050 NEXT I:I=7\r\n // 3060 JJ=CROSSSEC(0,I)\r\n this._f = this.flushFloorConfiguration.jj;\r\n\r\n }\r\n\r\n onChangeValueG() {\r\n if (this._g != null) {\r\n let calcValue = this.calcValues.checkValueByCrossSec(this._g, this.calcValues.maxTunnelWidth);\r\n if (calcValue != this.flushFloorConfiguration.kk) {\r\n this.flushFloorConfiguration.kk = calcValue;\r\n this.calculateVelocities();\r\n this.reDrawSchema();\r\n this.calcTunnelSupport(2);\r\n this.onChangeFlushFloorModel.emit();\r\n }\r\n }\r\n\r\n this._g = this.flushFloorConfiguration.kk;\r\n // 3140 FOR I = 1 TO 7:IF VAL(FLAG$) <= CROSSSEC(0, I) THEN 3160\r\n // 3150 NEXT I: I = 7\r\n // 3160 KK = CROSSSEC(0, I)\r\n }\r\n\r\n onChangeValueH() {\r\n if (this._h != null) {\r\n let calcValue = this.calcValues.checkValueByCrossSec(this._h, this.calcValues.maxTunnelWidth);\r\n if (calcValue != this.flushFloorConfiguration.ll) {\r\n this.flushFloorConfiguration.ll = calcValue\r\n this.calculateVelocities();\r\n this.checkError();\r\n this.calcTunnelSupport(3);\r\n this.onChangeFlushFloorModel.emit();\r\n }\r\n }\r\n\r\n this._h = this.flushFloorConfiguration.ll;\r\n }\r\n\r\n onChangeSupportHeight() {\r\n this.calculateVelocities();\r\n this.onChangeFlushFloorModel.emit();\r\n }\r\n\r\n onChangeTunnelSupport(tunnelNumber: number) {\r\n switch (tunnelNumber) {\r\n case 1:\r\n this.flushFloorConfiguration.totalTunnelSupport1 = this._tunnelSupport1.totalTunnelSupport;\r\n this.flushFloorConfiguration.totalTunnelSupportSpan1 = this._tunnelSupport1.span;\r\n break;\r\n case 2:\r\n this.flushFloorConfiguration.totalTunnelSupport2 = this._tunnelSupport2.totalTunnelSupport;\r\n this.flushFloorConfiguration.totalTunnelSupportSpan2 = this._tunnelSupport2.span;\r\n break;\r\n case 3:\r\n this.flushFloorConfiguration.totalTunnelSupport3 = this._tunnelSupport3.totalTunnelSupport;\r\n this.flushFloorConfiguration.totalTunnelSupportSpan3 = this._tunnelSupport3.span;\r\n break;\r\n }\r\n\r\n this.onChangeFlushFloorModel.emit();\r\n }\r\n\r\n numberOnly(event) {\r\n if (!_isNumberValue(event.key) && event.key !== '.' && event.key !== '-' && event.key !== 'Enter') {\r\n event.preventDefault();\r\n }\r\n }\r\n\r\n private checkError() {\r\n this._errorBToLarge = this.flushFloorConfiguration.ee > this.calcValues.rad * 2;\r\n //3540 IF EE>RAD*2 THEN STATUS=-1:LOCATE 25,1: PRINT \"UNABLE TO DRAW B TOO LARGE\";:RETURN\r\n this._errorBHUnableToDraw = this.flushFloorConfiguration.ee <= this.flushFloorConfiguration.ll;\r\n //3590 IF EE<=LL THEN STATUS=-1:LOCATE 25,1: PRINT \"UNABLE TO DRAW\";:RETURN\r\n this._errorCToLarge = this.flushFloorConfiguration.ff > this.calcValues.rad * 2;\r\n //IF FF>RAD*2 THEN STATUS=-1:LOCATE 25,1: PRINT \"UNABLE TO DRAW C TOO LARGE\";:RETURN\r\n this._errorCHUnableToDraw = this.flushFloorConfiguration.ff <= this.flushFloorConfiguration.ll;\r\n //3580 IF FF<=LL THEN STATUS=-1:LOCATE 25,1: PRINT \"UNABLE TO DRAW\";:RETURN\r\n this._errorDToLarge = this.flushFloorConfiguration.hh > this.calcValues.rad;\r\n //3560 IF HH>RAD THEN STATUS=-1:LOCATE 25,1: PRINT \"UNABLE TO DRAW D TOO LARGE\";:RETURN\r\n this._errorAFBeyondBinDia = Math.pow(this.flushFloorConfiguration.aa / 2 + this.flushFloorConfiguration.jj / 2, 2) > Math.pow(this.calcValues.rad, 2);\r\n //3570 IF (AA/2+JJ/2)^2>RAD^2 THEN STATUS=-1:LOCATE 25,1: PRINT \"UNABLE TO DRAW--BEYOND BIN DIA\";:RETURN\r\n this._errorAFUnableToDraw = this.flushFloorConfiguration.aa <= this.flushFloorConfiguration.jj;\r\n //3600 IF AA<=JJ THEN STATUS=-1:LOCATE 25,1: PRINT \"UNABLE TO DRAW\";:RETURN\r\n\r\n this.pageError = this._errorBToLarge || this._errorBHUnableToDraw || this._errorCToLarge || this._errorCHUnableToDraw ||\r\n this._errorDToLarge || this._errorAFBeyondBinDia || this._errorAFUnableToDraw || this._errorVelocities ;\r\n this.currentPageErrorChange.emit(this.pageError);\r\n\r\n this.reDrawSchema();\r\n }\r\n\r\n private checkValue(value: number): boolean {\r\n return value >= 2 && value % 2 == 0;\r\n }\r\n\r\n private calculatedRecommendationParameters() {\r\n let i: number;\r\n [this.flushFloorConfiguration.supportHeight1, this.flushFloorConfiguration.jj] = this.calcValues.calcMainTunnelWidth(this.calcValues.maxTunnelWidth);\r\n this.flushFloorConfiguration.kk = this.calcValues.calcSupportTunnelFan(this.flushFloorConfiguration.jj / 2);\r\n this.flushFloorConfiguration.ll = this.flushFloorConfiguration.kk;\r\n this.flushFloorConfiguration.cc = 75;//use cc insted of III\r\n this.flushFloorConfiguration.bb = (this.flushFloorConfiguration.cc * this.calcValues.rad) / 100;//use bb instead of II\r\n //1670 III=75:II=(III*RAD)/100\r\n this.flushFloorConfiguration.aa = Math.floor((this.calcValues.rad * 2) / 5);\r\n this.flushFloorConfiguration.hh = Math.floor((this.flushFloorConfiguration.aa - this.flushFloorConfiguration.kk / 2 - this.flushFloorConfiguration.jj / 2) * 24) / 24;\r\n // AA=INT((RAD*2)/5):HH=INT((AA-KK/2-JJ/2)*24)/24\r\n i = this.flushFloorConfiguration.aa / 2 + this.flushFloorConfiguration.jj / 2 + this.flushFloorConfiguration.hh + this.flushFloorConfiguration.kk;\r\n //I=AA/2+JJ/2+HH+KK\r\n this.flushFloorConfiguration.ff = Math.floor(Math.sqrt(Math.pow(this.flushFloorConfiguration.bb, 2) - Math.pow(i, 2)) / 12) * 24;\r\n if (this.flushFloorConfiguration.ff < 24) this.flushFloorConfiguration.ff = 24;\r\n // 1700 FF=INT((SQR(II^2-I^2))/12)*24: IF FF<24 THEN FF=24\r\n i = this.flushFloorConfiguration.aa / 2 + this.flushFloorConfiguration.jj / 2;\r\n // 1710 I=AA/2+JJ/2\r\n this.flushFloorConfiguration.ee = Math.floor(Math.sqrt(Math.pow(this.flushFloorConfiguration.bb, 2) - Math.pow(i, 2)) / 12) * 24;\r\n // 1720 EE=INT((SQR(II^2-I^2))/12)*24: IF EE<24 THEN EE=24\r\n if (this.flushFloorConfiguration.ee < 24) this.flushFloorConfiguration.ee = 24;\r\n }\r\n\r\n private fillInputValues() {\r\n this._a = ConvertDataFunctions.aqsMakeStringFromFtToFtIn(this.flushFloorConfiguration.aa);\r\n this._b = Math.round(this.flushFloorConfiguration.ee / 12);\r\n //CINT(EE/12)\r\n this._c = Math.round(this.flushFloorConfiguration.ff / 12);\r\n //CINT(FF/12)\r\n this._d = Math.round(this.flushFloorConfiguration.hh / 12);\r\n //CINT(HH/12)\r\n this._e = this.flushFloorConfiguration.cc;\r\n //III -use cc insted of III \r\n this._f = this.flushFloorConfiguration.jj;\r\n //JJ\r\n this._g = this.flushFloorConfiguration.kk;\r\n //KK\r\n this._h = this.flushFloorConfiguration.ll;\r\n //LL\r\n this.calcI();\r\n this.calculateVelocities();\r\n this.fillTunnelSupports();\r\n this.reDrawSchema();\r\n }\r\n\r\n public fillTunnelSupports() {\r\n this.calcTunnelSupport(1, true);\r\n if (!this.flushFloorConfiguration.totalTunnelSupport1) {\r\n this.onChangeTunnelSupport(1);\r\n } else {\r\n this._tunnelSupport1.totalTunnelSupport = this.flushFloorConfiguration.totalTunnelSupport1;\r\n this._tunnelSupport1.span = this.flushFloorConfiguration.totalTunnelSupportSpan1;\r\n }\r\n\r\n this.calcTunnelSupport(2, true);\r\n if (!this.flushFloorConfiguration.totalTunnelSupport2) {\r\n this.onChangeTunnelSupport(2);\r\n } else {\r\n this._tunnelSupport2.totalTunnelSupport = this.flushFloorConfiguration.totalTunnelSupport2;\r\n this._tunnelSupport2.span = this.flushFloorConfiguration.totalTunnelSupportSpan2;\r\n }\r\n\r\n this.calcTunnelSupport(3, true);\r\n if (!this.flushFloorConfiguration.totalTunnelSupport3) {\r\n this.onChangeTunnelSupport(3);\r\n } else {\r\n this._tunnelSupport3.totalTunnelSupport = this.flushFloorConfiguration.totalTunnelSupport3;\r\n this._tunnelSupport3.span = this.flushFloorConfiguration.totalTunnelSupportSpan3;\r\n }\r\n }\r\n\r\n private calcTunnelSupport(tunnelNum: number, install: boolean = false) {\r\n let tunnelSupportOptions: { label: string, value: { totalTunnelSupport: number, span: number } }[] = [];\r\n let tunnelDia: number;\r\n let tunnelLength: number;\r\n switch (tunnelNum) {\r\n case 1:\r\n tunnelDia = this.flushFloorConfiguration.jj;\r\n tunnelLength = 2 * (this.flushFloorConfiguration.ee + this.ii);\r\n break;\r\n case 2:\r\n tunnelDia = this.flushFloorConfiguration.kk;\r\n tunnelLength = 2 * this.flushFloorConfiguration.ff;\r\n break;\r\n case 3:\r\n tunnelDia = this.flushFloorConfiguration.ll;\r\n tunnelLength = 2 * this.flushFloorConfiguration.hh;\r\n break;\r\n }\r\n\r\n let tunnelSupports = CanvasFlushFloorSupportFunction.aqsCalcTunnelSupport(tunnelDia, tunnelLength, this.calcValues.maxSpan, this.calcValues.minSpan);\r\n tunnelSupports.forEach(item => {\r\n tunnelSupportOptions.push({\r\n label: `Supports: ${item.totalTunnelSupport}, Span: ${item.span}'`,\r\n value: { totalTunnelSupport: item.totalTunnelSupport, span: item.span }\r\n });\r\n });\r\n\r\n switch (tunnelNum) {\r\n case 1:\r\n this._tunnelSupportOptions1 = tunnelSupportOptions;\r\n this._tunnelSupport1 = this._tunnelSupportOptions1[0].value;\r\n if (!install) {\r\n this.flushFloorConfiguration.totalTunnelSupport1 = this._tunnelSupport1.totalTunnelSupport;\r\n this.flushFloorConfiguration.totalTunnelSupportSpan1 = this._tunnelSupport1.span;\r\n }\r\n break;\r\n case 2:\r\n this._tunnelSupportOptions2 = tunnelSupportOptions;\r\n this._tunnelSupport2 = this._tunnelSupportOptions2[0].value;\r\n if (!install) {\r\n this.flushFloorConfiguration.totalTunnelSupport2 = this._tunnelSupport2.totalTunnelSupport;\r\n this.flushFloorConfiguration.totalTunnelSupportSpan2 = this._tunnelSupport2.span;\r\n }\r\n break;\r\n case 3:\r\n this._tunnelSupportOptions3 = tunnelSupportOptions;\r\n this._tunnelSupport3 = this._tunnelSupportOptions3[0].value;\r\n if (!install) {\r\n this.flushFloorConfiguration.totalTunnelSupport3 = this._tunnelSupport3.totalTunnelSupport;\r\n this.flushFloorConfiguration.totalTunnelSupportSpan3 = this._tunnelSupport3.span;\r\n }\r\n break;\r\n }\r\n }\r\n\r\n private calcI() {\r\n this.ii = CanvasFlushFloorSupportFunction.aqsCalcDimensionBeforeTunnel(this.calcValues.rad, this.flushFloorConfiguration.ee, this.flushFloorConfiguration.aa / 2 - this.flushFloorConfiguration.jj / 2);\r\n this._i = ConvertDataFunctions.aqsMakeStringFromFtToFtIn(this.ii);\r\n }\r\n\r\n private calculateVelocities() {\r\n this._velocityTable = [];\r\n this._velocityTable.push({ value: 'Maximal', crossSectional: this.calcValues.mcsv, surfaceVelocity: this.calcValues.msv, error: false });\r\n let totalSurfaceArea = (this.flushFloorConfiguration.ee * 2 * this.flushFloorConfiguration.jj +\r\n this.flushFloorConfiguration.hh * 2 * this.flushFloorConfiguration.ll +\r\n this.flushFloorConfiguration.kk * 2 * this.flushFloorConfiguration.ff) / 144;\r\n //3420 TOTALSURFACEAREA=((EE*2*JJ)+(2*HH*LL)+(2*KK*FF))/144\r\n let sv = Math.round((this.calcValues.lowerLarge / totalSurfaceArea) * 10) / 10;\r\n //3430 SV=INT(((LOWERLARGE/TOTALSURFACEAREA)*10)+.5)/10\r\n\r\n let csv = this.calcValues.calcCSVelocityFans(this.flushFloorConfiguration.supportHeight1, this.flushFloorConfiguration.jj);\r\n this._errorVelocities = sv > this.calcValues.msv || csv > this.calcValues.mcsv;\r\n this._velocityTable.push({ value: 'Actual', crossSectional: csv, surfaceVelocity: sv, error: this._errorVelocities });\r\n }\r\n\r\n private reDrawSchema() {\r\n if (this.pageError) {\r\n CanvasFlushFloorSupportFunction.drawErrorBorder(this.ctx);\r\n return;\r\n }\r\n CanvasFlushFloorSupportFunction.clearCanvas(this.ctx);\r\n this.scale = CanvasFlushFloorSupportFunction.calculateScale(this.ctx, this.storageConfiguration.diameter);\r\n this.ctx.strokeStyle = this.flushFloorTunnelStrokeColor;\r\n this.drawFlushSchema();\r\n this.drawCirclesSchema();\r\n this.drawSchemaLabels();\r\n\r\n }\r\n\r\n private drawSchemaLabels() {\r\n this.ctx.font = `${CanvasFlushFloorSupportFunction.FontSize}px serif`;\r\n this.ctx.strokeStyle = this.flushFloorTunnelStrokeColor;\r\n this.ctx.fillStyle = this.flushFloorTunnelStrokeColor;\r\n this.drawLabelA();\r\n this.drawLabelB();\r\n this.drawLabelC();\r\n this.drawLabelD();\r\n this.drawLabelE();\r\n this.drawLabelF();\r\n this.drawLabelG();\r\n this.drawLabelH();\r\n this.drawLabelI();\r\n this.drawLabel1()\r\n this.drawLabel2()\r\n this.drawLabel3()\r\n }\r\n\r\n private drawLabelA() {\r\n let x = this.width / 2 - CanvasFlushFloorSupportFunction.FontSize / 4;\r\n let y = this.height / 2 - this.flushFloorConfiguration.ee / 2 * this.scale - CanvasFlushFloorSupportFunction.FontSize / 3;\r\n CanvasFlushFloorSupportFunction.drawHorizontalLineWithTopLabel(this.ctx, this.scale, x, y, 'A', this.flushFloorConfiguration.aa);\r\n }\r\n\r\n private drawLabelB() {\r\n let x = this.width / 2 - this.flushFloorConfiguration.aa / 2 * this.scale + this.flushFloorConfiguration.jj / 2 * this.scale + CanvasFlushFloorSupportFunction.FontSize / 3;\r\n let y = this.height / 2;\r\n CanvasFlushFloorSupportFunction.drawVerticalLineWithLabelRight(this.ctx, this.scale, x, y, 'B', this.flushFloorConfiguration.ee);\r\n }\r\n\r\n private drawLabelC() {\r\n let x = this.width / 2 + this.flushFloorConfiguration.aa / 2 * this.scale + this.flushFloorConfiguration.jj / 2 * this.scale +\r\n this.flushFloorConfiguration.hh * this.scale + this.flushFloorConfiguration.kk * this.scale + CanvasFlushFloorSupportFunction.FontSize / 3;\r\n let y = this.height / 2;\r\n CanvasFlushFloorSupportFunction.drawVerticalLineWithLabelRight(this.ctx, this.scale, x, y, 'C', this.flushFloorConfiguration.ff);\r\n }\r\n\r\n private drawLabelD() {\r\n let x = this.width / 2 - this.flushFloorConfiguration.aa / 2 * this.scale - this.flushFloorConfiguration.jj / 2 * this.scale -\r\n this.flushFloorConfiguration.hh / 2 * this.scale - CanvasFlushFloorSupportFunction.FontSize / 4;\r\n let y = this.height / 2 + this.flushFloorConfiguration.ll / 2 * this.scale + CanvasFlushFloorSupportFunction.FontSize;\r\n CanvasFlushFloorSupportFunction.drawHorizontalLineWithBottomLabel(this.ctx, this.scale, x, y, 'D', this.flushFloorConfiguration.hh);\r\n }\r\n\r\n private drawLabelE() {\r\n if (this.flushFloorConfiguration.cc > 0) {\r\n let x = this.width / 2;\r\n let y = this.height / 2;\r\n CanvasFlushFloorSupportFunction.drawObliqueLineBottomWithLabel(this.ctx, this.scale, x, y, 'E', this.flushFloorConfiguration.bb);\r\n }\r\n }\r\n\r\n private drawLabelF() {\r\n let x = this.width / 2 + this.flushFloorConfiguration.aa / 2 * this.scale - CanvasFlushFloorSupportFunction.FontSize / 4;\r\n let y = this.height / 2 + this.calcValues.rad * this.scale + CanvasFlushFloorSupportFunction.FontSize;\r\n CanvasFlushFloorSupportFunction.drawHorizontalLineWithBottomLabel(this.ctx, this.scale, x, y, 'F', this.flushFloorConfiguration.jj);\r\n }\r\n\r\n private drawLabelG() {\r\n let x = this.width / 2 + this.flushFloorConfiguration.aa / 2 * this.scale + this.flushFloorConfiguration.jj / 2 * this.scale +\r\n this.flushFloorConfiguration.hh * this.scale + this.flushFloorConfiguration.kk / 2 * this.scale - CanvasFlushFloorSupportFunction.FontSize / 4;\r\n let y = this.height / 2 - this.flushFloorConfiguration.ff / 2 * this.scale - CanvasFlushFloorSupportFunction.FontSize / 3;\r\n CanvasFlushFloorSupportFunction.drawHorizontalLineWithTopLabel(this.ctx, this.scale, x, y, 'G', this.flushFloorConfiguration.kk);\r\n }\r\n\r\n private drawLabelH() {\r\n let x = this.width / 2 - this.flushFloorConfiguration.aa / 2 * this.scale - this.flushFloorConfiguration.jj / 2 * this.scale -\r\n this.flushFloorConfiguration.hh / 2 * this.scale;\r\n let y = this.height / 2 - CanvasFlushFloorSupportFunction.FontSize / 2;\r\n CanvasFlushFloorSupportFunction.drawLabelInRect(this.ctx, x, y, 'H');\r\n }\r\n\r\n private drawLabelI() {\r\n if (this.ii > 0) {\r\n let x = this.width / 2 - this.flushFloorConfiguration.aa / 2 * this.scale + this.flushFloorConfiguration.jj / 2 * this.scale + CanvasFlushFloorSupportFunction.FontSize / 3;\r\n let y = this.height / 2 + this.flushFloorConfiguration.ee / 2 * this.scale + this.ii / 2 * this.scale;\r\n CanvasFlushFloorSupportFunction.drawVerticalLineWithLabelRight(this.ctx, this.scale, x, y, 'I', this.ii);\r\n }\r\n }\r\n\r\n private drawLabel1() {\r\n let x = this.width / 2 + this.flushFloorConfiguration.aa / 2 * this.scale;\r\n let y = this.height / 2 - this.flushFloorConfiguration.ee / 4 * this.scale;\r\n CanvasFlushFloorSupportFunction.drawLabelInRect(this.ctx, x, y, '1');\r\n }\r\n\r\n private drawLabel2() {\r\n let x = this.width / 2 + (this.flushFloorConfiguration.aa / 2 + this.flushFloorConfiguration.jj / 2 + this.flushFloorConfiguration.hh + this.flushFloorConfiguration.kk / 2) * this.scale;\r\n let y = this.height / 2 - this.flushFloorConfiguration.ff / 4 * this.scale;\r\n CanvasFlushFloorSupportFunction.drawLabelInRect(this.ctx, x, y, '2');\r\n }\r\n\r\n private drawLabel3() {\r\n let x = this.width / 2 + (this.flushFloorConfiguration.aa / 2 + this.flushFloorConfiguration.jj / 2 + this.flushFloorConfiguration.hh / 2) * this.scale;\r\n let y = this.height / 2 - CanvasFlushFloorSupportFunction.FontSize / 2;\r\n CanvasFlushFloorSupportFunction.drawLabelInRect(this.ctx, x, y, '3');\r\n }\r\n\r\n private drawFlushSchema() {\r\n //RTUNS2.BAS 1760-2060\r\n let x: number[] = this.determinePointsX();\r\n let y: number[] = this.determinePointsY();\r\n CanvasFlushFloorSupportFunction.drawFlushFloorForTwoFans(this.ctx, x, y, this.flushFloorTunnelFillColor);\r\n }\r\n\r\n private determinePointsY(): number[] {\r\n let y: number[] = [];\r\n y.push(-Math.sqrt(Math.pow(this.calcValues.rad, 2) - Math.pow((this.flushFloorConfiguration.aa / 2 + this.flushFloorConfiguration.jj / 2), 2)));\r\n y.push(-this.flushFloorConfiguration.ee / 2);\r\n y.push(-this.flushFloorConfiguration.ll / 2);\r\n y.push(y[2]);\r\n y.push(-this.flushFloorConfiguration.ff / 2);\r\n y.push(y[4]);\r\n y.push(-y[5]);\r\n y.push(-y[4]);\r\n y.push(-y[3]);\r\n y.push(-y[2]);\r\n y.push(-y[1]);\r\n y.push(-y[1]);\r\n y.push(y[1]);\r\n y.push(-Math.sqrt(Math.pow(this.calcValues.rad, 2) - Math.pow((this.flushFloorConfiguration.aa / 2 - this.flushFloorConfiguration.jj / 2), 2)));\r\n for (let i = 0; i < y.length; i++) {\r\n y[i] = this.height / 2 - y[i] * this.scale;\r\n }\r\n return y;\r\n }\r\n\r\n private determinePointsX(): number[] {\r\n let x: number[] = [];\r\n x.push(-(this.flushFloorConfiguration.aa / 2 + this.flushFloorConfiguration.jj / 2));\r\n x.push(x[0]);\r\n x.push(x[1]);\r\n x.push(x[2] - this.flushFloorConfiguration.hh);\r\n x.push(x[3]);\r\n x.push(x[4] - this.flushFloorConfiguration.kk);\r\n x.push(x[5]);\r\n x.push(x[4]);\r\n x.push(x[3]);\r\n x.push(x[2]);\r\n x.push(x[1]);\r\n x.push(x[10] + this.flushFloorConfiguration.jj);\r\n x.push(x[11]);\r\n x.push(x[0] + this.flushFloorConfiguration.jj);\r\n for (let i = 0; i < x.length; i++) {\r\n x[i] = this.width / 2 + x[i] * this.scale;\r\n }\r\n return x;\r\n }\r\n\r\n private drawCirclesSchema() {\r\n CanvasFlushFloorSupportFunction.drawCircleFromCenter(this.ctx, this.calcValues.rad, this.scale);\r\n CanvasFlushFloorSupportFunction.drawCircleFromCenter(this.ctx, this.flushFloorConfiguration.bb, this.scale);\r\n }\r\n\r\n}\r\n","export * from './aqs-round-flush-design-double-h.component';","import { _isNumberValue } from '@angular/cdk/coercion';\r\nimport { Component, ElementRef, EventEmitter, Input, OnInit, Output, ViewChild } from '@angular/core';\r\n\r\nimport { CanvasFlushFloorSupportFunction } from '../aqs-canvas-flushfloor-support-functions';\r\nimport { ConvertDataFunctions } from './../../../../../common';\r\nimport { AqsAirflowViewModel, AqsFlushFloorCalculatedValues, AqsFlushFloorViewModel, AqsRoundStorageWiewModel } from './../../../../models';\r\n\r\n@Component({\r\n selector: 'greensleeves-aqs-round-flush-design-double-t-special',\r\n templateUrl: './aqs-round-flush-design-double-t-special.component.html',\r\n styles: []\r\n})\r\nexport class AqsRoundFlushDesignDoubleTSpecialComponent implements OnInit {\r\n @Input() storageConfiguration: AqsRoundStorageWiewModel;\r\n @Input() flushFloorConfiguration: AqsFlushFloorViewModel;\r\n @Input() calcValues: AqsFlushFloorCalculatedValues;\r\n\r\n @Input() flushFloorTunnelFillColor: string;\r\n @Input() flushFloorTunnelStrokeColor: string;\r\n\r\n @Output() currentPageErrorChange = new EventEmitter();\r\n @Output() onChangeFlushFloorModel = new EventEmitter();\r\n\r\n @ViewChild('flushFloorCanvas', { static: true })\r\n private canvas: ElementRef;\r\n\r\n _a: string;\r\n _b: number;\r\n _c: number;\r\n _d: number;\r\n _e: number;\r\n _f: number;\r\n _g: string;\r\n private gg: number;\r\n\r\n _errorBToLarge: boolean = false;\r\n _errorBLessThanC: boolean = false;\r\n _errorCToLarge: boolean = false;\r\n _errorADEBeyondBinDia: boolean = false;\r\n _errorELessOrEqualsD: boolean = false;\r\n _errorALessOrEqualsD: boolean = false;\r\n _errorVelocities: boolean = false;\r\n private pageError: boolean = false;\r\n\r\n _supportHeightOptions = CanvasFlushFloorSupportFunction.supportHeightOptions;\r\n\r\n _tunnelSupportOptions1: { label: string, value: { totalTunnelSupport: number, span: number } }[];\r\n _tunnelSupport1: { totalTunnelSupport: number, span: number };\r\n\r\n _tunnelSupportOptions2: { label: string, value: { totalTunnelSupport: number, span: number } }[];\r\n _tunnelSupport2: { totalTunnelSupport: number, span: number };\r\n\r\n _velocityTable: { value: string, crossSectional: number, surfaceVelocity: number, error: boolean }[];\r\n\r\n _columnsView = CanvasFlushFloorSupportFunction.velocitiesFor2FanTableColumns;\r\n\r\n private ctx: CanvasRenderingContext2D;\r\n private width: number;\r\n private height: number;\r\n private scale: number;\r\n constructor() { }\r\n\r\n ngOnInit() {\r\n this.ctx = this.canvas.nativeElement.getContext('2d');\r\n this.width = this.ctx.canvas.width;\r\n this.height = this.ctx.canvas.height;\r\n\r\n if (this.flushFloorConfiguration.aa == undefined || this.flushFloorConfiguration.aa == null) {\r\n this.calculatedRecommendationParameters();\r\n }\r\n\r\n this.fillInputValues();\r\n }\r\n\r\n onChangeValueA() {\r\n if (this._a != '') {\r\n let splitStrings = this._a.split('-');\r\n let val = parseFloat(splitStrings[0]);\r\n if (!isNaN(val) && (val >= 2 && val < 1000)) {\r\n this.flushFloorConfiguration.aa = val * 12;\r\n if (splitStrings.length > 1) {\r\n let index = this._a.indexOf('-');\r\n val = parseFloat(this._a.slice(++index));\r\n if (!isNaN(val)) {\r\n this.flushFloorConfiguration.aa += val;\r\n }\r\n }\r\n this.calcG();\r\n this.checkError();\r\n this.reDrawSchema();\r\n this.calcTunnelSupport(1);\r\n this.onChangeFlushFloorModel.emit();\r\n }\r\n }\r\n this._a = ConvertDataFunctions.aqsMakeStringFromFtToFtIn(this.flushFloorConfiguration.aa);\r\n }\r\n\r\n onChangeValueB() {\r\n if (this.checkValue(this._b)) {\r\n this.flushFloorConfiguration.bb = this._b * 12;\r\n this.calcG();\r\n this.calculateVelocities();\r\n this.checkError();\r\n this.reDrawSchema();\r\n this.calcTunnelSupport(1);\r\n this.onChangeFlushFloorModel.emit();\r\n }\r\n else this._b = Math.round(this.flushFloorConfiguration.bb / 12);\r\n }\r\n\r\n onChangeValueC() {\r\n if (this.checkValue(this._c)) {\r\n this.flushFloorConfiguration.cc = this._c * 12;\r\n this.calculateVelocities();\r\n this.checkError();\r\n this.reDrawSchema();\r\n this.calcTunnelSupport(1);\r\n this.calcTunnelSupport(2);\r\n this.onChangeFlushFloorModel.emit();\r\n }\r\n else this._c = Math.round(this.flushFloorConfiguration.cc / 12);\r\n }\r\n\r\n onChangeValueD() {\r\n if (this._d != null) {\r\n let calcValue = this.calcValues.checkValueByCrossSec(this._d, this.calcValues.maxTunnelWidth);\r\n if (calcValue != this.flushFloorConfiguration.dd) {\r\n this.flushFloorConfiguration.dd = calcValue;\r\n this.calculateVelocities();\r\n this.checkError();\r\n this.reDrawSchema();\r\n this.calcTunnelSupport(1);\r\n this.calcTunnelSupport(2);\r\n this.onChangeFlushFloorModel.emit();\r\n }\r\n }\r\n this._d = this.flushFloorConfiguration.dd;\r\n }\r\n\r\n onChangeValueE() {\r\n if (this._e != null) {\r\n let calcValue = this.calcValues.checkValueByCrossSec(this._e, this.calcValues.maxWideTunnelWidth);\r\n if (calcValue != this.flushFloorConfiguration.ee) {\r\n this.flushFloorConfiguration.ee = calcValue;\r\n this.calculateVelocities();\r\n this.checkError();\r\n this.reDrawSchema();\r\n this.calcTunnelSupport(2);\r\n this.onChangeFlushFloorModel.emit();\r\n }\r\n }\r\n this._e = this.flushFloorConfiguration.ee;\r\n }\r\n\r\n onChangeValueF() {\r\n if (this._f >= 0 && this._f <= 100 && this._f != null) {\r\n this.flushFloorConfiguration.gg = this._f;\r\n this.flushFloorConfiguration.ff = (this.calcValues.rad * this._f) / 100;\r\n this.reDrawSchema();\r\n this.onChangeFlushFloorModel.emit();\r\n }\r\n else this._f = this.flushFloorConfiguration.gg;\r\n }\r\n\r\n onChangeSupportHeight() {\r\n this.calculateVelocities();\r\n this.onChangeFlushFloorModel.emit();\r\n }\r\n\r\n onChangeTunnelSupport(tunnelNumber: number) {\r\n switch (tunnelNumber) {\r\n case 1:\r\n this.flushFloorConfiguration.totalTunnelSupport1 = this._tunnelSupport1.totalTunnelSupport;\r\n this.flushFloorConfiguration.totalTunnelSupportSpan1 = this._tunnelSupport1.span;\r\n break;\r\n case 2:\r\n this.flushFloorConfiguration.totalTunnelSupport2 = this._tunnelSupport2.totalTunnelSupport;\r\n this.flushFloorConfiguration.totalTunnelSupportSpan2 = this._tunnelSupport2.span;\r\n break;\r\n }\r\n\r\n this.onChangeFlushFloorModel.emit();\r\n }\r\n\r\n numberOnly(event) {\r\n if (!_isNumberValue(event.key) && event.key !== '.' && event.key !== '-' && event.key !== 'Enter') {\r\n event.preventDefault();\r\n }\r\n }\r\n\r\n private checkValue(value: number): boolean {\r\n return value >= 2 && value % 2 == 0;\r\n }\r\n\r\n private calculatedRecommendationParameters() {\r\n let i: number;\r\n let j: number;\r\n for (i = 1; i <= 2; i++) {\r\n for (j = 1; j <= 7; j++) {\r\n if (this.calcValues.crossec[i][j] >= this.calcValues.csa) break;\r\n }\r\n if (this.calcValues.crossec[i][j] >= this.calcValues.csa) break;\r\n }\r\n if (i > 2) {\r\n i = 2;\r\n j = 7;\r\n }\r\n [this.flushFloorConfiguration.supportHeight1, this.flushFloorConfiguration.dd] = this.calcValues.calcMainTunnelWidth(this.calcValues.maxTunnelWidth);\r\n this.flushFloorConfiguration.gg = 75;//instead of FFF\r\n this.flushFloorConfiguration.ff = (this.flushFloorConfiguration.gg * this.calcValues.rad) / 100;\r\n this.flushFloorConfiguration.aa = (this.calcValues.rad * 2 * .275);\r\n //5010 AA=INT(RAD*2*.275)\r\n this.flushFloorConfiguration.bb = Math.round((Math.sqrt(Math.pow(this.flushFloorConfiguration.ff, 2) - Math.pow(this.flushFloorConfiguration.aa / 2 + this.flushFloorConfiguration.dd / 2, 2)) * 2) / 24) * 24;\r\n if (this.flushFloorConfiguration.bb < 24) this.flushFloorConfiguration.bb = 24;\r\n //BB=CINT((SQR(FF^2-(AA/2+DD/2)^2)*2)/24)*24: IF BB<24 THEN BB=24\r\n this.flushFloorConfiguration.ee = this.calcValues.calcSupportTunnelFan(this.flushFloorConfiguration.dd * 1.4, this.calcValues.maxWideTunnelWidth);\r\n this.flushFloorConfiguration.cc = Math.round((Math.sqrt(Math.pow(this.flushFloorConfiguration.ff, 2) - Math.pow(this.flushFloorConfiguration.aa / 2 + this.flushFloorConfiguration.dd / 2 + (this.flushFloorConfiguration.ee - this.flushFloorConfiguration.dd), 2)) * 2) / 24) * 24;\r\n if (this.flushFloorConfiguration.cc < 24) this.flushFloorConfiguration.cc = 24;\r\n if (this.flushFloorConfiguration.cc >= this.flushFloorConfiguration.bb) this.flushFloorConfiguration.cc = this.flushFloorConfiguration.bb - 24;\r\n // 5060 CC = CINT((SQR(FF ^ 2 - (AA / 2 + DD / 2 + (EE - DD)) ^ 2) * 2) / 24) * 24: IF CC < 24 THEN CC = 24\r\n // 5070 IF CC >= BB THEN CC = BB - 24\r\n }\r\n\r\n private fillInputValues() {\r\n this._a = ConvertDataFunctions.aqsMakeStringFromFtToFtIn(this.flushFloorConfiguration.aa);\r\n this._b = Math.round(this.flushFloorConfiguration.bb / 12);\r\n this._c = Math.round(this.flushFloorConfiguration.cc / 12);\r\n this._d = this.flushFloorConfiguration.dd;\r\n this._e = this.flushFloorConfiguration.ee;\r\n this._f = this.flushFloorConfiguration.gg;\r\n this.calcG();\r\n this.fillTunnelSupports();\r\n this.reDrawSchema();\r\n this.calculateVelocities();\r\n }\r\n\r\n public fillTunnelSupports() {\r\n this.calcTunnelSupport(1, true);\r\n if (!this.flushFloorConfiguration.totalTunnelSupport1) {\r\n this.onChangeTunnelSupport(1);\r\n } else {\r\n this._tunnelSupport1.totalTunnelSupport = this.flushFloorConfiguration.totalTunnelSupport1;\r\n this._tunnelSupport1.span = this.flushFloorConfiguration.totalTunnelSupportSpan1;\r\n }\r\n\r\n this.calcTunnelSupport(2, true);\r\n if (!this.flushFloorConfiguration.totalTunnelSupport2) {\r\n this.onChangeTunnelSupport(2);\r\n } else {\r\n this._tunnelSupport2.totalTunnelSupport = this.flushFloorConfiguration.totalTunnelSupport2;\r\n this._tunnelSupport2.span = this.flushFloorConfiguration.totalTunnelSupportSpan2;\r\n }\r\n }\r\n\r\n private calcTunnelSupport(tunnelNum: number, install: boolean = false) {\r\n let tunnelSupportOptions: { label: string, value: { totalTunnelSupport: number, span: number } }[] = [];\r\n let tunnelDia: number;\r\n let tunnelLength: number;\r\n switch (tunnelNum) {\r\n case 1:\r\n tunnelDia = this.flushFloorConfiguration.dd;\r\n tunnelLength = 2 * (this.flushFloorConfiguration.bb + this.gg - this.flushFloorConfiguration.cc);\r\n break;\r\n case 2:\r\n tunnelDia = this.flushFloorConfiguration.dd + this.flushFloorConfiguration.ee;\r\n tunnelLength = 2 * this.flushFloorConfiguration.cc;\r\n break;\r\n }\r\n\r\n let tunnelSupports = CanvasFlushFloorSupportFunction.aqsCalcTunnelSupport(tunnelDia, tunnelLength, this.calcValues.maxSpan, this.calcValues.minSpan);\r\n tunnelSupports.forEach(item => {\r\n tunnelSupportOptions.push({\r\n label: `Supports: ${item.totalTunnelSupport}, Span: ${item.span}'`,\r\n value: { totalTunnelSupport: item.totalTunnelSupport, span: item.span }\r\n });\r\n });\r\n\r\n switch (tunnelNum) {\r\n case 1:\r\n this._tunnelSupportOptions1 = tunnelSupportOptions;\r\n this._tunnelSupport1 = this._tunnelSupportOptions1[0].value;\r\n if (!install) {\r\n this.flushFloorConfiguration.totalTunnelSupport1 = this._tunnelSupport1.totalTunnelSupport;\r\n this.flushFloorConfiguration.totalTunnelSupportSpan1 = this._tunnelSupport1.span;\r\n }\r\n break;\r\n case 2:\r\n this._tunnelSupportOptions2 = tunnelSupportOptions;\r\n this._tunnelSupport2 = this._tunnelSupportOptions2[0].value;\r\n if (!install) {\r\n this.flushFloorConfiguration.totalTunnelSupport2 = this._tunnelSupport2.totalTunnelSupport;\r\n this.flushFloorConfiguration.totalTunnelSupportSpan2 = this._tunnelSupport2.span;\r\n }\r\n break;\r\n }\r\n }\r\n\r\n private calcG() {\r\n this.gg = CanvasFlushFloorSupportFunction.aqsCalcDimensionBeforeTunnel(this.calcValues.rad, this.flushFloorConfiguration.bb, this.flushFloorConfiguration.aa / 2 - this.flushFloorConfiguration.dd / 2);\r\n this._g = ConvertDataFunctions.aqsMakeStringFromFtToFtIn(this.gg);\r\n }\r\n\r\n private calculateVelocities() {\r\n this._velocityTable = [];\r\n this._velocityTable.push({ value: 'Maximal', crossSectional: this.calcValues.mcsv, surfaceVelocity: this.calcValues.msv, error: false });\r\n let totalSurfaceArea = (((this.flushFloorConfiguration.bb - this.flushFloorConfiguration.cc) * 2 * this.flushFloorConfiguration.dd) +\r\n (this.flushFloorConfiguration.cc * 2 * this.flushFloorConfiguration.ee)) / 144;\r\n //6340 TOTALSURFACEAREA=(((BB-CC)*2*DD)+(CC*2*EE))/144:'in sq ft\r\n let sv = Math.round((this.calcValues.lowerLarge / totalSurfaceArea) * 10) / 10;\r\n let csv = this.calcValues.calcCSVelocityFans(this.flushFloorConfiguration.supportHeight1, this.flushFloorConfiguration.dd);\r\n this._errorVelocities = sv > this.calcValues.msv || csv > this.calcValues.mcsv;\r\n this._velocityTable.push({ value: 'Actual', crossSectional: csv, surfaceVelocity: sv, error: this._errorVelocities });\r\n }\r\n\r\n private checkError() {\r\n this._errorBToLarge = this.flushFloorConfiguration.bb > this.calcValues.rad * 2;\r\n this._errorBLessThanC = this.flushFloorConfiguration.bb < this.flushFloorConfiguration.cc;\r\n this._errorCToLarge = this.flushFloorConfiguration.cc > this.calcValues.rad * 2;\r\n this._errorADEBeyondBinDia = Math.pow(this.flushFloorConfiguration.aa / 2 - this.flushFloorConfiguration.dd / 2 + this.flushFloorConfiguration.ee, 2) > Math.pow(this.calcValues.rad, 2);\r\n //6480 IF (AA/2-DD/2+EE)^2>RAD^2 THEN STATUS=-1:LOCATE 25,1: PRINT \"UNABLE TO DRAW-- BEYOND BIN DIA\";:RETURN\r\n this._errorELessOrEqualsD = this.flushFloorConfiguration.ee <= this.flushFloorConfiguration.dd;\r\n this._errorALessOrEqualsD = this.flushFloorConfiguration.aa <= this.flushFloorConfiguration.dd;\r\n this.pageError = this._errorBToLarge || this._errorBLessThanC || this._errorCToLarge || this._errorADEBeyondBinDia || this._errorELessOrEqualsD || this._errorALessOrEqualsD || this._errorVelocities;\r\n\r\n this.currentPageErrorChange.emit(this.pageError);\r\n }\r\n\r\n private reDrawSchema() {\r\n if (this.pageError) {\r\n CanvasFlushFloorSupportFunction.drawErrorBorder(this.ctx);\r\n return;\r\n }\r\n CanvasFlushFloorSupportFunction.clearCanvas(this.ctx);\r\n this.scale = CanvasFlushFloorSupportFunction.calculateScale(this.ctx, this.storageConfiguration.diameter);\r\n this.ctx.strokeStyle = this.flushFloorTunnelStrokeColor;\r\n this.drawFlushSchema();\r\n this.drawCirclesSchema();\r\n this.drawSchemaLabels();\r\n }\r\n\r\n private drawFlushSchema() {\r\n //RTUNS2.BAS 5110-5370\r\n let x: number[] = this.determinePointsX();\r\n let y: number[] = this.determinePointsY();\r\n CanvasFlushFloorSupportFunction.drawFlushFloorForTwoFans(this.ctx, x, y, this.flushFloorTunnelFillColor);\r\n }\r\n\r\n private determinePointsY(): number[] {\r\n let y: number[] = [];\r\n y.push(-Math.sqrt(Math.pow(this.calcValues.rad, 2) - Math.pow(this.flushFloorConfiguration.dd / 2 + this.flushFloorConfiguration.aa / 2, 2)));\r\n y.push(-this.flushFloorConfiguration.bb / 2);\r\n y.push(-this.flushFloorConfiguration.cc / 2);\r\n y.push(y[2]);\r\n y.push(this.flushFloorConfiguration.cc / 2);\r\n y.push(y[4]);\r\n y.push(this.flushFloorConfiguration.bb / 2);\r\n y.push(y[6]);\r\n y.push(y[1]);\r\n y.push(-Math.sqrt(Math.pow(this.calcValues.rad, 2) - Math.pow(this.flushFloorConfiguration.dd / 2 - this.flushFloorConfiguration.aa / 2, 2)));\r\n for (let i = 0; i < y.length; i++) {\r\n y[i] = this.height / 2 - y[i] * this.scale;\r\n }\r\n return y;\r\n }\r\n\r\n private determinePointsX(): number[] {\r\n let x: number[] = [];\r\n x.push(-(this.flushFloorConfiguration.aa / 2 + this.flushFloorConfiguration.dd / 2));\r\n x.push(x[0]);\r\n x.push(x[1]);\r\n x.push(x[2] - (this.flushFloorConfiguration.ee - this.flushFloorConfiguration.dd));\r\n x.push(x[3]);\r\n x.push(x[2]);\r\n x.push(x[5]);\r\n x.push(x[1] + this.flushFloorConfiguration.dd);\r\n x.push(x[7]);\r\n x.push(x[8]);\r\n for (let i = 0; i < x.length; i++) {\r\n x[i] = this.width / 2 + x[i] * this.scale;\r\n }\r\n return x;\r\n }\r\n\r\n private drawCirclesSchema() {\r\n CanvasFlushFloorSupportFunction.drawCircleFromCenter(this.ctx, this.calcValues.rad, this.scale);\r\n CanvasFlushFloorSupportFunction.drawCircleFromCenter(this.ctx, this.flushFloorConfiguration.ff, this.scale);\r\n }\r\n\r\n private drawSchemaLabels() {\r\n this.ctx.font = `${CanvasFlushFloorSupportFunction.FontSize}px serif`;\r\n this.ctx.strokeStyle = this.flushFloorTunnelStrokeColor;\r\n this.ctx.fillStyle = this.flushFloorTunnelStrokeColor;\r\n this.drawLabelA();\r\n this.drawLabelB();\r\n this.drawLabelC();\r\n this.drawLabelD();\r\n this.drawLabelE();\r\n this.drawLabelF();\r\n this.drawLabelG();\r\n }\r\n\r\n private drawLabelA() {\r\n let x = this.width / 2 - CanvasFlushFloorSupportFunction.FontSize / 4;\r\n let y = this.height / 2 - this.flushFloorConfiguration.bb / 2 * this.scale - CanvasFlushFloorSupportFunction.FontSize / 3;\r\n CanvasFlushFloorSupportFunction.drawHorizontalLineWithTopLabel(this.ctx, this.scale, x, y, 'A', this.flushFloorConfiguration.aa);\r\n }\r\n\r\n private drawLabelB() {\r\n let x = this.width / 2 - this.flushFloorConfiguration.aa / 2 * this.scale + this.flushFloorConfiguration.dd / 2 * this.scale + CanvasFlushFloorSupportFunction.FontSize / 3;\r\n let y = this.height / 2;\r\n CanvasFlushFloorSupportFunction.drawVerticalLineWithLabelRight(this.ctx, this.scale, x, y, 'B', this.flushFloorConfiguration.bb);\r\n }\r\n\r\n private drawLabelC() {\r\n let x = this.width / 2 - this.flushFloorConfiguration.aa / 2 * this.scale + this.flushFloorConfiguration.dd / 2 * this.scale - this.flushFloorConfiguration.ee * this.scale - CanvasFlushFloorSupportFunction.FontSize;\r\n let y = this.height / 2;\r\n CanvasFlushFloorSupportFunction.drawVerticalLineWithLabelLeft(this.ctx, this.scale, x, y, 'C', this.flushFloorConfiguration.cc);\r\n }\r\n\r\n private drawLabelD() {\r\n let x = this.width / 2 + this.flushFloorConfiguration.aa / 2 * this.scale - CanvasFlushFloorSupportFunction.FontSize / 4;\r\n let y = this.height / 2 + this.calcValues.rad * this.scale + CanvasFlushFloorSupportFunction.FontSize;\r\n CanvasFlushFloorSupportFunction.drawHorizontalLineWithBottomLabel(this.ctx, this.scale, x, y, 'D', this.flushFloorConfiguration.dd)\r\n }\r\n\r\n private drawLabelE() {\r\n let x = this.width / 2 + (this.flushFloorConfiguration.aa / 2 - this.flushFloorConfiguration.dd / 2 + this.flushFloorConfiguration.ee / 2) * this.scale;\r\n let y = this.height / 2 - this.flushFloorConfiguration.cc / 4 * this.scale;\r\n CanvasFlushFloorSupportFunction.drawLabelInRect(this.ctx, x, y, 'E');\r\n }\r\n\r\n private drawLabelF() {\r\n if (this.flushFloorConfiguration.gg > 0) {\r\n let x = this.width / 2;\r\n let y = this.height / 2;\r\n CanvasFlushFloorSupportFunction.drawObliqueLineBottomWithLabel(this.ctx, this.scale, x, y, 'F', this.flushFloorConfiguration.ff);\r\n }\r\n }\r\n\r\n private drawLabelG() {\r\n if (this.gg > 0) {\r\n let x = this.width / 2 - this.flushFloorConfiguration.aa / 2 * this.scale + this.flushFloorConfiguration.dd / 2 * this.scale + CanvasFlushFloorSupportFunction.FontSize / 3;\r\n let y = this.height / 2 + this.flushFloorConfiguration.bb / 2 * this.scale + this.gg / 2 * this.scale;\r\n CanvasFlushFloorSupportFunction.drawVerticalLineWithLabelRight(this.ctx, this.scale, x, y, 'G', this.gg);\r\n }\r\n }\r\n}\r\n","export * from './aqs-round-flush-design-double-t-special.component';","import { _isNumberValue } from '@angular/cdk/coercion';\r\nimport { Component, ElementRef, EventEmitter, Input, OnInit, Output, ViewChild } from '@angular/core';\r\n\r\nimport { ConvertDataFunctions } from './../../../../../common';\r\nimport { AqsAirflowViewModel, AqsFlushFloorCalculatedValues, AqsFlushFloorViewModel, AqsRoundStorageWiewModel } from './../../../../models';\r\nimport { CanvasFlushFloorSupportFunction } from './../aqs-canvas-flushfloor-support-functions';\r\n\r\n@Component({\r\n selector: 'greensleeves-aqs-round-flush-design-double-t',\r\n templateUrl: './aqs-round-flush-design-double-t.component.html',\r\n styles: []\r\n})\r\nexport class AqsRoundFlushDesignDoubleTComponent implements OnInit {\r\n @Input() storageConfiguration: AqsRoundStorageWiewModel;\r\n @Input() flushFloorConfiguration: AqsFlushFloorViewModel;\r\n @Input() calcValues: AqsFlushFloorCalculatedValues;\r\n\r\n @Input() flushFloorTunnelFillColor: string;\r\n @Input() flushFloorTunnelStrokeColor: string;\r\n\r\n @Output() currentPageErrorChange = new EventEmitter();\r\n @Output() onChangeFlushFloorModel = new EventEmitter();\r\n\r\n @ViewChild('flushFloorCanvas', { static: true })\r\n private canvas: ElementRef;\r\n\r\n _a: string;\r\n _b: number;\r\n _c: number;\r\n _d: number;\r\n _e: number;\r\n _f: number;\r\n _g: string;\r\n private gg: number;\r\n\r\n _errorALessOrEqualsC: boolean = false;\r\n _errorACFBeyondBinDia: boolean = false;\r\n _errorBToLarge: boolean = false;\r\n _errorFToLarge: boolean = false;\r\n _errorVelocities: boolean = false;\r\n private pageError: boolean = false;\r\n\r\n _supportHeightOptions = CanvasFlushFloorSupportFunction.supportHeightOptions;\r\n\r\n _tunnelSupportOptions1: { label: string, value: { totalTunnelSupport: number, span: number } }[];\r\n _tunnelSupport1: { totalTunnelSupport: number, span: number };\r\n _tunnelSupportOptions2: { label: string, value: { totalTunnelSupport: number, span: number } }[];\r\n _tunnelSupport2: { totalTunnelSupport: number, span: number };\r\n\r\n _velocityTable: { value: string, crossSectional: number, surfaceVelocity: number, error: boolean }[];\r\n\r\n _columnsView = CanvasFlushFloorSupportFunction.velocitiesFor2FanTableColumns;\r\n\r\n private ctx: CanvasRenderingContext2D;\r\n private width: number;\r\n private height: number;\r\n private scale: number;\r\n\r\n constructor() { }\r\n\r\n ngOnInit() {\r\n this.ctx = this.canvas.nativeElement.getContext('2d');\r\n this.width = this.ctx.canvas.width;\r\n this.height = this.ctx.canvas.height;\r\n\r\n if (this.flushFloorConfiguration.aa == undefined || this.flushFloorConfiguration.aa == null) {\r\n this.calculatedRecommendationParameters();\r\n }\r\n\r\n this.fillInputValues();\r\n }\r\n\r\n onChangeValueA() {\r\n if (this._a != '') {\r\n let splitStrings = this._a.split('-');\r\n let val = parseFloat(splitStrings[0]);\r\n if (!isNaN(val) && (val >= 2 && val < 1000)) {\r\n this.flushFloorConfiguration.aa = val * 12;\r\n if (splitStrings.length > 1) {\r\n let index = this._a.indexOf('-');\r\n val = parseFloat(this._a.slice(++index));\r\n if (!isNaN(val)) {\r\n this.flushFloorConfiguration.aa += val;\r\n }\r\n }\r\n this.calcG();\r\n this.checkError();\r\n this.reDrawSchema();\r\n this.calcTunnelSupport(1);\r\n this.onChangeFlushFloorModel.emit();\r\n }\r\n }\r\n this._a = ConvertDataFunctions.aqsMakeStringFromFtToFtIn(this.flushFloorConfiguration.aa);\r\n }\r\n\r\n onChangeValueB() {\r\n if (this.checkValue(this._b)) {\r\n this.flushFloorConfiguration.bb = this._b * 12;\r\n this.calcG();\r\n this.calculateVelocities();\r\n this.checkError();\r\n this.reDrawSchema();\r\n this.calcTunnelSupport(1);\r\n this.onChangeFlushFloorModel.emit();\r\n }\r\n else this._b = Math.round(this.flushFloorConfiguration.bb / 12);\r\n }\r\n\r\n onChangeValueC() {\r\n if (this._c != null) {\r\n let calcValue = this.calcValues.checkValueByCrossSec(this._c, this.calcValues.maxTunnelWidth);\r\n if (calcValue != this.flushFloorConfiguration.cc) {\r\n this.flushFloorConfiguration.cc = calcValue;\r\n this.calculateVelocities();\r\n this.checkError();\r\n this.reDrawSchema();\r\n this.calcTunnelSupport(1);\r\n this.onChangeFlushFloorModel.emit();\r\n }\r\n }\r\n this._c = this.flushFloorConfiguration.cc;\r\n }\r\n\r\n onChangeValueD() {\r\n if (this._d != null) {\r\n let calcValue = this.calcValues.checkValueByCrossSec(this._d, this.calcValues.maxTunnelWidth);\r\n if (calcValue != this.flushFloorConfiguration.dd) {\r\n this.flushFloorConfiguration.dd = calcValue;\r\n this.calculateVelocities();\r\n this.checkError();\r\n this.reDrawSchema();\r\n this.calcTunnelSupport(2);\r\n this.onChangeFlushFloorModel.emit();\r\n }\r\n }\r\n this._d = this.flushFloorConfiguration.dd;\r\n }\r\n\r\n onChangeValueE() {\r\n if (this._e >= 0 && this._e <= 100 && this._e != null) {\r\n this.flushFloorConfiguration.gg = this._e;\r\n this.flushFloorConfiguration.ee = (this.calcValues.rad * this._e) / 100;\r\n this.reDrawSchema();\r\n this.onChangeFlushFloorModel.emit();\r\n }\r\n else this._e = this.flushFloorConfiguration.gg;\r\n }\r\n\r\n onChangeValueF() {\r\n if (this._f >= 0 && this._f % 2 == 0) {\r\n this.flushFloorConfiguration.ff = this._f * 12;\r\n this.calculateVelocities();\r\n this.checkError();\r\n this.reDrawSchema();\r\n this.calcTunnelSupport(2);\r\n this.onChangeFlushFloorModel.emit();\r\n }\r\n else this._f = Math.round(this.flushFloorConfiguration.ff / 12);\r\n }\r\n\r\n onChangeSupportHeight() {\r\n this.calculateVelocities();\r\n this.onChangeFlushFloorModel.emit();\r\n }\r\n\r\n onChangeTunnelSupport(tunnelNumber: number) {\r\n switch (tunnelNumber) {\r\n case 2:\r\n this.flushFloorConfiguration.totalTunnelSupport2 = this._tunnelSupport2.totalTunnelSupport;\r\n this.flushFloorConfiguration.totalTunnelSupportSpan2 = this._tunnelSupport2.span;\r\n break;\r\n default:\r\n this.flushFloorConfiguration.totalTunnelSupport1 = this._tunnelSupport1.totalTunnelSupport;\r\n this.flushFloorConfiguration.totalTunnelSupportSpan1 = this._tunnelSupport1.span;\r\n break;\r\n }\r\n\r\n this.onChangeFlushFloorModel.emit();\r\n }\r\n\r\n numberOnly(event) {\r\n if (!_isNumberValue(event.key) && event.key !== '.' && event.key !== '-' && event.key !== 'Enter') {\r\n event.preventDefault();\r\n }\r\n }\r\n\r\n private checkValue(value: number): boolean {\r\n return value >= 2 && value % 2 == 0;\r\n }\r\n\r\n private checkError() {\r\n this._errorALessOrEqualsC = this.flushFloorConfiguration.aa <= this.flushFloorConfiguration.cc;\r\n this._errorACFBeyondBinDia = Math.pow(this.flushFloorConfiguration.aa / 2 + this.flushFloorConfiguration.cc / 2 + this.flushFloorConfiguration.ff, 2) > Math.pow(this.calcValues.rad, 2);\r\n //8070 IF (AA/2+CC/2+FF)^2>RAD^2 THEN STATUS=-1:LOCATE 25,1: PRINT \"UNABLE TO DRAW-- BEYOND BIN DIA\";:RETURN\r\n this._errorBToLarge = this.flushFloorConfiguration.bb > this.calcValues.rad * 2;\r\n this._errorFToLarge = this.flushFloorConfiguration.ff > this.calcValues.rad * 2;\r\n this.pageError = this._errorALessOrEqualsC || this._errorACFBeyondBinDia || this._errorBToLarge || this._errorFToLarge || this._errorVelocities;\r\n\r\n this.currentPageErrorChange.emit(this.pageError);\r\n }\r\n\r\n private calculatedRecommendationParameters() {\r\n [this.flushFloorConfiguration.supportHeight1, this.flushFloorConfiguration.cc] = this.calcValues.calcMainTunnelWidth(this.calcValues.maxTunnelWidth);\r\n this.flushFloorConfiguration.gg = 75;//instad of EEE\r\n this.flushFloorConfiguration.ee = (this.flushFloorConfiguration.gg * this.calcValues.rad) / 100;\r\n this.flushFloorConfiguration.aa = (this.calcValues.rad * 2 * .275);\r\n this.flushFloorConfiguration.bb = Math.round((Math.sqrt(Math.pow(this.flushFloorConfiguration.ee, 2) - Math.pow(this.flushFloorConfiguration.aa / 2 + this.flushFloorConfiguration.cc / 2, 2)) * 2) / 24) * 24;\r\n if (this.flushFloorConfiguration.bb < 24) this.flushFloorConfiguration.bb = 24;\r\n //6640 BB=CINT((SQR(EE^2-(AA/2+CC/2)^2)*2)/24)*24: IF BB<24 THEN BB=24\r\n this.flushFloorConfiguration.dd = this.flushFloorConfiguration.cc;\r\n this.flushFloorConfiguration.ff = Math.sqrt(Math.pow(this.flushFloorConfiguration.ee, 2) - Math.pow(this.flushFloorConfiguration.dd / 2, 2));\r\n this.flushFloorConfiguration.ff = Math.floor((this.flushFloorConfiguration.ff - this.flushFloorConfiguration.aa / 2 - this.flushFloorConfiguration.cc / 2) / 24) * 24;\r\n //FF=SQR(EE^2-(DD/2)^2):FF=INT((FF-(AA/2)-(CC/2))/24)*24\r\n }\r\n\r\n private fillInputValues() {\r\n this._a = ConvertDataFunctions.aqsMakeStringFromFtToFtIn(this.flushFloorConfiguration.aa);\r\n this._b = Math.round(this.flushFloorConfiguration.bb / 12);\r\n this._c = this.flushFloorConfiguration.cc;\r\n this._d = this.flushFloorConfiguration.dd;\r\n this._e = this.flushFloorConfiguration.gg;//gg insted of EEE\r\n this._f = Math.round(this.flushFloorConfiguration.ff / 12);\r\n\r\n this.calcG();\r\n this.calculateVelocities();\r\n this.fillTunnelSupports();\r\n this.reDrawSchema();\r\n }\r\n\r\n public fillTunnelSupports() {\r\n this.calcTunnelSupport(1, true);\r\n if (!this.flushFloorConfiguration.totalTunnelSupport1) {\r\n this.onChangeTunnelSupport(1);\r\n } else {\r\n this._tunnelSupport1.totalTunnelSupport = this.flushFloorConfiguration.totalTunnelSupport1;\r\n this._tunnelSupport1.span = this.flushFloorConfiguration.totalTunnelSupportSpan1;\r\n }\r\n\r\n this.calcTunnelSupport(2, true);\r\n if (!this.flushFloorConfiguration.totalTunnelSupport2) {\r\n this.onChangeTunnelSupport(2);\r\n } else {\r\n this._tunnelSupport2.totalTunnelSupport = this.flushFloorConfiguration.totalTunnelSupport2;\r\n this._tunnelSupport2.span = this.flushFloorConfiguration.totalTunnelSupportSpan2;\r\n }\r\n }\r\n\r\n private calcTunnelSupport(tunnelNum: number, install: boolean = false) {\r\n let tunnelSupportOptions: { label: string, value: { totalTunnelSupport: number, span: number } }[] = [];\r\n let tunnelDia: number;\r\n let tunnelLength: number;\r\n switch (tunnelNum) {\r\n case 1:\r\n tunnelDia = this.flushFloorConfiguration.cc;\r\n tunnelLength = 2 * (this.flushFloorConfiguration.bb + this.gg);\r\n break;\r\n case 2:\r\n tunnelDia = this.flushFloorConfiguration.dd;\r\n tunnelLength = 2 * this.flushFloorConfiguration.ff;\r\n break;\r\n }\r\n\r\n let tunnelSupports = CanvasFlushFloorSupportFunction.aqsCalcTunnelSupport(tunnelDia, tunnelLength, this.calcValues.maxSpan, this.calcValues.minSpan);\r\n tunnelSupports.forEach(item => {\r\n tunnelSupportOptions.push({\r\n label: `Supports: ${item.totalTunnelSupport}, Span: ${item.span}'`,\r\n value: { totalTunnelSupport: item.totalTunnelSupport, span: item.span }\r\n });\r\n });\r\n\r\n switch (tunnelNum) {\r\n case 1:\r\n this._tunnelSupportOptions1 = tunnelSupportOptions;\r\n this._tunnelSupport1 = this._tunnelSupportOptions1[0].value;\r\n if (!install) {\r\n this.flushFloorConfiguration.totalTunnelSupport1 = this._tunnelSupport1.totalTunnelSupport;\r\n this.flushFloorConfiguration.totalTunnelSupportSpan1 = this._tunnelSupport1.span;\r\n }\r\n break;\r\n case 2:\r\n this._tunnelSupportOptions2 = tunnelSupportOptions;\r\n this._tunnelSupport2 = this._tunnelSupportOptions2[0].value;\r\n if (!install) {\r\n this.flushFloorConfiguration.totalTunnelSupport2 = this._tunnelSupport2.totalTunnelSupport;\r\n this.flushFloorConfiguration.totalTunnelSupportSpan2 = this._tunnelSupport2.span;\r\n }\r\n break;\r\n }\r\n }\r\n\r\n private calcG() {\r\n this.gg = CanvasFlushFloorSupportFunction.aqsCalcDimensionBeforeTunnel(this.calcValues.rad, this.flushFloorConfiguration.bb, this.flushFloorConfiguration.aa / 2 - this.flushFloorConfiguration.cc / 2);\r\n this._g = ConvertDataFunctions.aqsMakeStringFromFtToFtIn(this.gg);\r\n }\r\n\r\n private calculateVelocities() {\r\n this._velocityTable = [];\r\n this._velocityTable.push({ value: 'Maximal', crossSectional: this.calcValues.mcsv, surfaceVelocity: this.calcValues.msv, error: false });\r\n let totalSurfaceArea = (this.flushFloorConfiguration.bb * 2 * this.flushFloorConfiguration.cc + this.flushFloorConfiguration.dd * 2 * this.flushFloorConfiguration.ff) / 144;\r\n //7930 TOTALSURFACEAREA=((BB*2*CC)+(DD*2*FF))/144:'in sq ft\r\n let sv = Math.round((this.calcValues.lowerLarge / totalSurfaceArea) * 10) / 10;\r\n let csv = this.calcValues.calcCSVelocityFans(this.flushFloorConfiguration.supportHeight1, this.flushFloorConfiguration.cc);\r\n this._errorVelocities = sv > this.calcValues.msv || csv > this.calcValues.mcsv;\r\n this._velocityTable.push({ value: 'Actual', crossSectional: csv, surfaceVelocity: sv, error: this._errorVelocities });\r\n }\r\n\r\n private reDrawSchema() {\r\n if (this.pageError) {\r\n CanvasFlushFloorSupportFunction.drawErrorBorder(this.ctx);\r\n return;\r\n }\r\n CanvasFlushFloorSupportFunction.clearCanvas(this.ctx);\r\n this.scale = CanvasFlushFloorSupportFunction.calculateScale(this.ctx, this.storageConfiguration.diameter);\r\n this.ctx.strokeStyle = this.flushFloorTunnelStrokeColor;\r\n this.drawFlushSchema();\r\n this.drawCirclesSchema();\r\n this.drawSchemaLabels();\r\n }\r\n\r\n private drawFlushSchema() {\r\n //RTUNS2.BAS 6680-6950\r\n let [x, y] = this.determinePointsXY();\r\n CanvasFlushFloorSupportFunction.drawFlushFloorForTwoFans(this.ctx, x, y, this.flushFloorTunnelFillColor);\r\n }\r\n\r\n private determinePointsXY(): [number[], number[]] {\r\n let x: number[] = [];\r\n let y: number[] = [];\r\n x.push(-(this.flushFloorConfiguration.aa / 2 + this.flushFloorConfiguration.cc / 2));\r\n x.push(x[0]);\r\n x.push(x[1]);\r\n x.push(x[2] - this.flushFloorConfiguration.ff);\r\n x.push(x[3]);\r\n x.push(x[2]);\r\n x.push(x[5]);\r\n x.push(x[0] + this.flushFloorConfiguration.cc);\r\n x.push(x[7]);\r\n x.push(x[8]);\r\n for (let i = 0; i < x.length; i++) {\r\n x[i] = this.width / 2 + x[i] * this.scale;\r\n }\r\n\r\n y.push(-Math.sqrt(Math.pow(this.calcValues.rad, 2) - Math.pow(this.flushFloorConfiguration.cc / 2 + this.flushFloorConfiguration.aa / 2, 2)));\r\n y.push(-this.flushFloorConfiguration.bb / 2);\r\n y.push(-this.flushFloorConfiguration.dd / 2);\r\n y.push(y[2]);\r\n y.push(this.flushFloorConfiguration.dd / 2);\r\n y.push(y[4]);\r\n y.push(this.flushFloorConfiguration.bb / 2);\r\n y.push(y[6]);\r\n y.push(y[1]);\r\n y.push(-Math.sqrt(Math.pow(this.calcValues.rad, 2) - Math.pow(this.flushFloorConfiguration.aa / 2 - this.flushFloorConfiguration.cc / 2, 2)));\r\n for (let i = 0; i < y.length; i++) {\r\n y[i] = this.height / 2 - y[i] * this.scale;\r\n }\r\n\r\n return [x, y];\r\n }\r\n\r\n private drawCirclesSchema() {\r\n CanvasFlushFloorSupportFunction.drawCircleFromCenter(this.ctx, this.calcValues.rad, this.scale);\r\n CanvasFlushFloorSupportFunction.drawCircleFromCenter(this.ctx, this.flushFloorConfiguration.ee, this.scale);\r\n }\r\n\r\n private drawSchemaLabels() {\r\n this.ctx.font = `${CanvasFlushFloorSupportFunction.FontSize}px serif`;\r\n this.ctx.strokeStyle = this.flushFloorTunnelStrokeColor;\r\n this.ctx.fillStyle = this.flushFloorTunnelStrokeColor;\r\n this.drawLabelA();\r\n this.drawLabelB();\r\n this.drawLabelC();\r\n this.drawLabelD();\r\n this.drawLabelE();\r\n this.drawLabelF();\r\n this.drawLabelG();\r\n this.drawLabel1();\r\n this.drawLabel2();\r\n }\r\n\r\n private drawLabelA() {\r\n let x = this.width / 2 - CanvasFlushFloorSupportFunction.FontSize / 4;\r\n let y = this.height / 2 - this.flushFloorConfiguration.bb / 2 * this.scale - CanvasFlushFloorSupportFunction.FontSize / 3;\r\n CanvasFlushFloorSupportFunction.drawHorizontalLineWithTopLabel(this.ctx, this.scale, x, y, 'A', this.flushFloorConfiguration.aa);\r\n }\r\n\r\n private drawLabelB() {\r\n let x = this.width / 2 - this.flushFloorConfiguration.aa / 2 * this.scale + this.flushFloorConfiguration.cc / 2 * this.scale + CanvasFlushFloorSupportFunction.FontSize / 3;\r\n let y = this.height / 2;\r\n CanvasFlushFloorSupportFunction.drawVerticalLineWithLabelRight(this.ctx, this.scale, x, y, 'B', this.flushFloorConfiguration.bb);\r\n }\r\n\r\n private drawLabelC() {\r\n let x = this.width / 2 + this.flushFloorConfiguration.aa / 2 * this.scale - CanvasFlushFloorSupportFunction.FontSize / 4;\r\n let y = this.height / 2 + this.calcValues.rad * this.scale + CanvasFlushFloorSupportFunction.FontSize;\r\n CanvasFlushFloorSupportFunction.drawHorizontalLineWithBottomLabel(this.ctx, this.scale, x, y, 'C', this.flushFloorConfiguration.cc);\r\n }\r\n\r\n private drawLabelD() {\r\n let x = this.width / 2 - this.flushFloorConfiguration.aa / 2 * this.scale - this.flushFloorConfiguration.cc / 2 * this.scale - this.flushFloorConfiguration.ff * this.scale - CanvasFlushFloorSupportFunction.FontSize;\r\n let y = this.height / 2;\r\n CanvasFlushFloorSupportFunction.drawVerticalLineWithLabelLeft(this.ctx, this.scale, x, y, 'D', this.flushFloorConfiguration.dd);\r\n }\r\n\r\n private drawLabelE() {\r\n if (this.flushFloorConfiguration.gg > 0) {\r\n let x = this.width / 2;\r\n let y = this.height / 2;\r\n CanvasFlushFloorSupportFunction.drawObliqueLineBottomWithLabel(this.ctx, this.scale, x, y, 'E', this.flushFloorConfiguration.ee);\r\n }\r\n }\r\n\r\n private drawLabelF() {\r\n let x = this.width / 2 + this.flushFloorConfiguration.aa / 2 * this.scale + this.flushFloorConfiguration.cc / 2 * this.scale +\r\n this.flushFloorConfiguration.ff / 2 * this.scale - CanvasFlushFloorSupportFunction.FontSize / 4;\r\n let y = this.height / 2 + this.flushFloorConfiguration.dd / 2 * this.scale + CanvasFlushFloorSupportFunction.FontSize;\r\n CanvasFlushFloorSupportFunction.drawHorizontalLineWithBottomLabel(this.ctx, this.scale, x, y, 'F', this.flushFloorConfiguration.ff);\r\n }\r\n\r\n private drawLabelG() {\r\n if (this.gg > 0) {\r\n let x = this.width / 2 - this.flushFloorConfiguration.aa / 2 * this.scale + this.flushFloorConfiguration.cc / 2 * this.scale + CanvasFlushFloorSupportFunction.FontSize / 3;\r\n let y = this.height / 2 + this.flushFloorConfiguration.bb / 2 * this.scale + this.gg / 2 * this.scale;\r\n CanvasFlushFloorSupportFunction.drawVerticalLineWithLabelRight(this.ctx, this.scale, x, y, 'G', this.gg);\r\n }\r\n }\r\n\r\n private drawLabel1() {\r\n let x = this.width / 2 + this.flushFloorConfiguration.aa / 2 * this.scale;\r\n let y = this.height / 2 - this.flushFloorConfiguration.bb / 4 * this.scale;\r\n CanvasFlushFloorSupportFunction.drawLabelInRect(this.ctx, x, y, '1');\r\n }\r\n\r\n private drawLabel2() {\r\n let x = this.width / 2 + (this.flushFloorConfiguration.aa / 2 + this.flushFloorConfiguration.cc / 2 + this.flushFloorConfiguration.ff / 2) * this.scale;\r\n let y = this.height / 2 - this.flushFloorConfiguration.dd / 2 * this.scale;\r\n CanvasFlushFloorSupportFunction.drawLabelInRect(this.ctx, x, y, '2');\r\n }\r\n}\r\n","export * from './aqs-round-flush-design-double-t.component';","import { _isNumberValue } from '@angular/cdk/coercion';\r\nimport { Component, ElementRef, EventEmitter, Input, OnInit, Output, ViewChild } from '@angular/core';\r\n\r\nimport { CanvasFlushFloorSupportFunction } from '../aqs-canvas-flushfloor-support-functions';\r\nimport { ConvertDataFunctions } from './../../../../../common';\r\nimport { AqsFlushFloorCalculatedValues, AqsFlushFloorViewModel, AqsRoundStorageWiewModel } from './../../../../models';\r\n\r\n@Component({\r\n selector: 'greensleeves-aqs-round-flush-design-double-two-runs',\r\n templateUrl: './aqs-round-flush-design-double-two-runs.component.html',\r\n styles: []\r\n})\r\nexport class AqsRoundFlushDesignDoubleTwoRunsComponent implements OnInit {\r\n @Input() storageConfiguration: AqsRoundStorageWiewModel;\r\n @Input() flushFloorConfiguration: AqsFlushFloorViewModel;\r\n @Input() calcValues: AqsFlushFloorCalculatedValues;\r\n\r\n @Input() flushFloorTunnelFillColor: string;\r\n @Input() flushFloorTunnelStrokeColor: string;\r\n\r\n @Output() currentPageErrorChange = new EventEmitter();\r\n @Output() onChangeFlushFloorModel = new EventEmitter();\r\n\r\n @ViewChild('flushFloorCanvas', { static: true })\r\n private canvas: ElementRef;\r\n\r\n _a: string;\r\n _b: number;\r\n _c: number;\r\n _d: number;\r\n _e: string;\r\n\r\n private ee: number;\r\n\r\n _errorBToLarge: boolean = false;\r\n _errorACBeyondBinDia: boolean = false;\r\n _errorALessOrEqualcC: boolean = false;\r\n _errorVelocities: boolean = false;\r\n private pageError: boolean = false;\r\n\r\n _supportHeightOptions = CanvasFlushFloorSupportFunction.supportHeightOptions;\r\n _tunnelSupportOptions: { label: string, value: { totalTunnelSupport: number, span: number } }[];\r\n _tunnelSupport: { totalTunnelSupport: number, span: number };\r\n\r\n _velocityTable: { value: string, crossSectional: number, surfaceVelocity: number, error: boolean }[];\r\n\r\n _columnsView = CanvasFlushFloorSupportFunction.velocitiesFor2FanTableColumns;\r\n\r\n private ctx: CanvasRenderingContext2D;\r\n private width: number;\r\n private height: number;\r\n private scale: number;\r\n\r\n constructor() { }\r\n\r\n ngOnInit() {\r\n this.ctx = this.canvas.nativeElement.getContext('2d');\r\n this.width = this.ctx.canvas.width;\r\n this.height = this.ctx.canvas.height;\r\n if (this.flushFloorConfiguration.aa == undefined || this.flushFloorConfiguration.aa == null) {\r\n this.calculatedRecommendationParameters();\r\n }\r\n\r\n this.fillInputValues();\r\n this.reDrawSchema();\r\n }\r\n\r\n onChangeValueA() {\r\n if (this._a != '') {\r\n let splitStrings = this._a.split('-');\r\n let val = parseFloat(splitStrings[0]);\r\n if (!isNaN(val) && (val >= 2 && val < 1000)) {\r\n this.flushFloorConfiguration.aa = val * 12;\r\n if (splitStrings.length > 1) {\r\n let index = this._a.indexOf('-');\r\n val = parseFloat(this._a.slice(++index));\r\n if (!isNaN(val)) {\r\n this.flushFloorConfiguration.aa += val;\r\n }\r\n }\r\n this.calcE();\r\n this.checkError();\r\n this.reDrawSchema();\r\n this.calcTunnelSupport();\r\n this.onChangeFlushFloorModel.emit();\r\n }\r\n }\r\n this._a = ConvertDataFunctions.aqsMakeStringFromFtToFtIn(this.flushFloorConfiguration.aa);;\r\n }\r\n\r\n onChangeValueB() {\r\n if (this.checkValue(this._b)) {\r\n this.flushFloorConfiguration.bb = this._b * 12;\r\n this.calculateVelocities();\r\n this.checkError();\r\n this.calcE();\r\n this.reDrawSchema();\r\n this.calcTunnelSupport();\r\n this.onChangeFlushFloorModel.emit();\r\n }\r\n else this._b = Math.round(this.flushFloorConfiguration.bb / 12);\r\n }\r\n\r\n onChangeValueC() {\r\n if (this._c != null) {\r\n let calcValue = this.calcValues.checkValueByCrossSec(this._c, this.calcValues.maxTunnelWidth);\r\n if (calcValue != this.flushFloorConfiguration.cc) {\r\n this.flushFloorConfiguration.cc = calcValue\r\n this.calculateVelocities();\r\n this.checkError();\r\n this.reDrawSchema();\r\n this.calcTunnelSupport();\r\n this.onChangeFlushFloorModel.emit();\r\n }\r\n }\r\n\r\n this._c = this.flushFloorConfiguration.cc;\r\n }\r\n\r\n onChangeValueD() {\r\n if (this._d >= 0 && this._d <= 100 && this._d != null) {\r\n this.flushFloorConfiguration.ee = this._d;\r\n this.flushFloorConfiguration.dd = (this.calcValues.rad * this._d) / 100;\r\n this.reDrawSchema();\r\n this.onChangeFlushFloorModel.emit();\r\n }\r\n else this._d = this.flushFloorConfiguration.ee;\r\n }\r\n\r\n onChangeSupportHeight() {\r\n this.calculateVelocities();\r\n this.onChangeFlushFloorModel.emit();\r\n }\r\n\r\n onChangeTunnelSupport() {\r\n this.flushFloorConfiguration.totalTunnelSupport1 = this._tunnelSupport.totalTunnelSupport;\r\n this.flushFloorConfiguration.totalTunnelSupportSpan1 = this._tunnelSupport.span;\r\n this.onChangeFlushFloorModel.emit();\r\n }\r\n\r\n numberOnly(event) {\r\n if (!_isNumberValue(event.key) && event.key !== '.' && event.key !== '-' && event.key !== 'Enter') {\r\n event.preventDefault();\r\n }\r\n }\r\n\r\n private checkError() {\r\n this._errorBToLarge = this.flushFloorConfiguration.bb > this.calcValues.rad * 2;\r\n this._errorACBeyondBinDia = Math.pow(this.flushFloorConfiguration.aa / 2 + this.flushFloorConfiguration.cc / 2, 2) > Math.pow(this.calcValues.rad, 2);\r\n this._errorALessOrEqualcC = this.flushFloorConfiguration.aa <= this.flushFloorConfiguration.cc;\r\n this.pageError = this._errorBToLarge || this._errorACBeyondBinDia || this._errorALessOrEqualcC || this._errorVelocities;\r\n this.currentPageErrorChange.emit(this.pageError);\r\n }\r\n\r\n private checkValue(value: number): boolean {\r\n return value >= 2 && value % 2 == 0;\r\n }\r\n\r\n private calculatedRecommendationParameters() {\r\n [this.flushFloorConfiguration.supportHeight1, this.flushFloorConfiguration.cc] = this.calcValues.calcMainTunnelWidth(this.calcValues.maxTunnelWidth);\r\n this.flushFloorConfiguration.ee = 75;//instead of DDD\r\n this.flushFloorConfiguration.dd = (this.flushFloorConfiguration.ee * this.calcValues.rad) / 100;\r\n this.flushFloorConfiguration.aa = Math.floor((this.calcValues.rad * 2) / 3);\r\n this.flushFloorConfiguration.bb = Math.round((Math.sqrt(Math.pow(this.flushFloorConfiguration.dd, 2) - Math.pow(this.flushFloorConfiguration.aa / 2 + this.flushFloorConfiguration.cc / 2, 2)) * 2) / 24) * 24;\r\n //BB=CINT( (SQR(DD^2-(AA/2+CC/2)^2)*2)/24 )*24: IF BB<24 THEN BB=24\r\n if (this.flushFloorConfiguration.bb < 24) this.flushFloorConfiguration.bb = 24;\r\n\r\n }\r\n\r\n private fillInputValues() {\r\n this._a = ConvertDataFunctions.aqsMakeStringFromFtToFtIn(this.flushFloorConfiguration.aa);\r\n this._b = Math.round(this.flushFloorConfiguration.bb / 12);\r\n this._c = this.flushFloorConfiguration.cc;\r\n this._d = this.flushFloorConfiguration.ee;\r\n this.calcE();\r\n this.calculateVelocities();\r\n this.calcTunnelSupport(true);\r\n if (!this.flushFloorConfiguration.totalTunnelSupport1) {\r\n this.onChangeTunnelSupport();\r\n } else {\r\n this._tunnelSupport.totalTunnelSupport = this.flushFloorConfiguration.totalTunnelSupport1;\r\n this._tunnelSupport.span = this.flushFloorConfiguration.totalTunnelSupportSpan1;\r\n }\r\n }\r\n\r\n private calcE() {\r\n this.ee = CanvasFlushFloorSupportFunction.aqsCalcDimensionBeforeTunnel(this.calcValues.rad, this.flushFloorConfiguration.bb, this.flushFloorConfiguration.aa / 2 - this.flushFloorConfiguration.cc / 2);\r\n this._e = ConvertDataFunctions.aqsMakeStringFromFtToFtIn(this.ee);\r\n }\r\n\r\n private calculateVelocities() {\r\n this._velocityTable = [];\r\n this._velocityTable.push({ value: 'Maximal', crossSectional: this.calcValues.mcsv, surfaceVelocity: this.calcValues.msv, error: false });\r\n\r\n let totalSurfaceArea = (this.flushFloorConfiguration.bb * 2 * this.flushFloorConfiguration.cc) / 144;\r\n // 4750 TOTALSURFACEAREA=(BB*2*CC)/144\r\n let sv = Math.round((this.calcValues.lowerLarge / totalSurfaceArea) * 10) / 10;\r\n\r\n let csv = this.calcValues.calcCSVelocityFans(this.flushFloorConfiguration.supportHeight1, this.flushFloorConfiguration.cc);\r\n //4810 CSV=INT((LOWERLARGE/(2*ACTUALCSA))+.5)\r\n this._errorVelocities = sv > this.calcValues.msv || csv > this.calcValues.mcsv;\r\n this._velocityTable.push({ value: 'Actual', crossSectional: csv, surfaceVelocity: sv, error: this._errorVelocities });\r\n }\r\n\r\n private calcTunnelSupport(install: boolean = false) {\r\n let tunnelSupports = CanvasFlushFloorSupportFunction.aqsCalcTunnelSupport(this.flushFloorConfiguration.cc, 2 * (this.flushFloorConfiguration.bb + this.ee), this.calcValues.maxSpan, this.calcValues.minSpan);\r\n this._tunnelSupportOptions = [];\r\n tunnelSupports.forEach(item => {\r\n this._tunnelSupportOptions.push({\r\n label: `${item.totalTunnelSupport}, Span: ${item.span}'`,\r\n value: { totalTunnelSupport: item.totalTunnelSupport, span: item.span }\r\n });\r\n });\r\n\r\n this._tunnelSupport = this._tunnelSupportOptions[0].value;\r\n\r\n if (!install) {\r\n this.flushFloorConfiguration.totalTunnelSupport1 = this._tunnelSupport.totalTunnelSupport;\r\n this.flushFloorConfiguration.totalTunnelSupportSpan1 = this._tunnelSupport.span;\r\n }\r\n }\r\n\r\n private reDrawSchema() {\r\n if (this.pageError) {\r\n CanvasFlushFloorSupportFunction.drawErrorBorder(this.ctx);\r\n return;\r\n }\r\n CanvasFlushFloorSupportFunction.clearCanvas(this.ctx);\r\n this.scale = CanvasFlushFloorSupportFunction.calculateScale(this.ctx, this.storageConfiguration.diameter);\r\n this.ctx.strokeStyle = this.flushFloorTunnelStrokeColor;\r\n this.drawFlushSchema();\r\n this.drawCirclesSchema();\r\n this.drawSchemaLabels();\r\n }\r\n\r\n private drawSchemaLabels() {\r\n this.ctx.font = `${CanvasFlushFloorSupportFunction.FontSize}px serif`;\r\n this.ctx.strokeStyle = this.flushFloorTunnelStrokeColor;\r\n this.ctx.fillStyle = this.flushFloorTunnelStrokeColor;\r\n this.drawLabelA();\r\n this.drawLabelB();\r\n this.drawLabelC();\r\n this.drawLabelD();\r\n this.drawLabelE();\r\n }\r\n\r\n private drawLabelA() {\r\n let x = this.width / 2 - CanvasFlushFloorSupportFunction.FontSize / 4;\r\n let y = this.height / 2 - this.flushFloorConfiguration.bb / 2 * this.scale - CanvasFlushFloorSupportFunction.FontSize / 3;\r\n CanvasFlushFloorSupportFunction.drawHorizontalLineWithTopLabel(this.ctx, this.scale, x, y, 'A', this.flushFloorConfiguration.aa);\r\n }\r\n\r\n private drawLabelB() {\r\n let x = this.width / 2 - this.flushFloorConfiguration.aa / 2 * this.scale - this.flushFloorConfiguration.cc / 2 * this.scale - CanvasFlushFloorSupportFunction.FontSize;\r\n let y = this.height / 2;\r\n CanvasFlushFloorSupportFunction.drawVerticalLineWithLabelLeft(this.ctx, this.scale, x, y, 'B', this.flushFloorConfiguration.bb);\r\n }\r\n\r\n private drawLabelC() {\r\n let x = this.width / 2 + this.flushFloorConfiguration.aa / 2 * this.scale - CanvasFlushFloorSupportFunction.FontSize / 4;\r\n let y = this.height / 2 + this.calcValues.rad * this.scale + CanvasFlushFloorSupportFunction.FontSize;\r\n CanvasFlushFloorSupportFunction.drawHorizontalLineWithBottomLabel(this.ctx, this.scale, x, y, 'C', this.flushFloorConfiguration.cc);\r\n }\r\n\r\n private drawLabelD() {\r\n if (this.flushFloorConfiguration.ee > 0) {\r\n let x = this.width / 2;\r\n let y = this.height / 2;\r\n CanvasFlushFloorSupportFunction.drawObliqueLineBottomWithLabel(this.ctx, this.scale, x, y, 'D', this.flushFloorConfiguration.dd);\r\n }\r\n }\r\n\r\n private drawLabelE() {\r\n if (this.ee > 0) {\r\n let x = this.width / 2 - this.flushFloorConfiguration.aa / 2 * this.scale + this.flushFloorConfiguration.cc / 2 * this.scale + CanvasFlushFloorSupportFunction.FontSize / 3;\r\n let y = this.height / 2 + this.flushFloorConfiguration.bb / 2 * this.scale + this.ee / 2 * this.scale;\r\n CanvasFlushFloorSupportFunction.drawVerticalLineWithLabelRight(this.ctx, this.scale, x, y, 'E', this.ee);\r\n }\r\n }\r\n\r\n private drawFlushSchema() {\r\n //RTUNS2.BAS 3770-3990\r\n let x: number[] = this.determinePointsX();\r\n let y: number[] = this.determinePointsY();\r\n CanvasFlushFloorSupportFunction.drawFlushFloorForTwoFans(this.ctx, x, y, this.flushFloorTunnelFillColor);\r\n }\r\n\r\n private determinePointsY(): number[] {\r\n let y: number[] = [];\r\n y.push(-Math.sqrt(Math.pow(this.calcValues.rad, 2) - Math.pow((this.flushFloorConfiguration.aa / 2 + this.flushFloorConfiguration.cc / 2), 2)));\r\n y.push(-this.flushFloorConfiguration.bb / 2);\r\n y.push(this.flushFloorConfiguration.bb / 2);\r\n y.push(y[2]);\r\n y.push(y[1]);\r\n y.push(-Math.sqrt(Math.pow(this.calcValues.rad, 2) - Math.pow((this.flushFloorConfiguration.aa / 2 - this.flushFloorConfiguration.cc / 2), 2)));\r\n for (let i = 0; i < y.length; i++) {\r\n y[i] = this.height / 2 - y[i] * this.scale;\r\n }\r\n return y;\r\n }\r\n\r\n private determinePointsX(): number[] {\r\n let x: number[] = [];\r\n x.push(-(this.flushFloorConfiguration.aa / 2 + this.flushFloorConfiguration.cc / 2));\r\n x.push(x[0]);\r\n x.push(x[1]);\r\n x.push(x[2] + this.flushFloorConfiguration.cc);\r\n x.push(x[1] + this.flushFloorConfiguration.cc);\r\n x.push(-(this.flushFloorConfiguration.aa / 2 - this.flushFloorConfiguration.cc / 2));\r\n for (let i = 0; i < x.length; i++) {\r\n x[i] = this.width / 2 + x[i] * this.scale;\r\n }\r\n return x;\r\n }\r\n\r\n private drawCirclesSchema() {\r\n CanvasFlushFloorSupportFunction.drawCircleFromCenter(this.ctx, this.calcValues.rad, this.scale);\r\n CanvasFlushFloorSupportFunction.drawCircleFromCenter(this.ctx, this.flushFloorConfiguration.dd, this.scale);\r\n }\r\n}\r\n","export * from './aqs-round-flush-design-double-two-runs.component';","import { AqsFlushFloorTunnelDesignEnum } from './../../../../enums/aqs-flush-floor.enums';\r\nimport { _isNumberValue } from '@angular/cdk/coercion';\r\nimport { Component, ElementRef, EventEmitter, Input, OnInit, Output, ViewChild } from '@angular/core';\r\n\r\nimport { CanvasFlushFloorSupportFunction } from '../aqs-canvas-flushfloor-support-functions';\r\nimport { ConvertDataFunctions } from './../../../../../common';\r\nimport { AqsFlushFloorCalculatedValues, AqsFlushFloorViewModel, AqsRoundStorageWiewModel } from './../../../../models';\r\n\r\n@Component({\r\n selector: 'greensleeves-aqs-round-flush-design-four-lane-special',\r\n templateUrl: './aqs-round-flush-design-four-lane-special.component.html',\r\n styles: []\r\n})\r\nexport class AqsRoundFlushDesignFourLaneSpecialComponent implements OnInit {\r\n @Input() storageConfiguration: AqsRoundStorageWiewModel;\r\n @Input() flushFloorConfiguration: AqsFlushFloorViewModel;\r\n @Input() calcValues: AqsFlushFloorCalculatedValues;\r\n\r\n @Output() currentPageErrorChange = new EventEmitter();\r\n @Output() onChangeFlushFloorModel = new EventEmitter();\r\n\r\n @Input() flushFloorTunnelFillColor: string;\r\n @Input() flushFloorTunnelStrokeColor: string\r\n\r\n @ViewChild('flushFloorCanvas', { static: true })\r\n private canvas: ElementRef;\r\n\r\n _a: string;\r\n _b: number;\r\n _c: number;\r\n _d: number;\r\n _e: number;\r\n _f: number;\r\n _g: number;\r\n _h: number;\r\n _i: string;\r\n _iStandard: string;\r\n _j: string;\r\n _k: string;\r\n private jj: number;\r\n private kk: number;\r\n\r\n _errorAEIUnableToDraw: boolean = false;\r\n _errorALessOrEqualsE: boolean = false;\r\n _errorBToLarge: boolean = false;\r\n _errorCToLarge: boolean = false;\r\n _errorDToLarge: boolean = false;\r\n _errorDMoreThenC: boolean = false;\r\n _errorIGBeyondBinDia: boolean = false;\r\n _errorVelocities: boolean = false;\r\n private pageError: boolean = false;\r\n\r\n _supportHeightOptions = CanvasFlushFloorSupportFunction.supportHeightOptions;\r\n\r\n _tunnelSupportOptions1: { label: string, value: { totalTunnelSupport: number, span: number } }[];\r\n _tunnelSupport1: { totalTunnelSupport: number, span: number };\r\n\r\n _tunnelSupportOptions2: { label: string, value: { totalTunnelSupport: number, span: number } }[];\r\n _tunnelSupport2: { totalTunnelSupport: number, span: number };\r\n\r\n _tunnelSupportOptions3: { label: string, value: { totalTunnelSupport: number, span: number } }[];\r\n _tunnelSupport3: { totalTunnelSupport: number, span: number };\r\n\r\n _velocityTable: { value: string, crossSectional: number, surfaceVelocity: number, error: boolean }[];\r\n\r\n _columnsView = CanvasFlushFloorSupportFunction.velocitiesFor2FanTableColumns;\r\n\r\n private ctx: CanvasRenderingContext2D;\r\n private width: number;\r\n private height: number;\r\n private scale: number;\r\n\r\n private get isFourLaneSpecial() {\r\n return this.flushFloorConfiguration.tunnelChoice == AqsFlushFloorTunnelDesignEnum.FourLaneSpecial\r\n }\r\n constructor() { }\r\n\r\n ngOnInit() {\r\n this.ctx = this.canvas.nativeElement.getContext('2d');\r\n this.width = this.ctx.canvas.width;\r\n this.height = this.ctx.canvas.height;\r\n if (this.flushFloorConfiguration.aa == null) {\r\n this.calculatedRecommendationParameters();\r\n }\r\n\r\n this.fillInputValues();\r\n }\r\n\r\n onChangeValueA() {\r\n if (this._a != '') {\r\n let splitStrings = this._a.split('-');\r\n let val = parseFloat(splitStrings[0]);\r\n if (!isNaN(val) && (val >= 2 && val < 1000)) {\r\n this.flushFloorConfiguration.aa = val * 12;\r\n if (splitStrings.length > 1) {\r\n let index = this._a.indexOf('-');\r\n val = parseFloat(this._a.slice(++index));\r\n if (!isNaN(val)) {\r\n this.flushFloorConfiguration.aa += val;\r\n }\r\n }\r\n this.calcJ();\r\n this.checkError();\r\n this.calcTunnelSupport(2);\r\n this.reDrawSchema();\r\n this.onChangeFlushFloorModel.emit();\r\n }\r\n }\r\n this._a = ConvertDataFunctions.aqsMakeStringFromFtToFtIn(this.flushFloorConfiguration.aa);\r\n }\r\n\r\n onChangeValueB() {\r\n if (this._b >= 2 && this._b % 2 == 0) {\r\n this.flushFloorConfiguration.bb = this._b * 12;\r\n this.calcJ();\r\n this.calculateVelocities();\r\n this.checkError();\r\n this.calcTunnelSupport(2);\r\n this.reDrawSchema();\r\n this.onChangeFlushFloorModel.emit();\r\n }\r\n else this._b = Math.round(this.flushFloorConfiguration.bb / 12);\r\n }\r\n\r\n onChangeValueC() {\r\n if (this._c >= 2 && this._c % 2 == 0) {\r\n this.flushFloorConfiguration.cc = this._c * 12;\r\n this.calcK();\r\n this.calculateVelocities();\r\n this.checkError();\r\n this.calcTunnelSupport(1);\r\n this.reDrawSchema();\r\n this.onChangeFlushFloorModel.emit();\r\n }\r\n else this._c = Math.round(this.flushFloorConfiguration.cc / 12);\r\n }\r\n\r\n onChangeValueD() {\r\n if (this._d >= 2 && this._d % 2 == 0) {\r\n this.flushFloorConfiguration.dd = this._d * 12;\r\n this.calculateVelocities();\r\n this.checkError();\r\n this.reDrawSchema();\r\n this.isFourLaneSpecial && this.calcTunnelSupport(1);\r\n this.calcTunnelSupport(3);\r\n this.onChangeFlushFloorModel.emit();\r\n }\r\n else this._d = Math.round(this.flushFloorConfiguration.dd / 12);\r\n }\r\n\r\n onChangeValueE() {\r\n if (this._e != null) {\r\n let calcValue = this.calcValues.checkValueByCrossSec(this._e, this.calcValues.maxTunnelWidth);\r\n if (calcValue != this.flushFloorConfiguration.ee) {\r\n this.flushFloorConfiguration.ee = calcValue;\r\n this.calculateVelocities();\r\n this.checkError();\r\n this.reDrawSchema();\r\n this.calcTunnelSupport(2);\r\n this.onChangeFlushFloorModel.emit();\r\n }\r\n }\r\n this._e = this.flushFloorConfiguration.ee;\r\n }\r\n\r\n onChangeValueF() {\r\n if (this._f != null) {\r\n let calcValue = this.calcValues.checkValueByCrossSec(this._f, this.calcValues.maxTunnelWidth);\r\n if (calcValue != this.flushFloorConfiguration.ff) {\r\n this.flushFloorConfiguration.ff = calcValue;\r\n this.calculateVelocities();\r\n this.calcTunnelSupport(1);\r\n this.isFourLaneSpecial && this.calcTunnelSupport(3);\r\n this.reDrawSchema();\r\n this.onChangeFlushFloorModel.emit();\r\n }\r\n }\r\n this._f = this.flushFloorConfiguration.ff;\r\n }\r\n\r\n onChangeValueG() {\r\n if (this._g != null) {\r\n let calcValue = this.calcValues.checkValueByCrossSec(this._g, this.isFourLaneSpecial ? this.calcValues.maxWideTunnelWidth : this.calcValues.maxTunnelWidth);\r\n if (calcValue != this.flushFloorConfiguration.gg) {\r\n this.flushFloorConfiguration.gg = calcValue;\r\n this.calculateVelocities();\r\n this.checkError();\r\n this.reDrawSchema();\r\n this.calcTunnelSupport(3);\r\n this.onChangeFlushFloorModel.emit();\r\n }\r\n }\r\n this._g = this.flushFloorConfiguration.gg;\r\n }\r\n\r\n onChangeValueH() {\r\n if (this._h >= 0 && this._h <= 100 && this._h != null) {\r\n this.flushFloorConfiguration.jj = this._h;\r\n this.flushFloorConfiguration.hh = (this.calcValues.rad * this._h) / 100;\r\n this.reDrawSchema();\r\n this.onChangeFlushFloorModel.emit();\r\n }\r\n else this._h = this.flushFloorConfiguration.jj;\r\n }\r\n\r\n onChangeValueI() {\r\n if (this._i != '') {\r\n let splitStrings = this._i.split('-');\r\n let val = parseFloat(splitStrings[0]);\r\n if (!isNaN(val) && (val >= 0 && val < 1000)) {\r\n this.flushFloorConfiguration.ii = val * 12;\r\n if (splitStrings.length > 1) {\r\n let index = this._i.indexOf('-');\r\n val = parseFloat(this._i.slice(++index));\r\n if (!isNaN(val)) {\r\n this.flushFloorConfiguration.ii += val;\r\n }\r\n }\r\n this.calcK();\r\n this.checkError();\r\n this.calcTunnelSupport(1);\r\n this.reDrawSchema();\r\n this.onChangeFlushFloorModel.emit();\r\n }\r\n }\r\n this._i = ConvertDataFunctions.aqsMakeStringFromFtToFtIn(this.flushFloorConfiguration.ii);\r\n }\r\n\r\n onChangeSupportHeight() {\r\n this.calculateVelocities();\r\n this.onChangeFlushFloorModel.emit();\r\n }\r\n\r\n onChangeTunnelSupport(tunnelNumber: number) {\r\n switch (tunnelNumber) {\r\n case 1:\r\n this.flushFloorConfiguration.totalTunnelSupport1 = this._tunnelSupport1.totalTunnelSupport;\r\n this.flushFloorConfiguration.totalTunnelSupportSpan1 = this._tunnelSupport1.span;\r\n break;\r\n case 2:\r\n this.flushFloorConfiguration.totalTunnelSupport2 = this._tunnelSupport2.totalTunnelSupport;\r\n this.flushFloorConfiguration.totalTunnelSupportSpan2 = this._tunnelSupport2.span;\r\n break;\r\n case 3:\r\n this.flushFloorConfiguration.totalTunnelSupport3 = this._tunnelSupport3.totalTunnelSupport;\r\n this.flushFloorConfiguration.totalTunnelSupportSpan3 = this._tunnelSupport3.span;\r\n break;\r\n }\r\n\r\n this.onChangeFlushFloorModel.emit();\r\n }\r\n\r\n numberOnly(event) {\r\n if (!_isNumberValue(event.key) && event.key !== '.' && event.key !== '-' && event.key !== 'Enter') {\r\n event.preventDefault();\r\n }\r\n }\r\n\r\n private calculatedRecommendationParameters() {\r\n [this.flushFloorConfiguration.supportHeight1, this.flushFloorConfiguration.ee] = this.calcValues.calcMainTunnelWidth(this.calcValues.maxTunnelWidth);\r\n this.flushFloorConfiguration.ff = this.flushFloorConfiguration.ee;\r\n this.flushFloorConfiguration.supportHeight2 = this.flushFloorConfiguration.supportHeight1;\r\n this.flushFloorConfiguration.jj = 75;//insted of HHH\r\n this.flushFloorConfiguration.hh = (this.flushFloorConfiguration.jj * this.calcValues.rad) / 100;\r\n this.flushFloorConfiguration.aa = Math.floor((this.calcValues.rad * 2) / 5);\r\n this.flushFloorConfiguration.bb = Math.round((Math.sqrt(Math.pow(this.flushFloorConfiguration.hh, 2) - Math.pow(this.flushFloorConfiguration.aa / 2 + this.flushFloorConfiguration.ee / 2, 2)) * 2) / 24) * 24;\r\n if (this.flushFloorConfiguration.bb < 24) this.flushFloorConfiguration.bb = 24;\r\n //1260 BB=CINT((SQR(HH^2-(AA/2+EE/2)^2)*2)/24)*24: IF BB<24 THEN BB=24\r\n this.flushFloorConfiguration.ii = Math.floor(this.calcValues.rad * 2 * 0.202);\r\n //1270 II=INT(RAD*2*.202)\r\n this.flushFloorConfiguration.cc = Math.round((Math.sqrt(Math.pow(this.flushFloorConfiguration.hh, 2) - Math.pow(this.flushFloorConfiguration.ii + this.flushFloorConfiguration.ff, 2)) * 2) / 24) * 24;\r\n if (this.flushFloorConfiguration.cc < 24) this.flushFloorConfiguration.cc = 24;\r\n //1280 CC=CINT((SQR(HH^2-(II+FF)^2)*2)/24)*24: IF CC<24 THEN CC=24\r\n if (this.isFourLaneSpecial) {\r\n this.flushFloorConfiguration.gg = this.calcValues.calcSupportTunnelFan(this.flushFloorConfiguration.ff * 1.4, this.calcValues.maxWideTunnelWidth);\r\n // 1290 GG=FF*1.4: FOR I=1 TO 10: IF CROSSSEC(0,I)>=GG THEN 1310\r\n // 1300 NEXT I:I=10\r\n // 1310 GG=CROSSSEC(0,I)\r\n this.flushFloorConfiguration.dd = this.flushFloorConfiguration.ii + this.flushFloorConfiguration.gg > this.flushFloorConfiguration.hh ? 24 :\r\n Math.round((Math.sqrt(Math.pow(this.flushFloorConfiguration.hh, 2) - Math.pow(this.flushFloorConfiguration.ii + this.flushFloorConfiguration.gg, 2)) * 2) / 24) * 24;\r\n //1320 IF II+GG>HH THEN DD=24 ELSE DD=CINT((SQR(HH^2-(II+GG)^2)*2)/24)*24\r\n if (this.flushFloorConfiguration.dd < 24) this.flushFloorConfiguration.dd = 24;\r\n //IF DD<24 THEN DD=24\r\n\r\n while (this.flushFloorConfiguration.gg * this.flushFloorConfiguration.dd + (this.flushFloorConfiguration.cc - this.flushFloorConfiguration.dd) * this.flushFloorConfiguration.ff\r\n > this.flushFloorConfiguration.ee * this.flushFloorConfiguration.bb && this.flushFloorConfiguration.dd > 24) {\r\n this.flushFloorConfiguration.dd -= 24;\r\n }\r\n // 1340 WHILE GG * DD + (CC - DD) * FF > EE * BB AND DD > 24\r\n // 1350 DD = DD - 24: WEND\r\n return;\r\n }\r\n\r\n //recommedation for 4 Lane special with tee ************************\r\n\r\n this.flushFloorConfiguration.dd = Math.floor((this.flushFloorConfiguration.hh - this.flushFloorConfiguration.ii - this.flushFloorConfiguration.ff) / 24) * 24;\r\n if (this.flushFloorConfiguration.dd < 24) this.flushFloorConfiguration.dd = 24;\r\n //3770 DD=INT((HH-II-FF)/24)*24: IF DD<24 THEN DD=24\r\n //3790 IF DD<24 THEN DD=24\r\n this.flushFloorConfiguration.gg = this.flushFloorConfiguration.ff;\r\n let j = this.calcValues.crossec.indexOf(this.flushFloorConfiguration.gg);\r\n //3780 GG=FF\r\n while (this.flushFloorConfiguration.gg * this.flushFloorConfiguration.dd + (this.flushFloorConfiguration.cc * this.flushFloorConfiguration.ff)\r\n < this.flushFloorConfiguration.ee * this.flushFloorConfiguration.bb && this.flushFloorConfiguration.gg < 120) {\r\n j++;\r\n this.flushFloorConfiguration.gg = this.calcValues.crossec[j];\r\n }\r\n //3800 WHILE GG * DD + (CC * FF) < EE * BB AND GG < 120\r\n //3810 J = J + 1: GG = CROSSSEC(0, J): WEND\r\n }\r\n\r\n private fillInputValues() {\r\n this._a = ConvertDataFunctions.aqsMakeStringFromFtToFtIn(this.flushFloorConfiguration.aa);\r\n this._b = Math.round(this.flushFloorConfiguration.bb / 12);\r\n this._c = Math.round(this.flushFloorConfiguration.cc / 12);\r\n this._d = Math.round(this.flushFloorConfiguration.dd / 12);\r\n this._e = this.flushFloorConfiguration.ee;\r\n this._f = this.flushFloorConfiguration.ff;\r\n this._g = this.flushFloorConfiguration.gg;\r\n this._h = this.flushFloorConfiguration.jj;\r\n this._i = ConvertDataFunctions.aqsMakeStringFromFtToFtIn(this.flushFloorConfiguration.ii);\r\n this._iStandard = ConvertDataFunctions.aqsMakeStringFromFtToFtIn(Math.floor(this.calcValues.rad * 2 * 0.202));\r\n //1360 ISTANDARD$=STR$(INT(II/12))+\"-\"+RIGHT$(STR$(CINT(II-(INT(II/12)*12))),LEN(STR$(CINT(II-(INT(II/12)*12))))-1)\r\n\r\n this.calcJ();\r\n this.calcK();\r\n this.calculateVelocities();\r\n this.fillTunnelSupports();\r\n this.reDrawSchema();\r\n }\r\n\r\n public fillTunnelSupports() {\r\n this.calcTunnelSupport(1, true);\r\n if (!this.flushFloorConfiguration.totalTunnelSupport1) {\r\n this.onChangeTunnelSupport(1);\r\n } else {\r\n this._tunnelSupport1.totalTunnelSupport = this.flushFloorConfiguration.totalTunnelSupport1;\r\n this._tunnelSupport1.span = this.flushFloorConfiguration.totalTunnelSupportSpan1;\r\n }\r\n\r\n this.calcTunnelSupport(2, true);\r\n if (!this.flushFloorConfiguration.totalTunnelSupport2) {\r\n this.onChangeTunnelSupport(2);\r\n } else {\r\n this._tunnelSupport2.totalTunnelSupport = this.flushFloorConfiguration.totalTunnelSupport2;\r\n this._tunnelSupport2.span = this.flushFloorConfiguration.totalTunnelSupportSpan2;\r\n }\r\n\r\n this.calcTunnelSupport(3, true);\r\n if (!this.flushFloorConfiguration.totalTunnelSupport3) {\r\n this.onChangeTunnelSupport(3);\r\n } else {\r\n this._tunnelSupport3.totalTunnelSupport = this.flushFloorConfiguration.totalTunnelSupport3;\r\n this._tunnelSupport3.span = this.flushFloorConfiguration.totalTunnelSupportSpan3;\r\n }\r\n }\r\n\r\n private calcTunnelSupport(tunnelNum: number, install: boolean = false) {\r\n let tunnelSupportOptions: { label: string, value: { totalTunnelSupport: number, span: number } }[] = [];\r\n let tunnelDia: number;\r\n let tunnelLength: number;\r\n switch (tunnelNum) {\r\n case 1:\r\n if (!this.isFourLaneSpecial) {\r\n tunnelDia = this.flushFloorConfiguration.ff;\r\n tunnelLength = 2 * (this.flushFloorConfiguration.cc + this.kk);\r\n } else {\r\n tunnelDia = this.flushFloorConfiguration.ff;\r\n tunnelLength = 2 * (this.flushFloorConfiguration.cc + this.kk - this.flushFloorConfiguration.dd);\r\n }\r\n break;\r\n case 2:\r\n tunnelDia = this.flushFloorConfiguration.ee;\r\n tunnelLength = 2 * (this.flushFloorConfiguration.bb + this.jj);\r\n break;\r\n case 3:\r\n if (!this.isFourLaneSpecial) {\r\n tunnelDia = this.flushFloorConfiguration.gg;\r\n tunnelLength = 2 * this.flushFloorConfiguration.dd;\r\n } else {\r\n tunnelDia = this.flushFloorConfiguration.ff + this.flushFloorConfiguration.gg;\r\n tunnelLength = this.flushFloorConfiguration.dd;\r\n }\r\n break;\r\n }\r\n\r\n let tunnelSupports = CanvasFlushFloorSupportFunction.aqsCalcTunnelSupport(tunnelDia, tunnelLength, this.calcValues.maxSpan, this.calcValues.minSpan);\r\n tunnelSupports.forEach(item => {\r\n tunnelSupportOptions.push({\r\n label: `Supports: ${item.totalTunnelSupport}, Span: ${item.span}'`,\r\n value: { totalTunnelSupport: item.totalTunnelSupport, span: item.span }\r\n });\r\n });\r\n\r\n switch (tunnelNum) {\r\n case 1:\r\n this._tunnelSupportOptions1 = tunnelSupportOptions;\r\n this._tunnelSupport1 = this._tunnelSupportOptions1[0].value;\r\n if (!install) {\r\n this.flushFloorConfiguration.totalTunnelSupport1 = this._tunnelSupport1.totalTunnelSupport;\r\n this.flushFloorConfiguration.totalTunnelSupportSpan1 = this._tunnelSupport1.span;\r\n }\r\n break;\r\n case 2:\r\n this._tunnelSupportOptions2 = tunnelSupportOptions;\r\n this._tunnelSupport2 = this._tunnelSupportOptions2[0].value;\r\n if (!install) {\r\n this.flushFloorConfiguration.totalTunnelSupport2 = this._tunnelSupport2.totalTunnelSupport;\r\n this.flushFloorConfiguration.totalTunnelSupportSpan2 = this._tunnelSupport2.span;\r\n }\r\n break;\r\n case 3:\r\n this._tunnelSupportOptions3 = tunnelSupportOptions;\r\n this._tunnelSupport3 = this._tunnelSupportOptions3[0].value;\r\n if (!install) {\r\n this.flushFloorConfiguration.totalTunnelSupport3 = this._tunnelSupport3.totalTunnelSupport;\r\n this.flushFloorConfiguration.totalTunnelSupportSpan3 = this._tunnelSupport3.span;\r\n }\r\n break;\r\n }\r\n }\r\n\r\n private calcJ() {\r\n this.jj = CanvasFlushFloorSupportFunction.aqsCalcDimensionBeforeTunnel(this.calcValues.rad, this.flushFloorConfiguration.bb, this.flushFloorConfiguration.aa / 2 - this.flushFloorConfiguration.ee / 2);\r\n this._j = ConvertDataFunctions.aqsMakeStringFromFtToFtIn(this.jj);\r\n }\r\n\r\n private calcK() {\r\n this.kk = CanvasFlushFloorSupportFunction.aqsCalcDimensionBeforeTunnel(this.calcValues.rad, this.flushFloorConfiguration.cc, this.flushFloorConfiguration.ii);\r\n this._k = ConvertDataFunctions.aqsMakeStringFromFtToFtIn(this.kk);\r\n }\r\n\r\n private calculateVelocities() {\r\n this._velocityTable = [];\r\n this._velocityTable.push({ value: 'Maximal', crossSectional: this.calcValues.mcsv, surfaceVelocity: this.calcValues.msv, error: false });\r\n let surfaceArea1 = this.isFourLaneSpecial ? (2 * this.flushFloorConfiguration.ff * this.flushFloorConfiguration.cc + 2 * (this.flushFloorConfiguration.gg - this.flushFloorConfiguration.ff) * this.flushFloorConfiguration.dd) / 144\r\n //3350 SURFACEAREA1 = ((2 * FF * CC) + (2 * (GG - FF) * DD)) / 144: 'in sq ft\r\n : (2 * this.flushFloorConfiguration.ff * this.flushFloorConfiguration.cc + 2 * this.flushFloorConfiguration.gg * this.flushFloorConfiguration.dd) / 144;\r\n //4760 SURFACEAREA1=((2*FF*CC)+(2*GG*DD))/144\r\n let surfaceArea2 = (this.flushFloorConfiguration.bb * this.flushFloorConfiguration.ee * 2) / 144;\r\n //3360 SURFACEAREA2 = (BB * EE * 2) / 144: 'in sq ft\r\n let sv1 = Math.round(((this.calcValues.lowerLarge / 2) / surfaceArea1) * 10) / 10;\r\n // 3370 SV1=INT((((LOWERLARGE/2)/SURFACEAREA1)*10)+.5)/10: 'surface velocity\r\n let sv2 = Math.round(((this.calcValues.lowerLarge / 2) / surfaceArea2) * 10) / 10;\r\n // 3380 SV2=INT((((LOWERLARGE/2)/SURFACEAREA2)*10)+.5)/10: 'surface velocity\r\n\r\n let csv1 = this.calcValues.calcCSVelocityFans(this.flushFloorConfiguration.supportHeight1, this.flushFloorConfiguration.ee, 2);\r\n let csv2 = this.calcValues.calcCSVelocityFans(this.flushFloorConfiguration.supportHeight2, this.flushFloorConfiguration.ff, 2);\r\n //3470 CSV2=INT(((LOWERLARGE/2)/(2*ACTUALCSA2))+.5)\r\n //3480 CSV1=INT(((LOWERLARGE/2)/(2*ACTUALCSA1))+.5)\r\n let vError1 = sv1 > this.calcValues.msv || csv1 > this.calcValues.mcsv;\r\n let vError2 = sv2 > this.calcValues.msv || csv2 > this.calcValues.mcsv;\r\n this._velocityTable.push({ value: 'Actual 1', crossSectional: csv1, surfaceVelocity: sv1, error: vError1 });\r\n this._velocityTable.push({ value: 'Actual 2', crossSectional: csv2, surfaceVelocity: sv2, error: vError2 });\r\n this._errorVelocities = vError1 || vError2;\r\n }\r\n\r\n private checkError() {\r\n this._errorALessOrEqualsE = this.flushFloorConfiguration.aa <= this.flushFloorConfiguration.ee;\r\n this._errorAEIUnableToDraw = this.flushFloorConfiguration.aa / 2 + this.flushFloorConfiguration.ee / 2 >= this.flushFloorConfiguration.ii;\r\n //3610 IF AA/2+EE/2>=II THEN STATUS=-1:LOCATE 25,1: PRINT \"UNABLE TO DRAW-- E LOCATED BEYOND I\";:RETURN\r\n this._errorBToLarge = this.flushFloorConfiguration.bb > this.calcValues.rad * 2;\r\n this._errorCToLarge = this.flushFloorConfiguration.cc > this.calcValues.rad * 2;\r\n this._errorDMoreThenC = this.flushFloorConfiguration.dd >= this.flushFloorConfiguration.cc;\r\n if (this.isFourLaneSpecial) {\r\n this._errorIGBeyondBinDia = this.flushFloorConfiguration.ii + this.flushFloorConfiguration.gg > this.calcValues.rad;\r\n }\r\n else {\r\n this._errorDToLarge = this.flushFloorConfiguration.dd > this.calcValues.rad;\r\n }\r\n this.pageError = this._errorALessOrEqualsE || this._errorAEIUnableToDraw || this._errorBToLarge || this._errorCToLarge\r\n || this._errorDMoreThenC || this._errorIGBeyondBinDia || this._errorDToLarge || this._errorVelocities;\r\n\r\n this.currentPageErrorChange.emit(this.pageError);\r\n }\r\n\r\n private reDrawSchema() {\r\n if (this.pageError) {\r\n CanvasFlushFloorSupportFunction.drawErrorBorder(this.ctx);\r\n return;\r\n }\r\n CanvasFlushFloorSupportFunction.clearCanvas(this.ctx);\r\n this.scale = CanvasFlushFloorSupportFunction.calculateScale(this.ctx, this.storageConfiguration.diameter);\r\n this.ctx.strokeStyle = this.flushFloorTunnelStrokeColor;\r\n this.drawFlushSchema();\r\n this.drawCirclesSchema();\r\n this.drawSchemaLabels();\r\n }\r\n\r\n private drawFlushSchema() {\r\n //RTUNS4.BAS 1390-1850\r\n let [x, y] = this.determinePointsXY();\r\n CanvasFlushFloorSupportFunction.drawFlushFloorForFourFans(this.ctx, x, y, this.flushFloorTunnelFillColor);\r\n }\r\n\r\n private determinePointsXY(): [number[], number[]] {\r\n let x: number[] = [];\r\n x.push(-(this.flushFloorConfiguration.ii + this.flushFloorConfiguration.ff));\r\n x.push(x[0]);\r\n x.push(x[1]);\r\n this.isFourLaneSpecial ? x.push(-this.flushFloorConfiguration.ii - this.flushFloorConfiguration.gg)\r\n : x.push(-this.flushFloorConfiguration.ii - this.flushFloorConfiguration.ff - this.flushFloorConfiguration.dd);\r\n x.push(x[3]);\r\n x.push(x[2]);\r\n x.push(x[5]);\r\n x.push(x[6] + this.flushFloorConfiguration.ff);\r\n x.push(x[7]);\r\n x.push(x[8]);\r\n x.push(-(this.flushFloorConfiguration.aa / 2 + this.flushFloorConfiguration.ee / 2));\r\n x.push(x[10]);\r\n x.push(x[11]);\r\n x.push(x[12] + this.flushFloorConfiguration.ee);\r\n x.push(x[13]);\r\n x.push(x[10] + this.flushFloorConfiguration.ee);\r\n for (let i = 0; i < x.length; i++) {\r\n x[i] = this.width / 2 + x[i] * this.scale;\r\n }\r\n\r\n let y: number[] = [];\r\n y.push(-Math.sqrt(Math.pow(this.calcValues.rad, 2) - Math.pow(this.flushFloorConfiguration.ii + this.flushFloorConfiguration.ff, 2)));\r\n y.push(-this.flushFloorConfiguration.cc / 2);\r\n this.isFourLaneSpecial ? y.push(-this.flushFloorConfiguration.dd / 2)\r\n : y.push(-this.flushFloorConfiguration.gg / 2);\r\n y.push(y[2]);\r\n this.isFourLaneSpecial ? y.push(this.flushFloorConfiguration.dd / 2)\r\n : y.push(this.flushFloorConfiguration.gg / 2);\r\n y.push(y[4]);\r\n y.push(this.flushFloorConfiguration.cc / 2);\r\n y.push(y[6]);\r\n y.push(y[1]);\r\n y.push(-Math.sqrt(Math.pow(this.calcValues.rad, 2) - Math.pow(this.flushFloorConfiguration.ii, 2)));\r\n y.push(-Math.sqrt(Math.pow(this.calcValues.rad, 2) - Math.pow(this.flushFloorConfiguration.aa / 2 + this.flushFloorConfiguration.ee / 2, 2)));\r\n y.push(-this.flushFloorConfiguration.bb / 2);\r\n y.push(this.flushFloorConfiguration.bb / 2);\r\n y.push(y[12]);\r\n y.push(y[11]);\r\n y.push(-Math.sqrt(Math.pow(this.calcValues.rad, 2) - Math.pow(this.flushFloorConfiguration.aa / 2 - this.flushFloorConfiguration.ee / 2, 2)));\r\n for (let i = 0; i < y.length; i++) {\r\n y[i] = this.height / 2 - y[i] * this.scale;\r\n }\r\n\r\n return [x, y];\r\n }\r\n\r\n private drawCirclesSchema() {\r\n CanvasFlushFloorSupportFunction.drawCircleFromCenter(this.ctx, this.calcValues.rad, this.scale);\r\n CanvasFlushFloorSupportFunction.drawCircleFromCenter(this.ctx, this.flushFloorConfiguration.hh, this.scale);\r\n }\r\n\r\n private drawSchemaLabels() {\r\n this.ctx.font = `${CanvasFlushFloorSupportFunction.FontSize}px serif`;\r\n this.ctx.strokeStyle = this.flushFloorTunnelStrokeColor;\r\n this.ctx.fillStyle = this.flushFloorTunnelStrokeColor;\r\n this.drawLabelA();\r\n this.drawLabelB();\r\n this.drawLabelC();\r\n this.drawLabelD();\r\n this.drawLabelE();\r\n this.drawLabelF();\r\n this.drawLabelI();\r\n this.drawLabelG();\r\n this.drawLabelH();\r\n this.drawLabel1();\r\n this.drawLabel2();\r\n this.drawLabelJ();\r\n this.drawLabelK();\r\n this.drawLabel3();\r\n }\r\n\r\n private drawLabelA() {\r\n let x = this.width / 2 - CanvasFlushFloorSupportFunction.FontSize / 4;\r\n let y = this.height / 2 - this.flushFloorConfiguration.bb / 2 * this.scale - CanvasFlushFloorSupportFunction.FontSize / 3;\r\n CanvasFlushFloorSupportFunction.drawHorizontalLineWithTopLabel(this.ctx, this.scale, x, y, 'A', this.flushFloorConfiguration.aa);\r\n }\r\n\r\n private drawLabelB() {\r\n let x = this.width / 2 - this.flushFloorConfiguration.aa / 2 * this.scale + this.flushFloorConfiguration.ee / 2 * this.scale + CanvasFlushFloorSupportFunction.FontSize / 3;\r\n let y = this.height / 2;\r\n CanvasFlushFloorSupportFunction.drawVerticalLineWithLabelRight(this.ctx, this.scale, x, y, 'B', this.flushFloorConfiguration.bb);\r\n }\r\n\r\n private drawLabelC() {\r\n let x = this.width / 2 - this.flushFloorConfiguration.ii * this.scale + CanvasFlushFloorSupportFunction.FontSize / 3;\r\n let y = this.height / 2;\r\n CanvasFlushFloorSupportFunction.drawVerticalLineWithLabelRight(this.ctx, this.scale, x, y, 'C', this.flushFloorConfiguration.cc);\r\n }\r\n\r\n private drawLabelD() {\r\n if (this.isFourLaneSpecial) {\r\n let x = this.width / 2 - this.flushFloorConfiguration.ii * this.scale - this.flushFloorConfiguration.gg * this.scale - CanvasFlushFloorSupportFunction.FontSize;\r\n let y = this.height / 2;\r\n CanvasFlushFloorSupportFunction.drawVerticalLineWithLabelLeft(this.ctx, this.scale, x, y, 'D', this.flushFloorConfiguration.dd);\r\n return;\r\n }\r\n let x = this.width / 2 - (this.flushFloorConfiguration.ii + this.flushFloorConfiguration.ff + this.flushFloorConfiguration.dd / 2) * this.scale - CanvasFlushFloorSupportFunction.FontSize / 4;\r\n let y = this.height / 2 + this.flushFloorConfiguration.gg / 2 * this.scale + CanvasFlushFloorSupportFunction.FontSize;\r\n CanvasFlushFloorSupportFunction.drawHorizontalLineWithBottomLabel(this.ctx, this.scale, x, y, 'D', this.flushFloorConfiguration.dd);\r\n }\r\n\r\n private drawLabelE() {\r\n let x = this.width / 2 + this.flushFloorConfiguration.aa / 2 * this.scale - CanvasFlushFloorSupportFunction.FontSize / 4;\r\n let y = this.height / 2 + this.calcValues.rad * this.scale + CanvasFlushFloorSupportFunction.FontSize;\r\n CanvasFlushFloorSupportFunction.drawHorizontalLineWithBottomLabel(this.ctx, this.scale, x, y, 'E', this.flushFloorConfiguration.ee);\r\n }\r\n\r\n private drawLabelF() {\r\n let x = this.width / 2 + (this.flushFloorConfiguration.ii + this.flushFloorConfiguration.ff / 2) * this.scale - CanvasFlushFloorSupportFunction.FontSize / 4;\r\n let y = this.height / 2 + this.calcValues.rad * this.scale + CanvasFlushFloorSupportFunction.FontSize;\r\n CanvasFlushFloorSupportFunction.drawHorizontalLineWithBottomLabel(this.ctx, this.scale, x, y, 'F', this.flushFloorConfiguration.ff);\r\n }\r\n\r\n private drawLabelG() {\r\n if (this.isFourLaneSpecial) {\r\n let x = this.width / 2 + (this.flushFloorConfiguration.ii + this.flushFloorConfiguration.gg / 2) * this.scale;\r\n let y = this.height / 2 + this.flushFloorConfiguration.dd / 4 * this.scale;\r\n CanvasFlushFloorSupportFunction.drawLabelInRect(this.ctx, x, y, 'G');\r\n return;\r\n }\r\n\r\n let x = this.width / 2 + (this.flushFloorConfiguration.ii + this.flushFloorConfiguration.ff + this.flushFloorConfiguration.dd) * this.scale + CanvasFlushFloorSupportFunction.FontSize / 4;\r\n let y = this.height / 2;\r\n CanvasFlushFloorSupportFunction.drawVerticalLineWithLabelRight(this.ctx, this.scale, x, y, 'G', this.flushFloorConfiguration.gg);\r\n }\r\n\r\n private drawLabelH() {\r\n if (this.flushFloorConfiguration.jj > 0) {\r\n let x = this.width / 2;\r\n let y = this.height / 2;\r\n CanvasFlushFloorSupportFunction.drawObliqueLineTopWithLabel(this.ctx, this.scale, x, y, 'H', this.flushFloorConfiguration.hh);\r\n }\r\n }\r\n\r\n private drawLabelI() {\r\n let x = this.width / 2 - this.flushFloorConfiguration.ii / 2 * this.scale - CanvasFlushFloorSupportFunction.FontSize / 4;\r\n let y = this.height / 2 + this.calcValues.rad * this.scale + CanvasFlushFloorSupportFunction.FontSize;\r\n CanvasFlushFloorSupportFunction.drawHorizontalLineWithBottomLabel(this.ctx, this.scale, x, y, 'I', this.flushFloorConfiguration.ii);\r\n }\r\n\r\n private drawLabel1() {\r\n let x = this.width / 2 - (this.flushFloorConfiguration.ii + this.flushFloorConfiguration.ff / 2) * this.scale;\r\n let y = this.height / 2 - this.flushFloorConfiguration.cc / 6 * this.scale;\r\n CanvasFlushFloorSupportFunction.drawLabelInRect(this.ctx, x, y, '1', 2);\r\n }\r\n\r\n private drawLabel2() {\r\n let x = this.width / 2 - this.flushFloorConfiguration.aa / 2 * this.scale;\r\n let y = this.height / 2 - this.flushFloorConfiguration.bb / 4 * this.scale;\r\n CanvasFlushFloorSupportFunction.drawLabelInRect(this.ctx, x, y, '2');\r\n }\r\n\r\n private drawLabelJ() {\r\n if (this.jj > 0) {\r\n let x = this.width / 2 - this.flushFloorConfiguration.aa / 2 * this.scale + this.flushFloorConfiguration.ee / 2 * this.scale + CanvasFlushFloorSupportFunction.FontSize / 3;\r\n let y = this.height / 2 + this.flushFloorConfiguration.bb / 2 * this.scale + this.jj / 2 * this.scale;\r\n CanvasFlushFloorSupportFunction.drawVerticalLineWithLabelRight(this.ctx, this.scale, x, y, 'J', this.jj);\r\n }\r\n }\r\n\r\n private drawLabelK() {\r\n if (this.kk > 0) {\r\n let x = this.width / 2 - this.flushFloorConfiguration.ii * this.scale + CanvasFlushFloorSupportFunction.FontSize / 3;\r\n let y = this.height / 2 + this.flushFloorConfiguration.cc / 2 * this.scale + this.kk / 2 * this.scale;\r\n CanvasFlushFloorSupportFunction.drawVerticalLineWithLabelRight(this.ctx, this.scale, x, y, 'K', this.kk);\r\n }\r\n }\r\n\r\n private drawLabel3() {\r\n if (!this.isFourLaneSpecial) {\r\n let x = this.width / 2 - (this.flushFloorConfiguration.ii + this.flushFloorConfiguration.ff + this.flushFloorConfiguration.dd / 2) * this.scale;\r\n let y = this.height / 2 - this.flushFloorConfiguration.gg / 2 * this.scale;\r\n CanvasFlushFloorSupportFunction.drawLabelInRect(this.ctx, x, y, '3');\r\n }\r\n }\r\n}\r\n","export * from './aqs-round-flush-design-four-lane-special.component';","import { _isNumberValue } from '@angular/cdk/coercion';\r\nimport { Component, ElementRef, EventEmitter, Input, OnInit, Output, ViewChild } from '@angular/core';\r\n\r\nimport { CanvasFlushFloorSupportFunction } from '../aqs-canvas-flushfloor-support-functions';\r\nimport { ConvertDataFunctions } from './../../../../../common';\r\nimport { AqsFlushFloorCalculatedValues, AqsFlushFloorViewModel, AqsRoundStorageWiewModel } from './../../../../models';\r\n\r\n@Component({\r\n selector: 'greensleeves-aqs-round-flush-design-six-lane-special',\r\n templateUrl: './aqs-round-flush-design-six-lane-special.component.html',\r\n styles: []\r\n})\r\nexport class AqsRoundFlushDesignSixLaneSpecialComponent implements OnInit {\r\n @Input() storageConfiguration: AqsRoundStorageWiewModel;\r\n @Input() flushFloorConfiguration: AqsFlushFloorViewModel;\r\n @Input() calcValues: AqsFlushFloorCalculatedValues;\r\n\r\n @Output() currentPageErrorChange = new EventEmitter();\r\n @Output() onChangeFlushFloorModel = new EventEmitter();\r\n\r\n @Input() flushFloorTunnelFillColor: string;\r\n @Input() flushFloorTunnelStrokeColor: string\r\n\r\n @ViewChild('flushFloorCanvas', { static: true })\r\n private canvas: ElementRef;\r\n\r\n _a: string;\r\n _b: number;\r\n _c: number;\r\n _d: number;\r\n _e: number;\r\n _f: number;\r\n _g: number;\r\n _h: number;\r\n _i: number;\r\n _j: string;\r\n _k: string;\r\n _l: number;\r\n _jStandard: string;\r\n _kStandard: string;\r\n private iii: number;\r\n _m: string;\r\n _n: string;\r\n _o: string;\r\n private mm: number;\r\n private nn: number;\r\n private oo: number;\r\n\r\n _errorALessOrEqualsF: boolean = false;\r\n _errorAFJUnableToDraw: boolean = false;\r\n _errorBToLarge: boolean = false;\r\n _errorCToLarge: boolean = false;\r\n _errorDToLarge: boolean = false;\r\n _errorEMoreThanD: boolean = false;\r\n _errorEToLarge: boolean = false;\r\n _errorJGMoreOrEqualsK: boolean = false;\r\n _errorKLBeyondBinDia: boolean = false;\r\n _errorVelocities: boolean = false;\r\n private pageError: boolean = false;\r\n\r\n _supportHeightOptions = CanvasFlushFloorSupportFunction.supportHeightOptions;\r\n\r\n _tunnelSupportOptions1: { label: string, value: { totalTunnelSupport: number, span: number } }[];\r\n _tunnelSupport1: { totalTunnelSupport: number, span: number };\r\n\r\n _tunnelSupportOptions2: { label: string, value: { totalTunnelSupport: number, span: number } }[];\r\n _tunnelSupport2: { totalTunnelSupport: number, span: number };\r\n\r\n _tunnelSupportOptions3: { label: string, value: { totalTunnelSupport: number, span: number } }[];\r\n _tunnelSupport3: { totalTunnelSupport: number, span: number };\r\n\r\n _tunnelSupportOptions4: { label: string, value: { totalTunnelSupport: number, span: number } }[];\r\n _tunnelSupport4: { totalTunnelSupport: number, span: number };\r\n\r\n\r\n _velocityTable: { value: string, crossSectional: number, surfaceVelocity: number, error: boolean }[];\r\n\r\n _columnsView = CanvasFlushFloorSupportFunction.velocitiesFor2FanTableColumns;\r\n\r\n private ctx: CanvasRenderingContext2D;\r\n private xCenter: number;\r\n private yCenter: number;\r\n private scale: number;\r\n constructor() { }\r\n\r\n ngOnInit() {\r\n this.ctx = this.canvas.nativeElement.getContext('2d');\r\n this.xCenter = this.ctx.canvas.width / 2;\r\n this.yCenter = this.ctx.canvas.height / 2;\r\n if (this.flushFloorConfiguration.aa == null) {\r\n this.calculatedRecommendationParameters();\r\n }\r\n\r\n this.fillInputValues();\r\n }\r\n\r\n onChangeValueA() {\r\n if (this._a != '') {\r\n let splitStrings = this._a.split('-');\r\n let val = parseFloat(splitStrings[0]);\r\n if (!isNaN(val) && (val >= 2 && val < 1000)) {\r\n this.flushFloorConfiguration.aa = val * 12;\r\n if (splitStrings.length > 1) {\r\n let index = this._a.indexOf('-');\r\n val = parseFloat(this._a.slice(++index));\r\n if (!isNaN(val)) {\r\n this.flushFloorConfiguration.aa += val;\r\n }\r\n }\r\n this.calcM();\r\n this.checkError();\r\n this.reDrawSchema();\r\n this.calcTunnelSupport(4);\r\n this.onChangeFlushFloorModel.emit();\r\n }\r\n }\r\n this._a = ConvertDataFunctions.aqsMakeStringFromFtToFtIn(this.flushFloorConfiguration.aa);\r\n }\r\n\r\n onChangeValueB() {\r\n if (this._b >= 2 && this._b % 2 == 0) {\r\n this.flushFloorConfiguration.bb = this._b * 12;\r\n this.calcM();\r\n this.calculateVelocities();\r\n this.checkError();\r\n this.reDrawSchema();\r\n this.calcTunnelSupport(4);\r\n this.onChangeFlushFloorModel.emit();\r\n }\r\n else this._b = Math.round(this.flushFloorConfiguration.bb / 12);\r\n }\r\n\r\n onChangeValueC() {\r\n if (this._c >= 2 && this._c % 2 == 0) {\r\n this.flushFloorConfiguration.cc = this._c * 12;\r\n this.calcN();\r\n this.calculateVelocities();\r\n this.checkError();\r\n this.reDrawSchema();\r\n this.calcTunnelSupport(3);\r\n this.onChangeFlushFloorModel.emit();\r\n }\r\n else this._c = Math.round(this.flushFloorConfiguration.cc / 12);\r\n }\r\n\r\n onChangeValueD() {\r\n if (this._d >= 2 && this._d % 2 == 0) {\r\n this.flushFloorConfiguration.dd = this._d * 12;\r\n this.calcO();\r\n this.calculateVelocities();\r\n this.checkError();\r\n this.reDrawSchema();\r\n this.calcTunnelSupport(1);\r\n this.onChangeFlushFloorModel.emit();\r\n }\r\n else this._d = Math.round(this.flushFloorConfiguration.dd / 12);\r\n }\r\n\r\n onChangeValueE() {\r\n if (this._e >= 2 && this._e % 2 == 0) {\r\n this.flushFloorConfiguration.ee = this._e * 12;\r\n this.calculateVelocities();\r\n this.checkError();\r\n this.calcTunnelSupport(1);\r\n this.calcTunnelSupport(2);\r\n this.reDrawSchema();\r\n this.onChangeFlushFloorModel.emit();\r\n }\r\n else this._e = Math.round(this.flushFloorConfiguration.ee / 12);\r\n }\r\n\r\n onChangeValueF() {\r\n if (this._f != null) {\r\n let calcValue = this.calcValues.checkValueByCrossSec(this._f, this.calcValues.maxTunnelWidth);\r\n if (calcValue != this.flushFloorConfiguration.ff) {\r\n this.flushFloorConfiguration.ff = calcValue;\r\n this.calculateVelocities();\r\n this.checkError();\r\n this.reDrawSchema();\r\n this.calcTunnelSupport(4);\r\n this.onChangeFlushFloorModel.emit();\r\n }\r\n }\r\n this._f = this.flushFloorConfiguration.ff;\r\n }\r\n\r\n onChangeValueG() {\r\n if (this._g != null) {\r\n let calcValue = this.calcValues.checkValueByCrossSec(this._g, this.calcValues.maxTunnelWidth);\r\n if (calcValue != this.flushFloorConfiguration.gg) {\r\n this.flushFloorConfiguration.gg = calcValue;\r\n this.calculateVelocities();\r\n this.checkError();\r\n this.reDrawSchema();\r\n this.calcTunnelSupport(3);\r\n this.onChangeFlushFloorModel.emit();\r\n }\r\n }\r\n this._g = this.flushFloorConfiguration.gg;\r\n }\r\n\r\n onChangeValueH() {\r\n if (this._h != null) {\r\n let calcValue = this.calcValues.checkValueByCrossSec(this._h, this.calcValues.maxTunnelWidth);\r\n if (calcValue != this.flushFloorConfiguration.hh) {\r\n this.flushFloorConfiguration.hh = calcValue;\r\n this.calculateVelocities();\r\n this.reDrawSchema();\r\n this.calcTunnelSupport(1);\r\n this.calcTunnelSupport(2);\r\n this.onChangeFlushFloorModel.emit();\r\n }\r\n }\r\n this._h = this.flushFloorConfiguration.hh;\r\n }\r\n\r\n onChangeValueI() {\r\n if (this._i >= 0 && this._i <= 100 && this._h != null) {\r\n this.iii = this._i;\r\n this.flushFloorConfiguration.ii = (this.calcValues.rad * this._i) / 100;\r\n this.reDrawSchema();\r\n this.onChangeFlushFloorModel.emit();\r\n }\r\n else this._i = this.iii;\r\n }\r\n\r\n onChangeValueJ() {\r\n if (this._j != '') {\r\n let splitStrings = this._j.split('-');\r\n let val = parseFloat(splitStrings[0]);\r\n if (!isNaN(val) && (val >= 0 && val < 1000)) {\r\n this.flushFloorConfiguration.jj = val * 12;\r\n if (splitStrings.length > 1) {\r\n let index = this._j.indexOf('-');\r\n val = parseFloat(this._j.slice(++index));\r\n if (!isNaN(val)) {\r\n this.flushFloorConfiguration.jj += val;\r\n }\r\n }\r\n this.calcN();\r\n this.checkError();\r\n this.reDrawSchema();\r\n this.calcTunnelSupport(3);\r\n this.onChangeFlushFloorModel.emit();\r\n }\r\n }\r\n this._j = ConvertDataFunctions.aqsMakeStringFromFtToFtIn(this.flushFloorConfiguration.jj);\r\n }\r\n\r\n onChangeValueK() {\r\n if (this._k != '') {\r\n let splitStrings = this._k.split('-');\r\n let val = parseFloat(splitStrings[0]);\r\n if (!isNaN(val) && (val >= 0 && val < 1000)) {\r\n this.flushFloorConfiguration.kk = val * 12;\r\n if (splitStrings.length > 1) {\r\n let index = this._k.indexOf('-');\r\n val = parseFloat(this._k.slice(++index));\r\n if (!isNaN(val)) {\r\n this.flushFloorConfiguration.kk += val;\r\n }\r\n }\r\n this.calcO();\r\n this.checkError();\r\n this.reDrawSchema();\r\n this.calcTunnelSupport(1);\r\n this.onChangeFlushFloorModel.emit();\r\n }\r\n }\r\n this._k = ConvertDataFunctions.aqsMakeStringFromFtToFtIn(this.flushFloorConfiguration.kk);\r\n }\r\n\r\n onChangeValueL() {\r\n if (this._l != null) {\r\n let calcValue = this.calcValues.checkValueByCrossSec(this._l, this.calcValues.maxWideTunnelWidth);\r\n if (calcValue != this.flushFloorConfiguration.ll) {\r\n this.flushFloorConfiguration.ll = calcValue;\r\n this.calculateVelocities();\r\n this.checkError();\r\n this.calcTunnelSupport(2);\r\n this.reDrawSchema();\r\n this.onChangeFlushFloorModel.emit();\r\n }\r\n }\r\n this._l = this.flushFloorConfiguration.ll;\r\n }\r\n\r\n onChangeSupportHeight() {\r\n this.calculateVelocities();\r\n this.onChangeFlushFloorModel.emit();\r\n }\r\n\r\n onChangeTunnelSupport(tunnelNumber: number) {\r\n switch (tunnelNumber) {\r\n case 1:\r\n this.flushFloorConfiguration.totalTunnelSupport1 = this._tunnelSupport1.totalTunnelSupport;\r\n this.flushFloorConfiguration.totalTunnelSupportSpan1 = this._tunnelSupport1.span;\r\n break;\r\n case 2:\r\n this.flushFloorConfiguration.totalTunnelSupport2 = this._tunnelSupport2.totalTunnelSupport;\r\n this.flushFloorConfiguration.totalTunnelSupportSpan2 = this._tunnelSupport2.span;\r\n break;\r\n case 3:\r\n this.flushFloorConfiguration.totalTunnelSupport3 = this._tunnelSupport3.totalTunnelSupport;\r\n this.flushFloorConfiguration.totalTunnelSupportSpan3 = this._tunnelSupport3.span;\r\n break;\r\n case 4:\r\n this.flushFloorConfiguration.totalTunnelSupport4 = this._tunnelSupport4.totalTunnelSupport;\r\n this.flushFloorConfiguration.totalTunnelSupportSpan4 = this._tunnelSupport4.span;\r\n break;\r\n }\r\n\r\n this.onChangeFlushFloorModel.emit();\r\n }\r\n\r\n numberOnly(event) {\r\n if (!_isNumberValue(event.key) && event.key !== '.' && event.key !== '-' && event.key !== 'Enter') {\r\n event.preventDefault();\r\n }\r\n }\r\n\r\n private checkError() {\r\n this._errorALessOrEqualsF = this.flushFloorConfiguration.aa <= this.flushFloorConfiguration.ff;\r\n this._errorAFJUnableToDraw = this.flushFloorConfiguration.aa / 2 + this.flushFloorConfiguration.ff / 2 >= this.flushFloorConfiguration.jj;\r\n //5460 IF AA/2+FF/2>=JJ THEN STATUS=-1:LOCATE 25,1: PRINT \"UNABLE TO DRAW-- 1 LOCATED BEYOND 2\";:RETURN\r\n this._errorBToLarge = this.flushFloorConfiguration.bb > this.calcValues.rad * 2;\r\n this._errorCToLarge = this.flushFloorConfiguration.cc > this.calcValues.rad * 2;\r\n this._errorDToLarge = this.flushFloorConfiguration.dd > this.calcValues.rad * 2;\r\n this._errorEMoreThanD = this.flushFloorConfiguration.ee > this.flushFloorConfiguration.dd;\r\n this._errorEToLarge = this.flushFloorConfiguration.ee > this.calcValues.rad * 2;\r\n this._errorJGMoreOrEqualsK = this.flushFloorConfiguration.jj + this.flushFloorConfiguration.gg >= this.flushFloorConfiguration.kk;\r\n //5470 IF JJ+GG>=KK THEN STATUS=-1:LOCATE 25,1: PRINT \"UNABLE TO DRAW-- 2 LOCATED BEYOND 3\";:RETURN\r\n this._errorKLBeyondBinDia = this.flushFloorConfiguration.kk + this.flushFloorConfiguration.ll > this.calcValues.rad;\r\n\r\n this.pageError = this._errorALessOrEqualsF || this._errorAFJUnableToDraw || this._errorBToLarge || this._errorCToLarge\r\n || this._errorDToLarge || this._errorEMoreThanD || this._errorEToLarge || this._errorJGMoreOrEqualsK || this._errorKLBeyondBinDia || this._errorVelocities;\r\n this.currentPageErrorChange.emit(this.pageError);\r\n }\r\n\r\n private calculatedRecommendationParameters() {\r\n [this.flushFloorConfiguration.supportHeight1, this.flushFloorConfiguration.gg] = this.calcValues.calcMainTunnelWidth(this.calcValues.maxTunnelWidth);\r\n this.flushFloorConfiguration.ff = this.flushFloorConfiguration.gg;\r\n this.flushFloorConfiguration.hh = this.flushFloorConfiguration.gg;\r\n this.flushFloorConfiguration.supportHeight2 = this.flushFloorConfiguration.supportHeight1;\r\n this.flushFloorConfiguration.supportHeight3 = this.flushFloorConfiguration.supportHeight1;\r\n this.iii = 75;\r\n this.flushFloorConfiguration.ii = (this.iii * this.calcValues.rad) / 100;\r\n this.flushFloorConfiguration.aa = Math.floor(this.calcValues.rad * 2 * 0.15);\r\n //2320 AA=INT(RAD*2*.15)\r\n this.flushFloorConfiguration.bb = this.calculateFlushFloorConfigutaionParam(this.flushFloorConfiguration.ii, this.flushFloorConfiguration.aa / 2 + this.flushFloorConfiguration.ff / 2);\r\n //2330 BB=CINT((SQR(II^2-(AA/2+FF/2)^2)*2)/24)*24: IF BB<24 THEN BB=24\r\n this.flushFloorConfiguration.jj = Math.floor(this.calcValues.rad * 2 * 0.1335);\r\n //2340 JJ=INT(RAD*2*.1335)\r\n this.flushFloorConfiguration.kk = Math.floor(this.calcValues.rad * 2 * 0.276);\r\n //2350 KK=INT(RAD*2*.276)\r\n this.flushFloorConfiguration.cc = this.calculateFlushFloorConfigutaionParam(this.flushFloorConfiguration.ii, this.flushFloorConfiguration.jj + this.flushFloorConfiguration.gg);\r\n //2360 CC=INT((SQR(II^2-(JJ+GG)^2)*2)/24)*24: IF CC<24 THEN CC=24\r\n this.flushFloorConfiguration.dd = this.calculateFlushFloorConfigutaionParam(this.flushFloorConfiguration.ii, this.flushFloorConfiguration.kk + this.flushFloorConfiguration.hh);\r\n //2370 DD=INT((SQR(II^2-(KK+HH)^2)*2)/24)*24: IF DD<24 THEN DD=24\r\n this.flushFloorConfiguration.ll = this.calcValues.calcSupportTunnelFan(this.flushFloorConfiguration.hh * 1.4, this.calcValues.maxWideTunnelWidth);\r\n this.flushFloorConfiguration.ee = this.flushFloorConfiguration.kk + this.flushFloorConfiguration.ll < this.flushFloorConfiguration.ii\r\n ? Math.round((Math.sqrt(Math.pow(this.flushFloorConfiguration.ii, 2) - Math.pow(this.flushFloorConfiguration.kk + this.flushFloorConfiguration.ll, 2)) * 2) / 24) * 24\r\n : 24;\r\n //IF KK+LL {\r\n tunnelSupportOptions.push({\r\n label: `Supports: ${item.totalTunnelSupport}, Span: ${item.span}'`,\r\n value: { totalTunnelSupport: item.totalTunnelSupport, span: item.span }\r\n });\r\n });\r\n\r\n switch (tunnelNum) {\r\n case 1:\r\n this._tunnelSupportOptions1 = tunnelSupportOptions;\r\n this._tunnelSupport1 = this._tunnelSupportOptions1[0].value;\r\n if (!install) {\r\n this.flushFloorConfiguration.totalTunnelSupport1 = this._tunnelSupport1.totalTunnelSupport;\r\n this.flushFloorConfiguration.totalTunnelSupportSpan1 = this._tunnelSupport1.span;\r\n }\r\n break;\r\n case 2:\r\n this._tunnelSupportOptions2 = tunnelSupportOptions;\r\n this._tunnelSupport2 = this._tunnelSupportOptions2[0].value;\r\n if (!install) {\r\n this.flushFloorConfiguration.totalTunnelSupport2 = this._tunnelSupport2.totalTunnelSupport;\r\n this.flushFloorConfiguration.totalTunnelSupportSpan2 = this._tunnelSupport2.span;\r\n }\r\n break;\r\n case 3:\r\n this._tunnelSupportOptions3 = tunnelSupportOptions;\r\n this._tunnelSupport3 = this._tunnelSupportOptions3[0].value;\r\n if (!install) {\r\n this.flushFloorConfiguration.totalTunnelSupport3 = this._tunnelSupport3.totalTunnelSupport;\r\n this.flushFloorConfiguration.totalTunnelSupportSpan3 = this._tunnelSupport3.span;\r\n }\r\n break;\r\n case 4:\r\n this._tunnelSupportOptions4 = tunnelSupportOptions;\r\n this._tunnelSupport4 = this._tunnelSupportOptions4[0].value;\r\n if (!install) {\r\n this.flushFloorConfiguration.totalTunnelSupport4 = this._tunnelSupport4.totalTunnelSupport;\r\n this.flushFloorConfiguration.totalTunnelSupportSpan4 = this._tunnelSupport4.span;\r\n }\r\n break;\r\n }\r\n }\r\n\r\n private calcM() {\r\n this.mm = CanvasFlushFloorSupportFunction.aqsCalcDimensionBeforeTunnel(this.calcValues.rad, this.flushFloorConfiguration.bb, this.flushFloorConfiguration.aa / 2 - this.flushFloorConfiguration.ff / 2);\r\n this._m = ConvertDataFunctions.aqsMakeStringFromFtToFtIn(this.mm);\r\n }\r\n\r\n private calcN() {\r\n this.nn = CanvasFlushFloorSupportFunction.aqsCalcDimensionBeforeTunnel(this.calcValues.rad, this.flushFloorConfiguration.cc, this.flushFloorConfiguration.jj);\r\n this._n = ConvertDataFunctions.aqsMakeStringFromFtToFtIn(this.nn);\r\n }\r\n\r\n private calcO() {\r\n this.oo = CanvasFlushFloorSupportFunction.aqsCalcDimensionBeforeTunnel(this.calcValues.rad, this.flushFloorConfiguration.dd, this.flushFloorConfiguration.kk);\r\n this._o = ConvertDataFunctions.aqsMakeStringFromFtToFtIn(this.oo);\r\n }\r\n\r\n private calculateVelocities() {\r\n this._velocityTable = [];\r\n this._velocityTable.push({ value: 'Maximal', crossSectional: this.calcValues.mcsv, surfaceVelocity: this.calcValues.msv, error: false });\r\n let surfaceArea1 = (2 * this.flushFloorConfiguration.hh * this.flushFloorConfiguration.dd\r\n + 2 * this.flushFloorConfiguration.ee * (this.flushFloorConfiguration.ll - this.flushFloorConfiguration.hh)) / 144;\r\n // 5090 SURFACEAREA1=((2*HH*DD)+(2*EE*(LL-HH)))/144:'in sq ft\r\n let surfaceArea2 = (this.flushFloorConfiguration.cc * this.flushFloorConfiguration.gg * 2) / 144;\r\n // 5100 SURFACEAREA2=(CC*GG*2)/144:'in sq ft\r\n let surfaceArea3 = (this.flushFloorConfiguration.bb * this.flushFloorConfiguration.ff * 2) / 144;\r\n // 5110 SURFACEAREA3=(BB*FF*2)/144:'in sq ft\r\n let sv1 = Math.round(((this.calcValues.lowerLarge / 3) / surfaceArea1) * 10) / 10;\r\n // 5120 SV1=INT((((LOWERLARGE/3)/SURFACEAREA1)*10)+.5)/10: 'surface velocity\r\n let sv2 = Math.round(((this.calcValues.lowerLarge / 3) / surfaceArea2) * 10) / 10;\r\n // 5130 SV2=INT((((LOWERLARGE/3)/SURFACEAREA2)*10)+.5)/10: 'surface velocity\r\n let sv3 = Math.round(((this.calcValues.lowerLarge / 3) / surfaceArea3) * 10) / 10;\r\n // 5140 SV3=INT((((LOWERLARGE/3)/SURFACEAREA3)*10)+.5)/10: 'surface velocity\r\n\r\n let csv1 = this.calcValues.calcCSVelocityFans(this.flushFloorConfiguration.supportHeight1, this.flushFloorConfiguration.hh, 3);;\r\n let csv2 = this.calcValues.calcCSVelocityFans(this.flushFloorConfiguration.supportHeight2, this.flushFloorConfiguration.gg, 3);\r\n let csv3 = this.calcValues.calcCSVelocityFans(this.flushFloorConfiguration.supportHeight3, this.flushFloorConfiguration.ff, 3);\r\n\r\n let vError1 = sv1 > this.calcValues.msv || csv1 > this.calcValues.mcsv;\r\n let vError2 = sv2 > this.calcValues.msv || csv2 > this.calcValues.mcsv;\r\n let vError3 = sv3 > this.calcValues.msv || csv3 > this.calcValues.mcsv;\r\n this._velocityTable.push({ value: 'Actual 1', crossSectional: csv1, surfaceVelocity: sv1, error: vError1 });\r\n this._velocityTable.push({ value: 'Actual 2', crossSectional: csv2, surfaceVelocity: sv2, error: vError2 });\r\n this._velocityTable.push({ value: 'Actual 3', crossSectional: csv3, surfaceVelocity: sv3, error: vError3 });\r\n this._errorVelocities = vError1 || vError2 || vError3;\r\n }\r\n\r\n private reDrawSchema() {\r\n if (this.pageError) {\r\n CanvasFlushFloorSupportFunction.drawErrorBorder(this.ctx);\r\n return;\r\n }\r\n\r\n CanvasFlushFloorSupportFunction.clearCanvas(this.ctx);\r\n this.scale = CanvasFlushFloorSupportFunction.calculateScale(this.ctx, this.storageConfiguration.diameter);\r\n this.ctx.strokeStyle = this.flushFloorTunnelStrokeColor;\r\n this.drawFlushSchema();\r\n this.drawCirclesSchema();\r\n this.drawSchemaLabels();\r\n }\r\n\r\n private drawFlushSchema() {\r\n //RTUNS6.BAS 2740-3110\r\n let [x, y] = this.determinePointsXY();\r\n CanvasFlushFloorSupportFunction.drawFlushFloorForSixFans(this.ctx, x, y, this.flushFloorTunnelFillColor);\r\n }\r\n\r\n private determinePointsXY(): [number[], number[]] {\r\n let x: number[] = [];\r\n x.push(-this.flushFloorConfiguration.kk - this.flushFloorConfiguration.hh);\r\n x.push(x[0]);\r\n x.push(x[1]);\r\n x.push(-this.flushFloorConfiguration.kk - this.flushFloorConfiguration.ll);\r\n x.push(x[3]);\r\n x.push(x[2]);\r\n x.push(x[5]);\r\n x.push(x[6] + this.flushFloorConfiguration.hh);\r\n x.push(x[7]);\r\n x.push(x[8]);\r\n x.push(-this.flushFloorConfiguration.jj - this.flushFloorConfiguration.gg);\r\n x.push(x[10]);\r\n x.push(x[11]);\r\n x.push(x[12] + this.flushFloorConfiguration.gg);\r\n x.push(x[13]);\r\n x.push(-this.flushFloorConfiguration.jj);\r\n x.push(-(this.flushFloorConfiguration.aa / 2 + this.flushFloorConfiguration.ff / 2));\r\n x.push(x[16]);\r\n x.push(x[17]);\r\n x.push(x[18] + this.flushFloorConfiguration.ff);\r\n x.push(x[19]);\r\n x.push(x[19]);\r\n for (let i = 0; i < x.length; i++) {\r\n x[i] = this.xCenter + x[i] * this.scale;\r\n }\r\n\r\n let y: number[] = [];\r\n y.push(-Math.sqrt(Math.pow(this.calcValues.rad, 2) - Math.pow(this.flushFloorConfiguration.kk + this.flushFloorConfiguration.hh, 2)));\r\n y.push(-this.flushFloorConfiguration.dd / 2);\r\n y.push(-this.flushFloorConfiguration.ee / 2);\r\n y.push(y[2]);\r\n y.push(this.flushFloorConfiguration.ee / 2);\r\n y.push(y[4]);\r\n y.push(this.flushFloorConfiguration.dd / 2);\r\n y.push(y[6]);\r\n y.push(y[1]);\r\n y.push(-Math.sqrt(Math.pow(this.calcValues.rad, 2) - Math.pow(this.flushFloorConfiguration.kk, 2)));\r\n y.push(-Math.sqrt(Math.pow(this.calcValues.rad, 2) - Math.pow(this.flushFloorConfiguration.jj + this.flushFloorConfiguration.gg, 2)));\r\n y.push(-this.flushFloorConfiguration.cc / 2);\r\n y.push(this.flushFloorConfiguration.cc / 2);\r\n y.push(y[12]);\r\n y.push(y[11]);\r\n y.push(-Math.sqrt(Math.pow(this.calcValues.rad, 2) - Math.pow(this.flushFloorConfiguration.jj, 2)));\r\n y.push(-Math.sqrt(Math.pow(this.calcValues.rad, 2) - Math.pow(this.flushFloorConfiguration.aa / 2 + this.flushFloorConfiguration.ff / 2, 2)));\r\n y.push(-this.flushFloorConfiguration.bb / 2);\r\n y.push(this.flushFloorConfiguration.bb / 2);\r\n y.push(y[18]);\r\n y.push(y[17]);\r\n y.push(-Math.sqrt(Math.pow(this.calcValues.rad, 2) - Math.pow(this.flushFloorConfiguration.aa / 2 - this.flushFloorConfiguration.ff / 2, 2)));\r\n for (let i = 0; i < y.length; i++) {\r\n y[i] = this.yCenter - y[i] * this.scale;\r\n }\r\n\r\n return [x, y];\r\n }\r\n\r\n private drawCirclesSchema() {\r\n CanvasFlushFloorSupportFunction.drawCircleFromCenter(this.ctx, this.calcValues.rad, this.scale);\r\n CanvasFlushFloorSupportFunction.drawCircleFromCenter(this.ctx, this.flushFloorConfiguration.ii, this.scale);\r\n }\r\n\r\n private drawSchemaLabels() {\r\n this.ctx.font = `${CanvasFlushFloorSupportFunction.FontSize}px serif`;\r\n this.ctx.strokeStyle = this.flushFloorTunnelStrokeColor;\r\n this.ctx.fillStyle = this.flushFloorTunnelStrokeColor;\r\n this.drawLabelA();\r\n this.drawLabelB();\r\n this.drawLabelC();\r\n this.drawLabelD();\r\n this.drawLabelE();\r\n this.drawLabelF();\r\n this.drawLabelG();\r\n this.drawLabelH();\r\n this.drawLabelI();\r\n this.drawLabelJ();\r\n this.drawLabelK();\r\n this.drawLabelL();\r\n this.drawLabel1();\r\n this.drawLabel2();\r\n this.drawLabel3();\r\n this.drawLabelM();\r\n this.drawLabelN();\r\n this.drawLabelO();\r\n }\r\n\r\n private drawLabelA() {\r\n let x = this.xCenter - CanvasFlushFloorSupportFunction.FontSize / 4;\r\n let y = this.yCenter - this.flushFloorConfiguration.bb / 2 * this.scale - CanvasFlushFloorSupportFunction.FontSize / 3;\r\n CanvasFlushFloorSupportFunction.drawHorizontalLineWithTopLabel(this.ctx, this.scale, x, y, 'A', this.flushFloorConfiguration.aa);\r\n }\r\n\r\n private drawLabelB() {\r\n let x = this.xCenter - this.flushFloorConfiguration.aa / 2 * this.scale + this.flushFloorConfiguration.ff / 2 * this.scale + CanvasFlushFloorSupportFunction.FontSize / 3;\r\n let y = this.yCenter;\r\n CanvasFlushFloorSupportFunction.drawVerticalLineWithLabelRight(this.ctx, this.scale, x, y, 'B', this.flushFloorConfiguration.bb);\r\n }\r\n\r\n private drawLabelC() {\r\n let x = this.xCenter - this.flushFloorConfiguration.jj * this.scale + CanvasFlushFloorSupportFunction.FontSize / 3;\r\n let y = this.yCenter;\r\n CanvasFlushFloorSupportFunction.drawVerticalLineWithLabelRight(this.ctx, this.scale, x, y, 'C', this.flushFloorConfiguration.cc);\r\n }\r\n\r\n private drawLabelD() {\r\n let x = this.xCenter - this.flushFloorConfiguration.kk * this.scale + CanvasFlushFloorSupportFunction.FontSize / 3;\r\n let y = this.yCenter;\r\n CanvasFlushFloorSupportFunction.drawVerticalLineWithLabelRight(this.ctx, this.scale, x, y, 'D', this.flushFloorConfiguration.dd);\r\n }\r\n\r\n private drawLabelE() {\r\n let x = this.xCenter + (this.flushFloorConfiguration.kk + this.flushFloorConfiguration.ll) * this.scale + CanvasFlushFloorSupportFunction.FontSize / 3;\r\n let y = this.yCenter;\r\n CanvasFlushFloorSupportFunction.drawVerticalLineWithLabelRight(this.ctx, this.scale, x, y, 'E', this.flushFloorConfiguration.ee);\r\n }\r\n\r\n private drawLabelF() {\r\n let x = this.xCenter + this.flushFloorConfiguration.aa / 2 * this.scale - CanvasFlushFloorSupportFunction.FontSize / 4;\r\n let y = this.yCenter + this.calcValues.rad * this.scale + CanvasFlushFloorSupportFunction.FontSize;\r\n CanvasFlushFloorSupportFunction.drawHorizontalLineWithBottomLabel(this.ctx, this.scale, x, y, 'F', this.flushFloorConfiguration.ff);\r\n }\r\n\r\n private drawLabelG() {\r\n let x = this.xCenter + (this.flushFloorConfiguration.jj + this.flushFloorConfiguration.gg / 2) * this.scale - CanvasFlushFloorSupportFunction.FontSize / 4;\r\n let y = this.yCenter + this.calcValues.rad * this.scale + CanvasFlushFloorSupportFunction.FontSize;\r\n CanvasFlushFloorSupportFunction.drawHorizontalLineWithBottomLabel(this.ctx, this.scale, x, y, 'G', this.flushFloorConfiguration.gg);\r\n }\r\n\r\n private drawLabelH() {\r\n let x = this.xCenter + (this.flushFloorConfiguration.kk + this.flushFloorConfiguration.hh / 2) * this.scale - CanvasFlushFloorSupportFunction.FontSize / 4;\r\n let y = this.yCenter + Math.sqrt(Math.pow(this.calcValues.rad, 2) - Math.pow(this.flushFloorConfiguration.kk, 2)) * this.scale + CanvasFlushFloorSupportFunction.FontSize;\r\n CanvasFlushFloorSupportFunction.drawHorizontalLineWithBottomLabel(this.ctx, this.scale, x, y, 'H', this.flushFloorConfiguration.hh);\r\n }\r\n\r\n private drawLabelI() {\r\n if (this.iii > 0) {\r\n let x = this.xCenter;\r\n let y = this.yCenter;\r\n CanvasFlushFloorSupportFunction.drawObliqueLineTopWithLabel(this.ctx, this.scale, x, y, 'I', this.flushFloorConfiguration.ii);\r\n }\r\n }\r\n\r\n private drawLabelJ() {\r\n let x = this.xCenter - this.flushFloorConfiguration.jj / 2 * this.scale - CanvasFlushFloorSupportFunction.FontSize / 4;\r\n let y = this.yCenter - this.calcValues.rad * this.scale - CanvasFlushFloorSupportFunction.FontSize / 3;\r\n CanvasFlushFloorSupportFunction.drawHorizontalLineWithTopLabel(this.ctx, this.scale, x, y, 'J', this.flushFloorConfiguration.jj);\r\n }\r\n\r\n private drawLabelK() {\r\n let x = this.xCenter - this.flushFloorConfiguration.kk / 2 * this.scale - CanvasFlushFloorSupportFunction.FontSize / 4;\r\n let y = this.yCenter + this.calcValues.rad * this.scale + CanvasFlushFloorSupportFunction.FontSize;\r\n CanvasFlushFloorSupportFunction.drawHorizontalLineWithBottomLabel(this.ctx, this.scale, x, y, 'K', this.flushFloorConfiguration.kk);\r\n }\r\n\r\n private drawLabelL() {\r\n let x = this.xCenter + (this.flushFloorConfiguration.kk + this.flushFloorConfiguration.hh / 2) * this.scale;\r\n let y = this.yCenter - CanvasFlushFloorSupportFunction.FontSize / 2;\r\n CanvasFlushFloorSupportFunction.drawLabelInRect(this.ctx, x, y, 'L');\r\n }\r\n\r\n private drawLabel1() {\r\n let x = this.xCenter - (this.flushFloorConfiguration.kk + this.flushFloorConfiguration.hh / 2) * this.scale;\r\n let y = this.yCenter - this.flushFloorConfiguration.dd / 4 * this.scale;\r\n CanvasFlushFloorSupportFunction.drawLabelInRect(this.ctx, x, y, '1');\r\n }\r\n\r\n private drawLabel2() {\r\n let x = this.xCenter - (this.flushFloorConfiguration.jj + this.flushFloorConfiguration.gg / 2) * this.scale;\r\n let y = this.yCenter - this.flushFloorConfiguration.cc / 4 * this.scale;;\r\n CanvasFlushFloorSupportFunction.drawLabelInRect(this.ctx, x, y, '2');\r\n }\r\n\r\n private drawLabel3() {\r\n let x = this.xCenter - this.flushFloorConfiguration.aa / 2 * this.scale;\r\n let y = this.yCenter - this.flushFloorConfiguration.bb / 4 * this.scale;;\r\n CanvasFlushFloorSupportFunction.drawLabelInRect(this.ctx, x, y, '3');\r\n }\r\n\r\n private drawLabelM() {\r\n let x = this.xCenter - this.flushFloorConfiguration.aa / 2 * this.scale + this.flushFloorConfiguration.ff / 2 * this.scale + CanvasFlushFloorSupportFunction.FontSize / 3;\r\n let y = this.yCenter + this.flushFloorConfiguration.bb / 2 * this.scale + this.mm / 2 * this.scale;\r\n CanvasFlushFloorSupportFunction.drawVerticalLineWithLabelRight(this.ctx, this.scale, x, y, 'M', this.mm);\r\n }\r\n\r\n private drawLabelN() {\r\n let x = this.xCenter - this.flushFloorConfiguration.jj * this.scale + CanvasFlushFloorSupportFunction.FontSize / 3;\r\n let y = this.yCenter + this.flushFloorConfiguration.cc / 2 * this.scale + this.nn / 2 * this.scale;\r\n CanvasFlushFloorSupportFunction.drawVerticalLineWithLabelRight(this.ctx, this.scale, x, y, 'N', this.nn);\r\n }\r\n\r\n private drawLabelO() {\r\n let x = this.xCenter - this.flushFloorConfiguration.kk * this.scale + CanvasFlushFloorSupportFunction.FontSize / 3;\r\n let y = this.yCenter + this.flushFloorConfiguration.dd / 2 * this.scale + this.oo / 2 * this.scale;\r\n CanvasFlushFloorSupportFunction.drawVerticalLineWithLabelRight(this.ctx, this.scale, x, y, 'O', this.oo);\r\n }\r\n}\r\n","export * from './aqs-round-flush-design-six-lane-special.component';","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\r\n\r\nimport { AqsFlushFloorDesignTunnelForFourFansLabel, AqsFlushFloorDesignTunnelForSixFansLabel, AqsFlushFloorDesignTunnelForTwoFansLabel } from './../../../constants';\r\nimport { AqsAirflowFanTypeEnum, AqsFlushFloorTunnelDesignEnum } from './../../../enums';\r\nimport { AqsAirflowViewModel, AqsFlushFloorCalculatedValues, AqsFlushFloorViewModel, AqsRoundStorageWiewModel } from './../../../models';\r\n\r\n@Component({\r\n selector: 'greensleeves-aqs-round-flush-design-tab',\r\n templateUrl: './aqs-round-flush-design-tab.component.html',\r\n styles: []\r\n})\r\nexport class AqsRoundFlushDesignTabComponent implements OnInit {\r\n @Input() airflowConfiguration: AqsAirflowViewModel;\r\n @Input() storageConfiguration: AqsRoundStorageWiewModel;\r\n @Input() flushFloorConfiguration: AqsFlushFloorViewModel;\r\n @Output() flushFloorConfigurationChange = new EventEmitter();\r\n\r\n @Output() onChangedFlushFloorModel = new EventEmitter();\r\n\r\n @Input() currentPageError: boolean;\r\n @Output() currentPageErrorChange = new EventEmitter();\r\n\r\n\r\n _flushDesignOptions: { label: string, value: AqsFlushFloorTunnelDesignEnum }[];\r\n _tunnelChoice: AqsFlushFloorTunnelDesignEnum;\r\n _flushFloorDesign = AqsFlushFloorTunnelDesignEnum;\r\n _flushFloorCalcValues: AqsFlushFloorCalculatedValues;\r\n\r\n _flushFloorTunnelFillColor: string = 'gray';\r\n _flushFloorTunnelStrokeColor: string = 'black';\r\n constructor() { }\r\n\r\n ngOnInit() {\r\n let csaFanCount: number;\r\n this._flushFloorCalcValues = new AqsFlushFloorCalculatedValues();\r\n this._flushDesignOptions = [];\r\n if (this.airflowConfiguration.numberfans < 3) {\r\n this.initFlushFloorOptions(AqsFlushFloorDesignTunnelForTwoFansLabel);\r\n if (this.flushFloorConfiguration.tunnelChoice == null) {\r\n this._tunnelChoice = AqsFlushFloorTunnelDesignEnum.DoubleH;\r\n }\r\n else this._tunnelChoice = this.flushFloorConfiguration.tunnelChoice;\r\n csaFanCount = 2;\r\n }\r\n\r\n if (this.airflowConfiguration.numberfans == 4) {\r\n this.initFlushFloorOptions(AqsFlushFloorDesignTunnelForFourFansLabel);\r\n if (this.flushFloorConfiguration.tunnelChoice == null) {\r\n this._tunnelChoice = AqsFlushFloorTunnelDesignEnum.FourLaneSpecial;\r\n }\r\n else this._tunnelChoice = this.flushFloorConfiguration.tunnelChoice;\r\n csaFanCount = 4;\r\n }\r\n\r\n if (this.airflowConfiguration.numberfans == 6) {\r\n this.initFlushFloorOptions(AqsFlushFloorDesignTunnelForSixFansLabel);\r\n this._tunnelChoice = AqsFlushFloorTunnelDesignEnum.SixLaneSpecial;\r\n if (this.flushFloorConfiguration.tunnelChoice != null) {\r\n this._tunnelChoice = this.flushFloorConfiguration.tunnelChoice;\r\n }\r\n csaFanCount = 6;\r\n }\r\n\r\n this.flushFloorConfiguration.tunnelChoice = this._tunnelChoice;\r\n\r\n \r\n this._flushFloorCalcValues.lowerLarge = Math.max(...this.airflowConfiguration.airflowData.map(k => k.kcfm)) * this.airflowConfiguration.numberfans * 1000;\r\n this._flushFloorCalcValues.rad = this.storageConfiguration.diameter * 6;\r\n if (this.airflowConfiguration.fanType == AqsAirflowFanTypeEnum.Axial) {\r\n this._flushFloorCalcValues.mcsv = 3000;\r\n this._flushFloorCalcValues.msv = 40;\r\n }\r\n else {\r\n this._flushFloorCalcValues.mcsv = 3500;\r\n this._flushFloorCalcValues.msv = 45;\r\n }\r\n\r\n if (this.airflowConfiguration.fanType == AqsAirflowFanTypeEnum.Centrifugal60HZ) {\r\n let fanNumber = parseFloat(this.airflowConfiguration.selectedFan.fanName);\r\n if (!isNaN(fanNumber) && fanNumber != 2003 && fanNumber != 2205 && fanNumber < 2250) {\r\n this._flushFloorCalcValues.mcsv = 4000;\r\n this._flushFloorCalcValues.msv = 50;\r\n }\r\n }\r\n\r\n this._flushFloorCalcValues.csa = this._flushFloorCalcValues.lowerLarge / (this._flushFloorCalcValues.mcsv * csaFanCount);\r\n //IF FANTYPE=1 THEN MCSV=3000:MSV=40 ELSE MCSV=3500:MSV=45\r\n // 1560 IF FANTYPE=2 AND (FANINFO(23)<>2003 AND FANINFO(23)<>2205 AND FANINFO(23)<2250) THEN MCSV=4000:MSV=50\r\n // 1570 CSA=LOWERLARGE/(MCSV*2): 'cross section area (sq ft)\r\n this._flushFloorCalcValues.maxSpan = this.storageConfiguration.ovlHeight < 138\r\n ? 80.49 * Math.pow(this.storageConfiguration.ovlHeight, -0.499)\r\n : 7;\r\n\r\n if (this._flushFloorCalcValues.maxSpan > 32.8) {\r\n this._flushFloorCalcValues.maxSpan = 32.8\r\n }\r\n if (this._flushFloorCalcValues.maxSpan < 7) {\r\n this._flushFloorCalcValues.maxSpan = 7;\r\n }\r\n }\r\n\r\n onChangeTunnel() {\r\n this.flushFloorConfiguration = new AqsFlushFloorViewModel();\r\n this.flushFloorConfigurationChange.emit(this.flushFloorConfiguration);\r\n this.flushFloorConfiguration.tunnelChoice = this._tunnelChoice;\r\n this.onChangedFlushFloorModel.emit();\r\n }\r\n\r\n changeFlushFloorModel() {\r\n this.onChangedFlushFloorModel.emit();\r\n }\r\n\r\n changedCurrentPageError(err: boolean) {\r\n this.currentPageErrorChange.emit(err);\r\n }\r\n\r\n private initFlushFloorOptions(labels: any) {\r\n for (const [key, value] of Object.entries(labels)) {\r\n this._flushDesignOptions.push({ label: value as string, value: Number(key) });\r\n }\r\n }\r\n\r\n}\r\n","export * from './aqs-round-flush-design-tab.component';\r\nexport * from './aqs-round-flush-design-double-h';\r\nexport * from './aqs-round-flush-design-double-t';\r\nexport * from './aqs-round-flush-design-double-t-special';\r\nexport * from './aqs-round-flush-design-double-two-runs';\r\nexport * from './aqs-round-flush-design-four-lane-special';\r\nexport * from './aqs-round-flush-design-six-lane-special';","import { switchMap } from 'rxjs/operators';\r\nimport { Component, OnInit, ViewChild } from '@angular/core';\r\nimport { ActivatedRoute } from '@angular/router';\r\n\r\nimport { AqsPageLabel } from '../../constants';\r\nimport { AqsFlushDuctDesignEnum, AqsPagesEnum, AqsSessionTypeEnum } from '../../enums';\r\nimport { AqsAirflowDatasourceService, AqsQuoteStorageDataSourceService } from '../../services';\r\nimport {\r\n AqsAirflowViewModel, AqsCoverSheetModel, AqsExhausterViewModel, AqsFlushFloorViewModel,\r\n AqsRoundStorageWiewModel, IncludeFlowOption, AqsSelectedFanModel, AqsRoundStorageDuctDesignModel, QuoteRoundStorageViewModel, QuoteRoundStorageReportModel\r\n} from './../../models';\r\nimport { ErrorCodeEnum, ErrorModel } from '../../../common';\r\nimport { AqsCoverSheetComponent } from '../common';\r\nimport { AqsComputationSheetResavePopupComponent, ComputationSheetReportPopupComponent, ComputationSheetShareReportPopupComponent } from '@popups';\r\n\r\n@Component({\r\n selector: 'greensleeves-aqs-round-storage-tab',\r\n templateUrl: './aqs-round-storage-tab.component.html',\r\n styles: []\r\n})\r\nexport class AqsRoundStorageTabComponent implements OnInit {\r\n @ViewChild(AqsCoverSheetComponent, { read: false, static: false })\r\n private coverSheetComponent: AqsCoverSheetComponent;\r\n\r\n @ViewChild(ComputationSheetReportPopupComponent, { read: false, static: false })\r\n private _exportReportModal: ComputationSheetReportPopupComponent;\r\n\r\n @ViewChild(AqsComputationSheetResavePopupComponent, { read: false, static: false })\r\n private reSaveModal: AqsComputationSheetResavePopupComponent;\r\n\r\n @ViewChild(ComputationSheetShareReportPopupComponent, { read: false, static: false })\r\n private _shareReportModal: ComputationSheetShareReportPopupComponent;\r\n\r\n _pageIndex: AqsPagesEnum;\r\n _quoteRoundStorage: QuoteRoundStorageViewModel;\r\n _coverSheetPageIndex: AqsPagesEnum = AqsPagesEnum.CoverSheet;\r\n _pages: { index: AqsPagesEnum, label: string }[] = [];\r\n _currentPageError: boolean = false;\r\n _pageEnum = AqsPagesEnum;\r\n _isSaveRun: boolean = false;\r\n _isLoad: boolean = false;\r\n _isSuccessSaved: boolean = false;\r\n _isChangedTables: boolean = false;\r\n\r\n private title: string = 'Save Round Storage Quote';\r\n\r\n constructor(private _aqsAirflowService: AqsAirflowDatasourceService,\r\n private _route: ActivatedRoute, private _quoteDataService: AqsQuoteStorageDataSourceService,\r\n\r\n ) { }\r\n\r\n async ngOnInit() {\r\n this._aqsAirflowService.getAllFanTypesWithFans();\r\n this._quoteDataService.getAllComputationSheetForBinding();\r\n this._isLoad = true;\r\n\r\n this._pages.push({ index: AqsPagesEnum.RoundStorageConfiguration, label: AqsPageLabel[AqsPagesEnum.RoundStorageConfiguration] });\r\n this._quoteRoundStorage = new QuoteRoundStorageViewModel();\r\n this._quoteRoundStorage.roundStorage = new AqsRoundStorageWiewModel();\r\n this._quoteRoundStorage.commodities = [];\r\n this._quoteRoundStorage.session = AqsSessionTypeEnum.RoundSessionType;\r\n let quoteId: number;\r\n this._route.queryParams.subscribe((queryParam: any) => {\r\n quoteId = queryParam['id'];\r\n });\r\n\r\n if (!isNaN(quoteId)) {\r\n let result = await this._quoteDataService.getRoundFlatStorage(quoteId);\r\n if (result) {\r\n if (!(result instanceof ErrorModel)) {\r\n this.fillQuoteStorage(result);\r\n this.fillPagesList();\r\n }\r\n else if (result instanceof ErrorModel && (result.code == ErrorCodeEnum.PermissionError || result.code == ErrorCodeEnum.QuoteNotFound)) {\r\n console.log(result);\r\n }\r\n }\r\n }\r\n this._pageIndex = AqsPagesEnum.RoundStorageConfiguration;\r\n this._isLoad = false;\r\n }\r\n\r\n fillQuoteStorage(result: QuoteRoundStorageViewModel) {\r\n let quote = result as QuoteRoundStorageViewModel;\r\n this._quoteRoundStorage.id = quote.id;\r\n this._quoteRoundStorage.session = quote.session;\r\n this._quoteRoundStorage.linkComputationSheetId = quote.linkComputationSheetId;\r\n this._quoteRoundStorage.airflowConfiguration = new AqsAirflowViewModel();\r\n Object.assign(this._quoteRoundStorage.airflowConfiguration, result.airflowConfiguration);\r\n this._quoteRoundStorage.airflowConfiguration.airflowData = [];\r\n Object.assign(this._quoteRoundStorage.airflowConfiguration.airflowData, result.airflowConfiguration.airflowData);\r\n this._quoteRoundStorage.airflowConfiguration.selectedFan = result.airflowConfiguration.selectedFan;\r\n this._quoteRoundStorage.coverSheet = new AqsCoverSheetModel();\r\n Object.assign(this._quoteRoundStorage.coverSheet, result.coverSheet);\r\n this._quoteRoundStorage.commodities = [];\r\n Object.assign(this._quoteRoundStorage.commodities, result.commodities);\r\n\r\n if (result.exhausterSheet) {\r\n this._quoteRoundStorage.exhausterSheet = new AqsExhausterViewModel();\r\n Object.assign(this._quoteRoundStorage.exhausterSheet, result.exhausterSheet);\r\n }\r\n\r\n if (result.flushFloorDesign) {\r\n this._quoteRoundStorage.flushFloorDesign = new AqsFlushFloorViewModel();\r\n Object.assign(this._quoteRoundStorage.flushFloorDesign, result.flushFloorDesign);\r\n }\r\n\r\n if (result.ductDesign) {\r\n this._quoteRoundStorage.ductDesign = new AqsRoundStorageDuctDesignModel();\r\n Object.assign(this._quoteRoundStorage.ductDesign, result.ductDesign);\r\n }\r\n\r\n this._quoteRoundStorage.roundStorage = new AqsRoundStorageWiewModel();\r\n Object.assign(this._quoteRoundStorage.roundStorage, result.roundStorage);\r\n this._quoteRoundStorage.includeFlowOption = new IncludeFlowOption();\r\n Object.assign(this._quoteRoundStorage.includeFlowOption, result.includeFlowOption);\r\n this._quoteRoundStorage.includeFlowOption.includeDesign = result.includeFlowOption.includeDesign;\r\n this._pageIndex = AqsPagesEnum.RoundStorageConfiguration;\r\n }\r\n\r\n fillPagesList() {\r\n if (this._quoteRoundStorage.airflowConfiguration)\r\n this._pages.push({ index: AqsPagesEnum.DetermineTargetAirflow, label: AqsPageLabel[AqsPagesEnum.DetermineTargetAirflow] });\r\n if (this._quoteRoundStorage.exhausterSheet)\r\n this._pages.push({ index: AqsPagesEnum.ExhausterRecommendations, label: AqsPageLabel[AqsPagesEnum.ExhausterRecommendations] });\r\n if (this._quoteRoundStorage.flushFloorDesign)\r\n this._pages.push({ index: AqsPagesEnum.FlushFloorDesign, label: AqsPageLabel[AqsPagesEnum.FlushFloorDesign] });\r\n if (this._quoteRoundStorage.ductDesign)\r\n this._pages.push({ index: AqsPagesEnum.DuctDesign, label: AqsPageLabel[AqsPagesEnum.DuctDesign] });\r\n if (this._quoteRoundStorage.coverSheet)\r\n this._pages.push({ index: AqsPagesEnum.CoverSheet, label: AqsPageLabel[AqsPagesEnum.CoverSheet] });\r\n }\r\n\r\n onChangePage(newPageIndex: AqsPagesEnum) {\r\n this._pageIndex = newPageIndex;\r\n }\r\n\r\n onBackPage() {\r\n let currentPageindex = this._pages.findIndex(p => p.index == this._pageIndex);\r\n if (currentPageindex != 0) {\r\n this._pageIndex = this._pages[--currentPageindex].index;\r\n }\r\n }\r\n\r\n onNextPage() {\r\n switch (this._pageIndex) {\r\n case AqsPagesEnum.RoundStorageConfiguration:\r\n if (this.checkCurrentPage()) {\r\n if (!this._quoteRoundStorage.airflowConfiguration) {\r\n this._quoteRoundStorage.commodities.sort((a, b) => { return a.name.localeCompare(b.name) });\r\n this._quoteRoundStorage.airflowConfiguration = new AqsAirflowViewModel();\r\n }\r\n if (!this._quoteRoundStorage.includeFlowOption) this._quoteRoundStorage.includeFlowOption = new IncludeFlowOption();\r\n this.addedNextPage(AqsPagesEnum.DetermineTargetAirflow);\r\n }\r\n break;\r\n case AqsPagesEnum.DetermineTargetAirflow:\r\n if (this.checkCurrentPage()) {\r\n if (this._quoteRoundStorage.includeFlowOption.includeExhauster) {\r\n if (!this._quoteRoundStorage.exhausterSheet) this._quoteRoundStorage.exhausterSheet = new AqsExhausterViewModel();\r\n this.addedNextPage(AqsPagesEnum.ExhausterRecommendations);\r\n break;\r\n }\r\n if (this._quoteRoundStorage.includeFlowOption.includeDesign == AqsFlushDuctDesignEnum.FlushFloor) {\r\n if (!this._quoteRoundStorage.flushFloorDesign) this._quoteRoundStorage.flushFloorDesign = new AqsFlushFloorViewModel();\r\n this.addedNextPage(AqsPagesEnum.FlushFloorDesign);\r\n break;\r\n }\r\n else if (this._quoteRoundStorage.includeFlowOption.includeDesign == AqsFlushDuctDesignEnum.Duct) {\r\n if (!this._quoteRoundStorage.ductDesign) this._quoteRoundStorage.ductDesign = new AqsRoundStorageDuctDesignModel();\r\n this.addedNextPage(AqsPagesEnum.DuctDesign);\r\n break;\r\n }\r\n else {\r\n this._quoteRoundStorage.exhausterSheet = null;\r\n this._quoteRoundStorage.flushFloorDesign = null;\r\n this._quoteRoundStorage.ductDesign = null;\r\n if (!this._quoteRoundStorage.coverSheet) this._quoteRoundStorage.coverSheet = new AqsCoverSheetModel();\r\n this.addedNextPage(AqsPagesEnum.CoverSheet);\r\n }\r\n }\r\n break;\r\n case AqsPagesEnum.ExhausterRecommendations:\r\n if (this._quoteRoundStorage.includeFlowOption.includeDesign == AqsFlushDuctDesignEnum.FlushFloor) {\r\n if (!this._quoteRoundStorage.flushFloorDesign) this._quoteRoundStorage.flushFloorDesign = new AqsFlushFloorViewModel();\r\n this.addedNextPage(AqsPagesEnum.FlushFloorDesign);\r\n break;\r\n }\r\n else if (this._quoteRoundStorage.includeFlowOption.includeDesign == AqsFlushDuctDesignEnum.Duct) {\r\n if (!this._quoteRoundStorage.ductDesign) this._quoteRoundStorage.ductDesign = new AqsRoundStorageDuctDesignModel();\r\n this.addedNextPage(AqsPagesEnum.DuctDesign);\r\n break;\r\n }\r\n else {\r\n this._quoteRoundStorage.flushFloorDesign = null;\r\n this._quoteRoundStorage.ductDesign = null;\r\n if (!this._quoteRoundStorage.coverSheet) this._quoteRoundStorage.coverSheet = new AqsCoverSheetModel();\r\n this.addedNextPage(AqsPagesEnum.CoverSheet);\r\n }\r\n break;\r\n case AqsPagesEnum.FlushFloorDesign:\r\n if (this.checkCurrentPage()) {\r\n if (!this._quoteRoundStorage.includeFlowOption.includeExhauster) {\r\n this._quoteRoundStorage.exhausterSheet = null;\r\n }\r\n this._quoteRoundStorage.ductDesign = null;\r\n if (!this._quoteRoundStorage.coverSheet) this._quoteRoundStorage.coverSheet = new AqsCoverSheetModel();\r\n this.addedNextPage(AqsPagesEnum.CoverSheet);\r\n }\r\n break;\r\n case AqsPagesEnum.DuctDesign:\r\n if (!this._quoteRoundStorage.includeFlowOption.includeExhauster) {\r\n this._quoteRoundStorage.exhausterSheet = null;\r\n }\r\n this._quoteRoundStorage.flushFloorDesign = null;\r\n if (!this._quoteRoundStorage.coverSheet) this._quoteRoundStorage.coverSheet = new AqsCoverSheetModel();\r\n this.addedNextPage(AqsPagesEnum.CoverSheet);\r\n break;\r\n };\r\n }\r\n\r\n changeQuoteModel() {\r\n this._isChangedTables = true;\r\n switch (this._pageIndex) {\r\n case AqsPagesEnum.RoundStorageConfiguration:\r\n this.removeNexPages(AqsPagesEnum.RoundStorageConfiguration);\r\n this._quoteRoundStorage.airflowConfiguration = null;\r\n this._quoteRoundStorage.exhausterSheet = null;\r\n this._quoteRoundStorage.flushFloorDesign = null;\r\n this._quoteRoundStorage.ductDesign = null;\r\n break;\r\n case AqsPagesEnum.DetermineTargetAirflow:\r\n this.removeNexPages(AqsPagesEnum.DetermineTargetAirflow);\r\n this._quoteRoundStorage.exhausterSheet = null;\r\n this._quoteRoundStorage.flushFloorDesign = null;\r\n this._quoteRoundStorage.ductDesign = null;\r\n break;\r\n }\r\n }\r\n\r\n changedFlowOptions() {\r\n if (this._pageIndex == AqsPagesEnum.DetermineTargetAirflow) {\r\n this.removeNexPages(AqsPagesEnum.DetermineTargetAirflow);\r\n }\r\n }\r\n\r\n async onClickSaveButton() {\r\n if (this.coverSheetComponent.checkModelBeforeSave()) {\r\n if (this._quoteRoundStorage.id == undefined || this._quoteRoundStorage.id == 0) {\r\n this._isSaveRun = true;\r\n let result = await this._quoteDataService.addQuoteRoundStorage(this._quoteRoundStorage);\r\n if (!(result instanceof ErrorModel)) {\r\n this._isSuccessSaved = true;\r\n setTimeout(() => { this._isSuccessSaved = false; }, 3000);\r\n this._isChangedTables = false;\r\n this.fillQuoteStorage(result);\r\n this._pageIndex = AqsPagesEnum.CoverSheet;\r\n } else {\r\n console.log(result);\r\n }\r\n this._isSaveRun = false;\r\n }\r\n else {\r\n this.reSaveModal.showConfirmPopup(this.title);\r\n }\r\n }\r\n }\r\n\r\n async editQuote() {\r\n if (this.coverSheetComponent.checkModelBeforeSave()) {\r\n this._isSaveRun = true;\r\n let result = await this._quoteDataService.editRoundStorage(this._quoteRoundStorage);\r\n if (!(result instanceof ErrorModel)) {\r\n this._isSuccessSaved = true;\r\n setTimeout(() => { this._isSuccessSaved = false; }, 3000);\r\n this._isChangedTables = false;\r\n this.fillQuoteStorage(result);\r\n this._pageIndex = AqsPagesEnum.CoverSheet;\r\n } else {\r\n console.log(result);\r\n }\r\n this._isSaveRun = false;\r\n }\r\n }\r\n\r\n async saveAsNewQuote() {\r\n this._quoteRoundStorage.id = 0;\r\n this._quoteRoundStorage.coverSheet.id = 0;\r\n this._quoteRoundStorage.roundStorage.id = 0;\r\n this._quoteRoundStorage.airflowConfiguration.id = 0;\r\n this._quoteRoundStorage.airflowConfiguration.airflowData.forEach(item => {\r\n item.id = 0;\r\n });\r\n\r\n if (this._quoteRoundStorage.includeFlowOption.includeExhauster) {\r\n this._quoteRoundStorage.exhausterSheet.id = 0;\r\n }\r\n if (this._quoteRoundStorage.includeFlowOption.includeDesign == AqsFlushDuctDesignEnum.FlushFloor) {\r\n this._quoteRoundStorage.flushFloorDesign.id = 0;\r\n }\r\n if (this._quoteRoundStorage.includeFlowOption.includeDesign == AqsFlushDuctDesignEnum.Duct) {\r\n this._quoteRoundStorage.ductDesign.id = 0;\r\n }\r\n this.onClickSaveButton();\r\n }\r\n\r\n checkCurrentPage() {\r\n switch (this._pageIndex) {\r\n case AqsPagesEnum.RoundStorageConfiguration:\r\n return !this._currentPageError && this._quoteRoundStorage.commodities.length > 0;\r\n case AqsPagesEnum.DetermineTargetAirflow:\r\n return this._quoteRoundStorage.airflowConfiguration.airflowData.length > 0 && !this._quoteRoundStorage.airflowConfiguration.airflowData.some(m => m.kcfm == -1 || m.kcfm == null);\r\n case AqsPagesEnum.FlushFloorDesign:\r\n return !this._currentPageError;\r\n default:\r\n return true;\r\n }\r\n }\r\n\r\n onClickExportReport() {\r\n let model = this.buildReportModel();\r\n this._exportReportModal.showDownloadQuoteRoundStorageReport(model);\r\n }\r\n\r\n onClickShareReport() {\r\n let model = this.buildReportModel();\r\n this._shareReportModal.showDownloadQuoteRoundStorageReport(model);\r\n }\r\n\r\n private addedNextPage(aqsPage: AqsPagesEnum) {\r\n if (!this._pages.some(i => i.index == aqsPage)) {\r\n this._pages.push({ index: aqsPage, label: AqsPageLabel[aqsPage] });\r\n this._pageIndex = aqsPage;\r\n }\r\n else {\r\n let currentPageindex = this._pages.findIndex(p => p.index == this._pageIndex);\r\n this._pageIndex = this._pages[++currentPageindex].index;\r\n }\r\n }\r\n\r\n private removeNexPages(fromPages: AqsPagesEnum) {\r\n let index = this._pages.findIndex(i => i.index == fromPages);\r\n this._pages.splice(++index, this._pages.length);\r\n }\r\n\r\n private buildReportModel(): QuoteRoundStorageReportModel {\r\n let model = new QuoteRoundStorageReportModel();\r\n model.coverSheet = this._quoteRoundStorage.coverSheet;\r\n model.roundStorage = this._quoteRoundStorage.roundStorage;\r\n model.commodities = this._quoteRoundStorage.commodities;\r\n model.airflowConfiguration = this._quoteRoundStorage.airflowConfiguration;\r\n model.includeFlowOption = this._quoteRoundStorage.includeFlowOption;\r\n model.exhausterSheet = this._quoteRoundStorage.exhausterSheet;\r\n model.flushFloorDesign = this._quoteRoundStorage.flushFloorDesign;\r\n model.ductDesign = this._quoteRoundStorage.ductDesign;\r\n return model;\r\n }\r\n}\r\n","export * from './aqs-round-configuration-tab';\r\nexport * from './aqs-round-storage-tab.component';\r\nexport * from './aqs-round-duct-design';\r\nexport * from './aqs-round-flush-design-tab';\r\n","import { Component, ElementRef, OnInit, ViewChild } from '@angular/core';\r\nimport { FormBuilder, FormControl, FormGroup } from '@angular/forms';\r\nimport { Chart } from 'chart.js';\r\nimport { Calendar } from 'primeng/calendar';\r\nimport { Subscription } from 'rxjs';\r\n\r\nimport { ErrorModel, UserRoleEnum } from '../../../common';\r\nimport {\r\n CalendarDefaultValues,\r\n DefaultDateRangeLabel,\r\n EnglishDateLocale,\r\n equipmentSideLabels,\r\n sensorPositionLabels,\r\n sensorTypeLabels,\r\n} from '../../constants';\r\nimport { DefaultDateRangeEnum, SensorPositionEnum, SensorTypeEnum, TutorialMenuEnum } from '../../enums';\r\nimport { BtxHistoricalDataReportFilterRequest } from '../../models/btx-reports.model';\r\nimport { CompanyViewModel } from '../../models/companies.model';\r\nimport { EquipmentViewModel } from '../../models/equipment-btx.model';\r\nimport { HistoricalDataFilter, HistoricalDataTelemetryResponse, TelemetryDomain } from '../../models/historicalDataTelemetryResponse.model';\r\nimport { SensorInfo } from '../../models/sensors';\r\nimport { LocationsBtxDataSourceService, ReportDatasourceService, RoleService } from '../../services';\r\nimport { TutorialPopupComponent } from '../popups';\r\n\r\nChart.defaults.multicolorLine = Chart.defaults.line;\r\nChart.controllers.multicolorLine = Chart.controllers.line.extend({\r\n draw: function(ease) {\r\n let startIndex = 0,\r\n meta = this.getMeta(),\r\n points = meta.data || [],\r\n area = this.chart.chartArea,\r\n originalDatasets = meta.dataset._children;\r\n\r\n function _setLine(newColor, borderDash, meta) {\r\n meta.dataset._view.borderColor = newColor;\r\n meta.dataset._view.borderDash = borderDash;\r\n }\r\n\r\n let segmentColor = 'rgba(255,0,0,1)';\r\n let nanIndex: number[] = [];\r\n let mainColor: string;\r\n points.forEach(x => {\r\n if (x._view.skip) {\r\n nanIndex.push(x._index);\r\n mainColor = x._view.borderColor;\r\n }\r\n });\r\n\r\n nanIndex.forEach(x => {\r\n _setLine(mainColor, [], meta);\r\n meta.dataset._children = originalDatasets.slice(startIndex, x);\r\n meta.dataset.draw();\r\n startIndex = x - 1;\r\n\r\n _setLine(segmentColor, [3, 3], meta);\r\n meta.dataset._children = originalDatasets.slice(startIndex, x + 2);\r\n meta.dataset.draw();\r\n startIndex = x + 1;\r\n });\r\n\r\n if (nanIndex.length > 0) {\r\n _setLine(mainColor, [], meta);\r\n }\r\n meta.dataset._children = originalDatasets.slice(startIndex);\r\n meta.dataset.draw();\r\n meta.dataset._children = originalDatasets;\r\n\r\n points.forEach(function(point) {\r\n point.draw(area);\r\n });\r\n },\r\n});\r\n\r\n@Component({\r\n selector: 'greensleeves-btx-historical-data-tab',\r\n templateUrl: './btx-historical-data-tab.component.html',\r\n})\r\n\r\nexport class BtxHistoricalDataTabComponent implements OnInit {\r\n private readonly DefaultMaxDeviceCircleSeconds: number = 330;\r\n @ViewChild('calendar', { static: false })\r\n private calendar: Calendar;\r\n\r\n @ViewChild('chartReport', { static: true })\r\n private canvas: ElementRef;\r\n\r\n @ViewChild(TutorialPopupComponent, { read: false, static: false })\r\n private tutorialPopup: TutorialPopupComponent;\r\n\r\n\r\n private ctx: CanvasRenderingContext2D;\r\n private subscriptions: Subscription[] = [];\r\n private chart: Chart;\r\n private defaultDateRangePreviousState: DefaultDateRangeEnum = null;\r\n\r\n options: any;\r\n value: Date;\r\n startDate: Date;\r\n endDate: Date;\r\n _dataLocale: EnglishDateLocale = new EnglishDateLocale();\r\n _historicalDataFilter: HistoricalDataFilter = new HistoricalDataFilter();\r\n _selectedDefaultDateRange: DefaultDateRangeEnum = null;\r\n\r\n _companies: CompanyViewModel[];\r\n _equipments: EquipmentViewModel[];\r\n _companiesFilter: { label: string, value: number }[] = [];\r\n _locationsFilter: { label: string, value: number }[] = [];\r\n _equipmentsFilter: { label: string, value: number }[] = [];\r\n _sensorsFilter: { label: string, value: number }[] = [];\r\n _sensorTypesFilter: { label: string, value: number }[] = [];\r\n _equipmentSensorInfo: SensorInfo[];\r\n\r\n _selectedCompanyId: number;\r\n _selectedLocationId: number;\r\n _selectedEquipmentId: number;\r\n _selectedSensorIds: number[];\r\n _selectedSensorType: SensorTypeEnum;\r\n\r\n _reportPeriod: FormGroup;\r\n _rangeDate: Date[] = [];\r\n _dateRange: { label: string, value: DefaultDateRangeEnum }[] = [];\r\n _selectedDateRange: { label: string, value: DefaultDateRangeEnum } = { label: 'Day', value: DefaultDateRangeEnum.Day };\r\n _selectReportData: FormGroup;\r\n isReportGenerated: boolean;\r\n _isReportRun = false;\r\n _isReportEmpty: boolean;\r\n _isCollapseSidebar: boolean = false;\r\n\r\n collapseSidebar() {\r\n this._isCollapseSidebar = true;\r\n };\r\n\r\n expandSidebar() {\r\n this._isCollapseSidebar = false;\r\n }\r\n\r\n private chartColors: string[] = [\r\n 'rgba(54, 162, 235, 1)', 'rgba(54, 235, 93, 1)', 'rgba(191, 54, 235, 1)', 'rgba(6, 6, 6, 1)', 'rgba(139,69,19,1)', 'rgba(112,128,144, 1)', 'rgba(245, 40, 145, 1)',\r\n ];\r\n\r\n get _startDate() {\r\n return this._rangeDate[0];\r\n }\r\n\r\n get _endDate() {\r\n return this._rangeDate[1] == null ? this._rangeDate[0] : this._rangeDate[1];\r\n }\r\n\r\n get _equipmentName() {\r\n return this._equipmentsFilter.find(x => x.value === this._selectedEquipmentId).label;\r\n }\r\n\r\n get _sensorTypeName() {\r\n if (this._selectedSensorType) {\r\n return ', ' + this._sensorTypesFilter.find(x => this._selectedSensorType == x.value).label;\r\n } else {\r\n return '';\r\n }\r\n }\r\n\r\n get _locationName() {\r\n return this._locationsFilter.find(x => x.value === this._selectedLocationId).label;\r\n }\r\n\r\n get isTutorialUser(): boolean {\r\n return this._roleService.userHasRole(UserRoleEnum.CompanyAdmin) || this._roleService.userHasRole(UserRoleEnum.CompanyUser);\r\n }\r\n\r\n constructor(\r\n private _btxLocationService: LocationsBtxDataSourceService,\r\n private _formBuilder: FormBuilder,\r\n private _reportDatasource: ReportDatasourceService,\r\n private _roleService: RoleService,\r\n ) {\r\n\r\n this._selectReportData = this._formBuilder.group({\r\n company: null,\r\n location: null,\r\n equipment: null,\r\n sensorstype: null,\r\n sensors: null,\r\n });\r\n }\r\n\r\n async ngOnInit() {\r\n for (const [key, value] of Object.entries(DefaultDateRangeLabel)) {\r\n this._dateRange.push({ label: value, value: Number(key) });\r\n }\r\n\r\n this.setSubscriptions();\r\n this._btxLocationService.getCompaniesWithLocations(true);\r\n this.ctx = this.canvas.nativeElement.getContext('2d');\r\n this.resetCalendar();\r\n this._reportPeriod = this._formBuilder.group({\r\n selectedPeriod: [this._rangeDate],\r\n dateRange: [],\r\n startPeriod: [this._startDate],\r\n endOfPeriod: [this._endDate],\r\n });\r\n\r\n let today = new Date();\r\n today.setHours(0, 0, 0, 0);\r\n this._historicalDataFilter.timeStampFrom = (today.getTime() / CalendarDefaultValues.defaultOneSecondMilliseconds) | 0;\r\n this._historicalDataFilter.timeStampTo = (today.getTime() / CalendarDefaultValues.defaultOneSecondMilliseconds) | 0;\r\n this.createEmptyChart();\r\n }\r\n\r\n ngOnDestroy() {\r\n this.clearSubscriptions();\r\n }\r\n\r\n setSubscriptions(): void {\r\n const companiesSubscription =\r\n this._btxLocationService.companiesWithLocations$.subscribe(\r\n (companies) => {\r\n this._companies = companies;\r\n this.initDefaultFilters();\r\n },\r\n );\r\n\r\n this.subscriptions.push(companiesSubscription);\r\n }\r\n\r\n clearSubscriptions(): void {\r\n this.subscriptions.forEach((s) => s.unsubscribe());\r\n this.subscriptions = null;\r\n }\r\n\r\n async initDefaultFilters() {\r\n if (this._companies && this._companies.length > 0) {\r\n this._companiesFilter = this._companies.sort((a, b) => a.name.localeCompare(b.name)).map((c) => {\r\n return { label: c.name, value: c.id, locations: c.locations };\r\n });\r\n\r\n this._selectedCompanyId = this._companiesFilter[0].value;\r\n await this.onChangeSelectedCompany();\r\n }\r\n }\r\n\r\n async onChangeSelectedCompany() {\r\n if (this._selectedCompanyId) {\r\n this._locationsFilter = this._companies.filter(c => c.id == this._selectedCompanyId)[0].locations\r\n .filter(l => l.equipments && l.equipments.length > 0)\r\n .sort((a, b) => a.name.localeCompare(b.name))\r\n .map((location) => {\r\n return { label: location.name, value: location.id };\r\n });\r\n\r\n this._selectedLocationId = this._locationsFilter[0].value;\r\n await this.onChangeSelectedLocation();\r\n }\r\n }\r\n\r\n async onChangeSelectedLocation() {\r\n if (this._selectedLocationId) {\r\n this._equipmentsFilter = this._companies.filter(c => c.id == this._selectedCompanyId)[0]\r\n .locations.filter(l => l.id == this._selectedLocationId)[0]\r\n .equipments\r\n .sort((a, b) => a.name.localeCompare(b.name))\r\n .map((location) => {\r\n return { label: location.name, value: location.id };\r\n });\r\n\r\n this._selectedEquipmentId = this._equipmentsFilter[0].value;\r\n await this.onChangeSelectedEquipment();\r\n }\r\n }\r\n\r\n async onChangeSelectedEquipment() {\r\n if (this._selectedEquipmentId) {\r\n let sensors = await this._btxLocationService.getSensors(this._selectedEquipmentId, this._selectedLocationId) as SensorInfo[];\r\n if (sensors && sensors.length > 0) {\r\n this._equipmentSensorInfo = sensors;\r\n\r\n this._sensorTypesFilter = [];\r\n sensors.forEach(s => {\r\n if (!this._sensorTypesFilter.some(stf => stf.value == s.type)) {\r\n this._sensorTypesFilter.push({ label: sensorTypeLabels[s.type], value: s.type });\r\n }\r\n });\r\n\r\n this._selectedSensorType = this._sensorTypesFilter[0].value;\r\n this.onChangeSelectedSensorType();\r\n }\r\n }\r\n }\r\n\r\n async onChangeSelectedSensorType() {\r\n if (this._equipmentSensorInfo && this._equipmentSensorInfo.length > 0) {\r\n this._sensorsFilter = this._equipmentSensorInfo.filter(s => s.type == this._selectedSensorType)\r\n .map((sensor) => {\r\n return { label: sensorPositionLabels[sensor.position] + ', ' + equipmentSideLabels[sensor.side], value: sensor.id };\r\n }).sort((a, b) => a.label.localeCompare(b.label));\r\n\r\n this._selectedSensorIds = [];\r\n this._selectedSensorIds.push(this._sensorsFilter[0].value);\r\n }\r\n }\r\n\r\n async onChangeSelectedSensor() {\r\n if (!this._selectReportData.controls.sensors || this._selectReportData.controls.sensors.value.length == 0) {\r\n this._selectedSensorIds = [];\r\n }\r\n }\r\n\r\n async onFocusControl(control: FormControl) {\r\n control.markAsTouched();\r\n }\r\n\r\n async onBlurControl(control: FormControl) {\r\n control.markAsUntouched();\r\n }\r\n\r\n onSelectCalendar() {\r\n if (this._rangeDate[0] && this._rangeDate[1]) {\r\n let startDate = new Date(this._rangeDate[0]);\r\n let endDate = new Date(this._rangeDate[1]);\r\n\r\n const diffInMS = new Date(endDate).getTime() - new Date(startDate).getTime();\r\n const msToDaysDivider = 1000 * 60 * 60 * 24;\r\n const diffInDays = diffInMS / msToDaysDivider;\r\n\r\n if (diffInDays > 30) {\r\n const thirtyDaysInMs = 1000 * 60 * 60 * 24 * 30;\r\n this._rangeDate[1] = new Date(this._rangeDate[0].getTime() + (thirtyDaysInMs));\r\n }\r\n }\r\n }\r\n\r\n async onGenerateReport() {\r\n this._isReportRun = true;\r\n\r\n let request: HistoricalDataFilter = new HistoricalDataFilter();\r\n request.equipmentId = this._selectedEquipmentId;\r\n request.sensorIds = this._selectedSensorIds;\r\n request.timeStampFrom = this._rangeDate[0].getTime() / 1000;\r\n request.timeStampTo = this._rangeDate[1].getTime() / 1000;\r\n\r\n let result = await this._btxLocationService.getHistoricalDataForThePeriod(request);\r\n this.clearChart();\r\n if (result) {\r\n if (result instanceof ErrorModel) {\r\n this._isReportEmpty = true;\r\n this.isReportGenerated = false;\r\n } else {\r\n this._isReportEmpty = false;\r\n this.isReportGenerated = true;\r\n let data = result as HistoricalDataTelemetryResponse[];\r\n\r\n let chartDatasets = this.createDataSets(data, request.timeStampFrom, request.timeStampTo);\r\n if (chartDatasets) {\r\n this.chart = new Chart(this.ctx, {\r\n type: 'multicolorLine',\r\n plugins: [this.verticalHoverPlugin],\r\n data: {\r\n datasets: chartDatasets,\r\n },\r\n options: {\r\n legend: {\r\n display: true,\r\n position: 'right',\r\n align: 'start',\r\n labels: {\r\n boxWidth: 12,\r\n },\r\n },\r\n scales: {\r\n xAxes: [{\r\n type: 'time',\r\n time: this.scalesChart(data),\r\n bounds: 'ticks',\r\n ticks: {\r\n major: {\r\n enabled: true,\r\n fontStyle: 'bold',\r\n },\r\n },\r\n }],\r\n },\r\n tooltips: {\r\n mode: 'index',\r\n intersect: false,\r\n callbacks: {\r\n label: function(tooltipItem, data) {\r\n var label = data.datasets[tooltipItem.datasetIndex].label || '';\r\n if (label) {\r\n label += ': ';\r\n }\r\n label += new Intl.NumberFormat('en-US').format(tooltipItem.yLabel);\r\n return label;\r\n },\r\n },\r\n },\r\n elements: {\r\n line: {\r\n tension: 0,\r\n },\r\n },\r\n hover: {\r\n intersect: false,\r\n },\r\n },\r\n });\r\n } else {\r\n this.createEmptyChart();\r\n this._isReportEmpty = true;\r\n this.isReportGenerated = false;\r\n }\r\n }\r\n } else {\r\n this.createEmptyChart();\r\n this._isReportEmpty = true;\r\n this.isReportGenerated = false;\r\n }\r\n this._isReportRun = false;\r\n }\r\n\r\n onApplyDateRangeFilter() {\r\n this.isReportGenerated = false;\r\n if (this._rangeDate == undefined || this._rangeDate.length == 0) {\r\n this.resetCalendar();\r\n }\r\n if (this._rangeDate[1] == undefined || this._rangeDate[1] == null) {\r\n this._rangeDate[1] = this._rangeDate[0];\r\n }\r\n this._historicalDataFilter.timeStampFrom = (this._rangeDate[0].getTime() / CalendarDefaultValues.defaultOneSecondMilliseconds) | 0;\r\n this._historicalDataFilter.timeStampTo = (this._rangeDate[1].getTime() / CalendarDefaultValues.defaultOneSecondMilliseconds) | 0;\r\n this.defaultDateRangePreviousState = this._selectedDefaultDateRange;\r\n this.calendar.toggle();\r\n }\r\n\r\n onCloseCalendar() {\r\n if (this._historicalDataFilter.timeStampFrom == null && this._historicalDataFilter.timeStampTo == null) {\r\n this.resetCalendar();\r\n return;\r\n }\r\n\r\n this._rangeDate = [];\r\n this._rangeDate.push(new Date(this._historicalDataFilter.timeStampFrom * CalendarDefaultValues.defaultOneSecondMilliseconds));\r\n this._rangeDate.push(new Date(this._historicalDataFilter.timeStampTo * CalendarDefaultValues.defaultOneSecondMilliseconds));\r\n\r\n let startDate = new Date(this._historicalDataFilter.timeStampFrom * CalendarDefaultValues.defaultOneSecondMilliseconds);\r\n let endDate = new Date(this._historicalDataFilter.timeStampTo * CalendarDefaultValues.defaultOneSecondMilliseconds);\r\n\r\n const diffInMS = new Date(endDate).getTime() - new Date(startDate).getTime();\r\n const diffInDays = diffInMS / 1000 / 60 / 60 / 24;\r\n let dateRange: DefaultDateRangeEnum;\r\n\r\n if (diffInDays > 7) {\r\n dateRange = DefaultDateRangeEnum.Month;\r\n } else if (diffInDays > 1) {\r\n dateRange = DefaultDateRangeEnum.Week;\r\n } else {\r\n dateRange = DefaultDateRangeEnum.Day;\r\n }\r\n\r\n this._selectedDateRange = this._dateRange.find(x => x.value == dateRange);\r\n }\r\n\r\n setDefaultDate(defaultDateRange: DefaultDateRangeEnum) {\r\n let endDate = new Date();\r\n let startDate = new Date();\r\n endDate.setHours(0, 0, 0, 0);\r\n startDate.setHours(0, 0, 0, 0);\r\n this._rangeDate = [];\r\n switch (defaultDateRange) {\r\n case DefaultDateRangeEnum.Week:\r\n startDate.setDate(startDate.getDate() - CalendarDefaultValues.defaultOneWeekDays);\r\n break;\r\n case DefaultDateRangeEnum.Month:\r\n startDate.setDate(startDate.getDate() - CalendarDefaultValues.defaultOneMonthDays);\r\n break;\r\n }\r\n this._selectedDefaultDateRange = defaultDateRange;\r\n this._rangeDate.push(startDate);\r\n this._rangeDate.push(endDate);\r\n this._selectedDateRange = this._dateRange.find(x => x.value == defaultDateRange);\r\n }\r\n\r\n async onClickExportReport() {\r\n this._isReportRun = true;\r\n\r\n let request: BtxHistoricalDataReportFilterRequest = new BtxHistoricalDataReportFilterRequest();\r\n request.equipmentId = this._selectedEquipmentId;\r\n request.sensorIds = this._selectedSensorIds;\r\n request.timeStampFrom = this._rangeDate[0].getTime() / 1000;\r\n request.timeStampTo = this._rangeDate[1].getTime() / 1000;\r\n request.timeZone = Intl.DateTimeFormat().resolvedOptions().timeZone;\r\n\r\n let result = await this._reportDatasource.downloadBtxHistoricalDataReportFile(request);\r\n if (!(result instanceof ErrorModel)) {\r\n let fileName = 'Historical Report for ' + this._equipmentName + ' ' + new Date().toLocaleString();\r\n const url = URL.createObjectURL(result as Blob);\r\n let downloadLink = document.createElement('a');\r\n downloadLink.href = url;\r\n downloadLink.download = fileName;\r\n downloadLink.click();\r\n }\r\n\r\n this._isReportRun = false;\r\n }\r\n\r\n private resetCalendar() {\r\n this.defaultDateRangePreviousState = null;\r\n this._selectedDefaultDateRange = null;\r\n this._rangeDate = [];\r\n let today = new Date();\r\n today.setHours(0, 0, 0, 0);\r\n this._rangeDate.push(today);\r\n this._rangeDate.push(today);\r\n }\r\n\r\n private clearChart() {\r\n if (this.chart !== undefined) {\r\n this.chart.destroy();\r\n }\r\n }\r\n\r\n private createEmptyChart() {\r\n this.clearChart();\r\n let today = new Date();\r\n today.setHours(0, 0, 0, 0);\r\n this.chart = new Chart(this.ctx, {\r\n type: 'line',\r\n data: {\r\n datasets: [],\r\n },\r\n options: {\r\n scales: {\r\n xAxes: [{\r\n type: 'time',\r\n time: {\r\n unit: 'hour',\r\n displayFormats: {\r\n hour: 'HH:mm',\r\n },\r\n },\r\n ticks: {\r\n min: new Date().setHours(0, 0, 0, 0),\r\n max: new Date().setHours(24, 0, 0, 0),\r\n },\r\n }],\r\n yAxes: [{\r\n ticks: {\r\n max: 100,\r\n min: 0,\r\n },\r\n }],\r\n },\r\n elements: {\r\n line: {\r\n tension: 0,\r\n },\r\n },\r\n },\r\n });\r\n }\r\n\r\n private scalesChart(telemetry: HistoricalDataTelemetryResponse[]) {\r\n let dates: number[] = [];\r\n telemetry.forEach(x => {\r\n dates.push(Math.min(...x.telemetries.map(i => Math.floor(i.timestamp))));\r\n dates.push(Math.max(...x.telemetries.map(i => Math.floor(i.timestamp))));\r\n });\r\n let minDate = Math.min(...dates);\r\n let maxDate = Math.max(...dates);\r\n let diffDays = ((maxDate - minDate) / (3600 * 24)) | 0;\r\n if (diffDays <= 1) {\r\n return {\r\n unit: 'minute',\r\n displayFormats: {\r\n hour: 'HH:mm',\r\n day: 'MM.DD.YYYY',\r\n month: 'MMM,YY',\r\n year: 'YYYY',\r\n },\r\n tooltipFormat: 'MMM DD, YYYY, HH:mm',\r\n };\r\n }\r\n\r\n if (diffDays <= 21) {\r\n return {\r\n unit: 'hour',\r\n displayFormats: {\r\n hour: 'HH:mm',\r\n day: 'MM.DD.YYYY',\r\n month: 'MMM,YY',\r\n year: 'YYYY',\r\n },\r\n tooltipFormat: 'MMM DD, YYYY, HH:mm',\r\n };\r\n }\r\n\r\n if (diffDays <= 180) {\r\n return {\r\n unit: 'day',\r\n displayFormats: {\r\n hour: 'HH:mm',\r\n day: 'DD',\r\n month: 'MMM YYYY',\r\n year: 'YYYY',\r\n },\r\n tooltipFormat: 'MMM DD, YYYY, HH:mm',\r\n };\r\n }\r\n\r\n return {\r\n unit: 'month',\r\n displayFormats: {\r\n hour: 'HH:mm',\r\n day: 'DD',\r\n month: 'MMM',\r\n year: 'YYYY',\r\n },\r\n tooltipFormat: 'MMM DD, YYYY, HH:mm',\r\n };\r\n }\r\n\r\n private createDataSets(sensors: HistoricalDataTelemetryResponse[], dateFromSec: number, dateToSec: number): any {\r\n if (!sensors || sensors.length == 0) {\r\n return null;\r\n }\r\n\r\n let dataset: any[] = [];\r\n sensors.forEach((t, index) => {\r\n let label: string;\r\n\r\n let sensor = this._equipmentSensorInfo.find(s => s.id == t.sensorId);\r\n if (sensor) {\r\n if (sensor.position == SensorPositionEnum.OnePerEquipment || sensor.position == SensorPositionEnum.CenterOfTheEquipmentScheme) {\r\n label = sensorTypeLabels[sensor.type];\r\n } else {\r\n label = sensorPositionLabels[sensor.position] + ', ' + equipmentSideLabels[sensor.side];\r\n }\r\n } else {\r\n label = 'Sensor ' + (index + 1);\r\n }\r\n\r\n dataset.push({\r\n label: label,\r\n data: this.getSeriesPoints(t.telemetries, dateFromSec, dateToSec),\r\n fill: false,\r\n borderColor: index < this.chartColors.length ? this.chartColors[index] : this.random_rgba(),\r\n borderWidth: 2,\r\n pointRadius: 0,\r\n pointHoverRadius: 0,\r\n spanGaps: true,\r\n });\r\n });\r\n\r\n return dataset;\r\n }\r\n\r\n private getSeriesPoints(telemetry: TelemetryDomain[], dateFromSec: number, dateToSec: number) {\r\n let delta = this.DefaultMaxDeviceCircleSeconds;\r\n const diffDate = Math.floor(((dateToSec + 24 * 3599) - dateFromSec) / (60 * 60 * 24));\r\n if (diffDate > 10 && diffDate <= 15) {\r\n delta = 10 * 60 + 30;\r\n }\r\n if (diffDate > 15) {\r\n delta = 15 * 60 + 30;\r\n }\r\n\r\n let points: { x: Date, y: number }[] = [];\r\n let previosDt: number = Math.min(...telemetry.map(x => x.timestamp));\r\n telemetry.forEach(pt => {\r\n let diff: number = pt.timestamp - previosDt;\r\n if (diff > delta) {\r\n points.push({ x: new Date((pt.timestamp - diff / 2) * CalendarDefaultValues.defaultOneSecondMilliseconds), y: null });\r\n }\r\n points.push({ x: new Date(pt.timestamp * CalendarDefaultValues.defaultOneSecondMilliseconds), y: pt.value });\r\n previosDt = pt.timestamp;\r\n });\r\n return points;\r\n }\r\n\r\n private random_rgba() {\r\n var o = Math.round, r = Math.random, s = 255;\r\n return 'rgba(' + o(r() * s) + ',' + o(r() * s) + ',' + o(r() * s) + ', 1)';\r\n }\r\n\r\n verticalHoverPlugin = {\r\n afterDraw: chart => {\r\n if (chart.tooltip && chart.tooltip._active && chart.tooltip._active.length) {\r\n let activePoint = this.chart.tooltip._active[0];\r\n let ctx = this.chart.ctx;\r\n let x = activePoint.tooltipPosition().x;\r\n let topY = this.chart.chartArea.top;\r\n let bottomY = this.chart.chartArea.bottom;\r\n\r\n // Set line opts\r\n ctx.save();\r\n ctx.lineWidth = 1;\r\n ctx.setLineDash([3, 3]);\r\n ctx.strokeStyle = '#FF4949';\r\n\r\n // draw vertical line\r\n ctx.beginPath();\r\n ctx.moveTo(x, topY);\r\n ctx.lineTo(x, bottomY);\r\n ctx.stroke();\r\n ctx.restore();\r\n }\r\n },\r\n };\r\n\r\n showTutorial() {\r\n this.tutorialPopup.showPopup(TutorialMenuEnum.BtxHistoricalData);\r\n }\r\n}\r\n","export * from './btx-historical-data-tab.component';\r\n","import {\r\n Component,\r\n Input,\r\n OnChanges,\r\n SimpleChanges,\r\n ViewChild,\r\n} from '@angular/core';\r\n\r\nimport { EquipmentViewDataPopupComponent } from '@popups';\r\n\r\nimport {\r\n EquipmentSchemaViewModel,\r\n EquipmentViewModel,\r\n} from '@models';\r\nimport {\r\n equipmentSchemes,\r\n equipmentSensorMapping,\r\n sensorPositionLabels,\r\n sensorTypeLabels,\r\n} from '../../../../constants';\r\nimport { EquipmentSideEnum } from '../../../../enums';\r\n\r\n@Component({\r\n selector: 'greensleeves-btx-equipment-schema',\r\n templateUrl: './btx-equipment-schema.component.html',\r\n})\r\nexport class BtxEquipmentSchemaComponent implements OnChanges {\r\n @Input() activeEquipment: EquipmentViewModel;\r\n @Input() locationId: number;\r\n\r\n _equipmentSchemas: EquipmentSchemaViewModel[] = [];\r\n _receivingTimestamp: string = '';\r\n\r\n @ViewChild(EquipmentViewDataPopupComponent, { read: false, static: false })\r\n private _equipmentViewDataModal: EquipmentViewDataPopupComponent;\r\n\r\n constructor() { }\r\n\r\n ngOnChanges(changes: SimpleChanges) {\r\n this._receivingTimestamp = '';\r\n if (changes.activeEquipment) {\r\n this.buildSchema();\r\n }\r\n }\r\n\r\n buildSchema() {\r\n if (!this.activeEquipment) {\r\n this._equipmentSchemas = [];\r\n return;\r\n }\r\n\r\n const mapping =\r\n equipmentSensorMapping[this.activeEquipment.type][\r\n this.activeEquipment.subType\r\n ];\r\n\r\n let selectedSideA: EquipmentSideEnum;\r\n let selectedSideB: EquipmentSideEnum;\r\n\r\n if (\r\n this.activeEquipment.sensors &&\r\n this.activeEquipment.sensors.length > 0 &&\r\n ((this.activeEquipment.sensors[0].side as EquipmentSideEnum) ===\r\n EquipmentSideEnum.North ||\r\n (this.activeEquipment.sensors[0].side as EquipmentSideEnum) ===\r\n EquipmentSideEnum.South)\r\n ) {\r\n selectedSideA = EquipmentSideEnum.South;\r\n selectedSideB = EquipmentSideEnum.North;\r\n } else {\r\n selectedSideA = EquipmentSideEnum.East;\r\n selectedSideB = EquipmentSideEnum.West;\r\n }\r\n\r\n const sides = [\r\n equipmentSchemes[this.activeEquipment.type][\r\n this.activeEquipment.subType\r\n ][0],\r\n equipmentSchemes[this.activeEquipment.type][this.activeEquipment.subType][\r\n selectedSideA\r\n ],\r\n equipmentSchemes[this.activeEquipment.type][this.activeEquipment.subType][\r\n selectedSideB\r\n ],\r\n ];\r\n\r\n const shouldAddNonSided = Object.keys(sides).some(\r\n x => (Number(x) as EquipmentSideEnum) === EquipmentSideEnum.None,\r\n );\r\n this._equipmentSchemas = Object.entries(sides)\r\n .filter(([side, schemaClassName]) => !!schemaClassName)\r\n .map(([side, schemaClassName]) => ({\r\n side: Number(side) as EquipmentSideEnum,\r\n schemaClassName: schemaClassName as string,\r\n }))\r\n .map(({ side, schemaClassName: className }) => {\r\n const markers = this.activeEquipment.sensors\r\n .map((sensor, index) => ({ ...sensor, index: index + 1 }))\r\n .filter(\r\n sensor =>\r\n sensor.side === side ||\r\n sensor.side === side + 2 ||\r\n (shouldAddNonSided && sensor.side === EquipmentSideEnum.None),\r\n )\r\n .map(sensor => ({\r\n index: sensor.index,\r\n tooltip:\r\n sensor.index +\r\n ' - ' +\r\n sensorPositionLabels[sensor.position] +\r\n '\\n' +\r\n sensorTypeLabels[sensor.type],\r\n className: mapping[sensor.type][sensor.position][sensor.side],\r\n }))\r\n .filter(marker => !!marker.className);\r\n\r\n const date = new Date(this.activeEquipment.timestamp * 1000);\r\n const receivingTimestamp = !this.activeEquipment.timestamp ? 'No data' : date.toLocaleString('en-US')\r\n this._receivingTimestamp = receivingTimestamp;\r\n\r\n return {\r\n className,\r\n markers,\r\n };\r\n });\r\n }\r\n\r\n onClickViewData(equipment: EquipmentViewModel) {\r\n this._equipmentViewDataModal.show(equipment, this.locationId);\r\n }\r\n}\r\n","export * from './btx-equipment-schema.component'","import { Component, Input } from '@angular/core';\r\nimport { SortEvent } from 'primeng';\r\n\r\nimport { BtxSensorWithTelemetryViewModel } from '@models';\r\n\r\nimport { ColumnTypeEnum, SensorValuesStatusEnum } from '../../../../enums';\r\nimport { CommonFunctions } from '../../../../../common';\r\nimport { NameViewModel } from '../../../../models/common.model';\r\n\r\n@Component({\r\n selector: 'greensleeves-btx-equipment-sensors-grid',\r\n templateUrl: './btx-equipment-sensors-grid.component.html',\r\n})\r\nexport class BtxEquipmentSensorsGridComponent {\r\n @Input() sensors: BtxSensorWithTelemetryViewModel[];\r\n @Input() loading: boolean;\r\n\r\n _columnTypeEnum = ColumnTypeEnum;\r\n _columnsView = [\r\n {\r\n header: '',\r\n columnType: ColumnTypeEnum.SensorIndex,\r\n dataField: 'index',\r\n getLabel: (sensor: BtxSensorWithTelemetryViewModel) => sensor.index,\r\n },\r\n {\r\n header: 'Sensor Type',\r\n columnType: ColumnTypeEnum.Type,\r\n dataField: 'type',\r\n isSortable: true,\r\n getLabel: (sensor: BtxSensorWithTelemetryViewModel) => sensor.type.name,\r\n },\r\n {\r\n header: 'Position',\r\n columnType: ColumnTypeEnum.SensorPosition,\r\n dataField: 'position',\r\n isSortable: true,\r\n getLabel: (sensor: BtxSensorWithTelemetryViewModel) =>\r\n sensor.position.name,\r\n },\r\n {\r\n header: 'Side',\r\n columnType: ColumnTypeEnum.SensorSide,\r\n dataField: 'side',\r\n isSortable: true,\r\n getLabel: (sensor: BtxSensorWithTelemetryViewModel) => sensor.side.name,\r\n },\r\n {\r\n header: 'Value',\r\n columnType: ColumnTypeEnum.SensorValue,\r\n dataField: 'value',\r\n getLabel: (sensor: BtxSensorWithTelemetryViewModel) =>\r\n sensor.value !== null\r\n ? `${sensor.value} ${sensor.sensorMeasure}`\r\n : 'No data',\r\n },\r\n {\r\n header: 'Status',\r\n columnType: ColumnTypeEnum.Status,\r\n dataField: 'status',\r\n getLabel: (sensor: BtxSensorWithTelemetryViewModel) =>\r\n sensor.eventType ? sensor.eventType.name : sensor.status.name,\r\n },\r\n ];\r\n\r\n constructor() { }\r\n\r\n getSensorColor(sensorId: number) {\r\n let sensor = this.sensors.find(x => x.id == sensorId);\r\n\r\n if (!sensor) {\r\n return 'white';\r\n }\r\n\r\n const status = sensor.status.id;\r\n\r\n switch (status) {\r\n case SensorValuesStatusEnum.Norm:\r\n return 'green';\r\n case SensorValuesStatusEnum.Alarm:\r\n return 'red';\r\n case SensorValuesStatusEnum.Warning:\r\n return 'yellow';\r\n case SensorValuesStatusEnum.Error:\r\n return 'grey';\r\n }\r\n }\r\n\r\n customSort(event: SortEvent) {\r\n const field = event.field;\r\n const order = event.order;\r\n\r\n this.sensors.sort((sensorA, sensorB) => {\r\n const valueA = sensorA[field];\r\n const valueB = sensorB[field];\r\n\r\n let result = null;\r\n\r\n if (valueA == null && valueB != null) {\r\n result = -1;\r\n } else if (valueA != null && valueB == null) {\r\n result = 1;\r\n } else if (valueA == null && valueB == null) {\r\n result = 0;\r\n } else if (typeof valueA === 'string' && typeof valueB === 'string') {\r\n result = CommonFunctions.compareStrings(valueA, valueB);\r\n } else if (\r\n valueA instanceof NameViewModel &&\r\n valueB instanceof NameViewModel\r\n ) {\r\n result = CommonFunctions.compareStrings(valueA.name, valueB.name);\r\n } else {\r\n result = valueA < valueB ? -1 : valueA > valueB ? 1 : 0;\r\n }\r\n\r\n return result * order;\r\n });\r\n }\r\n}\r\n","export * from './btx-equipment-sensors-grid.component';\r\n","import { Component, OnDestroy, OnInit, ViewChild } from '@angular/core';\r\nimport { Subscription, interval } from 'rxjs';\r\nimport { ActivatedRoute, Router } from '@angular/router';\r\n\r\nimport {\r\n EquipmentDataSourceService,\r\n LocationsBtxDataSourceService,\r\n ReportDatasourceService,\r\n} from '@services';\r\nimport { TreeNode } from 'primeng';\r\n\r\nimport { BtxLiveDataExportReportPopupComponent } from '@popups';\r\nimport {\r\n MainRoutePaths,\r\n equipmentSideLabels,\r\n sensorPositionLabels,\r\n sensorTypeLabels,\r\n} from '../../../constants';\r\nimport {\r\n BtxEquipmentWithTelemetryViewModel,\r\n BtxLiveDataLocationViewModel,\r\n BtxSensorWithTelemetryViewModel,\r\n EquipmentNameViewModel,\r\n EquipmentViewModel,\r\n} from '@models';\r\n\r\n@Component({\r\n selector: 'greensleeves-btx-live-data-equipment-view-tab',\r\n templateUrl: './btx-live-data-equipment-view-tab.component.html',\r\n})\r\nexport class BtxLiveDataEquipmentViewTabComponent implements OnInit, OnDestroy {\r\n private static readonly ONE_SECOND_MILLISECONDS: number = 1000;\r\n\r\n @ViewChild(BtxLiveDataExportReportPopupComponent, {\r\n read: false,\r\n static: false,\r\n })\r\n exportReportModal: BtxLiveDataExportReportPopupComponent;\r\n\r\n _equipmentId: number = 0;\r\n _equipmentWithTelemetry: BtxEquipmentWithTelemetryViewModel;\r\n _equipmentViewModel: EquipmentViewModel;\r\n _isIntervalInitialized: boolean = false;\r\n _isReportRun: boolean = false;\r\n _locationEquipmentsNodes: TreeNode[] = [];\r\n _selectedEquipmentNode: TreeNode;\r\n _isOpenEquipmentsList: boolean = false;\r\n _liveDataLocations: BtxLiveDataLocationViewModel[] = [];\r\n _loading: boolean = false;\r\n _locationName: string;\r\n _equipmentName: string = '';\r\n\r\n private subscriptions: Subscription[] = [];\r\n private intervalSubscription: Subscription = null;\r\n\r\n constructor(\r\n private _router: Router,\r\n private _route: ActivatedRoute,\r\n private _equipmentService: EquipmentDataSourceService,\r\n private _btxLocationService: LocationsBtxDataSourceService,\r\n ) { }\r\n\r\n get _sensors() {\r\n if (!this._equipmentWithTelemetry) {\r\n return [];\r\n }\r\n\r\n return this._equipmentWithTelemetry.sensors;\r\n }\r\n\r\n get _locationId() {\r\n if (!this._equipmentWithTelemetry) {\r\n return -1;\r\n }\r\n\r\n return this._equipmentWithTelemetry.locationId;\r\n }\r\n\r\n ngOnInit() {\r\n this.setSubscriptions();\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.clearSubscriptions();\r\n }\r\n\r\n setSubscriptions(): void {\r\n const equipmentIdSubscription =\r\n this._btxLocationService.selectedEquipmentId$.subscribe(equipmentId => {\r\n if (!equipmentId) {\r\n this.onClickGoBackLink();\r\n return;\r\n }\r\n\r\n this._equipmentService.getEquipmentWithTelemetry(equipmentId);\r\n });\r\n\r\n const equipmentWithTelemetrySubscription =\r\n this._equipmentService.equipmentWithTelemetry$.subscribe(\r\n equipmentWithTelemetry => {\r\n if (!equipmentWithTelemetry) {\r\n return;\r\n }\r\n\r\n this.setUpEquipment(equipmentWithTelemetry);\r\n this._loading = false;\r\n },\r\n );\r\n\r\n const liveDatalocationsSubscription =\r\n this._btxLocationService.liveDataLocations$.subscribe(locations => {\r\n if (!locations) {\r\n return;\r\n }\r\n\r\n this._liveDataLocations = locations;\r\n this.initEquipmentNodes(locations);\r\n\r\n });\r\n\r\n this._btxLocationService.getCompaniesWithLocations(true);\r\n this._loading = true;\r\n this.subscriptions.push(\r\n equipmentIdSubscription,\r\n equipmentWithTelemetrySubscription,\r\n liveDatalocationsSubscription,\r\n );\r\n }\r\n\r\n setUpEquipment(equipmentWithTelemetry: BtxEquipmentWithTelemetryViewModel) {\r\n this._equipmentId = equipmentWithTelemetry.id;\r\n\r\n const equipmentWithSortedSensors: BtxEquipmentWithTelemetryViewModel = {\r\n ...equipmentWithTelemetry,\r\n sensors: equipmentWithTelemetry.sensors\r\n .sort(this.compareSensorsWithTelemetryByPosition)\r\n .map((s, index) => ({ ...s, index: index + 1 })),\r\n };\r\n\r\n this._equipmentWithTelemetry = equipmentWithSortedSensors;\r\n this._equipmentViewModel =\r\n BtxEquipmentWithTelemetryViewModel.toEquipmentViewModel(\r\n equipmentWithSortedSensors,\r\n );\r\n\r\n this.initializeInterval();\r\n this._locationName = this._equipmentWithTelemetry.locationName;\r\n this._equipmentName = this._equipmentWithTelemetry.name;\r\n }\r\n\r\n initializeInterval() {\r\n if (!this._equipmentWithTelemetry || this._isIntervalInitialized) {\r\n return;\r\n }\r\n\r\n if (this.intervalSubscription) {\r\n this.intervalSubscription.unsubscribe();\r\n this.intervalSubscription = null;\r\n }\r\n\r\n const intervalPeriod: number = BtxLiveDataEquipmentViewTabComponent.ONE_SECOND_MILLISECONDS * this._equipmentWithTelemetry.acquisitionRate;\r\n this.intervalSubscription = interval(intervalPeriod).subscribe(() => {\r\n this._equipmentService.getEquipmentWithTelemetry(this._equipmentId);\r\n });\r\n\r\n this._isIntervalInitialized = true;\r\n }\r\n\r\n clearSubscriptions(): void {\r\n this.subscriptions.forEach(s => s.unsubscribe());\r\n this.subscriptions = null;\r\n\r\n if (this.intervalSubscription) {\r\n this.intervalSubscription.unsubscribe();\r\n this.intervalSubscription = null;\r\n }\r\n this._equipmentWithTelemetry = null;\r\n this._equipmentService.equipmentWithTelemetry$.next(null);\r\n }\r\n\r\n onClickGoBackLink(): void {\r\n this._equipmentWithTelemetry = null;\r\n this._router.navigate([`../${MainRoutePaths.BTX_LIVE_DATA}`], {\r\n relativeTo: this._route,\r\n });\r\n }\r\n\r\n onClickExportReport() {\r\n this.exportReportModal.show(this._liveDataLocations, this._locationId, this._equipmentId);\r\n }\r\n\r\n compareSensorsWithTelemetryByPosition(\r\n a: BtxSensorWithTelemetryViewModel,\r\n b: BtxSensorWithTelemetryViewModel,\r\n ) {\r\n const aString = `${sensorTypeLabels[a.type.id]}${sensorPositionLabels[a.position.id]\r\n }${equipmentSideLabels[a.side.id]}`;\r\n const bString = `${sensorTypeLabels[b.type.id]}${sensorPositionLabels[b.position.id]\r\n }${equipmentSideLabels[b.side.id]}`;\r\n\r\n if (aString < bString) {\r\n return -1;\r\n }\r\n\r\n if (aString > bString) {\r\n return 1;\r\n }\r\n\r\n return 0;\r\n }\r\n\r\n initEquipmentNodes(locations: BtxLiveDataLocationViewModel[]) {\r\n const equipmentId = this._btxLocationService.selectedEquipmentId$.value;\r\n const selectedLocation = locations.find(\r\n location =>\r\n location.equipments &&\r\n location.equipments.some(eq => eq.id === equipmentId),\r\n );\r\n\r\n const equipmentNodes: TreeNode[] = selectedLocation.equipments.map(\r\n EquipmentNameViewModel.toBtxTreeNode,\r\n );\r\n\r\n this._locationEquipmentsNodes = equipmentNodes;\r\n this._selectedEquipmentNode = equipmentNodes.find(\r\n eqn => eqn.data.id === equipmentId,\r\n );\r\n\r\n }\r\n\r\n toggleEquipmentsList(): void {\r\n this._isOpenEquipmentsList = !this._isOpenEquipmentsList;\r\n }\r\n\r\n onSelectEquipmentNode(event: any) {\r\n const { node } = event;\r\n\r\n if (node) {\r\n const { id } = node.data;\r\n\r\n this._isIntervalInitialized = false;\r\n this._isOpenEquipmentsList = false;\r\n this._loading = true;\r\n this._equipmentWithTelemetry = null;\r\n this._equipmentViewModel = null;\r\n this._btxLocationService.selectedEquipmentId$.next(id);\r\n this._equipmentName = node.label;\r\n }\r\n }\r\n}\r\n","export * from './btx-equipment-schema'\r\nexport * from './btx-equipment-sensors-grid'\r\nexport * from './btx-live-data-equipment-view-tab.component';","import { Component, OnInit, ViewChild } from '@angular/core';\r\nimport { FormBuilder, FormGroup } from '@angular/forms';\r\nimport { ActivatedRoute, Router } from '@angular/router';\r\nimport { TreeNode } from 'primeng';\r\nimport { Subscription } from 'rxjs';\r\n\r\nimport { LocationsBtxDataSourceService, RoleService } from '@services';\r\nimport { CommonFunctions, UserRoleEnum } from '../../../common';\r\n\r\nimport {\r\n BtxAccordionLocationItemViewModel,\r\n BtxLiveDataEquipmentViewModel,\r\n BtxLiveDataLocationViewModel,\r\n CompanyViewModel,\r\n} from '@models';\r\nimport { BtxNotificationFilterNodeTypeEnum, TutorialMenuEnum } from '../../enums';\r\nimport {\r\n EquipmentPlaceholderClassNames,\r\n MainRoutePaths,\r\n} from '../../constants';\r\nimport { TutorialPopupComponent } from '../popups';\r\n\r\n@Component({\r\n selector: 'greensleeves-btx-live-data-tab',\r\n templateUrl: './btx-live-data-tab.component.html',\r\n})\r\nexport class BtxLiveDataTabComponent implements OnInit {\r\n @ViewChild(TutorialPopupComponent, { read: false, static: false })\r\n private tutorialPopup: TutorialPopupComponent;\r\n\r\n _isOpenFilterList: boolean = false;\r\n _btxLocationNodes: TreeNode[] = [];\r\n _btxLocationNodesSelected: TreeNode[];\r\n _searchForm: FormGroup;\r\n _liveDataLocations: BtxLiveDataLocationViewModel[];\r\n _filteredLiveDataLocations: BtxAccordionLocationItemViewModel[];\r\n _searchedEquipmentIds: number[] = [];\r\n _filteredEquipmentIds: number[] = [];\r\n _loading: boolean = false;\r\n private subscriptions: Subscription[] = [];\r\n\r\n get _countSelectedFilter(): number {\r\n if (\r\n !this._btxLocationNodesSelected ||\r\n !this._btxLocationNodesSelected.length\r\n ) {\r\n return 0;\r\n }\r\n\r\n const selectedEquipment = this._btxLocationNodesSelected.filter((node) => {\r\n return node.data.nodeType === BtxNotificationFilterNodeTypeEnum.Equipment;\r\n });\r\n\r\n return selectedEquipment.length;\r\n }\r\n\r\n get isTutorialUser(): boolean {\r\n return this._roleService.userHasRole(UserRoleEnum.CompanyAdmin) || this._roleService.userHasRole(UserRoleEnum.CompanyUser);\r\n }\r\n\r\n constructor(\r\n private _btxLocationService: LocationsBtxDataSourceService,\r\n private _router: Router,\r\n private _route: ActivatedRoute,\r\n formBuilder: FormBuilder,\r\n private _roleService: RoleService\r\n ) {\r\n this._searchForm = formBuilder.group({\r\n searchPhrase: [''],\r\n });\r\n }\r\n\r\n ngOnInit() {\r\n this.setSubscriptions();\r\n }\r\n\r\n setSubscriptions(): void {\r\n const companiesSubscription =\r\n this._btxLocationService.companiesWithLocations$.subscribe(\r\n (companies) => {\r\n this.initCompanyWithLocationsNodes(companies);\r\n }\r\n );\r\n\r\n const liveDatalocationsSubscription =\r\n this._btxLocationService.liveDataLocations$.subscribe(\r\n liveDataLocations => {\r\n\r\n const sortedLocations = liveDataLocations\r\n .filter(l => l.equipments && l.equipments.length > 0)\r\n .map(location => ({\r\n ...location,\r\n equipments: location.equipments.sort((equipmentA, equipmentB) =>\r\n CommonFunctions.compareStrings(\r\n equipmentA.name,\r\n equipmentB.name,\r\n ),\r\n ),\r\n }))\r\n .sort((locationA, locationB) =>\r\n CommonFunctions.compareStrings(locationA.name, locationB.name),\r\n );\r\n\r\n this._liveDataLocations = sortedLocations;\r\n this.updateFilteredLiveDataLocations();\r\n this.expandPreviousSelectedEquipmentLocation();\r\n this._loading = false;\r\n },\r\n );\r\n\r\n const withEquipment = true;\r\n this._btxLocationService.getCompaniesWithLocations(withEquipment);\r\n if (!this._liveDataLocations || this._liveDataLocations.length == 0) {\r\n this._loading = true;\r\n this._btxLocationService.getLiveDataLocations();\r\n }\r\n this.subscriptions.push(\r\n companiesSubscription,\r\n liveDatalocationsSubscription\r\n );\r\n }\r\n\r\n getEquipmentPlaceholderClassName(\r\n equipment: BtxLiveDataEquipmentViewModel\r\n ): string {\r\n const equipmentPlaceholderClassName =\r\n EquipmentPlaceholderClassNames[equipment.type.id][equipment.subType.id];\r\n\r\n return equipmentPlaceholderClassName;\r\n }\r\n\r\n openFilterList() {\r\n this._isOpenFilterList = !this._isOpenFilterList;\r\n }\r\n\r\n onClickLocationFilter() {\r\n const equipmentIds: number[] = this._btxLocationNodesSelected\r\n .filter(\r\n (n) => n.data.nodeType === BtxNotificationFilterNodeTypeEnum.Equipment\r\n )\r\n .map((n) => n.data.id);\r\n\r\n this._filteredEquipmentIds = equipmentIds;\r\n\r\n this.updateFilteredLiveDataLocations();\r\n }\r\n\r\n onSearch() {\r\n const { value } = this._searchForm.controls.searchPhrase;\r\n const equipmentIds = this.findEquipmentIdsBySearchQuery(value);\r\n\r\n this._searchedEquipmentIds = equipmentIds;\r\n\r\n this.updateFilteredLiveDataLocations();\r\n }\r\n\r\n redirectToEquipment(equipment: BtxLiveDataEquipmentViewModel) {\r\n this._btxLocationService.selectedEquipmentId$.next(equipment.id);\r\n this._router.navigate(\r\n [`../${MainRoutePaths.BTX_LIVE_DATA_EQUIPMENT_VIEW}`],\r\n {\r\n relativeTo: this._route,\r\n }\r\n );\r\n }\r\n\r\n showTutorial() {\r\n this.tutorialPopup.showPopup(TutorialMenuEnum.BtxLiveData);\r\n }\r\n\r\n private initCompanyWithLocationsNodes(companies: CompanyViewModel[]) {\r\n const companyWithLocationNodes =\r\n companies &&\r\n companies\r\n .map(CompanyViewModel.toBtxTreeNode)\r\n .sort((a, b) => a.label.localeCompare(b.label));\r\n\r\n this._btxLocationNodes = companyWithLocationNodes;\r\n }\r\n\r\n private getAllAccordionLocations(): BtxAccordionLocationItemViewModel[] {\r\n if (!this._liveDataLocations) {\r\n return [];\r\n }\r\n\r\n const accordionLocations =\r\n this._liveDataLocations.map(\r\n (location) => {\r\n const accordionLocation: BtxAccordionLocationItemViewModel = {\r\n ...location,\r\n isActive: false,\r\n };\r\n\r\n return accordionLocation;\r\n }\r\n );\r\n\r\n return accordionLocations;\r\n }\r\n\r\n private getAccordionLocationsByEquipmentIds(\r\n equipmentIds: number[]\r\n ): BtxAccordionLocationItemViewModel[] {\r\n if (!this._liveDataLocations) {\r\n return;\r\n }\r\n\r\n const filteredAccordionLocations = this._liveDataLocations\r\n .map((location) => {\r\n const filteredEquipments: BtxLiveDataEquipmentViewModel[] =\r\n location.equipments.filter((e) => equipmentIds.includes(e.id));\r\n\r\n if (!filteredEquipments || !filteredEquipments.length) {\r\n return null;\r\n }\r\n\r\n const accordionLocation: BtxAccordionLocationItemViewModel = {\r\n ...location,\r\n isActive: true,\r\n equipments: filteredEquipments,\r\n };\r\n\r\n return accordionLocation;\r\n })\r\n .filter(Boolean);\r\n\r\n return filteredAccordionLocations;\r\n }\r\n\r\n private findEquipmentIdsBySearchQuery(searchQuery: string): number[] {\r\n if (searchQuery === '') {\r\n return [];\r\n }\r\n\r\n const allEquipments: BtxLiveDataEquipmentViewModel[] =\r\n this._liveDataLocations.reduce(\r\n (result, location) => result.concat(location.equipments),\r\n []\r\n );\r\n\r\n searchQuery = searchQuery.toLowerCase();\r\n\r\n const equipmentIds: number[] = allEquipments\r\n .filter((equipment) => {\r\n const equipmentName = equipment.name.toLowerCase();\r\n const equipmentSubTypeName = equipment.subType.name.toLowerCase();\r\n const equipmentTypeName = equipment.type.name.toLowerCase();\r\n\r\n return (\r\n equipmentName.includes(searchQuery) ||\r\n equipmentSubTypeName.includes(searchQuery) ||\r\n equipmentTypeName.includes(searchQuery)\r\n );\r\n })\r\n .map((e) => e.id);\r\n\r\n return equipmentIds.length === 0 ? [-1] : equipmentIds;\r\n }\r\n\r\n private updateFilteredLiveDataLocations() {\r\n const searchedIdsLength = this._searchedEquipmentIds.length;\r\n const filteredIdsLength = this._filteredEquipmentIds.length;\r\n\r\n if (searchedIdsLength === 0 && filteredIdsLength === 0) {\r\n this._filteredLiveDataLocations = this.getAllAccordionLocations();\r\n return;\r\n }\r\n\r\n const equipmentIds: number[] =\r\n searchedIdsLength > 0 && filteredIdsLength > 0\r\n ? this._searchedEquipmentIds.filter((id) =>\r\n this._filteredEquipmentIds.includes(id)\r\n )\r\n : filteredIdsLength > 0\r\n ? this._filteredEquipmentIds\r\n : this._searchedEquipmentIds;\r\n\r\n const filteredLiveDataLocations =\r\n this.getAccordionLocationsByEquipmentIds(equipmentIds);\r\n\r\n this._filteredLiveDataLocations = filteredLiveDataLocations;\r\n }\r\n\r\n private expandPreviousSelectedEquipmentLocation() {\r\n const previousEquipment = this._btxLocationService.selectedEquipmentId$.getValue();\r\n\r\n if (!previousEquipment) {\r\n return;\r\n }\r\n let previousEquipmentLocation: BtxAccordionLocationItemViewModel;\r\n this._filteredLiveDataLocations.forEach(x => {\r\n if (x.equipments.find(e => e.id == previousEquipment)) {\r\n previousEquipmentLocation = x;\r\n }\r\n })\r\n\r\n if (!previousEquipmentLocation) {\r\n return;\r\n }\r\n\r\n previousEquipmentLocation.isActive = true;\r\n setTimeout(() => {\r\n document.getElementById(`equipment_${previousEquipment}_card`).scrollIntoView({\r\n behavior: \"smooth\",\r\n block: \"center\",\r\n inline: \"nearest\"\r\n });\r\n this._btxLocationService.selectedEquipmentId$.next(null);\r\n },1);\r\n }\r\n}\r\n","export * from './btx-live-data-tab.component';\r\nexport * from './btx-live-data-equipment-view-tab';\r\n","import {\r\n Component,\r\n ElementRef,\r\n NgZone,\r\n OnDestroy,\r\n OnInit,\r\n ViewChild,\r\n} from '@angular/core';\r\nimport PerfectScrollbar from 'perfect-scrollbar';\r\nimport { TreeNode } from 'primeng/api';\r\nimport { Calendar } from 'primeng/calendar';\r\n\r\nimport {\r\n CompanyViewModel,\r\n BtxEventByPeriodPostModel,\r\n BtxEventGetModel,\r\n BtxEventsRequestModel,\r\n BtxEventViewModel,\r\n} from '@models';\r\nimport {\r\n EventDatasourceService,\r\n LocationsBtxDataSourceService,\r\n RoleService,\r\n} from '@services';\r\nimport {\r\n BtxEventTypesIconClass,\r\n BtxEventTypesLabel,\r\n EnglishDateLocale,\r\n DefaultDateRangeLabel,\r\n CalendarDefaultValues,\r\n} from '../../constants';\r\nimport {\r\n ColumnTypeEnum,\r\n BtxEventTypeEnum,\r\n DefaultDateRangeEnum,\r\n BtxNotificationFilterNodeTypeEnum,\r\n TutorialMenuEnum,\r\n ProjectEnum\r\n} from '../../enums';\r\nimport { FormBuilder, FormControl, FormGroup } from '@angular/forms';\r\nimport { Subscription } from 'rxjs';\r\nimport { UserRoleEnum } from './../../../common';\r\nimport { TutorialPopupComponent, ExportNotificationPopupComponent, BtxEquipmentDetailsPopupComponent } from '../popups';\r\n\r\n@Component({\r\n selector: 'greensleeves-btx-notifications-tab',\r\n templateUrl: './btx-notifications-tab.component.html',\r\n})\r\nexport class BtxNotificationsTabComponent implements OnInit, OnDestroy {\r\n static ALERT_TYPE = 'alertType';\r\n static SORT_ORDER_DEFAULT = 1;\r\n static EVENTS_PER_PAGE = 11;\r\n\r\n @ViewChild('calendar', { static: false })\r\n private calendar: Calendar;\r\n\r\n @ViewChild(TutorialPopupComponent, { read: false, static: false })\r\n private tutorialPopup: TutorialPopupComponent;\r\n\r\n @ViewChild(ExportNotificationPopupComponent, { read: false, static: false })\r\n private exportPopup: ExportNotificationPopupComponent;\r\n\r\n @ViewChild(BtxEquipmentDetailsPopupComponent, { read: false, static: false })\r\n private equipmentDetailsPopup: BtxEquipmentDetailsPopupComponent;\r\n\r\n _columnTypeEnum = ColumnTypeEnum;\r\n _sortField = BtxNotificationsTabComponent.ALERT_TYPE;\r\n _sortOrder = BtxNotificationsTabComponent.SORT_ORDER_DEFAULT;\r\n _gridData: BtxEventViewModel[];\r\n _ps: PerfectScrollbar;\r\n _alertTypes: { label: string; value: BtxEventTypeEnum }[] = [];\r\n _isOpenFilterList: boolean = false;\r\n _totalAlertsCount: number;\r\n _eventFilter: BtxEventByPeriodPostModel = new BtxEventByPeriodPostModel(\r\n BtxNotificationsTabComponent.EVENTS_PER_PAGE\r\n );\r\n _btxLocationNodes: TreeNode[] = [];\r\n _btxLocationNodesSelected: TreeNode[];\r\n _defaultDateRange: { label: string; value: DefaultDateRangeEnum }[] = [];\r\n _reportPeriod: FormGroup;\r\n _rangeDate: Date[] = [];\r\n _dataLocale: EnglishDateLocale = new EnglishDateLocale();\r\n _selectedDefaultDateRange: DefaultDateRangeEnum = null;\r\n _loading: boolean = false;\r\n _loadMore: boolean = false;\r\n\r\n private defaultDateRangePreviousState: DefaultDateRangeEnum = null;\r\n private subscriptions: Subscription[] = [];\r\n\r\n _columnsView = [\r\n {\r\n header: 'First Time:',\r\n columnType: ColumnTypeEnum.Date,\r\n dataField: 'firstNotificationTimeStamp',\r\n },\r\n {\r\n header: 'Last Time:',\r\n columnType: ColumnTypeEnum.Date,\r\n dataField: 'lastNotificationTimeStamp',\r\n },\r\n {\r\n header: 'Alert type:',\r\n columnType: ColumnTypeEnum.AlertIcon,\r\n dataField: 'btxAlertType',\r\n },\r\n {\r\n header: 'Message:',\r\n columnType: ColumnTypeEnum.AlertTitle,\r\n dataField: 'title',\r\n },\r\n ];\r\n\r\n get _startDate() {\r\n return this._rangeDate[0];\r\n }\r\n get _endDate() {\r\n return !this._rangeDate[1] ? this._rangeDate[0] : this._rangeDate[1];\r\n }\r\n\r\n get _isActiveAlert() {\r\n return !this._eventFilter.dateTimeFrom && !this._eventFilter.dateTimeTo;\r\n }\r\n\r\n get _isCompanyUsers(): boolean {\r\n return this._roleService.userHasRole(UserRoleEnum.CompanyAdmin) || this._roleService.userHasRole(UserRoleEnum.CompanyUser);\r\n }\r\n\r\n get getDataPickterYearRange(): string {\r\n const dateNow = new Date();\r\n return `${dateNow.getFullYear() - 3}:${dateNow.getFullYear()}`;\r\n }\r\n\r\n constructor(\r\n private _el: ElementRef,\r\n private _zone: NgZone,\r\n private _eventDatasourceService: EventDatasourceService,\r\n private _btxLocationService: LocationsBtxDataSourceService,\r\n private _formBuilder: FormBuilder,\r\n private _roleService: RoleService,\r\n ) { }\r\n\r\n ngOnInit() {\r\n this.setSubscriptions();\r\n this.reInitScrollBar(0);\r\n this.resetCalendar();\r\n\r\n for (const [key, value] of Object.entries(BtxEventTypesLabel)) {\r\n this._alertTypes.push({ label: value, value: Number(key) });\r\n }\r\n\r\n for (const [key, value] of Object.entries(DefaultDateRangeLabel)) {\r\n this._defaultDateRange.push({ label: value, value: Number(key) });\r\n }\r\n\r\n this._reportPeriod = this._formBuilder.group({\r\n selectedPeriod: [this._rangeDate],\r\n dateRange: [],\r\n startPeriod: [this._startDate],\r\n endOfPeriod: [this._endDate],\r\n });\r\n\r\n this.onUpdateEventsByFilter();\r\n }\r\n\r\n ngOnDestroy() {\r\n this._ps && this._ps.destroy();\r\n this._ps = null;\r\n\r\n this.clearSubscriptions();\r\n }\r\n\r\n ngAfterViewInit() {\r\n this.reInitScrollBar(0);\r\n }\r\n\r\n setSubscriptions(): void {\r\n const companiesSubscription =\r\n this._btxLocationService.companiesWithLocations$.subscribe(\r\n (companies) => {\r\n this._btxLocationNodes = this.initCompanyWithLocationsNodes(companies);\r\n }\r\n );\r\n\r\n const withEquipment = true;\r\n this._btxLocationService.getCompaniesWithLocations(withEquipment);\r\n\r\n this.subscriptions.push(companiesSubscription);\r\n }\r\n\r\n clearSubscriptions(): void {\r\n this.subscriptions.forEach((s) => s.unsubscribe());\r\n this.subscriptions = null;\r\n }\r\n\r\n getAlertClassByType(alert: BtxEventTypeEnum) {\r\n return BtxEventTypesIconClass[alert];\r\n }\r\n\r\n getAlertLabelByType(alert: BtxEventTypeEnum) {\r\n return BtxEventTypesLabel[alert];\r\n }\r\n\r\n openFilterList() {\r\n this._isOpenFilterList = !this._isOpenFilterList;\r\n }\r\n\r\n async onUpdateEventsByFilter() {\r\n this._loading = true;\r\n this._eventFilter.currentPage = 1;\r\n let result = (await this._eventDatasourceService.getBtxEventsByFilter(\r\n this._eventFilter\r\n )) as BtxEventsRequestModel;\r\n if (result) {\r\n this._gridData = result.events.map((i) =>\r\n BtxEventGetModel.toViewModel(i)\r\n );\r\n this._totalAlertsCount = result.totalCount;\r\n }\r\n this._loading = false;\r\n }\r\n\r\n async getMoreEvents() {\r\n this._loadMore = true;\r\n this._eventFilter.currentPage++;\r\n let result = (await this._eventDatasourceService.getBtxEventsByFilter(\r\n this._eventFilter\r\n )) as BtxEventsRequestModel;\r\n if (result) {\r\n this._gridData.push(\r\n ...result.events.map((i) => BtxEventGetModel.toViewModel(i))\r\n );\r\n }\r\n this._loadMore = false;\r\n }\r\n\r\n onClickLocationFilter() {\r\n this._eventFilter.equipmentIds = [];\r\n this._eventFilter.locationIds = [];\r\n this._btxLocationNodesSelected.forEach((i) => {\r\n switch (i.data.nodeType) {\r\n case BtxNotificationFilterNodeTypeEnum.Location:\r\n this._eventFilter.locationIds.push(i.data.id);\r\n break;\r\n case BtxNotificationFilterNodeTypeEnum.Equipment:\r\n this._eventFilter.equipmentIds.push(i.data.id);\r\n break;\r\n }\r\n });\r\n\r\n this.onUpdateEventsByFilter();\r\n }\r\n\r\n async onBlurControl(control: FormControl) {\r\n control.markAsUntouched();\r\n }\r\n\r\n async onFocusControl(control: FormControl) {\r\n control.markAsTouched();\r\n }\r\n\r\n setFastDate(fastRange: DefaultDateRangeEnum) {\r\n let endDate = new Date();\r\n let startDate = new Date();\r\n endDate.setHours(0, 0, 0, 0);\r\n startDate.setHours(0, 0, 0, 0);\r\n this._rangeDate = [];\r\n switch (fastRange) {\r\n case DefaultDateRangeEnum.Week:\r\n startDate.setDate(\r\n startDate.getDate() - CalendarDefaultValues.defaultOneWeekDays\r\n );\r\n break;\r\n case DefaultDateRangeEnum.Month:\r\n startDate.setDate(\r\n startDate.getDate() - CalendarDefaultValues.defaultOneMonthDays\r\n );\r\n break;\r\n }\r\n this._selectedDefaultDateRange = fastRange;\r\n this._rangeDate.push(startDate);\r\n this._rangeDate.push(endDate);\r\n }\r\n\r\n getCurrentEvents() {\r\n this.resetCalendar();\r\n this._selectedDefaultDateRange = null;\r\n this._eventFilter.dateTimeFrom = null;\r\n this._eventFilter.dateTimeTo = null;\r\n this.onUpdateEventsByFilter();\r\n }\r\n\r\n onApplyDateRangeFilter() {\r\n if (this._rangeDate == undefined || this._rangeDate.length == 0) {\r\n this.resetCalendar();\r\n }\r\n if (this._rangeDate[1] == undefined || this._rangeDate[1] == null) {\r\n this._rangeDate[1] = this._rangeDate[0];\r\n }\r\n this._eventFilter.dateTimeFrom =\r\n (this._rangeDate[0].getTime() /\r\n CalendarDefaultValues.defaultOneSecondMilliseconds) |\r\n 0;\r\n this._eventFilter.dateTimeTo =\r\n (this._rangeDate[1].getTime() /\r\n CalendarDefaultValues.defaultOneSecondMilliseconds) |\r\n 0;\r\n this.onUpdateEventsByFilter();\r\n this.defaultDateRangePreviousState = this._selectedDefaultDateRange;\r\n this.calendar.toggle();\r\n }\r\n\r\n onSeclectCalendar() {\r\n this._selectedDefaultDateRange = null;\r\n }\r\n\r\n onCloseCalendar() {\r\n if (\r\n this._eventFilter.dateTimeFrom == null &&\r\n this._eventFilter.dateTimeTo == null\r\n ) {\r\n this.resetCalendar();\r\n return;\r\n }\r\n if (this.defaultDateRangePreviousState != null) {\r\n this.setFastDate(this.defaultDateRangePreviousState);\r\n return;\r\n }\r\n this._rangeDate = [];\r\n this._rangeDate.push(\r\n new Date(\r\n this._eventFilter.dateTimeFrom *\r\n CalendarDefaultValues.defaultOneSecondMilliseconds\r\n )\r\n );\r\n this._rangeDate.push(\r\n new Date(\r\n this._eventFilter.dateTimeTo *\r\n CalendarDefaultValues.defaultOneSecondMilliseconds\r\n )\r\n );\r\n }\r\n\r\n showExport() {\r\n const locationNodes: TreeNode[] = [];\r\n const locations = this.initCompanyWithLocationsNodes(this._btxLocationService.companiesWithLocations$.getValue());\r\n locations.forEach(x => {\r\n if (x.children.length > 0) {\r\n locationNodes.push(...x.children);\r\n }\r\n }\r\n );\r\n this.exportPopup.onShow(locationNodes, ProjectEnum.Btx);\r\n }\r\n\r\n onClickEquipmentDetails(equipmentId: number) {\r\n this.equipmentDetailsPopup.ShowWithLoad(equipmentId);\r\n }\r\n\r\n reInitScrollBar(timeout?: number, withCheck = false) {\r\n if (withCheck) {\r\n return;\r\n }\r\n\r\n if (this._ps) {\r\n this._ps.destroy();\r\n }\r\n\r\n const createScrollbarFunc = () => {\r\n this._zone.runOutsideAngular(() => {\r\n try {\r\n const el = this._el.nativeElement.querySelector(\r\n '.ui-table-scrollable-view.ui-table-unfrozen-view .ui-table-scrollable-body'\r\n );\r\n if (!el) {\r\n return;\r\n }\r\n\r\n this._ps = new PerfectScrollbar(el, {\r\n wheelSpeed: 2,\r\n wheelPropagation: true,\r\n minScrollbarLength: 20,\r\n });\r\n } catch (error) { }\r\n });\r\n };\r\n\r\n if (timeout) {\r\n setTimeout(() => {\r\n createScrollbarFunc();\r\n }, timeout);\r\n } else {\r\n createScrollbarFunc();\r\n }\r\n }\r\n\r\n private resetCalendar() {\r\n this.defaultDateRangePreviousState = null;\r\n this._selectedDefaultDateRange = null;\r\n this._rangeDate = [];\r\n let today = new Date();\r\n today.setHours(0, 0, 0, 0);\r\n this._rangeDate.push(today);\r\n this._rangeDate.push(today);\r\n }\r\n\r\n private initCompanyWithLocationsNodes(companies: CompanyViewModel[]): TreeNode[] {\r\n const companyWithLocationNodes =\r\n companies &&\r\n companies\r\n .map(CompanyViewModel.toBtxTreeNode)\r\n .sort((a, b) => a.label.localeCompare(b.label));\r\n\r\n return companyWithLocationNodes;\r\n }\r\n\r\n showTutorial() {\r\n this.tutorialPopup.showPopup(TutorialMenuEnum.BtxNotifications);\r\n }\r\n}\r\n","export * from './btx-notifications-tab.component';\r\n","import { Component, OnInit, AfterViewInit, OnDestroy, ElementRef, NgZone, Output, EventEmitter, ViewChild } from '@angular/core';\r\nimport PerfectScrollbar from 'perfect-scrollbar';\r\nimport { Subscription } from 'rxjs';\r\nimport { FormBuilder, FormGroup } from '@angular/forms';\r\n\r\nimport { ColumnTypeEnum, PLCDeviceEnum, ProjectEnum, } from '../../../enums';\r\nimport { LocationViewModel, LocationBtxEquipmentViewModel, LocationBtxViewModel } from '../../../models';\r\nimport { LocationsBtxDataSourceService } from '../../../services';\r\nimport { DeviceCommunicationPopupComponent, EquipmentPopupComponent, LocationBtxKtxDeletePopupComponent } from '../../popups';\r\nimport { UploadBtxLocationConfigurationFilePopupComponent } from '../../popups/upload-btx-location-configuration-file-popup';\r\nimport { LocalStorageService, UserRoleEnum } from '../../../../common';\r\n\r\n@Component({\r\n selector: 'greensleeves-btx-grid',\r\n templateUrl: './btx-grid.component.html'\r\n})\r\n\r\nexport class BtxGridComponent implements OnInit, OnDestroy, AfterViewInit {\r\n static LOCATION_NAME_KEY = 'locationName';\r\n static COMPANY_NAME_KEY = 'companyName';\r\n static SORT_ORDER_DEFAULT = 1;\r\n\r\n @ViewChild(EquipmentPopupComponent, { read: false, static: false })\r\n _equipmentPopup: EquipmentPopupComponent;\r\n\r\n @ViewChild(LocationBtxKtxDeletePopupComponent, { read: false, static: false })\r\n _locationBtxDeletePopup: LocationBtxKtxDeletePopupComponent;\r\n\r\n @ViewChild(DeviceCommunicationPopupComponent, { read: false, static: false })\r\n private deviceCommunicationPopup: DeviceCommunicationPopupComponent;\r\n\r\n @ViewChild(UploadBtxLocationConfigurationFilePopupComponent, { read: false, static: false })\r\n private _uploadBtxLocationConfigurationFilePopupComponent: UploadBtxLocationConfigurationFilePopupComponent;\r\n\r\n @Output()\r\n onEditClicked = new EventEmitter();\r\n\r\n _columnTypeEnum = ColumnTypeEnum;\r\n _deviceEnum = PLCDeviceEnum;\r\n _sortField = BtxGridComponent.LOCATION_NAME_KEY;\r\n _sortOrder = BtxGridComponent.SORT_ORDER_DEFAULT;\r\n _gridData: LocationBtxViewModel[];\r\n _companyNameKey = BtxGridComponent.COMPANY_NAME_KEY;\r\n _locationNameKey = BtxGridComponent.LOCATION_NAME_KEY;\r\n _searchPhrase: string = '';\r\n _ps: PerfectScrollbar;\r\n _initializeDeviceKey = 'isInitialized';\r\n _role: UserRoleEnum;\r\n\r\n get _isServiceUser(): boolean {\r\n return this._role === UserRoleEnum.ServiceUser;\r\n }\r\n\r\n _columnsView = [\r\n { header: '', columnType: ColumnTypeEnum.Hardware, width: 50, dataField: 'deviceLabel' },\r\n { header: 'Location', columnType: ColumnTypeEnum.LocationName, dataField: BtxGridComponent.LOCATION_NAME_KEY },\r\n { header: 'Company', columnType: ColumnTypeEnum.Company, dataField: BtxGridComponent.COMPANY_NAME_KEY, width: 130 },\r\n { header: 'P1AM MAC Address', columnType: ColumnTypeEnum.P1AMMac, dataField: 'deviceMacAddress' },\r\n { header: 'P1AM IP Address', columnType: ColumnTypeEnum.P1AMIp, dataField: 'deviceIp' },\r\n { header: 'BTX IP Address', columnType: ColumnTypeEnum.IPAddress, dataField: 'btxIp' },\r\n { header: 'Port', columnType: ColumnTypeEnum.Port, dataField: 'btxPort', width: 90 },\r\n { header: 'Acq rate', columnType: ColumnTypeEnum.AcquisitionRate, dataField: 'acquisitionRate', width: 90 },\r\n ]\r\n\r\n _frozenColumns = [\r\n { header: '', columnType: ColumnTypeEnum.InitializeDevice, width: 46 },\r\n { header: '', columnType: ColumnTypeEnum.DownloadConnectionFile, width: 46 },\r\n { header: '', columnType: ColumnTypeEnum.UploadConfigFile, width: 46 },\r\n { header: '', columnType: ColumnTypeEnum.Equipment, width: 46 },\r\n { header: '', columnType: ColumnTypeEnum.Edit, width: 46 },\r\n { header: '', columnType: ColumnTypeEnum.Delete, width: 46 }\r\n ]\r\n\r\n _locationsSubscription: Subscription;\r\n _locationsErrorsSubscription: Subscription;\r\n\r\n _searchForm: FormGroup;\r\n _lastSearchPhrase: string;\r\n\r\n _initLoaders: { [key: number]: boolean } = {};\r\n _loading: boolean = false;\r\n get _frozenWidth() {\r\n return `${this._frozenColumns.reduce((a, v) => a + v.width, 0)}px`;\r\n }\r\n\r\n constructor(\r\n private _locationsBtxDataSourceService: LocationsBtxDataSourceService,\r\n private _localStorageService: LocalStorageService,\r\n private _el: ElementRef,\r\n private _zone: NgZone,\r\n formBuilder: FormBuilder) {\r\n this._searchForm = formBuilder.group({\r\n searchPhrase: [''],\r\n });\r\n }\r\n\r\n ngOnInit() {\r\n const info = this._localStorageService.getLoginInfo();\r\n this._role = info ? info.role : null;\r\n\r\n if (!this._isServiceUser) {\r\n this._frozenColumns = this._frozenColumns.filter(x => x.columnType !== ColumnTypeEnum.UploadConfigFile);\r\n }\r\n\r\n this.reInitScrollBar(0);\r\n this._locationsSubscription = this._locationsBtxDataSourceService.locationsBtx$.subscribe(items => {\r\n this._gridData = items;\r\n this._loading = false;\r\n });\r\n this._loading = true;\r\n this._locationsBtxDataSourceService.get();\r\n }\r\n\r\n ngOnDestroy() {\r\n this._locationsSubscription && this._locationsSubscription.unsubscribe();\r\n this._locationsSubscription = null;\r\n\r\n this._locationsErrorsSubscription && this._locationsErrorsSubscription.unsubscribe();\r\n this._locationsErrorsSubscription = null;\r\n\r\n this._ps && this._ps.destroy();\r\n this._ps = null;\r\n }\r\n\r\n ngAfterViewInit() {\r\n this.reInitScrollBar(0);\r\n }\r\n\r\n async onEdit(location: LocationViewModel) {\r\n await this._locationsBtxDataSourceService.markLocationForOthersAsInUpdate(location.id);\r\n this.onEditClicked.emit(location);\r\n }\r\n\r\n async onManageEquipmentClick(location: LocationBtxEquipmentViewModel) {\r\n await this._locationsBtxDataSourceService.markLocationEquipmentsForOthersAsInUpdate(location.id);\r\n let locationEquipment = await this._locationsBtxDataSourceService.getEquipment(location.deviceId);\r\n locationEquipment = {\r\n ...locationEquipment,\r\n ...location\r\n }\r\n this._equipmentPopup.show(locationEquipment);\r\n }\r\n\r\n async onClickInitialized(location: LocationBtxViewModel) {\r\n if (!location) {\r\n return;\r\n }\r\n\r\n location.isDeviceInInitialization = true;\r\n location.isInitialized = await this._locationsBtxDataSourceService.initializeDeviceConfiguration(location.id) as boolean;\r\n location.isDeviceInInitialization = false;\r\n }\r\n\r\n async onClickDownloadFile(location: LocationBtxViewModel) {\r\n if (!location) {\r\n return;\r\n }\r\n\r\n if (location.plcDeviceConnection == this._deviceEnum.Raspberry) {\r\n this.deviceCommunicationPopup.onShow({ locationName: location.locationName, locationId: location.id, deviceId: location.deviceId, project: ProjectEnum.Btx });\r\n } else {\r\n let result = await this._locationsBtxDataSourceService.downloadConnectionFile(location.id);\r\n\r\n if (result instanceof Blob) {\r\n const url = URL.createObjectURL(result as Blob);\r\n let downloadLink = document.createElement('a');\r\n downloadLink.href = url;\r\n downloadLink.download = 'configuration.zip';\r\n downloadLink.click();\r\n }\r\n }\r\n }\r\n\r\n async onClickUploadLocationConfigurationFile(location: LocationBtxViewModel) {\r\n if (!location) {\r\n return;\r\n }\r\n\r\n this._uploadBtxLocationConfigurationFilePopupComponent.show(location);\r\n }\r\n\r\n public reInitScrollBar(timeout?: number, withCheck = false) {\r\n if (withCheck) {\r\n return;\r\n }\r\n\r\n if (this._ps) {\r\n this._ps.destroy();\r\n }\r\n\r\n const createScrollbarFunc = () => {\r\n this._zone.runOutsideAngular(() => {\r\n try {\r\n const el = this._el.nativeElement.querySelector('.ui-table-scrollable-view.ui-table-unfrozen-view .ui-table-scrollable-body');\r\n if (!el) {\r\n return;\r\n }\r\n\r\n this._ps = new PerfectScrollbar(el, {\r\n wheelSpeed: 2,\r\n wheelPropagation: true,\r\n minScrollbarLength: 20\r\n });\r\n } catch (error) {\r\n }\r\n })\r\n };\r\n\r\n if (timeout) {\r\n setTimeout(() => {\r\n createScrollbarFunc();\r\n }, timeout);\r\n } else {\r\n createScrollbarFunc();\r\n }\r\n }\r\n\r\n _updateScroll() {\r\n this._ps && this._ps.update();\r\n }\r\n\r\n onUpdateLastSearch() {\r\n this._lastSearchPhrase = this._searchForm.controls.searchPhrase.value;\r\n }\r\n\r\n async onClickDelete(location: LocationBtxViewModel) {\r\n if (!location) {\r\n return;\r\n }\r\n this._locationBtxDeletePopup.show(location);\r\n }\r\n}","export * from './btx-grid.component';\r\n","import { Component, OnInit, ViewChild } from '@angular/core';\r\n\r\nimport { CompaniesDataSourceService, LocationsBtxDataSourceService } from '../../services';\r\nimport { BtxLocationEditPopupComponent } from '../popups';\r\nimport { LocationBtxViewModel } from '../../models';\r\n\r\n@Component({\r\n selector: 'greensleeves-btx-tab',\r\n templateUrl: './btx-tab.component.html'\r\n})\r\nexport class BtxTabComponent implements OnInit {\r\n @ViewChild(BtxLocationEditPopupComponent, { read: false, static: false })\r\n private _editModal: BtxLocationEditPopupComponent;\r\n \r\n constructor(\r\n private _companiesService: CompaniesDataSourceService,\r\n private _locationsBtxDataSourceService: LocationsBtxDataSourceService,\r\n ) {}\r\n\r\n ngOnInit() {\r\n this._companiesService.get();\r\n }\r\n\r\n async onEdit(location?: LocationBtxViewModel) {\r\n if (location) {\r\n let locationEquipment = await this._locationsBtxDataSourceService.getEquipment(location.deviceId);\r\n locationEquipment = {\r\n ...location,\r\n ...locationEquipment\r\n }\r\n \r\n this._editModal.show(locationEquipment);\r\n } else {\r\n this._editModal.show();\r\n }\r\n }\r\n}\r\n","export * from './btx-grid';\r\nexport * from './btx-tab.component';\r\n","import { Component, Input, OnDestroy, OnInit, Output, EventEmitter } from '@angular/core';\r\nimport { Subscription } from 'rxjs';\r\n\r\nimport { AqsCommoditiesDatasourceService } from './../../../../services';\r\nimport { AqsCommoditiesViewModel } from '@models';\r\n\r\n@Component({\r\n selector: 'greensleeves-aqs-commodities',\r\n templateUrl: './aqs-commodities.component.html',\r\n styles: []\r\n})\r\nexport class AqsCommoditiesComponent implements OnInit, OnDestroy {\r\n\r\n @Input() commodities: AqsCommoditiesViewModel[];\r\n @Output() onChangedCommoditiesList = new EventEmitter();\r\n\r\n _commoditiesOptions: { groupCommodities: { id: number, name: string, value: AqsCommoditiesViewModel }[] }[];\r\n _selectCommodities: { id: number, name: string, value: AqsCommoditiesViewModel }[] = [];\r\n\r\n private _commoditiesSubscription: Subscription;\r\n\r\n constructor(private _commodityService: AqsCommoditiesDatasourceService) { }\r\n\r\n ngOnInit() {\r\n this._commoditiesSubscription = this._commodityService.commodities$.subscribe((items) => {\r\n if (items) {\r\n this._commoditiesOptions = [];\r\n let columnGroup: { id: number, name: string, value: AqsCommoditiesViewModel }[] = [];\r\n let countOneColumn = Math.ceil(items.length / 4);\r\n let index = 0;\r\n items.forEach(item => {\r\n columnGroup.push({ id: item.id, name: item.name, value: item });\r\n index++\r\n if (index == countOneColumn) {\r\n index = 0;\r\n this._commoditiesOptions.push({ groupCommodities: columnGroup });\r\n columnGroup = [];\r\n }\r\n });\r\n if (columnGroup.length != 0) {\r\n this._commoditiesOptions.push({ groupCommodities: columnGroup });\r\n }\r\n\r\n this._selectCommodities = [];\r\n if (this.commodities && this.commodities.length > 0) {\r\n this._commoditiesOptions.forEach(comgroup => {\r\n this.commodities.forEach(item => {\r\n this._selectCommodities.push(...comgroup.groupCommodities.filter(c => c.id == item.id));\r\n });\r\n });\r\n }\r\n }\r\n });\r\n this._commodityService.getAll();\r\n }\r\n\r\n ngOnDestroy() {\r\n this._commoditiesSubscription.unsubscribe();\r\n }\r\n\r\n onClickCheckBox(control) {\r\n if (this._selectCommodities && this._selectCommodities.length > 6) {\r\n this._selectCommodities.pop();\r\n control.checked = false;\r\n }\r\n\r\n this.commodities.splice(0, this.commodities.length);\r\n this._selectCommodities.forEach(item => this.commodities.push(item.value));\r\n this.onChangedCommoditiesList.emit();\r\n }\r\n\r\n}\r\n","export * from './aqs-commodities.component';","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\r\n\r\nimport { AqsCoverSheetModel } from '@models';\r\nimport { CoverSheetConst } from '../../../../constants';\r\nimport { AqsCoverSheetTypeEnum } from '../../../../enums';\r\nimport { AqsQuoteStorageDataSourceService } from './../../../../services';\r\n\r\n@Component({\r\n selector: 'greensleeves-aqs-cover-sheet',\r\n templateUrl: './aqs-cover-sheet.component.html',\r\n styleUrls: []\r\n})\r\nexport class AqsCoverSheetComponent implements OnInit {\r\n @Output() onChangedCoverSheetModel = new EventEmitter();\r\n\r\n @Input() _coverSheetDesc: AqsCoverSheetModel;\r\n @Input() _linkComputationSheetId: number;\r\n @Output() _linkComputationSheetIdChange = new EventEmitter();\r\n\r\n isSaveWasCalled: boolean = false;\r\n _constrTypes: { label: string, value: AqsCoverSheetTypeEnum }[] = [];\r\n _computationSheetsOptions: { label: string, value: number }[] = [];\r\n link: number = null;\r\n\r\n constructor(private _quoteDataService: AqsQuoteStorageDataSourceService) { }\r\n\r\n ngOnInit() {\r\n for (const [key, value] of Object.entries(CoverSheetConst)) {\r\n this._constrTypes.push({ label: value, value: Number(key) });\r\n }\r\n\r\n let compSheets = this._quoteDataService.bindingComputationSheets$.getValue();\r\n this._computationSheetsOptions.push({ label: 'None', value: null });\r\n compSheets.forEach(item => {\r\n this._computationSheetsOptions.push({ label: item.coverSheet.quoteNumber, value: item.id });\r\n });\r\n if (!this._coverSheetDesc) this._coverSheetDesc = new AqsCoverSheetModel();\r\n }\r\n\r\n checkModelBeforeSave(): boolean {\r\n this.isSaveWasCalled = true;\r\n let canToSave = true;\r\n\r\n if (\r\n this._coverSheetDesc.numberTypical == null || this._coverSheetDesc.numberTypical > 9999 ||\r\n this._coverSheetDesc.customerName == null || this._coverSheetDesc.customerName.length > 50 ||\r\n this._coverSheetDesc.companyName == null || this._coverSheetDesc.companyName.length > 50 ||\r\n this._coverSheetDesc.quoteNumber == null || this._coverSheetDesc.quoteNumber.length > 50\r\n ) {\r\n canToSave = false;\r\n }\r\n if (this._coverSheetDesc.city) this._coverSheetDesc.city.length > 50 ? canToSave = false : canToSave = true;\r\n if (this._coverSheetDesc.contact) this._coverSheetDesc.contact.length > 50 ? canToSave = false : canToSave = true;\r\n if (this._coverSheetDesc.locationName) this._coverSheetDesc.locationName.length > 50 ? canToSave = false : canToSave = true;\r\n if (this._coverSheetDesc.locationCity) this._coverSheetDesc.locationCity.length > 50 ? canToSave = false : canToSave = true;\r\n if (this._coverSheetDesc.comment) this._coverSheetDesc.comment.length > 75 ? canToSave = false : canToSave = true;\r\n\r\n return canToSave;\r\n }\r\n\r\n changeCoverSheetModel() {\r\n this.onChangedCoverSheetModel.emit();\r\n }\r\n\r\n changeLinkComputationSheet() {\r\n this.onChangedCoverSheetModel.emit();\r\n this._linkComputationSheetIdChange.emit(this._linkComputationSheetId);\r\n if (this._linkComputationSheetId != null) {\r\n let computationCover = this._quoteDataService.bindingComputationSheets$.getValue().find(i => i.id == this._linkComputationSheetId);\r\n if (computationCover) {\r\n this._coverSheetDesc.customerName = computationCover.coverSheet.customerName;\r\n this._coverSheetDesc.companyName = computationCover.coverSheet.companyName;\r\n this._coverSheetDesc.quoteNumber = computationCover.coverSheet.quoteNumber;\r\n this._coverSheetDesc.city = computationCover.coverSheet.city;\r\n this._coverSheetDesc.contact = computationCover.coverSheet.contact;\r\n this._coverSheetDesc.locationName = computationCover.coverSheet.locationName;\r\n this._coverSheetDesc.locationCity = computationCover.coverSheet.locationCity;\r\n this._coverSheetDesc.comment = computationCover.coverSheet.comment;\r\n }\r\n }\r\n }\r\n}\r\n","export * from './aqs-cover-sheet.component';","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\r\n\r\nimport {\r\n AqsAirFlowDataViewModel, AqsCommoditiesViewModel,\r\n AqsExhausterFanModel, AqsExhausterModel, AqsExhausterSelectedFanModel,\r\n AqsExhausterViewModel, AqsRoundStorageWiewModel,\r\n FlatStorageParams\r\n} from '@models';\r\n\r\nimport { AqsSessionTypeEnum } from '../../../../enums';\r\n\r\n@Component({\r\n selector: 'greensleeves-aqs-exhauster-recommendations',\r\n templateUrl: './aqs-exhauster-recommendations.component.html',\r\n styleUrls: []\r\n})\r\nexport class AqsExhausterRecommendationsComponent implements OnInit {\r\n @Output() onChangedExhausterModel = new EventEmitter();\r\n\r\n @Input() _exhausterViewModel: AqsExhausterViewModel;\r\n @Input() sessionType: AqsSessionTypeEnum;\r\n @Input() storageConfiguration: any;\r\n @Input() commodities: AqsCommoditiesViewModel[];\r\n @Input() airflowData: AqsAirFlowDataViewModel[];\r\n @Input() numberFans: number;\r\n\r\n _fansTable: AqsExhausterFanModel[];\r\n _selectedFanViewTable: AqsExhausterSelectedFanModel;\r\n _lowerLarge: number;\r\n _lowerSmall: number;\r\n _largest: number;\r\n _smallest: number;\r\n _selectedFan: AqsExhausterFanModel;\r\n pitch: boolean;\r\n fansData: AqsExhausterModel[] = [\r\n { name: '24 in 2 hp', exhauster: 10200, fanType: 'Vertical Axial' },\r\n { name: '24 in 2 hp', exhauster: 10200, fanType: 'Square Tapered' },\r\n ];\r\n\r\n _cols = [\r\n { field: 'code', header: 'Code' },\r\n { field: 'fanType', header: 'Fan type' },\r\n { field: 'model', header: 'Model' },\r\n { field: 'qty1', header: 'Qty 1' },\r\n { field: 'qty2', header: 'Qty 2' },\r\n { field: 'safety1', header: 'Safety 1 (%)' },\r\n { field: 'safety2', header: 'Safety 2 (%)' },\r\n { field: 'mgva1', header: 'MGVa 1 (sq ft.)' },\r\n { field: 'mgva2', header: 'MGVa 2 (sq ft.)' },\r\n ];\r\n\r\n constructor() { }\r\n\r\n ngOnInit() {\r\n this._fansTable = [];\r\n this._selectedFanViewTable = new AqsExhausterSelectedFanModel();\r\n this._selectedFan = new AqsExhausterFanModel();\r\n this.checkForPitch();\r\n this.onCalcualteFirstStart();\r\n }\r\n\r\n checkForPitch() {\r\n if (this.sessionType == AqsSessionTypeEnum.RoundSessionType) {\r\n this.pitch = (this.storageConfiguration as AqsRoundStorageWiewModel).roofPitch > 0;\r\n } else if (this.sessionType == AqsSessionTypeEnum.FlatSessionType) {\r\n this.pitch = (this.storageConfiguration as FlatStorageParams).roof > 0;\r\n } else {\r\n console.log('Session type is undefined');\r\n this.pitch = false;\r\n }\r\n }\r\n\r\n onCalcualteFirstStart() {\r\n this.onCalculateLargestSmallest();\r\n this.onCalculateLowerLargeLowerSmall();\r\n this.onCalculateExhausters();\r\n\r\n if (this.CheckForRecoverData()) {\r\n this.onCalcualteRecoverData();\r\n } else {\r\n this.onCalculateRecommendedFan();\r\n this.saveDataToModel();\r\n }\r\n\r\n this.checkForEmptyFields();\r\n }\r\n\r\n private saveDataToModel() {\r\n this._exhausterViewModel.code = this._selectedFanViewTable.code;\r\n this._exhausterViewModel.qty = this._selectedFanViewTable.qty;\r\n }\r\n\r\n private CheckForRecoverData(): boolean {\r\n if (this._exhausterViewModel.qty || this._exhausterViewModel.code) {\r\n return true;\r\n }\r\n\r\n return false;\r\n }\r\n\r\n onChangeQuantity() {\r\n if (this._selectedFanViewTable.qty < 1) {\r\n this._selectedFanViewTable.qty = this._exhausterViewModel.qty\r\n } else {\r\n if (this._selectedFanViewTable.qty > 99) {\r\n this._selectedFanViewTable.qty = 99;\r\n }\r\n\r\n this._exhausterViewModel.qty = this._selectedFanViewTable.qty;\r\n\r\n this.onCalculateSelectedFan();\r\n this.changeExhausterModel();\r\n }\r\n }\r\n\r\n private onCalcualteRecoverData() {\r\n this._selectedFan = this._fansTable.find(fan => fan.code === this._exhausterViewModel.code);\r\n this._selectedFanViewTable.code = this._exhausterViewModel.code;\r\n this._selectedFanViewTable.qty = this._exhausterViewModel.qty;\r\n this.onCalculateSelectedFan();\r\n }\r\n\r\n private onCalculateSelectedFan() {\r\n this._selectedFanViewTable.safety = this.fansData[this._exhausterViewModel.code].exhauster * this._selectedFanViewTable.qty / this._lowerLarge;\r\n //SAFETY=(EXHAUSTER(EXHAUSTERCODE)*QTY)/LOWERLARGE\r\n this._selectedFanViewTable.gva = this._getRoundToOneDecimalPlaces((this.fansData[this._exhausterViewModel.code].exhauster * this._selectedFanViewTable.qty - this._lowerSmall) / 1000);\r\n //GVA=((EXHAUSTER(EXHAUSTERCODE)*QTY)-LOWERSMALL)/1000\r\n this._selectedFanViewTable.safety = Math.round(this._selectedFanViewTable.safety * 100 - 100);\r\n this._selectedFanViewTable.model = this._fansTable[this._exhausterViewModel.code].model;\r\n }\r\n\r\n private onCalculateLargestSmallest() {\r\n for (let j = 0; j < this.airflowData.length; j++) {\r\n if (this.airflowData[j].kcfm !== -1) {\r\n this._smallest = j;\r\n this._largest = j;\r\n\r\n for (let i = j + 1; i < this.airflowData.length; i++) {\r\n if (this.airflowData[i].kcfm < this.airflowData[this._smallest].kcfm && this.airflowData[i].kcfm !== -1) {\r\n this._smallest = i;\r\n } else if (this.airflowData[i].kcfm > this.airflowData[this._largest].kcfm && this.airflowData[i].kcfm !== -1) {\r\n this._largest = i;\r\n }\r\n }\r\n\r\n break;\r\n }\r\n }\r\n }\r\n\r\n private onCalculateLowerLargeLowerSmall() {\r\n this._lowerLarge = Math.round(this.airflowData[this._largest].kcfm * this.numberFans * 1000);\r\n this._lowerSmall = Math.round(this.airflowData[this._smallest].kcfm * this.numberFans * 1000);\r\n //LOWERLARGE=INT(KCFM(LARGEST)*NUMBERFANS*1000+.5): LOWERSMALL=INT(KCFM(SMALLEST)*NUMBERFANS*1000+.5)\r\n }\r\n\r\n private onCalculateRecommendedFan() {\r\n let choice1 = 0;\r\n let choice2 = 1;\r\n //IF PITCH>0 THEN CHOICE1=10:CHOICE2=11 ELSE CHOICE1=7:CHOICE2=9\r\n\r\n this.onChangeSelectedFan(choice1);\r\n //I=CHOICE1: EXHAUSTERCODE=CHOICE1\r\n //QTY=CINT((LOWERLARGE*1.5)/(EXHAUSTER(I))+.49): IF QTY<1 THEN QTY=1\r\n //SAFETY=(EXHAUSTER(I)*QTY)/LOWERLARGE\r\n //GVA=((EXHAUSTER(I)*QTY)-LOWERSMALL)/1000\r\n\r\n let codeOld = this._selectedFanViewTable.code;\r\n let codeNew = choice1 + 1;\r\n let safetyOld = this._selectedFanViewTable.safety;\r\n let safetyNew = 0;\r\n for (let i = choice1 + 1; i <= choice2; i++) {\r\n this.onChangeSelectedFan(i);\r\n safetyNew = this._selectedFanViewTable.safety;\r\n if (safetyNew < safetyOld) {\r\n codeOld = codeNew;\r\n safetyOld = safetyNew;\r\n }\r\n }\r\n this.onChangeSelectedFan(codeOld);\r\n //FOR I=(CHOICE1+1) TO CHOICE2\r\n //QTY1=CINT((LOWERLARGE*1.5)/(EXHAUSTER(I))+.49): IF QTY1<1 THEN QTY1=1\r\n //SAFETY1=(EXHAUSTER(I)*QTY1)/LOWERLARGE\r\n //GVA1=((EXHAUSTER(I)*QTY1)-LOWERSMALL)/1000\r\n //IF SAFETY1;\r\n\r\n\r\n _tandem: number;\r\n _airflowTableData: { commodityId: number, commodityName: string, staticPressure: number, bupercfm: number, a: number, b: number, cfmperbu: number }[];\r\n _columnTypeEnum = ColumnTypeEnum;\r\n _sessionTypes = AqsSessionTypeEnum;\r\n _fanTypes = AqsAirflowFanTypeEnum;\r\n _levelOptions: { label: string, value: AqsAirflowLevelEnum }[];\r\n _fanTypeOptions: { label: string, value: AqsAirflowFanTypeEnum }[];\r\n _fanOptions: { label: string, value: { fanId: number, fanName: string, modelName: string } }[];\r\n _isMadeFanPlot = false;\r\n _isFansReadyGot = false;\r\n _isShowFlowOptions = false;\r\n\r\n _ductDesign: boolean = false;\r\n _flushFloorDesign: boolean = false;\r\n _designEnum = AqsFlushDuctDesignEnum;\r\n\r\n _columnsView = [\r\n { header: 'Part #', columnType: ColumnTypeEnum.Counter, },\r\n { header: 'Commodity', columnType: ColumnTypeEnum.ComodityName, dataField: 'commodityName' },\r\n { header: 'Static pressure (IN.)', columnType: ColumnTypeEnum.StaticPressure, dataField: 'staticPressure' },\r\n { header: 'Target airflow (CFM/BU)', columnType: ColumnTypeEnum.TargetAitflow, dataField: 'bupercfm' },\r\n { header: 'FAN', columnType: ColumnTypeEnum.Fans, dataField: 'cfmperbu' },\r\n ]\r\n\r\n get roundCapacity() {\r\n return (Math.round(this.capacity * 10) / 10).toLocaleString('en-Us');\r\n }\r\n\r\n get roundEffDepth() {\r\n return (Math.round(this.effDepth * 10) / 10).toLocaleString('en-Us');\r\n }\r\n\r\n private effDepth: number;\r\n private capacity: number;\r\n private airflowSubscription: Subscription;\r\n private fanTypesWithFans: AqsAirflowFanTypeViewModel[];\r\n private ctx: CanvasRenderingContext2D;\r\n private chart: Chart;\r\n private fanCurveColor: string = 'rgba(54, 162, 235)';\r\n private fanSelectedColor: string = 'rgba(41, 118, 169, 1)';\r\n private materialCurveColor: string[] = ['rgb(75, 192, 192)', 'rgb(255, 127, 0)', 'rgb(255, 255, 0)', 'rgb(0, 255, 0)', 'rgb(143, 0, 255)', 'rgb(255, 0,255)'];\r\n private fanCurveBorderWidth: number = 1;\r\n private fanSelectedBorderWidth: number = 3;\r\n private materialCurveBorderWidth: number = 2;\r\n private errorMargin: number = .005;\r\n private fanDash: number[] = [5, 5];\r\n private numberOfFans: number;\r\n\r\n constructor(\r\n private _aqsAirflowService: AqsAirflowDatasourceService,\r\n ) { }\r\n\r\n ngOnInit() {\r\n this.ctx = this.canvas.nativeElement.getContext('2d');\r\n this.createEmptyChart();\r\n this._levelOptions = [];\r\n for (const [key, value] of Object.entries(AqsAirflowLevelLabel)) {\r\n this._levelOptions.push({ label: value, value: Number(key) });\r\n }\r\n\r\n this.airflowSubscription = this._aqsAirflowService.aqsFanTypesWithFans$.subscribe((item) => {\r\n this._fanTypeOptions = [];\r\n item.forEach(ft => {\r\n this._fanTypeOptions.push({ label: ft.name, value: ft.type });\r\n });\r\n this.fanTypesWithFans = item;\r\n this._isFansReadyGot = true;\r\n });\r\n\r\n if (this.sessionType == AqsSessionTypeEnum.RoundSessionType) {\r\n this.capacity = (this.storageConfiguration as AqsRoundStorageWiewModel).capacity;\r\n this.effDepth = (this.storageConfiguration as AqsRoundStorageWiewModel).effDepth;\r\n this.numberOfFans = 20;\r\n } else if (this.sessionType == AqsSessionTypeEnum.FlatSessionType) {\r\n this.capacity = (this.storageConfiguration as FlatStorageParams).buCapacityPile;\r\n this.effDepth = (this.storageConfiguration as FlatStorageParams).effectiveDepth;\r\n this.numberOfFans = 1001;\r\n }\r\n if (this.airflowConfiguration.airflowData.length == 0) {\r\n this._tandem = 1;\r\n this.airflowConfiguration.level = AqsAirflowLevelEnum.Normal;//1\r\n this.airflowConfiguration.packingFactor = 1.5;\r\n this.airflowConfiguration.systemStep = 0;\r\n this.calculateNewAirflowParametersWithRecommendation();\r\n }\r\n else {\r\n this.calculateExistAirflowParameters();\r\n this.generateChart();\r\n this.setUpExistIncludeFlowOptions();\r\n }\r\n }\r\n\r\n ngOnDestroy() {\r\n this.airflowSubscription.unsubscribe();\r\n }\r\n\r\n onChangeBupercfm(control: any, rowData: { commodityId: number, commodityName: string, staticPressure: number, bupercfm: number, a: number, b: number }) {\r\n control.valueAsNumber = control.valueAsNumber | 0;\r\n if (control.valueAsNumber >= 1 && control.valueAsNumber <= 30) {\r\n rowData.bupercfm = control.valueAsNumber;\r\n let index = this.airflowConfiguration.airflowData.findIndex(d => d.commodityId == rowData.commodityId);\r\n if (index == -1) {\r\n this.airflowConfiguration.airflowData.push({ id: 0, commodityId: rowData.commodityId, bupercfm: rowData.bupercfm, actbupercfm: -1, actpress: -1, kcfm: -1 });\r\n }\r\n else {\r\n this.airflowConfiguration.airflowData[index].bupercfm = control.valueAsNumber;\r\n }\r\n rowData.staticPressure = this.calculateStaticPressure(rowData.a, rowData.b, rowData.bupercfm);\r\n this._tandem = 1;\r\n this.airflowConfiguration.level = AqsAirflowLevelEnum.Normal;//1\r\n this.clearFansAndcfmperbu();\r\n this.clearChart();\r\n this.recalculateAirflow()\r\n this.calculateRecommendTandemLevel();\r\n this.onChangedAirflowModels.emit();\r\n }\r\n else {\r\n control.value = rowData.bupercfm;\r\n }\r\n }\r\n\r\n onChangePackingFactor(pakingFactorControl) {\r\n if (pakingFactorControl.valueAsNumber >= 0.7 && pakingFactorControl.valueAsNumber <= 2.5) {\r\n this.airflowConfiguration.packingFactor = pakingFactorControl.valueAsNumber;\r\n this.clearFansAndcfmperbu();\r\n this.clearChart();\r\n this.recalculateAirflow();\r\n this.calculateRecommendTandemLevel()\r\n this.onChangedAirflowModels.emit();\r\n }\r\n else {\r\n pakingFactorControl.value = this.airflowConfiguration.packingFactor;\r\n }\r\n }\r\n\r\n onChangeSystemStep(sysStepControl) {\r\n sysStepControl.valueAsNumber = sysStepControl.valueAsNumber | 0;\r\n if (sysStepControl.valueAsNumber >= 0 && sysStepControl.valueAsNumber <= 10) {\r\n this.airflowConfiguration.systemStep = sysStepControl.valueAsNumber;\r\n this.clearFansAndcfmperbu();\r\n this.clearChart();\r\n this.recalculateAirflow();\r\n this.calculateRecommendTandemLevel()\r\n this.onChangedAirflowModels.emit();\r\n }\r\n else {\r\n sysStepControl.value = this.airflowConfiguration.systemStep;\r\n }\r\n }\r\n\r\n onChangeLevel() {\r\n this._tandem = this.airflowConfiguration.level == AqsAirflowLevelEnum.Tandem || this.airflowConfiguration.level == AqsAirflowLevelEnum.PushPull ? 2 : 1;\r\n this.recalculateAirflow();\r\n this.calculateRecommendFanType();\r\n this.clearFansAndcfmperbu();\r\n this.clearChart();\r\n this.onChangedAirflowModels.emit();\r\n }\r\n\r\n onChangeNumberFuns(numberFunsControl) {\r\n numberFunsControl.valueAsNumber = numberFunsControl.valueAsNumber | 0;\r\n if (numberFunsControl.valueAsNumber > 0 && numberFunsControl.valueAsNumber < this.numberOfFans) {\r\n this.airflowConfiguration.numberfans = numberFunsControl.valueAsNumber;\r\n this.clearFansAndcfmperbu();\r\n this.clearChart();\r\n this.onChangedAirflowModels.emit();\r\n }\r\n else {\r\n numberFunsControl.value = this.airflowConfiguration.numberfans;\r\n }\r\n }\r\n\r\n onSelectedFan() {\r\n let index = this._fanOptions.indexOf(this._fanOptions.find(f => f.value.fanId == this.airflowConfiguration.selectedFan.fanId));\r\n if (index != -1) {\r\n let fansLenght = this.fanTypesWithFans.find(ft => ft.type == this.airflowConfiguration.fanType).fans.length;\r\n this.chart.data.datasets.map((dataset, index) => {\r\n if (index < fansLenght) {\r\n dataset.borderColor = this.fanCurveColor;\r\n dataset.borderWidth = this.fanCurveBorderWidth;\r\n }\r\n });\r\n this.chart.data.datasets[index].borderColor = this.fanSelectedColor;\r\n this.chart.data.datasets[index].borderWidth = this.fanSelectedBorderWidth;\r\n this.chart.update();\r\n }\r\n this.findInterception();\r\n this.onChangedAirflowModels.emit();\r\n }\r\n\r\n onChangeFanType() {\r\n this.clearFansAndcfmperbu();\r\n this.clearChart();\r\n this.onChangedAirflowModels.emit();\r\n }\r\n\r\n generateChart() {\r\n this.clearChart();\r\n let fanTypeWithFan = this.fanTypesWithFans.find(ft => ft.type == this.airflowConfiguration.fanType);\r\n let calculateData = this.makeFansAndMaterialsDataForChart(fanTypeWithFan.fans);\r\n let signFanCurvePlugin = {\r\n afterDatasetsDraw: (instance) => {\r\n let previousX: number[] = [0];\r\n let x: number;\r\n let y: number;\r\n let fontSize = 16;\r\n let ctx = instance.chart.ctx as CanvasRenderingContext2D;\r\n ctx.font = `${fontSize}px serif`;\r\n ctx.fillStyle = 'black';\r\n for (let i = 0; i < fanTypeWithFan.fans.length; i++) {\r\n var meta = instance.getDatasetMeta(i)\r\n let cantBeSign: boolean = false;\r\n for (let j = 0; j < meta.data.length; j++) {\r\n x = meta.data[j]._model.x;\r\n y = meta.data[j]._model.y;\r\n previousX.forEach(item => {\r\n if (Math.abs(item - x) < 10) {\r\n cantBeSign = true;\r\n }\r\n });\r\n if (cantBeSign) {\r\n cantBeSign = false;\r\n } else {\r\n break;\r\n }\r\n }\r\n\r\n this.ctx.beginPath();\r\n if (fanTypeWithFan.fans[i].id == this.airflowConfiguration.selectedFan.fanId) {\r\n this.ctx.strokeStyle = this.fanSelectedColor;\r\n this.ctx.lineWidth = this.fanSelectedBorderWidth;\r\n }\r\n this.ctx.arc(x, y, 2, 0, 2 * Math.PI, false);\r\n this.ctx.stroke();\r\n this.ctx.strokeStyle = this.fanCurveColor;\r\n this.ctx.lineWidth = this.fanCurveBorderWidth;\r\n ctx.save();\r\n ctx.translate(x, y - 2);\r\n ctx.rotate((-75 * Math.PI / 180));\r\n ctx.fillText(fanTypeWithFan.fans[i].name, 0, 0);\r\n ctx.restore();\r\n previousX.push(x);\r\n }\r\n\r\n let dash = this.airflowConfiguration.fanType != AqsAirflowFanTypeEnum.Centrifugal60HZAF ? this.fanDash : [];\r\n x = instance.width / 4;\r\n y = instance.height - 10;\r\n ctx.beginPath();\r\n y -= fontSize / 4;\r\n ctx.moveTo(x, y);\r\n x += 40;\r\n ctx.setLineDash(dash);\r\n ctx.lineTo(x, y);\r\n ctx.fillText(AqsChartFanTypeNote[this.airflowConfiguration.fanType].leftNote, x, y);\r\n ctx.stroke();\r\n if (this.airflowConfiguration.fanType != AqsAirflowFanTypeEnum.Centrifugal60HZAF) {\r\n ctx.beginPath();\r\n x = instance.width / 2 + 20;\r\n ctx.moveTo(x, y);\r\n x += 40;\r\n ctx.setLineDash([]);\r\n ctx.lineTo(x, y);\r\n ctx.fillText(AqsChartFanTypeNote[this.airflowConfiguration.fanType].rightNote, x, y);\r\n ctx.stroke();\r\n }\r\n }\r\n };\r\n\r\n this.chart = new Chart(this.ctx, {\r\n type: 'scatter',\r\n data: calculateData.data,\r\n plugins: [signFanCurvePlugin],\r\n options: {\r\n layout: {\r\n padding: {\r\n bottom: 30,\r\n },\r\n },\r\n responsive: true,\r\n scales: {\r\n xAxes: [{\r\n ticks: {\r\n max: calculateData.maxX,\r\n min: 0,\r\n stepSize: 1\r\n },\r\n scaleLabel: {\r\n display: true,\r\n labelString: \"Airflow in thousands of CFM's\",\r\n }\r\n }],\r\n yAxes: [{\r\n ticks: {\r\n max: calculateData.maxY,\r\n min: 0,\r\n stepSize: 1\r\n },\r\n scaleLabel: {\r\n display: true,\r\n labelString: 'Static Pressure',\r\n }\r\n }],\r\n },\r\n elements: {\r\n point: {\r\n radius: 0\r\n }\r\n },\r\n legend: {\r\n labels: {\r\n filter: (item, chart) => {\r\n return item.text != undefined;\r\n },\r\n },\r\n },\r\n tooltips: {\r\n enabled: false,\r\n },\r\n hover: {\r\n mode: null\r\n },\r\n },\r\n });\r\n this.fillFanOptionsAccordingToFanType();\r\n }\r\n\r\n setUpExistIncludeFlowOptions() {\r\n if (!this._airflowTableData.some(d => d.cfmperbu == -1 || d.cfmperbu == null)) {\r\n if (this.includeFlowOption.includeDesign == AqsFlushDuctDesignEnum.FlushFloor) {\r\n this._ductDesign = false;\r\n this._flushFloorDesign = true;\r\n } else if (this.includeFlowOption.includeDesign == AqsFlushDuctDesignEnum.Duct) {\r\n this._ductDesign = true;\r\n this._flushFloorDesign = false;\r\n }\r\n this._isShowFlowOptions = true;\r\n }\r\n }\r\n\r\n canBeExhauster(): boolean {\r\n if (this.airflowConfiguration.fanType == AqsAirflowFanTypeEnum.Centrifugal50HZ) {\r\n return false;\r\n }\r\n\r\n if (this.airflowConfiguration.level == AqsAirflowLevelEnum.PushPull || this.airflowConfiguration.level == AqsAirflowLevelEnum.RoofPull) {\r\n return false;\r\n }\r\n return true;\r\n }\r\n\r\n roundCheckFlushFloor(): boolean {\r\n let numberfans = this.airflowConfiguration.numberfans;\r\n return (numberfans == 1 || numberfans == 2 || numberfans == 4 || numberfans == 6) && (this.storageConfiguration as AqsRoundStorageWiewModel).hopperPitch == 0;\r\n }\r\n\r\n changedFlowOptions() {\r\n this.onChangedFlowOptions.emit();\r\n }\r\n\r\n onChangeFlushDuctOption(design: AqsFlushDuctDesignEnum) {\r\n switch (design) {\r\n case AqsFlushDuctDesignEnum.FlushFloor:\r\n if (this.includeFlowOption.includeDesign == AqsFlushDuctDesignEnum.FlushFloor) {\r\n this.includeFlowOption.includeDesign = AqsFlushDuctDesignEnum.None;\r\n }\r\n else if (this.includeFlowOption.includeDesign == AqsFlushDuctDesignEnum.None) {\r\n this.includeFlowOption.includeDesign = AqsFlushDuctDesignEnum.FlushFloor;\r\n }\r\n else {\r\n this.includeFlowOption.includeDesign = AqsFlushDuctDesignEnum.FlushFloor;\r\n this._ductDesign = false;\r\n }\r\n break;\r\n default:\r\n if (this.sessionType == AqsSessionTypeEnum.FlatSessionType || !this.roundCheckFlushFloor()) {\r\n if (this.includeFlowOption.includeDesign == AqsFlushDuctDesignEnum.Duct) {\r\n this.includeFlowOption.includeDesign = AqsFlushDuctDesignEnum.None;\r\n }\r\n else {\r\n this.includeFlowOption.includeDesign = AqsFlushDuctDesignEnum.Duct;\r\n }\r\n }\r\n else {\r\n if (this.includeFlowOption.includeDesign == AqsFlushDuctDesignEnum.Duct) {\r\n this.includeFlowOption.includeDesign = AqsFlushDuctDesignEnum.None;\r\n }\r\n else if (this.includeFlowOption.includeDesign == AqsFlushDuctDesignEnum.None) {\r\n this.includeFlowOption.includeDesign = AqsFlushDuctDesignEnum.Duct;\r\n }\r\n else {\r\n this.includeFlowOption.includeDesign = AqsFlushDuctDesignEnum.Duct;\r\n this._flushFloorDesign = false;\r\n }\r\n }\r\n break;\r\n }\r\n this.changedFlowOptions();\r\n }\r\n\r\n private calculateExistAirflowParameters() {\r\n this._tandem = this.airflowConfiguration.level == AqsAirflowLevelEnum.Normal || this.airflowConfiguration.level == AqsAirflowLevelEnum.RoofPull ? 1 : 2;\r\n this._airflowTableData = [];\r\n this.commodities.forEach(item => {\r\n let bupercfm: number;\r\n let cfmperbu: number;\r\n let index = this.airflowConfiguration.airflowData.findIndex(d => d.commodityId == item.id);\r\n if (index == -1) {\r\n bupercfm = 10;\r\n cfmperbu = null;\r\n this.airflowConfiguration.airflowData.push({ id: 0, commodityId: item.id, bupercfm: bupercfm, actbupercfm: -1, actpress: -1, kcfm: -1 });\r\n } else {\r\n bupercfm = this.airflowConfiguration.airflowData[index].bupercfm;\r\n if (this.airflowConfiguration.selectedFan.fanId == null && this.airflowConfiguration.selectedFan.fanId == undefined) {\r\n cfmperbu = null;\r\n } else {\r\n cfmperbu = Math.round(this.airflowConfiguration.airflowData[index].actbupercfm * 10) / 10;\r\n }\r\n }\r\n let staticPressure = this.calculateStaticPressure(item.aa, item.bb, bupercfm);\r\n this._airflowTableData.push({ commodityId: item.id, commodityName: item.name, staticPressure: staticPressure, bupercfm: bupercfm, a: item.aa, b: item.bb, cfmperbu: cfmperbu });\r\n });\r\n }\r\n\r\n private calculateNewAirflowParametersWithRecommendation() {\r\n this._airflowTableData = [];\r\n this.commodities.forEach(item => {\r\n let bupercfm = 10;\r\n let staticPressure = this.calculateStaticPressure(item.aa, item.bb, bupercfm);\r\n this._airflowTableData.push({ commodityId: item.id, commodityName: item.name, staticPressure: staticPressure, bupercfm: bupercfm, a: item.aa, b: item.bb, cfmperbu: null });\r\n this.airflowConfiguration.airflowData.push({ id: 0, commodityId: item.id, bupercfm: bupercfm, actbupercfm: -1, actpress: -1, kcfm: -1 });\r\n });\r\n this.calculateRecommendTandemLevel();\r\n this.calculateRecommendFanType();\r\n }\r\n\r\n private calculateStaticPressure(a: number, b: number, bupercfm: number): number {\r\n return Math.floor(((a * Math.pow(this.effDepth / bupercfm * .8036, 2)) / Math.log(1 + b * (this.effDepth / bupercfm * .8036)) * this.effDepth * this.airflowConfiguration.packingFactor / this._tandem * 1000) + this.airflowConfiguration.systemStep * 1000 + .49) / 1000;\r\n //INT(((A(I) * (EFFDEPTH / BUPERCFM(I) * .8036) ^ 2) / LOG(1 + B(I) * (EFFDEPTH / BUPERCFM(I) * .8036)) * EFFDEPTH * PACKINGFACTOR / TANDEM * 1000) + .49) / 1000\r\n }\r\n\r\n private calculateRecommendTandemLevel() {\r\n if (this._airflowTableData.some(s => s.staticPressure > 20)) {\r\n this._tandem = 2;\r\n this.airflowConfiguration.level = AqsAirflowLevelEnum.Tandem;//3\r\n this.recalculateAirflow();\r\n this.calculateRecommendFanType();\r\n }\r\n\r\n }\r\n\r\n private recalculateAirflow() {\r\n this._airflowTableData.forEach(item => {\r\n item.staticPressure = this.calculateStaticPressure(item.a, item.b, item.bupercfm);\r\n });\r\n }\r\n\r\n private calculateRecommendFanType() {\r\n let maxStPress = Math.max(...this._airflowTableData.map(a => a.staticPressure));\r\n this.airflowConfiguration.fanType = maxStPress <= 4 ? AqsAirflowFanTypeEnum.Axial : AqsAirflowFanTypeEnum.Centrifugal60HZ;\r\n if (this.sessionType == AqsSessionTypeEnum.RoundSessionType) {\r\n let storage = this.storageConfiguration as AqsRoundStorageWiewModel;\r\n this.airflowConfiguration.numberfans = storage.hopperPitch == 0 ? 1 : Math.round((storage.diameter * Math.PI) / storage.eaveHeight + 0.5);\r\n }\r\n else {\r\n let storage = this.storageConfiguration as FlatStorageParams;\r\n this.airflowConfiguration.numberfans = (storage.lenght / (storage.height + storage.roof / 2)) | 0;\r\n // NUMBERFANS = PILEHEIGHT + PILEROOF / 2\r\n // NUMBERFANS = INT(PILELENGTH / NUMBERFANS)\r\n if (this.airflowConfiguration.numberfans <= 0) this.airflowConfiguration.numberfans = 1;\r\n // IF NUMBERFANS <= 0 THEN NUMBERFANS = 1\r\n if (storage.width > 120) this.airflowConfiguration.numberfans *= 2;\r\n // IF PILEWIDTH > 120 THEN NUMBERFANS = NUMBERFANS * 2\r\n }\r\n }\r\n\r\n private fillFanOptionsAccordingToFanType() {\r\n this._isMadeFanPlot = true;\r\n this._fanOptions = [];\r\n let fans = this.fanTypesWithFans.find(ft => ft.type == this.airflowConfiguration.fanType);\r\n if (fans !== undefined) {\r\n this._fanOptions = fans.fans.map(f => { return { label: `${f.modelName} ${f.name}`, value: { fanId: f.id, fanName: f.name, modelName: f.modelName } } });\r\n }\r\n }\r\n\r\n private makeFansAndMaterialsDataForChart(fans: AqsAirflowFanViewModel[]) {\r\n let maxX = 0;\r\n let maxY = 0;\r\n let datasets: any[] = [];\r\n let fanTypeDivider = this.airflowConfiguration.fanType == AqsAirflowFanTypeEnum.Axial ? 2 : 1;\r\n fans.forEach(item => {\r\n let mx = Math.max(...item.fanPoints.map(x => x.x));\r\n let my = Math.max(...item.fanPoints.map(y => y.y / fanTypeDivider));\r\n if (maxX < mx) maxX = mx;\r\n if (maxY < my) maxY = my;\r\n let borderDash = this.curveFanDotStyle(item.name);\r\n let borderColor = this.airflowConfiguration.selectedFan != null && this.airflowConfiguration.selectedFan.fanId == item.id ? this.fanSelectedColor : this.fanCurveColor;\r\n let border = this.airflowConfiguration.selectedFan != null && this.airflowConfiguration.selectedFan.fanId == item.id ? this.fanSelectedBorderWidth : this.fanCurveBorderWidth;\r\n datasets.push({\r\n data: item.fanPoints.map((i) => { return { x: i.x, y: i.y / fanTypeDivider } }), fill: false, borderColor: borderColor, showLine: true, borderWidth: border, borderDash: borderDash,\r\n });\r\n });\r\n\r\n maxX = maxX | 0;\r\n maxY = maxY | 0;\r\n maxX += 1;\r\n maxY += 1;\r\n if (maxY < 10) maxY = 10;\r\n if (maxX < 20) maxX = 20;\r\n datasets.push(...this.calculateMaterialCurve());\r\n let calculateData = {\r\n data: {\r\n datasets: datasets\r\n },\r\n maxX: maxX,\r\n maxY: maxY,\r\n }\r\n return calculateData;\r\n }\r\n\r\n private curveFanDotStyle(fanName: string) {\r\n let fanNameNumber = parseFloat(fanName);\r\n switch (this.airflowConfiguration.fanType) {\r\n case AqsAirflowFanTypeEnum.Axial:\r\n if (!isNaN(fanNameNumber) && (fanNameNumber == 1401.52 || fanNameNumber == 1803.2)) {\r\n return this.fanDash;\r\n }\r\n break;\r\n case AqsAirflowFanTypeEnum.Centrifugal60HZ:\r\n if (!isNaN(fanNameNumber) && fanNameNumber > 2700) {\r\n return this.fanDash;\r\n }\r\n case AqsAirflowFanTypeEnum.Centrifugal60HZAF:\r\n case AqsAirflowFanTypeEnum.Centrifugal50HZ:\r\n if (!isNaN(fanNameNumber) && (fanNameNumber == 2205 || fanNameNumber == 2003)) {\r\n return this.fanDash;\r\n }\r\n break;\r\n }\r\n return [];\r\n }\r\n\r\n private calculateMaterialCurve(): any {\r\n let datasets: any[] = [];\r\n this.commodities.forEach((item, index) => {\r\n let point: { x: number, y: number }[] = [];\r\n let x1: number;\r\n let x2: number;\r\n let y1: number;\r\n let y2: number;\r\n let calcCoefficientWay = 0;\r\n y1 = this.calculateMaterialCurveY(item.aa, item.bb, .1);\r\n x1 = this.calculateMaterialCurveX(.1);\r\n y2 = this.calculateMaterialCurveY(item.aa, item.bb, .2);\r\n x2 = this.calculateMaterialCurveX(.2);\r\n if (y1 == Infinity || y2 == Infinity || x1 == Infinity || x2 == Infinity) {\r\n y1 = this.calculateMaterialCurveY(item.aa, item.bb, 1);\r\n x1 = this.calculateMaterialCurveX(1);\r\n y2 = this.calculateMaterialCurveY(item.aa, item.bb, 1.1);\r\n x2 = this.calculateMaterialCurveX(1.1);\r\n if (y1 == Infinity || y2 == Infinity || x1 == Infinity || x2 == Infinity) {\r\n y1 = this.calculateMaterialCurveY(item.aa, item.bb, 2.5);\r\n x1 = this.calculateMaterialCurveX(2.5);\r\n y2 = this.calculateMaterialCurveY(item.aa, item.bb, 2.8);\r\n x2 = this.calculateMaterialCurveX(2.8);\r\n if (y1 == Infinity || y2 == Infinity || x1 == Infinity || x2 == Infinity) {\r\n y1 = this.calculateMaterialCurveY(item.aa, item.bb, 10);\r\n x1 = this.calculateMaterialCurveX(10);\r\n y2 = this.calculateMaterialCurveY(item.aa, item.bb, 12);\r\n x2 = this.calculateMaterialCurveX(12);\r\n calcCoefficientWay = 3;\r\n }\r\n else calcCoefficientWay = 2;\r\n }\r\n else calcCoefficientWay = 1;\r\n }\r\n\r\n point.push({ x: x1, y: y1 });\r\n point.push({ x: x2, y: y2 });\r\n switch (calcCoefficientWay) {\r\n case 0:\r\n this.fillXYMaterialCurve(point, 0.2, 1.1, 0.1, item.aa, item.bb);\r\n case 1:\r\n this.fillXYMaterialCurve(point, 1.2, 2, 0.2, item.aa, item.bb);\r\n case 2:\r\n this.fillXYMaterialCurve(point, 3, 10, 1, item.aa, item.bb);\r\n case 3:\r\n this.fillXYMaterialCurve(point, 13, 30, 4, item.aa, item.bb);\r\n default:\r\n // this.fillXYMaterialCurve(point, 50, 2000, 200, item.aa, item.bb);\r\n let pos = 50;\r\n let step = 200;\r\n do {\r\n y1 = this.calculateMaterialCurveY(item.aa, item.bb, pos);\r\n x1 = this.calculateMaterialCurveX(pos);\r\n if (x1 !== Infinity && y1 !== Infinity) {\r\n point.push({ x: x1, y: y1 });\r\n }\r\n pos += step;\r\n if (point.length > 10000) break;\r\n } while (x1 > 0.1 || y1 > 0.1);\r\n break;\r\n }\r\n datasets.push({ label: item.name, data: point, fill: false, borderColor: this.materialCurveColor[index], showLine: true, borderWidth: this.materialCurveBorderWidth })\r\n });\r\n return datasets;\r\n }\r\n\r\n private calculateMaterialCurveY(a: number, b: number, coefficient: number): number {\r\n return ((a * Math.pow((this.effDepth / coefficient) * .8036, 2)) / Math.log(1 + b * ((this.effDepth / coefficient) * .8036))) * this.effDepth * this.airflowConfiguration.packingFactor / this._tandem + this.airflowConfiguration.systemStep;\r\n //PT1Y = YORGIN - ((A(I) * ((EFFDEPTH / .1) * .8036) ^ 2) / LOG(1 + B(I) * ((EFFDEPTH / .1) * .8036))) * YSCALE * EFFDEPTH * PACKINGFACTOR / TANDEM - YSCALE * SYSTEMSTEP\r\n }\r\n\r\n private calculateMaterialCurveX(coefficient: number): number {\r\n return this.capacity / coefficient / this.airflowConfiguration.numberfans / 1000;\r\n //PT1X = XORGIN + XSCALE * ((CAPACITY / .1) / NUMBERFANS) / 1000\r\n }\r\n\r\n private fillXYMaterialCurve(point, start: number, end: number, step: number, a: number, b: number) {\r\n let x: number;\r\n let y: number;\r\n for (let i = start; i <= end; i += step) {\r\n y = this.calculateMaterialCurveY(a, b, i);\r\n x = this.calculateMaterialCurveX(i);\r\n if (x !== Infinity && y !== Infinity) {\r\n point.push({ x: x, y: y });\r\n }\r\n }\r\n }\r\n\r\n private clearChart() {\r\n if (this.chart !== undefined) this.chart.destroy();\r\n this.createEmptyChart();\r\n this._isMadeFanPlot = false;\r\n }\r\n\r\n private clearFansAndcfmperbu() {\r\n this._fanOptions = [];\r\n this.airflowConfiguration.selectedFan.fanId = null;\r\n this.airflowConfiguration.selectedFan.fanName = null;\r\n this.airflowConfiguration.selectedFan.modelName = null;\r\n this._airflowTableData.forEach(item => item.cfmperbu = null);\r\n this.airflowConfiguration.airflowData.forEach(item => {\r\n item.actbupercfm = -1;\r\n item.actpress = -1;\r\n item.kcfm = -1;\r\n });\r\n this.showFlowOptions();\r\n }\r\n\r\n private createEmptyChart() {\r\n this.chart = new Chart(this.ctx, {\r\n type: 'scatter',\r\n data: null,\r\n options: {\r\n scales: {\r\n xAxes: [{\r\n ticks: {\r\n max: 20,\r\n min: 0,\r\n stepSize: 1\r\n },\r\n scaleLabel: {\r\n display: true,\r\n labelString: \"Airflow in thousands of cfm's\",\r\n }\r\n }],\r\n yAxes: [{\r\n ticks: {\r\n max: 10,\r\n min: 0,\r\n stepSize: 1\r\n },\r\n scaleLabel: {\r\n display: true,\r\n labelString: 'Static Pressure',\r\n }\r\n }],\r\n },\r\n }\r\n });\r\n }\r\n\r\n private findInterception() {\r\n let fan = this.fanTypesWithFans.find(ft => ft.type == this.airflowConfiguration.fanType)\r\n .fans.find(f => f.id == this.airflowConfiguration.selectedFan.fanId);\r\n let fanScale = this.airflowConfiguration.fanType == AqsAirflowFanTypeEnum.Axial ? 2 : 1;\r\n this._airflowTableData.forEach(item => {\r\n let index = this.airflowConfiguration.airflowData.findIndex(d => d.commodityId == item.commodityId);\r\n let isFoundInterception = false;\r\n let pt3x = fan.fanPoints[0].x;\r\n let pt3y = 0;\r\n let pt2x = 0;\r\n let pt2y = 0;\r\n let lowStaticPress = this.calculateInterceptionPress(item.a, item.b, pt3x);\r\n let hightStaticPress = 0;\r\n for (let i = 1; i < fan.fanPoints.length; i++) {\r\n let lastCyrcle = false;\r\n pt2x = fan.fanPoints[i].x;\r\n pt2y = fan.fanPoints[i].y;\r\n if (i == fan.fanPoints.length - 1) {\r\n pt2x = fan.fanPoints[i].x;\r\n pt2y = fan.fanPoints[i].y;\r\n lastCyrcle = true;\r\n }\r\n\r\n hightStaticPress = this.calculateInterceptionPress(item.a, item.b, pt2x);\r\n\r\n if (isNaN(hightStaticPress)) {\r\n break;\r\n }\r\n\r\n if (pt2y / fanScale < hightStaticPress) {\r\n if (lastCyrcle) {\r\n break;\r\n }\r\n lowStaticPress = hightStaticPress;\r\n pt3y = pt2y;\r\n pt3x = pt2x;\r\n } else {\r\n isFoundInterception = true;\r\n break;\r\n }\r\n }\r\n\r\n if (isFoundInterception) {\r\n let slope = ((pt2y - pt3y) / fanScale) / (pt2x - pt3x);\r\n //SLOPE = ((PT2Y - PT3Y) / FANSCALE) / (PT2X - PT3X)\r\n let yintercept = pt2y / fanScale - slope * pt2x;\r\n //YINTERCEPT = (PT2Y / FANSCALE) - SLOPE * PT2X\r\n let pt4x = pt2x;\r\n //PT4X = PT2X:\r\n let pt4y = pt2y;\r\n //PT4Y = PT2Y:\r\n let midStaticPress = hightStaticPress;\r\n //MIDSTPRESS = HIGHSTPRESS\r\n while (Math.abs(midStaticPress - pt4y / fanScale) > this.errorMargin) {\r\n //WHILE ABS(MIDSTPRESS - (PT4Y / FANSCALE)) > ERRORMARGIN\r\n pt4y = (pt2y + pt3y) / 2;\r\n pt4x = (pt4y / fanScale - yintercept) / slope;\r\n midStaticPress = this.calculateInterceptionPress(item.a, item.b, pt4x);\r\n if (midStaticPress > pt4y / fanScale) {\r\n pt3x = pt4x;\r\n pt3y = pt4y;\r\n //PT3X = PT4X: PT3Y = PT4Y\r\n } else {\r\n pt2x = pt4x;\r\n pt2y = pt4y;\r\n //PT2X = PT4X: PT2Y = PT4Y\r\n }\r\n }\r\n this.airflowConfiguration.airflowData[index].actbupercfm = this.capacity / (pt4x * this.airflowConfiguration.numberfans * 1000);\r\n //CAPACITY / (PT4X * NUMBERFANS * 1000)\r\n this.airflowConfiguration.airflowData[index].kcfm = pt4x;\r\n //KCFM(I) = PT4X\r\n this.airflowConfiguration.airflowData[index].actpress = midStaticPress;\r\n //ACTPRESS(I) = MIDSTPRESS\r\n item.cfmperbu = Math.round(this.airflowConfiguration.airflowData[index].actbupercfm * 10) / 10;\r\n //BUPERCFM = INT(ACTBUPERCFM(I) * 10 + .5)\r\n } else {\r\n item.cfmperbu = -1;\r\n this.airflowConfiguration.airflowData[index].actbupercfm = -1;\r\n this.airflowConfiguration.airflowData[index].kcfm = -1;\r\n this.airflowConfiguration.airflowData[index].actpress = -1;\r\n }\r\n });\r\n this.showFlowOptions();\r\n }\r\n\r\n private calculateInterceptionPress(a: number, b: number, coefficient: number): number {\r\n return ((a * (Math.pow(this.effDepth / (this.capacity / (coefficient * this.airflowConfiguration.numberfans * 1000)) * .8036, 2))) /\r\n Math.log(1 + b * ((this.effDepth / (this.capacity / (coefficient * this.airflowConfiguration.numberfans * 1000))) * .8036))) * this.effDepth *\r\n this.airflowConfiguration.packingFactor / this._tandem + this.airflowConfiguration.systemStep;\r\n //LOWSTPRESS = ((A(I) * ((EFFDEPTH / (CAPACITY / (PT3X * NUMBERFANS * 1000))) * .8036) ^ 2) / LOG(1 + B(I) * ((EFFDEPTH / (CAPACITY / (PT3X * NUMBERFANS * 1000))) * .8036))) * EFFDEPTH * PACKINGFACTOR / TANDEM + SYSTEMSTEP; systemstep for flat\r\n\r\n }\r\n\r\n private showFlowOptions() {\r\n this.includeFlowOption.includeExhauster = this.canBeExhauster();\r\n if (this.sessionType == AqsSessionTypeEnum.RoundSessionType) {\r\n this.includeFlowOption.includeDesign = AqsFlushDuctDesignEnum.FlushFloor;\r\n this._flushFloorDesign = true;\r\n this._ductDesign = false;\r\n }\r\n\r\n if (this.sessionType == AqsSessionTypeEnum.FlatSessionType || !this.roundCheckFlushFloor()) {\r\n this.includeFlowOption.includeDesign = AqsFlushDuctDesignEnum.Duct;\r\n this._ductDesign = true;\r\n this._flushFloorDesign = false;\r\n }\r\n\r\n if (this.sessionType == AqsSessionTypeEnum.FlatSessionType) {\r\n this.includeFlowOption.includeExhauster = false;\r\n }\r\n\r\n this._isShowFlowOptions = !this._airflowTableData.some(d => d.cfmperbu == -1 || d.cfmperbu == null);\r\n }\r\n}\r\n","export * from './aqs-target-airflow.component';","export * from './aqs-commodities';\r\nexport * from './aqs-cover-sheet';\r\nexport * from './aqs-target-airflow';\r\nexport * from './aqs-exhauster-recommendations';\r\n","export * from './template.functions';\r\nexport * from './validation.function';\r\nexport * from './aqs-components';\r\nexport * from './ktx-components';\r\n","export * from './ktx-temperature-ranges';\r\n","export * from './ktx-temperature-ranges.component';\r\n","import { Component, OnInit, Input } from '@angular/core';\r\n\r\nimport { TemperatureColorViewModel } from '@models';\r\nimport { SensorAlarmLabels } from 'src/app/main/constants';\r\n\r\n@Component({\r\n selector: 'greensleeves-ktx-temperature-ranges',\r\n templateUrl: './ktx-temperature-ranges.component.html',\r\n})\r\nexport class KtxTemperatureRangesComponent implements OnInit {\r\n @Input()\r\n temperatureRanges: TemperatureColorViewModel[];\r\n constructor() { }\r\n\r\n ngOnInit() { }\r\n\r\n getRange(value: string): string {\r\n switch (value) {\r\n case SensorAlarmLabels.HighLimit:\r\n case SensorAlarmLabels.MaxRise:\r\n case SensorAlarmLabels.NoResponse:\r\n case SensorAlarmLabels.OpenTc:\r\n case SensorAlarmLabels.Unknown:\r\n return '-';\r\n default: return '<';\r\n }\r\n }\r\n}\r\n","import { FormControl, FormGroup } from '@angular/forms';\r\n\r\nimport { ModbussAddress } from './validation.function';\r\n\r\nexport class TemplateFunctions {\r\n public static makeid(length): string {\r\n let result = '';\r\n const characters = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';\r\n const charactersLength = characters.length;\r\n for (let i = 0; i < length; i++) {\r\n result += characters.charAt(Math.floor(Math.random() * charactersLength));\r\n }\r\n return result;\r\n }\r\n\r\n public static markAddressControllsAsNotUnique(formGroup: FormGroup, notUniqueAddresses: ModbussAddress[]) {\r\n notUniqueAddresses.forEach(notUniqueAddress => {\r\n formGroup.controls[notUniqueAddress.Name].setErrors({\r\n uniqueAddress: notUniqueAddress.ExistIn != null ? notUniqueAddress.ExistIn : \"This address is already in use\"\r\n });\r\n\r\n if (notUniqueAddress.NameOfPair) {\r\n const subs = formGroup.controls[notUniqueAddress.NameOfPair].valueChanges.subscribe(() => {\r\n subs.unsubscribe();\r\n formGroup.controls[notUniqueAddress.Name].reset(formGroup.controls[notUniqueAddress.Name].value);\r\n });\r\n }\r\n });\r\n }\r\n\r\n public static ipValidator(control: FormControl) {\r\n // tslint:disable-next-line: max-line-length\r\n return /^(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[1-9])\\.(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\\.(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\\.(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])$/\r\n .test(control.value) ? null : { 'ipValidator': 'IP Address not valid.' };\r\n }\r\n\r\n public static phoneValidator(control: FormControl) {\r\n return /^(?:[0-9] ?){6,14}[0-9]$/.test(control.value) ? null : { 'phoneValidator': 'Phone number not valid.' };\r\n }\r\n\r\n public static emergencyPhoneValidator(control: FormControl) {\r\n return /^(?:[0-9] ?){2,14}[0-9]$/.test(control.value) ? null : { 'emergencyPhoneValidator': 'Phone number not valid.' };\r\n }\r\n\r\n public static macAddressValidator(control: FormControl) {\r\n return /(^([0-9A-Fa-f]{2}[:]){5}([0-9A-Fa-f]{2})$)|([0-9A-Fa-f]{12})/.test(control.value) ? null : { 'macAddressValidator': 'MAC address not valid.' };\r\n }\r\n}\r\n","import {\r\n EquipmentViewModel,\r\n SensorViewModel,\r\n LocationBtxEquipmentViewModel,\r\n LocationBtxViewModel\r\n} from '../../models';\r\nimport { ModelsTypes, sensorPositionLabels, sensorTypeLabels } from '../../constants';\r\nimport { SensorTypeEnum } from '../../enums';\r\n\r\ninterface ModbussAddressPair {\r\n AddressValue: number;\r\n AddressName: string;\r\n BitValue: number;\r\n BitName: string;\r\n ExistIn?: string;\r\n}\r\n\r\nexport interface ModbussAddress {\r\n Value: number;\r\n Name: string;\r\n NameOfPair?: string;\r\n ExistIn?: string;\r\n}\r\n\r\nexport class ValidationFunctions {\r\n public static checkIsAllAddressesUnique(existentItems: (LocationBtxViewModel | EquipmentViewModel | SensorViewModel)[], newItem: (LocationBtxViewModel | EquipmentViewModel | SensorViewModel), location?: LocationBtxEquipmentViewModel): ModbussAddress[] {\r\n let duplicatedFields: ModbussAddress[] = [];\r\n const newValuesNotPairs: ModbussAddress[] = [];\r\n const newValuesPairs: ModbussAddressPair[] = [];\r\n\r\n const existentValuesNotPairs: ModbussAddress[] = [];\r\n const existentValuesPairs: ModbussAddressPair[] = [];\r\n switch (newItem.modelType) {\r\n case ModelsTypes.locationBtxViewModel:\r\n ValidationFunctions.getLocationModbussAddressesPairs(newValuesPairs, newItem);\r\n break;\r\n case ModelsTypes.locationViewModel:\r\n ValidationFunctions.getLocationModbussAddressesPairs(newValuesPairs, newItem);\r\n break;\r\n case ModelsTypes.equipmentViewModel:\r\n ValidationFunctions.getEquipmentModbussAddressesPairs(newValuesPairs, newItem);\r\n ValidationFunctions.getEquipmentModbussAddressesNotPairs(newValuesNotPairs, newItem);\r\n break;\r\n case ModelsTypes.sensorViewModel:\r\n ValidationFunctions.getSensorModbussAddressesPairs(newValuesPairs, newItem, location);\r\n ValidationFunctions.getSensorModbussAddressesNotPairs(newValuesNotPairs, newItem, location);\r\n break;\r\n }\r\n\r\n existentItems.forEach((existentItem) => {\r\n switch (existentItem.modelType) {\r\n case ModelsTypes.locationBtxViewModel:\r\n ValidationFunctions.getLocationModbussAddressesPairs(existentValuesPairs, existentItem);\r\n break;\r\n case ModelsTypes.equipmentViewModel:\r\n const equipment = existentItem;\r\n ValidationFunctions.getEquipmentModbussAddressesPairs(existentValuesPairs, existentItem);\r\n ValidationFunctions.getEquipmentModbussAddressesNotPairs(existentValuesNotPairs, existentItem);\r\n break;\r\n case ModelsTypes.sensorViewModel:\r\n ValidationFunctions.getSensorModbussAddressesPairs(existentValuesPairs, existentItem, location);\r\n ValidationFunctions.getSensorModbussAddressesNotPairs(existentValuesNotPairs, existentItem, location);\r\n break;\r\n }\r\n });\r\n\r\n newValuesPairs.forEach((newValuePair: ModbussAddressPair, i: number) => {\r\n existentValuesPairs.forEach((existentValuePair) => {\r\n if (newValuePair.AddressValue == existentValuePair.AddressValue && newValuePair.BitValue == existentValuePair.BitValue) {\r\n duplicatedFields.push({ Name: newValuePair.AddressName, Value: newValuePair.AddressValue, NameOfPair: newValuePair.BitName, ExistIn: existentValuePair.ExistIn });\r\n duplicatedFields.push({ Name: newValuePair.BitName, Value: newValuePair.BitValue, NameOfPair: newValuePair.AddressName, ExistIn: existentValuePair.ExistIn });\r\n }\r\n });\r\n existentValuesNotPairs.forEach((existentValue) => {\r\n if (newValuePair.AddressValue == existentValue.Value) {\r\n duplicatedFields.push({ Name: newValuePair.AddressName, Value: newValuePair.AddressValue, ExistIn: existentValue.ExistIn });\r\n }\r\n });\r\n\r\n if (newValuesPairs.some((value, index) => index != i && value.AddressValue == newValuePair.AddressValue && value.BitValue == newValuePair.BitValue)) {\r\n duplicatedFields.push({ Name: newValuePair.AddressName, Value: newValuePair.AddressValue, NameOfPair: newValuePair.BitName, ExistIn: newValuePair.ExistIn });\r\n duplicatedFields.push({ Name: newValuePair.BitName, Value: newValuePair.BitValue, NameOfPair: newValuePair.AddressName, ExistIn: newValuePair.ExistIn });\r\n }\r\n });\r\n\r\n newValuesNotPairs.forEach((newValue: ModbussAddress, i: number) => {\r\n existentValuesPairs.forEach((existentValuePair) => {\r\n if (newValue.Value == existentValuePair.AddressValue) {\r\n duplicatedFields.push({ Name: newValue.Name, Value: newValue.Value, ExistIn: existentValuePair.ExistIn });\r\n }\r\n });\r\n existentValuesNotPairs.forEach((existentValue) => {\r\n if (newValue.Value == existentValue.Value) {\r\n duplicatedFields.push({ Name: newValue.Name, Value: newValue.Value, ExistIn: existentValue.ExistIn });\r\n }\r\n });\r\n\r\n if (newValuesNotPairs.some((value, index) => index != i && value.Value == newValue.Value)) {\r\n duplicatedFields.push({ Name: newValue.Name, Value: newValue.Value, ExistIn: newValue.ExistIn });\r\n }\r\n });\r\n\r\n return duplicatedFields.filter((item, i, arr) => arr.indexOf(arr.find(t => t.Name === item.Name)) === i);\r\n }\r\n\r\n private static getLocationModbussAddressesPairs(modbussAddressPairs: ModbussAddressPair[], locationBtxModel: LocationBtxViewModel) {\r\n //batteryAlarm\r\n let addressPropName = 'batteryAlarmAddress';\r\n let bitPropName = 'batteryAlarmAddress';\r\n modbussAddressPairs.push({ AddressName: addressPropName, AddressValue: locationBtxModel.batteryAlarmAddress, BitValue: locationBtxModel.batteryAlarmAddressBit, BitName: bitPropName });\r\n //communicationAlarm\r\n addressPropName = 'communicationAlarmAddress';\r\n bitPropName = 'communicationAlarmAddressBit';\r\n modbussAddressPairs.push({ AddressName: addressPropName, AddressValue: locationBtxModel.communicationAlarmAddress, BitValue: locationBtxModel.communicationAlarmAddressBit, BitName: bitPropName });\r\n //suppressorAlarm\r\n addressPropName = 'suppressorAlarmAddress';\r\n bitPropName = 'suppressorAlarmAddressBit';\r\n modbussAddressPairs.push({ AddressName: addressPropName, AddressValue: locationBtxModel.suppressorAlarmAddress, BitValue: locationBtxModel.suppressorAlarmAddressBit, BitName: bitPropName });\r\n }\r\n\r\n private static getEquipmentModbussAddressesPairs(modbussAddressPairs: ModbussAddressPair[], equipmentModel: EquipmentViewModel) {\r\n //maintenanceRequiredWarning\r\n let addressPropName = 'maintenanceRequiredWarningAddress';\r\n let bitPropName = 'maintenanceRequiredWarningAddressBit';\r\n modbussAddressPairs.push({ AddressName: addressPropName, AddressValue: equipmentModel.maintenanceRequiredWarningAddress, BitValue: equipmentModel.maintenanceRequiredWarningAddressBit, BitName: bitPropName });\r\n //shutDownAlarmAddress\r\n addressPropName = 'shutDownAlarmAddress';\r\n bitPropName = 'shutDownAlarmAddressBit';\r\n modbussAddressPairs.push({ AddressName: addressPropName, AddressValue: equipmentModel.shutDownAlarmAddress, BitValue: equipmentModel.shutDownAlarmAddressBit, BitName: bitPropName });\r\n }\r\n\r\n private static getEquipmentModbussAddressesNotPairs(modbussAddress: ModbussAddress[], equipmentModel: EquipmentViewModel) {\r\n let addressPropName: string;\r\n //timeTillMaintenanceAddress\r\n if (equipmentModel.timeTillMaintenanceAddress) {//timeTillMaintenanceAddress is optional\r\n let addressPropName = 'timeTillMaintenanceAddress';\r\n modbussAddress.push({ Name: addressPropName, Value: equipmentModel.timeTillMaintenanceAddress });\r\n }\r\n //totalRunHoursFirstRegisterAddress\r\n addressPropName = 'totalRunHoursFirstRegisterAddress';\r\n modbussAddress.push({ Name: addressPropName, Value: equipmentModel.totalRunHoursFirstRegisterAddress });\r\n //totalRunHoursSecondRegisterAddress\r\n addressPropName = 'totalRunHoursSecondRegisterAddress';\r\n modbussAddress.push({ Name: addressPropName, Value: equipmentModel.totalRunHoursSecondRegisterAddress });\r\n }\r\n\r\n private static getSensorModbussAddressesPairs(modbussAddressPairs: ModbussAddressPair[], sensorModel: SensorViewModel, location: LocationBtxEquipmentViewModel) {\r\n let addressPropName: string;\r\n let bitPropName: string;\r\n let existIn: string;\r\n //these sensors don't have rateOf.. address\r\n if (sensorModel.type != SensorTypeEnum.Vibration && sensorModel.type != SensorTypeEnum.CurrentAmpDraw && sensorModel.type != SensorTypeEnum.CurrentDesignLoad) {\r\n //rateOfChangeAlarmAddress\r\n addressPropName = 'rateOfChangeAlarmAddress';\r\n bitPropName = 'rateOfChangeAlarmAddressBit';\r\n existIn = '';\r\n if (sensorModel.id) {\r\n let sensorProperty = 'Rate of change alarm address';\r\n existIn = this.getSensorExistInText(sensorModel, location, sensorProperty);\r\n }\r\n modbussAddressPairs.push({ AddressName: addressPropName, AddressValue: sensorModel.rateOfChangeAlarmAddress, BitValue: sensorModel.rateOfChangeAlarmAddressBit, BitName: bitPropName, ExistIn: existIn });\r\n\r\n //rateOfChangeWarningAddress\r\n addressPropName = 'rateOfChangeWarningAddress';\r\n bitPropName = 'rateOfChangeWarningAddressBit';\r\n existIn = '';\r\n if (sensorModel.id) {\r\n let sensorProperty = 'Rate of change warning address';\r\n existIn = this.getSensorExistInText(sensorModel, location, sensorProperty);\r\n }\r\n modbussAddressPairs.push({ AddressName: addressPropName, AddressValue: sensorModel.rateOfChangeWarningAddress, BitValue: sensorModel.rateOfChangeWarningAddressBit, BitName: bitPropName, ExistIn: existIn });\r\n }\r\n //warningAddress\r\n addressPropName = 'warningAddress';\r\n bitPropName = 'warningAddressBit';\r\n existIn = '';\r\n if (sensorModel.id) {\r\n let sensorProperty = 'Warning address';\r\n existIn = this.getSensorExistInText(sensorModel, location, sensorProperty);\r\n }\r\n modbussAddressPairs.push({ AddressName: addressPropName, AddressValue: sensorModel.warningAddress, BitValue: sensorModel.warningAddressBit, BitName: bitPropName, ExistIn: existIn });\r\n //alarmAddress\r\n addressPropName = 'alarmAddress';\r\n bitPropName = 'alarmAddressBit';\r\n existIn = '';\r\n if (sensorModel.id) {\r\n let sensorProperty = 'Alarm address';\r\n existIn = this.getSensorExistInText(sensorModel, location, sensorProperty);\r\n }\r\n modbussAddressPairs.push({ AddressName: addressPropName, AddressValue: sensorModel.alarmAddress, BitValue: sensorModel.alarmAddressBit, BitName: bitPropName, ExistIn: existIn });\r\n }\r\n\r\n private static getSensorModbussAddressesNotPairs(modbussAddress: ModbussAddress[], sensorModel: SensorViewModel, location: LocationBtxEquipmentViewModel) {\r\n //modbusAddress\r\n let addressPropName = 'modbusAddress';\r\n let existIn = '';\r\n if (sensorModel.id) {\r\n let sensorProperty = 'Modbus address';\r\n existIn = this.getSensorExistInText(sensorModel, location, sensorProperty);\r\n }\r\n modbussAddress.push({ Name: addressPropName, Value: sensorModel.modbusAddress, ExistIn: existIn });\r\n }\r\n\r\n private static getSensorExistInText(sensorModel: SensorViewModel, location: LocationBtxEquipmentViewModel, sensorProperty: string) {\r\n let existIn = '';\r\n\r\n if (location && location.equipments) {\r\n let equipment = location.equipments.find(e => e.sensors.find(s => s.id === sensorModel.id));\r\n let equipmentName = equipment.name;\r\n\r\n let sensor = equipment.sensors.find(s => s.id === sensorModel.id);\r\n let sensorPosition = sensorPositionLabels[sensor.position];\r\n let sensorType = sensorTypeLabels[sensor.type];\r\n\r\n existIn = equipmentName + ', ' + sensorType + ', ' + sensorPosition + ' is already use this address for ' + sensorProperty;\r\n }\r\n\r\n return existIn;\r\n }\r\n}\r\n","import { Component, OnInit, ViewChild } from '@angular/core';\r\nimport { Subscription } from 'rxjs/internal/Subscription';\r\nimport { FormGroup, FormBuilder } from '@angular/forms';\r\n\r\nimport { ColumnTypeEnum } from '../../../enums';\r\nimport { CompanyViewModel } from '../../../models';\r\nimport { CompaniesDeletePopupComponent, CompaniesAddEditPopupComponent } from '../../popups';\r\nimport { CompaniesDataSourceService } from '../../../services';\r\n\r\n@Component({\r\n selector: 'greensleeves-companies-grid',\r\n templateUrl: './companies-grid.component.html'\r\n})\r\nexport class CompaniesGridComponent implements OnInit {\r\n @ViewChild(CompaniesAddEditPopupComponent, { read: false, static: false })\r\n _addEditModal: CompaniesAddEditPopupComponent;\r\n\r\n @ViewChild(CompaniesDeletePopupComponent, { read: false, static: false })\r\n _deleteModal: CompaniesDeletePopupComponent;\r\n\r\n static LOCATIONS_NAME_KEY = 'locations';\r\n static COMPANY_NAME_KEY = 'name';\r\n static SORT_ORDER_DEFAULT = -1;\r\n\r\n _columnTypeEnum = ColumnTypeEnum;\r\n _sortField = CompaniesGridComponent.LOCATIONS_NAME_KEY;\r\n _sortOrder = CompaniesGridComponent.SORT_ORDER_DEFAULT;\r\n _gridData: CompanyViewModel[];\r\n _companyNameKey = CompaniesGridComponent.COMPANY_NAME_KEY;\r\n\r\n _searchForm: FormGroup;\r\n _lastSearchPhrase: string;\r\n\r\n _columnsView = [\r\n { header: 'Company', columnType: ColumnTypeEnum.Company, dataField: CompaniesGridComponent.COMPANY_NAME_KEY },\r\n { header: 'Locations', columnType: ColumnTypeEnum.LocationName, dataField: CompaniesGridComponent.LOCATIONS_NAME_KEY },\r\n { header: '', columnType: ColumnTypeEnum.Edit, width: \"46\" },\r\n { header: '', columnType: ColumnTypeEnum.Delete, width: \"46\", dataField: CompaniesGridComponent.LOCATIONS_NAME_KEY }\r\n ]\r\n _loading: boolean = false;\r\n private _companiesSubscription: Subscription;\r\n\r\n constructor(\r\n private _companiesService: CompaniesDataSourceService,\r\n formBuilder: FormBuilder\r\n ) {\r\n this._searchForm = formBuilder.group({\r\n searchPhrase: ['']\r\n });\r\n }\r\n\r\n ngOnInit() {\r\n this._companiesSubscription = this._companiesService.companies$.subscribe(items => {\r\n this._gridData = items ? items : [];\r\n this._loading = false;\r\n })\r\n this._loading = true;\r\n this._companiesService.get();\r\n }\r\n\r\n ngOnDestroy() {\r\n this._companiesSubscription\r\n && !this._companiesSubscription.closed\r\n && this._companiesSubscription.unsubscribe();\r\n\r\n this._companiesSubscription = null;\r\n }\r\n\r\n onUpdateLastSearch() {\r\n this._lastSearchPhrase = this._searchForm.controls.searchPhrase.value;\r\n }\r\n\r\n onClickEdit(company: CompanyViewModel) {\r\n this._companiesService.markCompanyForOthersAsInUpdate(company.id);\r\n this._addEditModal.showEdit(company);\r\n }\r\n\r\n onClickDelete(companyName: CompanyViewModel) {\r\n this._deleteModal.show(companyName);\r\n }\r\n\r\n onGetLocationsNames(company: CompanyViewModel): string {\r\n return company.locations ? company.locations.map(l => l.name).join(', ') : '';\r\n }\r\n}\r\n","export * from './companies-grid.component';\r\n","import { Component, ViewChild } from '@angular/core';\r\nimport { CompaniesAddEditPopupComponent } from '../popups';\r\nimport { CompaniesDataSourceService } from '../../services';\r\n\r\n@Component({\r\n selector: 'greensleeves-companies-tab',\r\n templateUrl: './companies-tab.component.html'\r\n})\r\n\r\nexport class CompaniesTabComponent {\r\n @ViewChild(CompaniesAddEditPopupComponent, { read: false, static: false })\r\n _addModal: CompaniesAddEditPopupComponent;\r\n _gridData: Array<{ id: number, name: string, locations: string }>;\r\n\r\n constructor (private _companiesService: CompaniesDataSourceService) {}\r\n ngOnInit() {\r\n this._companiesService.get();\r\n }\r\n\r\n onClickAdd() {\r\n this._addModal.showAdd();\r\n }\r\n}","export * from './companies-tab.component';\r\nexport * from './companies-grid';","import { Component, OnInit, OnDestroy, ViewChild } from '@angular/core';\r\n\r\nimport { ColumnTypeEnum } from '../../../enums';\r\nimport { CompanyAdminViewModel } from '../../../models';\r\nimport { CompanyAdminsDataSourceService } from '../../../services';\r\nimport { LocalStorageService, UserRoleEnum } from '../../../../common';\r\nimport { Subscription } from 'rxjs';\r\nimport { CompanyAdminEditPopupComponent, CompanyAdminDeletePopupComponent } from '../../popups';\r\nimport { FormBuilder, FormGroup } from '@angular/forms';\r\n\r\n@Component({\r\n selector: 'greensleeves-company-admins-grid',\r\n templateUrl: './company-admins-grid.component.html'\r\n})\r\n\r\nexport class CompanyAdminsGridComponent implements OnInit, OnDestroy {\r\n static COMPANY_NAME_KEY = 'companyName';\r\n static COMPANY_ORDER_KEY = 'id';\r\n static SORT_ORDER_DEFAULT = -1;\r\n\r\n @ViewChild(CompanyAdminEditPopupComponent, { read: false, static: false })\r\n _editModal: CompanyAdminEditPopupComponent;\r\n\r\n @ViewChild(CompanyAdminDeletePopupComponent, { read: false, static: false })\r\n _deleteModal: CompanyAdminDeletePopupComponent;\r\n\r\n _columnTypeEnum = ColumnTypeEnum;\r\n _sortField = CompanyAdminsGridComponent.COMPANY_ORDER_KEY;\r\n _sortOrder = CompanyAdminsGridComponent.SORT_ORDER_DEFAULT;\r\n _gridData: CompanyAdminViewModel[];\r\n _companyNameKey = CompanyAdminsGridComponent.COMPANY_NAME_KEY;\r\n _currentUserId: string;\r\n _searchPhrase: string = '';\r\n _searchForm: FormGroup;\r\n _lastSearchPhrase: string;\r\n _loading: boolean = false;\r\n\r\n _companyAdminsSubscription: Subscription;\r\n _role: UserRoleEnum;\r\n\r\n get _isServiceUser(): boolean {\r\n return this._role === UserRoleEnum.ServiceUser;\r\n }\r\n\r\n get _isCompanyAdmin(): boolean {\r\n return this._role === UserRoleEnum.CompanyAdmin;\r\n }\r\n\r\n get _columns() {\r\n return [\r\n { header: 'First name', columnType: ColumnTypeEnum.UserFirstName, dataField: 'firstName' },\r\n { header: 'Last name', columnType: ColumnTypeEnum.UserLastName, dataField: 'lastName' },\r\n ...(this._isServiceUser ? [{ header: 'Company', dataField: 'companyName' }] : []),\r\n { header: 'Email', dataField: 'email' },\r\n { header: 'Last login date', columnType: ColumnTypeEnum.Date, dataField: 'lastLoginDate' },\r\n { header: '', columnType: ColumnTypeEnum.Edit, width: \"46\" },\r\n { header: '', columnType: ColumnTypeEnum.Delete, dataField: 'id', width: \"46\" }\r\n ];\r\n }\r\n\r\n constructor(\r\n private _companyAdminsService: CompanyAdminsDataSourceService,\r\n private _localStorageService: LocalStorageService,\r\n formBuilder: FormBuilder\r\n ) {\r\n this._searchForm = formBuilder.group({\r\n searchPhrase: ['']\r\n });\r\n }\r\n\r\n ngOnInit() {\r\n const info = this._localStorageService.getLoginInfo();\r\n this._role = info ? info.role : null;\r\n this._currentUserId = info.id;\r\n if (this._isServiceUser) {\r\n this._companyAdminsService.get(null);\r\n } else {\r\n this._companyAdminsService.get(info.companyId);\r\n }\r\n this._loading = true;\r\n this._companyAdminsSubscription = this._companyAdminsService.companyAdmins$\r\n .subscribe(data => {\r\n this._gridData = data\r\n this._loading = false;\r\n });\r\n }\r\n\r\n ngOnDestroy() {\r\n this._companyAdminsSubscription && this._companyAdminsSubscription.unsubscribe();\r\n this._companyAdminsSubscription = null;\r\n }\r\n\r\n onClickEdit(companyAdmin: CompanyAdminViewModel) {\r\n this._companyAdminsService.markCompanyAdminForOthersAsInUpdate(companyAdmin.id, companyAdmin.companyId);\r\n this._editModal.show(companyAdmin);\r\n }\r\n\r\n onClickDelete(companyAdmin: CompanyAdminViewModel) {\r\n this._deleteModal.show(companyAdmin);\r\n }\r\n\r\n onUpdateLastSearch() {\r\n this._lastSearchPhrase = this._searchForm.controls.searchPhrase.value;\r\n }\r\n}\r\n","export * from './company-admins-grid.component';\r\n","import { Component, ViewChild } from '@angular/core';\r\n\r\nimport { UserRoleEnum } from '../../../common';\r\nimport { TutorialMenuEnum, TutorialParagraphEnum } from '../../enums';\r\nimport { CompaniesDataSourceService, RoleService } from '../../services';\r\nimport { CompanyAdminAddPopupComponent, TutorialPopupComponent } from '../popups';\r\n\r\n@Component({\r\n selector: 'greensleeves-company-admins-tab',\r\n templateUrl: './company-admins-tab.component.html'\r\n})\r\nexport class CompanyAdminsTabComponent {\r\n @ViewChild(CompanyAdminAddPopupComponent, { read: false, static: false })\r\n _addModal: CompanyAdminAddPopupComponent;\r\n\r\n @ViewChild(TutorialPopupComponent, { read: false, static: false })\r\n private tutorialPopup: TutorialPopupComponent;\r\n\r\n _role: UserRoleEnum;\r\n\r\n get _isServiceUser(): boolean {\r\n return this._role === UserRoleEnum.ServiceUser;\r\n }\r\n\r\n get isCompanyAdmin(): boolean {\r\n return this._roleService.userHasRole(UserRoleEnum.CompanyAdmin);\r\n }\r\n\r\n constructor(\r\n private _companiesService: CompaniesDataSourceService,\r\n private _roleService: RoleService,\r\n ) { }\r\n\r\n ngOnInit() {\r\n if (this._isServiceUser) {\r\n this._companiesService.get();\r\n }\r\n }\r\n\r\n onClickAdd() {\r\n this._addModal.show();\r\n }\r\n\r\n showTutorial() {\r\n this.tutorialPopup.showPopup(TutorialMenuEnum.UserManagement, TutorialParagraphEnum.AddCompanyAdmin);\r\n }\r\n}\r\n","export * from './company-admins-grid';\r\nexport * from './company-admins-tab.component';\r\n","import { Component, OnInit, OnDestroy, ViewChild } from '@angular/core';\r\n\r\nimport { ColumnTypeEnum, UserStatusEnum } from '../../../enums';\r\nimport { CompanyUserPostModel, CompanyUserViewModel, UserLocation } from '../../../models';\r\nimport { CompanyUsersDataSourceService } from '../../../services';\r\nimport { LocalStorageService, UserRoleEnum } from '../../../../common';\r\nimport { Subscription } from 'rxjs';\r\nimport { CompanyUserEditPopupComponent, CompanyUserDeletePopupComponent } from '../../popups';\r\nimport { FormBuilder, FormGroup } from '@angular/forms';\r\n\r\n@Component({\r\n selector: 'greensleeves-company-users-grid',\r\n templateUrl: './company-users-grid.component.html'\r\n})\r\n\r\nexport class CompanyUsersGridComponent implements OnInit, OnDestroy {\r\n static LOCATION_NAME_KEY = 'locations';\r\n static SORT_ORDER_DEFAULT = -1;\r\n\r\n @ViewChild(CompanyUserEditPopupComponent, { read: false, static: false })\r\n _editModal: CompanyUserEditPopupComponent;\r\n\r\n @ViewChild(CompanyUserDeletePopupComponent, { read: false, static: false })\r\n _deleteModal: CompanyUserDeletePopupComponent;\r\n\r\n _columnTypeEnum = ColumnTypeEnum;\r\n _userStatus = UserStatusEnum;\r\n _sortField = CompanyUsersGridComponent.LOCATION_NAME_KEY;\r\n _sortOrder = CompanyUsersGridComponent.SORT_ORDER_DEFAULT;\r\n _gridData: CompanyUserViewModel[];\r\n _locationNameKey = CompanyUsersGridComponent.LOCATION_NAME_KEY;\r\n\r\n _searchPhrase: string = '';\r\n _searchForm: FormGroup;\r\n _lastSearchPhrase: string;\r\n _companyUsersSubscription: Subscription;\r\n _role: UserRoleEnum;\r\n _loading: boolean = false;\r\n\r\n get _isCompanyAdmin(): boolean {\r\n return this._role === UserRoleEnum.CompanyAdmin;\r\n }\r\n\r\n get _columns() {\r\n return [\r\n { header: 'First name', columnType: ColumnTypeEnum.UserFirstName, dataField: 'firstName' },\r\n { header: 'Last name', columnType: ColumnTypeEnum.UserLastName, dataField: 'lastName' },\r\n { header: 'Email', dataField: 'email' },\r\n ...(this._gridData.some(function (el) { return el.arduinoLocations.length > 0 }) ? [{ header: 'BTX Locations', columnType: ColumnTypeEnum.UserLocationNames, dataField: 'arduinoLocationNames' }] : []),\r\n ...(this._gridData.some(function (el) { return el.raspberryLocations.length > 0 }) ? [{ header: 'KTX Locations', columnType: ColumnTypeEnum.UserLocationNames, dataField: 'raspberryLocationNames' }] : []),\r\n ...(this._gridData.some(function (el) { return el.itxLocations.length > 0 }) ? [{ header: 'ITX Locations', columnType: ColumnTypeEnum.UserLocationNames, dataField: 'itxLocationsNames' }] : []),\r\n { header: 'Last login date', columnType: ColumnTypeEnum.Date, dataField: 'lastLoginDate', width: \"170\" },\r\n { header: 'Status', columnType: ColumnTypeEnum.Status, dataField: 'status', width: \"80\" },\r\n { header: '', columnType: ColumnTypeEnum.Edit, width: \"46\" },\r\n { header: '', columnType: ColumnTypeEnum.Delete, width: \"46\" }\r\n ];\r\n }\r\n\r\n constructor(\r\n private _companyUsersService: CompanyUsersDataSourceService,\r\n private _localStorageService: LocalStorageService,\r\n formBuilder: FormBuilder\r\n ) {\r\n this._searchForm = formBuilder.group({\r\n searchPhrase: ['']\r\n });\r\n }\r\n\r\n ngOnInit() {\r\n const info = this._localStorageService.getLoginInfo();\r\n this._role = info ? info.role : null;\r\n this._loading = true;\r\n this._companyUsersService.get(info ? info.companyId : 0);\r\n this._companyUsersSubscription = this._companyUsersService.companyUsers$\r\n .subscribe(data => {\r\n this._gridData = data;\r\n this._loading = false;\r\n });\r\n }\r\n\r\n ngOnDestroy() {\r\n this._companyUsersSubscription && this._companyUsersSubscription.unsubscribe();\r\n this._companyUsersSubscription = null;\r\n }\r\n\r\n async onClickEdit(companyUser: CompanyUserViewModel) {\r\n await this._companyUsersService.markCompanyUserForOthersAsInUpdate(companyUser.id);\r\n this._editModal.show(companyUser);\r\n }\r\n\r\n onClickDelete(companyUser: CompanyUserViewModel) {\r\n this._deleteModal.show(companyUser);\r\n }\r\n\r\n onClickSearch(_searchPhrase: string) {\r\n this._companyUsersSubscription = this._companyUsersService.companyUsers$\r\n .subscribe(data => this._gridData = data);\r\n\r\n if (_searchPhrase.length > 0) {\r\n this._gridData = this._gridData.filter(\r\n i => i.arduinoLocations.filter(l => l.name.toLowerCase().indexOf(_searchPhrase.toLowerCase()) > -1).length > 0\r\n || i.raspberryLocations.filter(l => l.name.toLowerCase().indexOf(_searchPhrase.toLowerCase()) > -1).length > 0\r\n || i.itxLocations.filter(l => l.name.toLowerCase().indexOf(_searchPhrase.toLowerCase()) > -1).length > 0);\r\n }\r\n }\r\n}","export * from './company-users-grid.component';\r\n","import { Component, ViewChild } from '@angular/core';\r\nimport { Subscription } from 'rxjs';\r\n\r\nimport { LocalStorageService, UserRoleEnum } from '../../../common';\r\nimport { LocationsDataSourceService } from '../../services';\r\nimport { CompanyUserAddPopupComponent, TutorialPopupComponent } from '../popups';\r\nimport { TutorialMenuEnum, TutorialParagraphEnum } from '../../enums';\r\n\r\n@Component({\r\n selector: 'greensleeves-company-users-tab',\r\n templateUrl: './company-users-tab.component.html'\r\n})\r\nexport class CompanyUsersTabComponent {\r\n @ViewChild(CompanyUserAddPopupComponent, { read: false, static: false })\r\n _addModal: CompanyUserAddPopupComponent;\r\n\r\n @ViewChild(TutorialPopupComponent, { read: false, static: false })\r\n private tutorialPopup: TutorialPopupComponent;\r\n\r\n _role: UserRoleEnum;\r\n _btxLocations: { label: string, value: number }[];\r\n _ktxLocations: { label: string, value: number }[];\r\n _itxLocations: { label: string, value: number }[];\r\n private _subscriptions: Subscription[] = [];\r\n\r\n constructor(\r\n private _locationsService: LocationsDataSourceService,\r\n private _localStorageService: LocalStorageService,\r\n ) { }\r\n\r\n ngOnInit() {\r\n const info = this._localStorageService.getLoginInfo();\r\n this._role = info ? info.role : null;\r\n\r\n let subscriptionLocationBtx = this._locationsService.btxLocationsForCompany$.subscribe(data => {\r\n if (data) {\r\n this._btxLocations = data.map(x => ({ label: x.locationName, value: x.id }));\r\n }\r\n });\r\n\r\n let subscriptionLocationKtx = this._locationsService.ktxLocationsForCompany$.subscribe(data => {\r\n if (data) {\r\n this._ktxLocations = data.map(x => ({ label: x.locationName, value: x.id }));\r\n }\r\n });\r\n\r\n let subscriptionLocationItx = this._locationsService.itxLocationsForCompany$.subscribe(data => {\r\n if (data) {\r\n this._itxLocations = data.map(x => ({ label: x.locationName, value: x.id }));\r\n }\r\n });\r\n\r\n this._subscriptions.push(subscriptionLocationBtx);\r\n this._subscriptions.push(subscriptionLocationKtx);\r\n this._subscriptions.push(subscriptionLocationItx);\r\n this._locationsService.getKtxBtxItxLocationForCompany(info ? info.companyId : 0);\r\n }\r\n\r\n ngOnDestroy() {\r\n this._subscriptions && this._subscriptions.forEach(sub => sub.unsubscribe());\r\n this._subscriptions = [];\r\n }\r\n\r\n onClickAdd() {\r\n this._addModal.show();\r\n }\r\n\r\n showTutorial() {\r\n this.tutorialPopup.showPopup(TutorialMenuEnum.UserManagement, TutorialParagraphEnum.AddCompanyUser);\r\n }\r\n}\r\n","export * from './company-users-grid';\r\nexport * from './company-users-tab.component';","import { AfterViewInit, Component, OnDestroy, OnInit, ViewChild } from '@angular/core';\r\nimport { FormBuilder, FormGroup } from '@angular/forms';\r\nimport { CompanyViewModel, GetLocationUpdatersFilterModel, InstallProjectModel, LocationDevicesViewModel, LocationUpdaterViewModel, ProjectUpdaterDeviceViewModel, UpdateDeviceViewModel, UpdateFirmwareTriggerModel } from '@models';\r\nimport { FirmwareManagementPopupComponent, UpdateVersionsManagementPopupComponent, DeviceCommunicationPopupComponent, UpdateFirmwarePopupComponent, UpdaterAddEditPopupComponent, UpdaterDeletePopupComponent, UploadFirmwareInstallPopupComponent } from '@popups';\r\nimport PerfectScrollbar from 'perfect-scrollbar';\r\nimport { interval, Subscription } from 'rxjs';\r\n\r\nimport { ColumnTypeEnum, ProjectEnum, UpdateProjectStateEnum } from '../../enums';\r\nimport { CompaniesDataSourceService, UpdaterDeviceDatasourceService } from '../../services';\r\n\r\n@Component({\r\n selector: 'greensleeves-device-update-management-tab',\r\n templateUrl: './device-update-management-tab.component.html',\r\n})\r\nexport class DeviceUpdateManagementTabComponent implements OnInit, OnDestroy, AfterViewInit {\r\n private static readonly STATE_UPDATES_RATE: number = 10000;\r\n @ViewChild(UpdateVersionsManagementPopupComponent, { read: false, static: false })\r\n private versionComponent: UpdateVersionsManagementPopupComponent;\r\n\r\n @ViewChild(UpdaterDeletePopupComponent, { read: false, static: false })\r\n private deleteComponent: UpdaterDeletePopupComponent;\r\n\r\n @ViewChild(UpdaterAddEditPopupComponent, { read: false, static: true })\r\n private addEditComponent: UpdaterAddEditPopupComponent;\r\n\r\n @ViewChild(FirmwareManagementPopupComponent, { read: false, static: true })\r\n private firmwareComponent: FirmwareManagementPopupComponent;\r\n\r\n @ViewChild(UpdateFirmwarePopupComponent, { read: false, static: true })\r\n private updateFirmwarePopup: UpdateFirmwarePopupComponent;\r\n\r\n @ViewChild(DeviceCommunicationPopupComponent, { read: false, static: true })\r\n private deviceLogsPopup: DeviceCommunicationPopupComponent;\r\n\r\n @ViewChild(UploadFirmwareInstallPopupComponent, { read: false, static: true })\r\n private installProjectPopup: UploadFirmwareInstallPopupComponent;\r\n\r\n static LOCATION_NAME_KEY = 'name';\r\n static COMPANY_NAME_KEY = 'companyName';\r\n\r\n _ps: PerfectScrollbar;\r\n _sortOrder = 1;\r\n _sortField = DeviceUpdateManagementTabComponent.COMPANY_NAME_KEY;\r\n _loading: boolean = false;\r\n _gridData: LocationUpdaterViewModel[] = [];\r\n _updateState = UpdateProjectStateEnum;\r\n _locationNameKey = DeviceUpdateManagementTabComponent.LOCATION_NAME_KEY;\r\n _companyNameKey = DeviceUpdateManagementTabComponent.COMPANY_NAME_KEY;\r\n _columnTypeEnum = ColumnTypeEnum;\r\n _projectEnum: ProjectEnum;\r\n _expandedLocationRows = {};\r\n _expandedUpdaterRows = {};\r\n _isOpenFilterList: boolean = false;\r\n _projectsOptions: { label: string, value: ProjectEnum }[] = [\r\n { label: ProjectEnum[ProjectEnum.Btx], value: ProjectEnum.Btx },\r\n { label: ProjectEnum[ProjectEnum.Ktx], value: ProjectEnum.Ktx },\r\n { label: ProjectEnum[ProjectEnum.Itx], value: ProjectEnum.Itx },\r\n ];\r\n _projectsSelected: ProjectEnum[] = [];\r\n\r\n private checkStateUpdates: UpdateFirmwareTriggerModel[] = [];\r\n private subscriptions: Subscription[] = [];\r\n private intervalSubscription: Subscription = null;\r\n\r\n _searchForm: FormGroup;\r\n _lastSearchPhrase: string;\r\n _companiesOptions: { label: string, value: number }[] = [];\r\n _companiesSelected: number[] = [];\r\n\r\n get _locationColumns() {\r\n return [\r\n { header: 'Company', columnType: ColumnTypeEnum.CompanyName, dataField: DeviceUpdateManagementTabComponent.COMPANY_NAME_KEY },\r\n { header: 'Location name', columnType: ColumnTypeEnum.LocationName, dataField: DeviceUpdateManagementTabComponent.LOCATION_NAME_KEY },\r\n { header: 'Projects', columnType: ColumnTypeEnum.Project, dataField: 'projectsAvailable' },\r\n { header: 'Projects with updaters', columnType: ColumnTypeEnum.Updaters, dataField: 'projectUpdaterAvailable' },\r\n { header: '', columnType: ColumnTypeEnum.Add, width: 46 },\r\n { header: '', columnType: ColumnTypeEnum.Expand, width: 46 },\r\n ];\r\n }\r\n\r\n get _updaterColumns() {\r\n return [\r\n { header: 'Updater name', columnType: ColumnTypeEnum.UpdaterName },\r\n { header: 'Current version', columnType: ColumnTypeEnum.CurrentVersion },\r\n { header: 'Last updated', columnType: ColumnTypeEnum.Date },\r\n { header: '', columnType: ColumnTypeEnum.Update, with: 46 },\r\n { header: '', columnType: ColumnTypeEnum.InitializeDevice, width: 46 },\r\n { header: '', columnType: ColumnTypeEnum.DownloadConnectionFile, width: 46 },\r\n { header: '', columnType: ColumnTypeEnum.UploadConfigFile, width: 46 },\r\n { header: '', columnType: ColumnTypeEnum.History, width: 46 },\r\n { header: '', columnType: ColumnTypeEnum.Edit, width: 46 },\r\n { header: '', columnType: ColumnTypeEnum.Delete, width: 46 },\r\n { header: '', columnType: ColumnTypeEnum.Expand, width: 46 },\r\n ];\r\n }\r\n\r\n get _updaterProjectsColumns() {\r\n return [\r\n { header: 'Project name', columnType: ColumnTypeEnum.UpdaterName },\r\n { header: 'Current version', columnType: ColumnTypeEnum.CurrentVersion },\r\n { header: 'Last updated', columnType: ColumnTypeEnum.Date },\r\n { header: '', columnType: ColumnTypeEnum.Update, with: 46 },\r\n { header: '', columnType: ColumnTypeEnum.UploadConfigFile, width: 46 },\r\n { header: '', columnType: ColumnTypeEnum.History, width: 46 },\r\n ];\r\n }\r\n\r\n constructor(\r\n private _updateDeviceDataService: UpdaterDeviceDatasourceService,\r\n private _companiesService: CompaniesDataSourceService,\r\n formBuilder: FormBuilder) {\r\n this._searchForm = formBuilder.group({\r\n searchPhrase: [''],\r\n });\r\n }\r\n async ngAfterViewInit() {\r\n var result = await this._companiesService.getCompaniesForUpdaterFilter() as CompanyViewModel[];\r\n this._companiesOptions = [];\r\n if (result && result.length > 0) {\r\n result.forEach(i => {\r\n this._companiesOptions.push({ label: i.name, value: i.id });\r\n })\r\n }\r\n }\r\n\r\n ngOnInit() {\r\n this._loading = true;\r\n let sub = this._updateDeviceDataService.locationsUpdaters$.subscribe(items => {\r\n this._gridData = items;\r\n this.subscribeUpdaters(items);\r\n this._loading = false;\r\n });\r\n\r\n this.getLocationsByFilter();\r\n this._companiesService.get();\r\n this.subscriptions.push(sub);\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.subscriptions && this.subscriptions.forEach(x => x.unsubscribe);\r\n this.intervalSubscription && this.intervalSubscription.unsubscribe();\r\n }\r\n\r\n projectsAvailable(locationDevices: LocationDevicesViewModel[]): string {\r\n let projects = locationDevices.map(x => ProjectEnum[x.project]);\r\n return projects.filter(x => x).join(', ');\r\n }\r\n\r\n projectUpdaterDevices(updaters: UpdateDeviceViewModel[]): string {\r\n let projectsUpdaters: string[] = [];\r\n if (updaters != null && updaters.length != 0) {\r\n updaters.forEach(x =>\r\n projectsUpdaters.push(...x.projectDevices.map(d => ProjectEnum[d.project]))\r\n );\r\n return projectsUpdaters.filter(x => x).join(', ');\r\n }\r\n\r\n return '-';\r\n }\r\n\r\n async onClickFirmwareManagement() {\r\n await this.firmwareComponent.onShow();\r\n }\r\n\r\n onClickAdd(location: LocationUpdaterViewModel) {\r\n this.addEditComponent.showAdd(location);\r\n }\r\n\r\n async onClickInitializeDevice(updater: UpdateDeviceViewModel) {\r\n updater.isDeviceInInitialization = true;\r\n updater.isInitialized = await this._updateDeviceDataService.initializeDeviceConfiguration(updater.id) as boolean;\r\n updater.isDeviceInInitialization = false;\r\n }\r\n\r\n async onClickDownloadConnection(updater: UpdateDeviceViewModel, location: LocationUpdaterViewModel) {\r\n this.deviceLogsPopup.onShowUpdaterDevice({ deviceId: updater.id, locationId: location.id, locationName: location.name, project: ProjectEnum.Updater },\r\n updater.projectsAvailable);\r\n }\r\n\r\n onClickEditDevice(updater: UpdateDeviceViewModel, location: LocationUpdaterViewModel) {\r\n this.addEditComponent.showEdit(updater, location);\r\n }\r\n\r\n async onClickDeleteDevice(updaterId: string, locationId: number) {\r\n this.deleteComponent.show(updaterId, locationId);\r\n }\r\n\r\n onDeleted(locatioId: number) {\r\n let location = this._gridData.find(x => x.id == locatioId);\r\n if (location) {\r\n if (location.updaterDevices.length == 0) {\r\n this._expandedLocationRows[locatioId] = false;\r\n }\r\n }\r\n }\r\n\r\n onEdit(editUpdater: UpdateDeviceViewModel) {\r\n let location = this._gridData.find(x => x.id == editUpdater.locationId);\r\n if (location) {\r\n var updater = location.updaterDevices.find(x => x.id == editUpdater.id);\r\n if (updater.projectDevices.length < 2) {\r\n this._expandedUpdaterRows[updater.id] = false;\r\n }\r\n }\r\n }\r\n\r\n async onClickDeviceHistory(device: UpdateDeviceViewModel, location: LocationUpdaterViewModel) {\r\n await this.versionComponent.onShow(device.projectDevices[0].deviceId, location.id, location.name, ProjectEnum[device.projectDevices[0].project]);\r\n }\r\n\r\n async onClickDeviceHistoryForSeveralProjects(device: ProjectUpdaterDeviceViewModel, location: LocationUpdaterViewModel) {\r\n await this.versionComponent.onShow(device.deviceId, location.id, location.name, ProjectEnum[device.project]);\r\n }\r\n\r\n onUpdateLastSearch() {\r\n this._lastSearchPhrase = this._searchForm.controls.searchPhrase.value.toLowerCase();\r\n\r\n this._gridData = this._updateDeviceDataService.locationsUpdaters$.getValue().filter(item => {\r\n const locationMatches = item[this._locationNameKey] && item[this._locationNameKey].toLowerCase().includes(this._lastSearchPhrase);\r\n const companyMatches = item[this._companyNameKey] && item[this._companyNameKey].toLowerCase().includes(this._lastSearchPhrase);\r\n return locationMatches || companyMatches;\r\n });\r\n }\r\n\r\n onClickFirmwareUpdate() {\r\n this.updateFirmwarePopup.show();\r\n }\r\n\r\n getUpdaterName(updater: UpdateDeviceViewModel): string {\r\n if (updater.projectDevices != null && updater.projectsAvailable != 0) {\r\n if (updater.projectDevices.length == 1) {\r\n return ProjectEnum[updater.projectDevices[0].project];\r\n } else {\r\n let projects = updater.projectDevices.map(x => ProjectEnum[x.project])\r\n return projects.filter(x => x).join(', ');\r\n }\r\n }\r\n return \"Unknown\";\r\n }\r\n\r\n getCurrentVersion(projectDevice: ProjectUpdaterDeviceViewModel): string {\r\n if (projectDevice != null && projectDevice.currentVersion != null && projectDevice.currentVersion.trim().length !== 0) {\r\n return projectDevice.currentVersion;\r\n }\r\n return '-';\r\n }\r\n\r\n getProjectString(project: ProjectEnum): string {\r\n return ProjectEnum[project];\r\n }\r\n\r\n async getLocationsByFilter() {\r\n this._loading = true;\r\n let request = {\r\n companies: this._companiesSelected,\r\n projects: this._projectsSelected,\r\n } as GetLocationUpdatersFilterModel;\r\n this._updateDeviceDataService.getByFilter(request);\r\n }\r\n\r\n canBeAddedUpdater(location: LocationUpdaterViewModel): boolean {\r\n let locationDevices = location.locationDevices.length;\r\n let updaterProjects: ProjectUpdaterDeviceViewModel[] = []\r\n location.updaterDevices.forEach(x => {\r\n updaterProjects.push(...x.projectDevices);\r\n });\r\n\r\n return locationDevices != updaterProjects.length;\r\n }\r\n\r\n subscribeUpdaters(locations: LocationUpdaterViewModel[]) {\r\n this.checkStateUpdates = [];\r\n locations.forEach(l => {\r\n if (l.updaterDevices != null && l.updaterDevices.length > 0) {\r\n l.updaterDevices.forEach(ud => {\r\n ud.projectDevices.forEach(d => {\r\n if (d.state == this._updateState.Updating || d.state == this._updateState.Starting) {\r\n this.checkStateUpdates.push({ locationId: l.id, projectDeviceId: d.deviceId, updaterDeviceId: ud.id } as UpdateFirmwareTriggerModel);\r\n }\r\n });\r\n })\r\n }\r\n });\r\n if (this.checkStateUpdates.length > 0) {\r\n if (this.intervalSubscription == null)\r\n this.intervalSubscription = interval(DeviceUpdateManagementTabComponent.STATE_UPDATES_RATE).subscribe(() => {\r\n if (this.checkStateUpdates.length > 0) {\r\n this._updateDeviceDataService.getUpdaterStates(this.checkStateUpdates);\r\n }\r\n });\r\n } else {\r\n if (this.intervalSubscription != null) {\r\n this.intervalSubscription.unsubscribe();\r\n this.intervalSubscription = null;\r\n }\r\n }\r\n }\r\n\r\n getFilterCount() {\r\n return this._projectsSelected.length + this._companiesSelected.length;\r\n }\r\n\r\n openFilterList() {\r\n this._isOpenFilterList = !this._isOpenFilterList;\r\n }\r\n\r\n isUpdatingState(state: UpdateProjectStateEnum): boolean {\r\n return state == this._updateState.Updating || state == this._updateState.Starting;\r\n }\r\n\r\n geLastUpdateDate(projectDevice: ProjectUpdaterDeviceViewModel): number {\r\n if (projectDevice != null && projectDevice.lastUpdate != null) {\r\n return projectDevice.lastUpdate * 1000;\r\n }\r\n return null;\r\n }\r\n\r\n hideEditButton(location: LocationUpdaterViewModel, updater: UpdateDeviceViewModel): boolean {\r\n if (location.updaterDevices.length === location.locationDevices.length) {\r\n return true;\r\n } else if (updater.projectDevices.length === 1 && location.updaterDevices.length === 2) {\r\n const secondUpdater = location.updaterDevices.find(u => u.id !== updater.id);\r\n if (secondUpdater !== null && secondUpdater.projectDevices.length === 2) {\r\n return true;\r\n }\r\n }\r\n return false;\r\n }\r\n\r\n installFirmware(locationId: number, updaterId: string, projectDeviceId: string, project: ProjectEnum) {\r\n let installProject = new InstallProjectModel();\r\n installProject.locationId = locationId;\r\n installProject.projectDeviceId = projectDeviceId;\r\n installProject.updaterDeviceId = updaterId;\r\n installProject.project = project;\r\n installProject.locationName = this._updateDeviceDataService.locationsUpdaters$.getValue().find(x => x.id == locationId).name;\r\n\r\n this.installProjectPopup.onShow(installProject);\r\n }\r\n}","export * from './device-update-management-tab.component';","import { Component, ElementRef, NgZone, OnInit, ViewChild } from '@angular/core';\r\nimport { Subscription } from 'rxjs';\r\nimport PerfectScrollbar from 'perfect-scrollbar';\r\n\r\nimport { ConvertDataFunctions, LocalStorageService, UserRoleEnum } from '../../../common';\r\nimport { LocationsDataSourceService } from '../../services';\r\nimport { ColumnTypeEnum, TutorialMenuEnum } from '../../enums';\r\nimport { EmailServiceViewModel } from '../../models';\r\nimport { EmailServiceDataSourceService } from '../../services';\r\nimport { EmailServiceScheduleLable } from '../../constants';\r\nimport { EmailServiceAddEditPopupComponent, EmailServiceDeletePopupComponent, TutorialPopupComponent } from '../popups/';\r\n\r\n@Component({\r\n selector: 'greensleeves-email-management-tab',\r\n templateUrl: './email-management-tab.component.html',\r\n})\r\nexport class EmailManagementTabComponent implements OnInit {\r\n\r\n @ViewChild(EmailServiceAddEditPopupComponent, { read: false, static: false })\r\n _addEditModal: EmailServiceAddEditPopupComponent;\r\n\r\n @ViewChild(EmailServiceDeletePopupComponent, { read: false, static: false })\r\n _deleteModal: EmailServiceDeletePopupComponent;\r\n\r\n @ViewChild(TutorialPopupComponent, { read: false, static: false })\r\n private tutorialPopup: TutorialPopupComponent;\r\n\r\n _ps: PerfectScrollbar;\r\n _sortField = 'emails';\r\n _sortOrder = -1;\r\n _loading: boolean = false;\r\n _role: UserRoleEnum;\r\n private subscriptions: Subscription[] = [];\r\n\r\n get _hasLocations(): boolean {\r\n return this._btxLocations.length === 0 && this._ktxLocations.length === 0 && this._itxLocations.length === 0;\r\n }\r\n\r\n _gridData: EmailServiceViewModel[] = [];\r\n _columnTypeEnum = ColumnTypeEnum;\r\n\r\n _btxLocations: { label: string, value: number }[] = [];\r\n _ktxLocations: { label: string, value: number }[] = [];\r\n _itxLocations: { label: string, value: number }[] = [];\r\n\r\n get _columns() {\r\n return [\r\n ...[{ header: 'Emails', columnType: ColumnTypeEnum.ServiceEmail, dataField: 'emails' }],\r\n ...[{ header: 'BTX Locations', columnType: ColumnTypeEnum.UserLocationNames, dataField: 'btxLocationNames' }],\r\n ...[{ header: 'KTX Locations', columnType: ColumnTypeEnum.UserLocationNames, dataField: 'ktxLocationNames' }],\r\n ...[{ header: 'ITX Locations', columnType: ColumnTypeEnum.UserLocationNames, dataField: 'itxLocationNames' }],\r\n { header: 'Schedule', columnType: ColumnTypeEnum.Schedule, dataField: 'scheduleTime' },\r\n { header: '', columnType: ColumnTypeEnum.Edit, width: \"46\" },\r\n { header: '', columnType: ColumnTypeEnum.Delete, width: \"46\" },\r\n { header: '', columnType: ColumnTypeEnum.Expand, width: \"46\" }\r\n ];\r\n }\r\n\r\n constructor(\r\n private _localStorageService: LocalStorageService,\r\n private _locationsService: LocationsDataSourceService,\r\n private _emailServiceDataService: EmailServiceDataSourceService,\r\n private _el: ElementRef,\r\n private _zone: NgZone,\r\n ) { }\r\n\r\n ngOnInit() {\r\n this._loading = true;\r\n this.reInitScrollBar(0);\r\n const info = this._localStorageService.getLoginInfo();\r\n this._role = info ? info.role : null;\r\n\r\n let subscriptionLocationBtx = this._locationsService.btxLocationsForCompany$.subscribe(data => {\r\n if (data) {\r\n this._btxLocations = data.map(x => ({ label: x.locationName, value: x.id }));\r\n }\r\n });\r\n\r\n let subscriptionLocationKtx = this._locationsService.ktxLocationsForCompany$.subscribe(data => {\r\n if (data) {\r\n this._ktxLocations = data.map(x => ({ label: x.locationName, value: x.id }));\r\n }\r\n });\r\n\r\n let subscriptionLocationItx = this._locationsService.itxLocationsForCompany$.subscribe(data => {\r\n if (data) {\r\n this._itxLocations = data.map(x => ({ label: x.locationName, value: x.id }));\r\n }\r\n });\r\n\r\n this.subscriptions.push(subscriptionLocationBtx);\r\n this.subscriptions.push(subscriptionLocationKtx);\r\n this.subscriptions.push(subscriptionLocationItx);\r\n\r\n let subscriptionEmailService = this._emailServiceDataService.emailServices$.subscribe(data => {\r\n if (data) {\r\n this._loading = false;\r\n this._gridData = data;\r\n }\r\n });\r\n\r\n this.subscriptions.push(subscriptionEmailService);\r\n this._locationsService.getKtxBtxItxLocationForCompany(info ? info.companyId : 0);\r\n this._emailServiceDataService.getAll(info ? info.companyId : 0)\r\n }\r\n\r\n ngOnDestroy() {\r\n this.subscriptions && this.subscriptions.forEach(sub => sub.unsubscribe());\r\n this.subscriptions = [];\r\n }\r\n\r\n onClickAdd() {\r\n this._addEditModal.onShow(null);\r\n }\r\n\r\n onClickEdit(emailService: EmailServiceViewModel) {\r\n this._addEditModal.onShow(emailService, false);\r\n }\r\n\r\n onClickDelete(emailService: EmailServiceViewModel) {\r\n this._deleteModal.onShow(emailService.id);\r\n }\r\n\r\n getSchedule(emailService: EmailServiceViewModel): string {\r\n if (emailService) {\r\n return EmailServiceScheduleLable[emailService.scheduleType] + ' at ' + ConvertDataFunctions.secondsToHHMMString(emailService.scheduleTime);\r\n }\r\n return '';\r\n }\r\n\r\n public reInitScrollBar(timeout?: number, withCheck = false) {\r\n if (withCheck) {\r\n return;\r\n }\r\n\r\n if (this._ps) {\r\n this._ps.destroy();\r\n }\r\n\r\n const createScrollbarFunc = () => {\r\n this._zone.runOutsideAngular(() => {\r\n try {\r\n const el = this._el.nativeElement.querySelector('.ui-table-scrollable-view.ui-table-unfrozen-view .ui-table-scrollable-body');\r\n if (!el) {\r\n return;\r\n }\r\n\r\n this._ps = new PerfectScrollbar(el, {\r\n wheelSpeed: 2,\r\n wheelPropagation: true,\r\n minScrollbarLength: 20\r\n });\r\n } catch (error) {\r\n }\r\n })\r\n };\r\n\r\n if (timeout) {\r\n setTimeout(() => {\r\n createScrollbarFunc();\r\n }, timeout);\r\n } else {\r\n createScrollbarFunc();\r\n }\r\n }\r\n\r\n showTutorial() {\r\n this.tutorialPopup.showPopup(TutorialMenuEnum.EmailManagement);\r\n }\r\n}\r\n","export * from './email-management-tab.component';\r\n","import { Component, ViewChild } from '@angular/core';\r\n\r\nimport { AuthorizeService, LocalStorageService, UserRoleEnum } from '../../../common';\r\nimport { UserProfilePopupComponent } from './../popups';\r\nimport { LocationsBtxDataSourceService, LocationsItxDatasourceService, LocationsKtxDataSourceService, RoleService } from '@services';\r\nimport { Router } from '@angular/router';\r\nimport { BACK_DOOR } from '../../constants';\r\n\r\n@Component({\r\n selector: 'greensleeves-header',\r\n templateUrl: './header.component.html'\r\n})\r\nexport class HeaderComponent {\r\n _role: UserRoleEnum;\r\n _roleString: string;\r\n _roleLetter: string;\r\n\r\n @ViewChild(UserProfilePopupComponent, { read: false, static: false })\r\n private profilePopup: UserProfilePopupComponent;\r\n\r\n constructor(\r\n private _localStorageService: LocalStorageService,\r\n private _authorizeService: AuthorizeService,\r\n private _btxLocationDataService: LocationsBtxDataSourceService,\r\n private _ktxLocationDataService: LocationsKtxDataSourceService,\r\n private _itxLocationDataService: LocationsItxDatasourceService,\r\n private _router: Router,\r\n private _roleService: RoleService\r\n ) {\r\n }\r\n\r\n ngOnInit() {\r\n const url = this._router.url;\r\n const isBackDoor = url.indexOf(BACK_DOOR) !== -1;\r\n\r\n this._role = isBackDoor\r\n ? this._roleService.getBackDoorUserWithRole(url).role\r\n : this._localStorageService.getLoginInfo().role;\r\n\r\n switch (this._role) {\r\n case UserRoleEnum.CompanyAdmin:\r\n this._roleString = 'Company Admin';\r\n this._roleLetter = 'A';\r\n break;\r\n case UserRoleEnum.ServiceUser:\r\n this._roleString = 'Super Admin';\r\n this._roleLetter = 'A';\r\n break;\r\n case UserRoleEnum.CompanyUser:\r\n this._roleString = 'Company User';\r\n this._roleLetter = 'U';\r\n break;\r\n case UserRoleEnum.Vendor:\r\n this._roleString = 'Vendor';\r\n this._roleLetter = 'V';\r\n break;\r\n case UserRoleEnum.SalesUser:\r\n this._roleString = 'Sales user';\r\n this._roleLetter = 'S';\r\n break;\r\n default:\r\n this._roleString = 'Unknown';\r\n this._roleLetter = 'U';\r\n }\r\n }\r\n\r\n onClickProfile() {\r\n this.profilePopup.show();\r\n }\r\n\r\n async onLogoutClick() {\r\n this._authorizeService.logout();\r\n this._btxLocationDataService.clearBehaveCache();\r\n this._ktxLocationDataService.clearBehaveCache();\r\n }\r\n}\r\n","export * from './header.component';\r\n","export * from './locations-tab';\r\nexport * from './header';\r\nexport * from './navigation-bar';\r\nexport * from './companies-tab';\r\nexport * from './company-admins-tab';\r\nexport * from './company-users-tab';\r\nexport * from './service-users-tab';\r\nexport * from './popups';\r\nexport * from './btx-tab';\r\nexport * from './btx-live-data-tab';\r\nexport * from './btx-historical-data-tab';\r\nexport * from './btx-notifications-tab';\r\nexport * from './ktx-tab';\r\nexport * from './ktx-current-data-tab';\r\nexport * from './ktx-historical-data-tab';\r\nexport * from './ktx-notifications-tab';\r\nexport * from './itx-tab';\r\nexport * from './itx-reports-tab';\r\nexport * from './itx-alert-tab';\r\nexport * from './vendors-tab';\r\nexport * from './itx-live-data-tab';\r\nexport * from './itx-alert-tab';\r\nexport * from './aqs-round-storage-tab';\r\nexport * from './aqs-flat-storage-tab';\r\nexport * from './aqs-computation-sheet-tab';\r\nexport * from './sales-users-tab';\r\nexport * from './aqs-quotes-tab';\r\nexport * from './email-management-tab';\r\nexport * from './common';\r\nexport * from './device-update-management-tab';","export * from './itx-alert-tab.component';","import { Component, ElementRef, NgZone, OnDestroy, OnInit, ViewChild } from '@angular/core';\r\nimport PerfectScrollbar from 'perfect-scrollbar';\r\nimport { TreeNode } from 'primeng/api';\r\nimport { Calendar } from 'primeng/calendar';\r\n\r\nimport { ItxEventByPeriodPostModel, ItxEventGetModel, ItxEventsRequestModel, ItxEventViewModel, ItxLocationNameModel } from '@models';\r\nimport { EventDatasourceService, LocationsItxDatasourceService, RoleService } from '@services';\r\nimport { ItxEventTypesIconClass, ItxEventTypesLabel, EnglishDateLocale, DefaultDateRangeLabel, CalendarDefaultValues } from '../../constants';\r\nimport { ColumnTypeEnum, ItxEventTypeEnum, DefaultDateRangeEnum, TutorialMenuEnum, ProjectEnum, ItxNodeTypesEnum } from '../../enums';\r\nimport { FormBuilder, FormControl, FormGroup } from '@angular/forms';\r\nimport { ExportNotificationPopupComponent, ItxStorageRadarsPopupComponent, TutorialPopupComponent } from '../popups';\r\nimport { UserRoleEnum } from './../../../common';\r\n\r\n\r\n@Component({\r\n selector: 'greensleeves-itx-alert-tab',\r\n templateUrl: './itx-alert-tab.component.html',\r\n styles: []\r\n})\r\nexport class ItxAlertTabComponent implements OnInit, OnDestroy {\r\n static ALERT_TYPE = 'alertType';\r\n static SORT_ORDER_DEFAULT = 1;\r\n static EVENTS_PER_PAGE = 100;\r\n\r\n @ViewChild(\"calendar\", { static: false })\r\n private calendar: Calendar;\r\n\r\n @ViewChild(TutorialPopupComponent, { read: false, static: false })\r\n private tutorialPopup: TutorialPopupComponent;\r\n\r\n @ViewChild(ExportNotificationPopupComponent, { read: false, static: false })\r\n private exportPopup: ExportNotificationPopupComponent;\r\n\r\n @ViewChild(ItxStorageRadarsPopupComponent, { read: false, static: false })\r\n private listOfRadarsPopup: ItxStorageRadarsPopupComponent;\r\n\r\n _columnTypeEnum = ColumnTypeEnum;\r\n _sortField = ItxAlertTabComponent.ALERT_TYPE\r\n _sortOrder = ItxAlertTabComponent.SORT_ORDER_DEFAULT;\r\n _gridData: ItxEventViewModel[];\r\n _ps: PerfectScrollbar;\r\n _alertTypes: { label: string, value: ItxEventTypeEnum }[] = [];\r\n _isOpenFilterList: boolean = false;\r\n _totalAlertsCount: number;\r\n _eventFilter: ItxEventByPeriodPostModel = new ItxEventByPeriodPostModel(ItxAlertTabComponent.EVENTS_PER_PAGE);\r\n _itxLocations: TreeNode[];\r\n _nodeSelected: TreeNode[];\r\n _defaultDateRange: { label: string, value: DefaultDateRangeEnum }[] = [];\r\n _reportPeriod: FormGroup;\r\n _rangeDate: Date[] = [];\r\n _dataLocale: EnglishDateLocale = new EnglishDateLocale();\r\n _selectedDefaultDateRange: DefaultDateRangeEnum = null;\r\n _loading: boolean = false;\r\n _loadMore: boolean = false;\r\n private defaultDateRangePreviousState: DefaultDateRangeEnum = null;\r\n private locations: ItxLocationNameModel[] = [];\r\n\r\n _columnsView = [\r\n { header: 'First Time:', columnType: ColumnTypeEnum.Date, dataField: 'firstNotificationTimeStamp' },\r\n { header: 'Last Time:', columnType: ColumnTypeEnum.Date, dataField: 'lastNotificationTimeStamp' },\r\n { header: 'Alert type:', columnType: ColumnTypeEnum.AlertIcon, dataField: 'itxAlertType' },\r\n { header: 'Message:', columnType: ColumnTypeEnum.AlertTitle, dataField: 'title' },\r\n ]\r\n\r\n get _startDate() {\r\n return this._rangeDate[0];\r\n }\r\n get _endDate() {\r\n return this._rangeDate[1] == null ? this._rangeDate[0] : this._rangeDate[1];\r\n }\r\n\r\n get _isCompanyUsers(): boolean {\r\n return this._roleService.userHasRole(UserRoleEnum.CompanyAdmin) || this._roleService.userHasRole(UserRoleEnum.CompanyUser);\r\n }\r\n\r\n get getDataPickterYearRange(): string {\r\n const dateNow = new Date();\r\n return `${dateNow.getFullYear() - 3}:${dateNow.getFullYear()}`;\r\n }\r\n\r\n get _isActiveAlert(): boolean {\r\n return this._eventFilter.dateTimeFrom == null && this._eventFilter.dateTimeTo == null\r\n }\r\n\r\n constructor(\r\n private _el: ElementRef,\r\n private _zone: NgZone,\r\n private _eventDatasourceService: EventDatasourceService,\r\n private _itxLocationDataSourceService: LocationsItxDatasourceService,\r\n private _formBuilder: FormBuilder,\r\n private _roleService: RoleService,\r\n ) { }\r\n\r\n async ngOnInit() {\r\n this.reInitScrollBar(0);\r\n this.resetCalendar();\r\n\r\n for (const [key, value] of Object.entries(ItxEventTypesLabel)) {\r\n this._alertTypes.push({ label: value, value: Number(key) });\r\n }\r\n\r\n for (const [key, value] of Object.entries(DefaultDateRangeLabel)) {\r\n this._defaultDateRange.push({ label: value, value: Number(key) });\r\n }\r\n\r\n this._reportPeriod = this._formBuilder.group({\r\n selectedPeriod: [this._rangeDate],\r\n dateRange: [],\r\n startPeriod: [this._startDate],\r\n endOfPeriod: [this._endDate],\r\n });\r\n\r\n this.locations = await this._itxLocationDataSourceService.getListOfAssignedItxLocationsWithItxBins() as ItxLocationNameModel[];\r\n if (this.locations) {\r\n this._itxLocations = this.initLocationTree();\r\n }\r\n\r\n this.onUpdateEventsByFilter();\r\n }\r\n\r\n ngOnDestroy() {\r\n this._ps && this._ps.destroy();\r\n this._ps = null;\r\n }\r\n\r\n ngAfterViewInit() {\r\n this.reInitScrollBar(0);\r\n }\r\n\r\n getAlertClassByType(alert: ItxEventTypeEnum) {\r\n return ItxEventTypesIconClass[alert];\r\n }\r\n\r\n getAlertLabelByType(alert: ItxEventTypeEnum) {\r\n return ItxEventTypesLabel[alert];\r\n }\r\n\r\n openFilterList() {\r\n this._isOpenFilterList = !this._isOpenFilterList;\r\n }\r\n\r\n async onUpdateEventsByFilter() {\r\n this._loading = true;\r\n this._eventFilter.currentPage = 1;\r\n let result = await this._eventDatasourceService.getItxEventsByFilter(this._eventFilter) as ItxEventsRequestModel;\r\n if (result) {\r\n this._gridData = result.events.map(i => ItxEventGetModel.toViewModel(i));\r\n this._totalAlertsCount = result.totalCount;\r\n }\r\n this._loading = false;\r\n }\r\n\r\n async getMoreEvents() {\r\n this._loadMore = true;\r\n this._eventFilter.currentPage++;\r\n let result = await this._eventDatasourceService.getItxEventsByFilter(this._eventFilter) as ItxEventsRequestModel;\r\n if (result) {\r\n this._gridData.push(...result.events.map(i => ItxEventGetModel.toViewModel(i)));\r\n }\r\n this._loadMore = false;\r\n }\r\n\r\n onClickLocationFilter() {\r\n this._eventFilter.itxBinIds = [];\r\n this._eventFilter.locationIds = [];\r\n this._nodeSelected.forEach(i => {\r\n switch (i.data.nodeType) {\r\n case ItxNodeTypesEnum.Location:\r\n this._eventFilter.locationIds.push(i.data.id);\r\n break;\r\n case ItxNodeTypesEnum.Bin:\r\n this._eventFilter.itxBinIds.push(i.data.id);\r\n break;\r\n }\r\n });\r\n this.onUpdateEventsByFilter();\r\n }\r\n\r\n async onBlurControl(control: FormControl) {\r\n control.markAsUntouched();\r\n }\r\n\r\n async onFocusControl(control: FormControl) {\r\n control.markAsTouched();\r\n }\r\n\r\n showTutorial() {\r\n this.tutorialPopup.showPopup(TutorialMenuEnum.ItxAlerts);\r\n }\r\n\r\n showRadarCurrentData(binId: number) {\r\n this.listOfRadarsPopup.showWithLoadTelemetry(binId);\r\n }\r\n\r\n setFastDate(fastRange: DefaultDateRangeEnum) {\r\n let endDate = new Date();\r\n let startDate = new Date();\r\n endDate.setHours(0, 0, 0, 0);\r\n startDate.setHours(0, 0, 0, 0);\r\n this._rangeDate = [];\r\n switch (fastRange) {\r\n case DefaultDateRangeEnum.Week:\r\n startDate.setDate(startDate.getDate() - CalendarDefaultValues.defaultOneWeekDays);\r\n break;\r\n case DefaultDateRangeEnum.Month:\r\n startDate.setDate(startDate.getDate() - CalendarDefaultValues.defaultOneMonthDays);\r\n break;\r\n }\r\n this._selectedDefaultDateRange = fastRange;\r\n this._rangeDate.push(startDate);\r\n this._rangeDate.push(endDate);\r\n }\r\n\r\n getCurrentEvents() {\r\n this.resetCalendar();\r\n this._selectedDefaultDateRange = null;\r\n this._eventFilter.dateTimeFrom = null;\r\n this._eventFilter.dateTimeTo = null;\r\n this.onUpdateEventsByFilter();\r\n }\r\n\r\n onApplyDateRangeFilter() {\r\n if (this._rangeDate == undefined || this._rangeDate.length == 0) {\r\n this.resetCalendar();\r\n }\r\n if (this._rangeDate[1] == undefined || this._rangeDate[1] == null) {\r\n this._rangeDate[1] = this._rangeDate[0];\r\n }\r\n this._eventFilter.dateTimeFrom = (this._rangeDate[0].getTime() / CalendarDefaultValues.defaultOneSecondMilliseconds) | 0;\r\n this._eventFilter.dateTimeTo = (this._rangeDate[1].getTime() / CalendarDefaultValues.defaultOneSecondMilliseconds) | 0;\r\n this.onUpdateEventsByFilter();\r\n this.defaultDateRangePreviousState = this._selectedDefaultDateRange;\r\n this.calendar.toggle();\r\n }\r\n\r\n onSeclectCalendar() {\r\n this._selectedDefaultDateRange = null;\r\n }\r\n\r\n onCloseCalendar() {\r\n if (this._eventFilter.dateTimeFrom == null && this._eventFilter.dateTimeTo == null) {\r\n this.resetCalendar();\r\n return;\r\n }\r\n if (this.defaultDateRangePreviousState != null) {\r\n this.setFastDate(this.defaultDateRangePreviousState);\r\n return;\r\n }\r\n this._rangeDate = [];\r\n this._rangeDate.push(new Date(this._eventFilter.dateTimeFrom * CalendarDefaultValues.defaultOneSecondMilliseconds));\r\n this._rangeDate.push(new Date(this._eventFilter.dateTimeTo * CalendarDefaultValues.defaultOneSecondMilliseconds));\r\n }\r\n\r\n showExport() {\r\n this.exportPopup.onShow(this.initLocationTree(), ProjectEnum.Itx);\r\n }\r\n\r\n public reInitScrollBar(timeout?: number, withCheck = false) {\r\n if (withCheck) {\r\n return;\r\n }\r\n\r\n if (this._ps) {\r\n this._ps.destroy();\r\n }\r\n\r\n const createScrollbarFunc = () => {\r\n this._zone.runOutsideAngular(() => {\r\n try {\r\n const el = this._el.nativeElement.querySelector('.ui-table-scrollable-view.ui-table-unfrozen-view .ui-table-scrollable-body');\r\n if (!el) {\r\n return;\r\n }\r\n\r\n this._ps = new PerfectScrollbar(el, {\r\n wheelSpeed: 2,\r\n wheelPropagation: true,\r\n minScrollbarLength: 20\r\n });\r\n } catch (error) {\r\n }\r\n })\r\n };\r\n\r\n if (timeout) {\r\n setTimeout(() => {\r\n createScrollbarFunc();\r\n }, timeout);\r\n } else {\r\n createScrollbarFunc();\r\n }\r\n }\r\n\r\n private resetCalendar() {\r\n this.defaultDateRangePreviousState = null;\r\n this._selectedDefaultDateRange = null;\r\n this._rangeDate = [];\r\n let today = new Date();\r\n today.setHours(0, 0, 0, 0);\r\n this._rangeDate.push(today);\r\n this._rangeDate.push(today);\r\n }\r\n\r\n private initLocationTree(): TreeNode[] {\r\n return this.locations.map(i => ({\r\n label: i.name, key: i.id.toString() + i.name, data: { id: i.id, nodeType: ItxNodeTypesEnum.Location }, expanded: false,\r\n children: (i.bins != undefined && i.bins.length > 0) ? i.bins.map(b => (\r\n {\r\n label: b.name,\r\n data: { id: b.id, nodeType: ItxNodeTypesEnum.Bin, locationId: i.id },\r\n key: b.id.toString() + b.name\r\n })) : []\r\n }));\r\n }\r\n}","export * from './itx-live-data-tab.component'","import { vendorRoutes } from './../../main.routes';\r\nimport { Subscription } from 'rxjs';\r\nimport { Component, OnInit, ViewChild, OnDestroy, AfterViewInit } from '@angular/core';\r\nimport { FormGroup, FormControl, FormBuilder } from '@angular/forms';\r\nimport { DomSanitizer, SafeHtml } from '@angular/platform-browser';\r\nimport { TreeNode } from 'primeng';\r\n\r\nimport { ItxExportReportPopupComponent, ItxLiveDataSettingPopupComponent, ItxStorageRadarsPopupComponent, ItxQuickEditPopupComponent, TutorialPopupComponent } from './../popups';\r\nimport { StorageBinTypesIcons, StorageBinTypesClasses, CapacityUnitLabel, TemperatureMeasureLabel, SizeMeasureLabel, SortParametersLabel } from \"../../constants\";\r\nimport { ItxBinDataSourceService, RoleService } from '../../services';\r\nimport { ConvertDataFunctions, LocalStorageService, UserRoleEnum } from '../../../common';\r\nimport { CapacityUnitEnum, TemperatureMeasureEnum, ItxBinTypeEnum, SizeMeasureEnum, ItxStorageSortingEnum, TutorialMenuEnum } from '../../enums';\r\nimport {\r\n FullnessRangeViewModel, ItxBinStaticMembersResponse,\r\n ItxStaticScemeData, PeriodToGetliveDataForLocations, UserPreferences, ItxBinLiveDataViewModel, ItxSchemeLiveData, ItxBinFilterParameters, ItxBinNameModel\r\n} from './../../models';\r\n\r\n\r\n@Component({\r\n selector: 'greensleeves-itx-live-data-tab',\r\n templateUrl: './itx-live-data-tab.component.html',\r\n styles: []\r\n})\r\n\r\nexport class ItxLiveDataTabComponent implements OnInit, OnDestroy, AfterViewInit {\r\n @ViewChild(ItxLiveDataSettingPopupComponent, { read: false, static: false })\r\n private _settingLiveDataModal: ItxLiveDataSettingPopupComponent;\r\n @ViewChild(ItxStorageRadarsPopupComponent, { read: false, static: false })\r\n private _listOfRadarsModal: ItxStorageRadarsPopupComponent;\r\n @ViewChild(ItxExportReportPopupComponent, { read: false, static: false })\r\n private _exportReportModal: ItxExportReportPopupComponent;\r\n @ViewChild(ItxQuickEditPopupComponent, { read: false, static: false })\r\n private quickEditStorage: ItxQuickEditPopupComponent;\r\n\r\n @ViewChild(TutorialPopupComponent, { read: false, static: false })\r\n private tutorialPopup: TutorialPopupComponent;\r\n\r\n private static readonly storagesOnPage: number = 6;\r\n private static readonly ONE_MINUTE_MILLISECONDS: number = 60000;\r\n\r\n private subscriptions: Subscription[] = [];\r\n capacityUnit: { label: string, value: CapacityUnitEnum }[] = [];\r\n temperatureUnit: { label: string, value: TemperatureMeasureEnum }[] = [];\r\n sizeUnit: { label: string, value: SizeMeasureEnum }[] = [];\r\n userPreferences: UserPreferences;\r\n filterParameters: ItxBinFilterParameters = new ItxBinFilterParameters();\r\n pageNumber: number = 1;\r\n locationIdsToBeUpdatedAutomatically: number[] = [];\r\n availableBins: ItxBinNameModel[] = [];\r\n\r\n _filterCounter: number;\r\n _isReadyForExport: boolean;\r\n _sortParams: { name: string, value: ItxStorageSortingEnum }[] = [];\r\n _storageIcons: { name: SafeHtml, value: ItxBinTypeEnum }[] = [];\r\n storagesCount: number;\r\n _periodToGetLiveData: PeriodToGetliveDataForLocations[];\r\n _showShowMore: boolean = true;\r\n _isOpenFilterList: boolean = false;\r\n _searchForm: FormGroup;\r\n lastSearchPhrase: string = '';\r\n _selectedSortParam: { name: string, value: ItxStorageSortingEnum } = { name: '', value: ItxStorageSortingEnum.Alphabetically };\r\n _binIdsToDisplay: number[];\r\n _staticStorageMembers: ItxBinStaticMembersResponse[];\r\n _itxCompanies: TreeNode[] = [];\r\n _nodeSelected: TreeNode[];\r\n _storageTypesIcons: any = StorageBinTypesIcons;\r\n _storageTypesClasses: any = StorageBinTypesClasses;\r\n _storages: ItxBinLiveDataViewModel[] = [];\r\n _hasRadarError: boolean = false;\r\n _role: UserRoleEnum;\r\n _converFun: ConvertDataFunctions;\r\n\r\n get _canManage(): boolean {\r\n return this._role === UserRoleEnum.ServiceUser || this._role === UserRoleEnum.CompanyAdmin;\r\n }\r\n\r\n get isTutorialUser(): boolean {\r\n return this._roleService.userHasRole(UserRoleEnum.CompanyAdmin) || this._roleService.userHasRole(UserRoleEnum.CompanyUser)|| this._roleService.userHasRole(UserRoleEnum.Vendor);\r\n }\r\n\r\n constructor(\r\n private _itxBinDataService: ItxBinDataSourceService,\r\n formBuilder: FormBuilder,\r\n private _sanitizer: DomSanitizer,\r\n private _localStorageService: LocalStorageService,\r\n private _roleService: RoleService,\r\n ) {\r\n this._searchForm = formBuilder.group({\r\n searchPhrase: [''],\r\n });\r\n }\r\n ngOnDestroy(): void {\r\n this.clearSubscriptions();\r\n this._itxBinDataService.itxBinLiveData$.next([]);\r\n }\r\n\r\n private clearSubscriptions() {\r\n this.subscriptions.forEach(s => s.unsubscribe());\r\n this.subscriptions = null;\r\n }\r\n\r\n private setUnitLabels() {\r\n for (const [key, value] of Object.entries(SortParametersLabel)) {\r\n this._sortParams.push({ name: value, value: Number(key) });\r\n }\r\n\r\n for (const [key, value] of Object.entries(CapacityUnitLabel)) {\r\n this.capacityUnit.push({ label: value, value: Number(key) });\r\n }\r\n for (const [key, value] of Object.entries(TemperatureMeasureLabel)) {\r\n this.temperatureUnit.push({ label: value, value: Number(key) });\r\n }\r\n for (const [key, value] of Object.entries(SizeMeasureLabel)) {\r\n this.sizeUnit.push({ label: value, value: Number(key) });\r\n }\r\n for (const [key, value] of Object.entries(StorageBinTypesIcons)) {\r\n this._storageIcons.push({ name: this._sanitizer.bypassSecurityTrustUrl(value), value: Number(key) })\r\n }\r\n }\r\n\r\n private getMinutesForFirstUpdate(timestampMinutes: number, acquisitionRateMinutes: number): number {\r\n let currentMinute = new Date().getMinutes();\r\n let timeDelta = currentMinute > timestampMinutes ? (currentMinute - timestampMinutes + 1) : (60 + currentMinute - timestampMinutes + 1);\r\n let minutesBeforeNextUpdate = acquisitionRateMinutes - timeDelta;\r\n return minutesBeforeNextUpdate;\r\n }\r\n\r\n private setSubscriptions() {\r\n let dataSubscription = this._itxBinDataService.itxBinLiveData$.subscribe(items => {\r\n if (items.length > 0)\r\n items.forEach(nD => {\r\n let bin = this._storages.find(s => s.id == nD.id);\r\n if (bin != undefined) {\r\n bin.colorHex = this.getColorHex(this._staticStorageMembers.find(stat => stat.locationId == bin.locationId).fullnessRangeResponses, nD.binPercentFullness);\r\n bin.binPercentFullness = nD.binPercentFullness;\r\n bin.binFullnessCapacity = nD.binFullnessCapacity;\r\n bin.binTemperature = nD.binTemperature;\r\n bin.binHeadSpace = nD.binHeadSpace;\r\n bin.hasRadarError = nD.hasRadarError;\r\n bin.radars = nD.radars;\r\n bin.calculatedUsedCapacity = nD.calculatedUsedCapacity;\r\n bin.calculatedAvailableCapacity = nD.calculatedAvailableCapacity;\r\n bin.calculatedErrorBound = nD.calculatedErrorBound;\r\n bin.timestamp = nD.timestamp;\r\n let timestamp = new Date(nD.timestamp);\r\n if (this.locationIdsToBeUpdatedAutomatically.indexOf(bin.locationId) == -1) {\r\n let acquisitionRate = this._periodToGetLiveData.find(l => l.locationId == bin.locationId).acquisitionRate;\r\n let timeDelta = this.getMinutesForFirstUpdate(timestamp.getMinutes(), acquisitionRate);\r\n this.locationIdsToBeUpdatedAutomatically.push(bin.locationId);\r\n this.setFirstTimer(bin.locationId, timeDelta);\r\n }\r\n }\r\n });\r\n });\r\n this.subscriptions.push(dataSubscription);\r\n\r\n let userPreferenceChanged = this._itxBinDataService.userPreference$.subscribe(item => {\r\n this.userPreferences = item;\r\n this._storages.forEach(storage => {\r\n storage.sizeUnit = this.userPreferences.sizeMeasure;\r\n storage.capacityUnit = this.getCapacityUnitAccordingToUserPreferences(storage.binType);\r\n storage.temperatureUnit = this.userPreferences.temperatureMeasure;\r\n });\r\n })\r\n this.subscriptions.push(userPreferenceChanged);\r\n }\r\n\r\n ngAfterViewInit() {\r\n let updateSub = this.quickEditStorage.needToUpdateLiveData.subscribe((newBin) => {\r\n if (this._itxCompanies && this._itxCompanies.length > 0) {\r\n this._itxCompanies.some((i) => {\r\n if (i.children) {\r\n return i.children.some((c) => {\r\n if (c.children) {\r\n return c.children.some(b => {\r\n if (b.data == newBin.id) {\r\n b.label = newBin.name;\r\n return true;\r\n }\r\n });\r\n }\r\n });\r\n }\r\n });\r\n }\r\n this.RefreshLiveData();\r\n });\r\n this.subscriptions.push(updateSub);\r\n }\r\n\r\n private setDefaultValues(scheme: ItxStaticScemeData) {\r\n this._staticStorageMembers = scheme.locationsLiveData;\r\n let locationsLiveDataGroupedByCompanyId = this.groupByCompanyAndPopulateAvailableBins(this._staticStorageMembers);\r\n for (const key in locationsLiveDataGroupedByCompanyId) {\r\n this._itxCompanies.push({\r\n label: locationsLiveDataGroupedByCompanyId[key][0].companyName,\r\n key: locationsLiveDataGroupedByCompanyId[key][0].companyId.toString() +\r\n locationsLiveDataGroupedByCompanyId[key][0].companyName,\r\n data: locationsLiveDataGroupedByCompanyId[key][0].companyId,\r\n expanded: true,\r\n children: locationsLiveDataGroupedByCompanyId[key].map(\r\n (c: { locationName: any; locationId: { toString: () => any; }; bins: any[]; }) => ({\r\n label: c.locationName,\r\n key: c.locationId.toString() + c.locationName,\r\n data: c.locationId,\r\n expanded: false,\r\n children: (c.bins != undefined && c.bins.length > 0)\r\n ? c.bins.map(b => ({ label: b.name, data: b.id, key: b.id.toString() + b.name }))\r\n : []\r\n }))\r\n }\r\n );\r\n }\r\n\r\n this.userPreferences = scheme.userMeasurePreferences;\r\n this._periodToGetLiveData = scheme.periodToGetDataForLocations;\r\n\r\n\r\n }\r\n\r\n groupByCompanyAndPopulateAvailableBins(array: ItxBinStaticMembersResponse[]) {\r\n this.availableBins = [];\r\n array.forEach(b => {\r\n this.availableBins.push(...b.bins)\r\n })\r\n return array.reduce((r, a) => {\r\n r[a.companyId] = r[a.companyId] || [];\r\n r[a.companyId].push(a);\r\n return r;\r\n }, Object.create(null));\r\n }\r\n\r\n async onClickCompanyFilter() {\r\n this._filterCounter = 0;\r\n this._isReadyForExport = false;\r\n this.filterParameters.storageIdsToFilter = [];\r\n this._nodeSelected.forEach(i => {\r\n if (!i.children) {\r\n this.filterParameters.storageIdsToFilter.push(i.data);\r\n }\r\n });\r\n this._filterCounter = this.filterParameters.storageIdsToFilter.length;\r\n await this.RefreshLiveData();\r\n }\r\n\r\n private setFirstTimer(locationId: number, minutes: number) {\r\n let milistcondsToUpdate = minutes * ItxLiveDataTabComponent.ONE_MINUTE_MILLISECONDS;\r\n setTimeout(() => {\r\n this.updateLiveData(locationId);\r\n this.setPeriodicallyUpdateTimer(locationId);\r\n }, milistcondsToUpdate);\r\n }\r\n\r\n private setPeriodicallyUpdateTimer(locationId: number) {\r\n let interval = this._periodToGetLiveData.find(x => x.locationId == locationId).acquisitionRate * ItxLiveDataTabComponent.ONE_MINUTE_MILLISECONDS;\r\n setInterval(() =>\r\n this.updateLiveData(locationId), interval);\r\n }\r\n\r\n async ngOnInit() {\r\n const info = this._localStorageService.getLoginInfo();\r\n this._role = info ? info.role : null;\r\n this.setUnitLabels();\r\n this.setSubscriptions();\r\n\r\n const staticScheme = await this._itxBinDataService.getStaticItxBinSchemeData();\r\n if (staticScheme) {\r\n this.setDefaultValues(staticScheme as ItxStaticScemeData);\r\n }\r\n await this.updateSchemeOfStoragesToDisplay(this.pageNumber);\r\n this._binIdsToDisplay = this._storages.map(s => s.id);\r\n await this._itxBinDataService.getDataForLiveData(this._binIdsToDisplay);\r\n }\r\n\r\n private getCapacityUnitAccordingToUserPreferences(binType: ItxBinTypeEnum): CapacityUnitEnum {\r\n switch (binType) {\r\n case ItxBinTypeEnum.LiquidStorageConical:\r\n case ItxBinTypeEnum.LiquidStorageFlat:\r\n case ItxBinTypeEnum.LiquidStorageSloped:\r\n return this.userPreferences.capacityLiquidUnit;\r\n default:\r\n return this.userPreferences.capacityLoosUnit;\r\n }\r\n }\r\n\r\n getSizeLabelToDisplay(sizeUnit: SizeMeasureEnum): string {\r\n return SizeMeasureLabel[sizeUnit];\r\n }\r\n\r\n getCapacityLabelToDisplay(capacityUnit: CapacityUnitEnum): string {\r\n return CapacityUnitLabel[capacityUnit];\r\n }\r\n\r\n getTemperatureLabelToDisplay(temperatureUnit: TemperatureMeasureEnum): string {\r\n return this.temperatureUnit.find(x => x.value == temperatureUnit).label;\r\n }\r\n\r\n getTemperatureValue(value: number, temperaureUnit: TemperatureMeasureEnum): number {\r\n let result: number;\r\n if (temperaureUnit == TemperatureMeasureEnum.Celsius) {\r\n result = ConvertDataFunctions.fahrenheitToCelsius(value);\r\n }\r\n else {\r\n result = value;\r\n }\r\n return result;\r\n }\r\n\r\n getSizeValue(value: number, sizeUnit: SizeMeasureEnum): number {\r\n let result = ConvertDataFunctions.convertSizeFromFt(value, sizeUnit);\r\n return result;\r\n }\r\n\r\n roundAndUsString(num: number, digits: number): string {\r\n return ConvertDataFunctions.roundAndUsString(num, digits);\r\n }\r\n\r\n getCapacityValue(value: number, capacityUnit: CapacityUnitEnum, binType: ItxBinTypeEnum): number {\r\n let result: number;\r\n switch (binType) {\r\n case ItxBinTypeEnum.LiquidStorageConical:\r\n case ItxBinTypeEnum.LiquidStorageFlat:\r\n case ItxBinTypeEnum.LiquidStorageSloped:\r\n result = ConvertDataFunctions.convertFromGal(value, capacityUnit);\r\n break;\r\n default:\r\n result = ConvertDataFunctions.convertFromFt3(value, capacityUnit);\r\n }\r\n return result;\r\n }\r\n\r\n private getColorHex(fullnessRanges: FullnessRangeViewModel[], fullnessPercent: number): string {\r\n let colorHex: string;\r\n fullnessRanges.forEach(f => {\r\n if (fullnessPercent >= f.from && fullnessPercent <= f.to) {\r\n colorHex = f.colorHex;\r\n }\r\n })\r\n return colorHex;\r\n }\r\n\r\n async onBlurControl(control: FormControl) {\r\n control.markAsUntouched();\r\n }\r\n\r\n openFilterList() {\r\n this._isOpenFilterList = !this._isOpenFilterList;\r\n }\r\n\r\n async onChangeSortedParam(option) {\r\n this._isReadyForExport = false;\r\n this._selectedSortParam = option.value;\r\n await this.RefreshLiveData();\r\n }\r\n\r\n\r\n getStorageImage(bintype: string): SafeHtml {\r\n return this._storageIcons[bintype].name;\r\n }\r\n\r\n getStorageColor(storageFull: number, rangeColor: string) {\r\n const gradientSize = 100 - storageFull - 10;\r\n const gradientBackground = `linear-gradient(to bottom, #ffffff ${gradientSize}%, ${rangeColor})`;\r\n return gradientBackground;\r\n }\r\n\r\n onClickSetting() {\r\n this._settingLiveDataModal.show(this.userPreferences);\r\n }\r\n\r\n onClickRadar(storage: ItxBinLiveDataViewModel) {\r\n this._listOfRadarsModal.show(storage);\r\n }\r\n\r\n async onUpdateLastSearch() {\r\n this.filterParameters.searchBinByName = this._searchForm.controls.searchPhrase.value;\r\n this._isReadyForExport = false;\r\n await this.RefreshLiveData();\r\n }\r\n\r\n onClickExportReport() {\r\n let searchedBins: ItxBinNameModel[] = [];\r\n let binIds: number[] = [];\r\n if (this.filterParameters.searchBinByName && this.filterParameters.searchBinByName != '') {\r\n searchedBins.push(...this.availableBins.filter(b => b.name.toUpperCase().includes(this.filterParameters.searchBinByName.toUpperCase()) || b.material.toUpperCase().includes(this.filterParameters.searchBinByName.toUpperCase())));\r\n if (this.filterParameters.storageIdsToFilter.length > 0) {\r\n binIds.push(...searchedBins.filter(bin => this.filterParameters.storageIdsToFilter.includes(bin.id)).map(x => x.id));\r\n } else {\r\n binIds.push(...searchedBins.map(b => b.id));\r\n }\r\n\r\n } else {\r\n if (this.filterParameters.storageIdsToFilter.length > 0) {\r\n binIds = this.filterParameters.storageIdsToFilter;\r\n }\r\n else {\r\n binIds = this.availableBins.map(b => b.id);\r\n }\r\n }\r\n this._exportReportModal.showDownloadLiveDataReport(binIds, this._selectedSortParam.value);\r\n }\r\n\r\n async RefreshLiveData() {\r\n this.pageNumber = 1;\r\n this._storages = [];\r\n\r\n await this.updateSchemeOfStoragesToDisplay(this.pageNumber)\r\n\r\n let storageIdsToGetData = this._storages.map(x => x.id);\r\n if (this._selectedSortParam.value == ItxStorageSortingEnum.Material || this._selectedSortParam.value == ItxStorageSortingEnum.AlphabeticallyDesc || this._selectedSortParam.value == ItxStorageSortingEnum.Alphabetically)\r\n\r\n await this._itxBinDataService.getDataForLiveData(storageIdsToGetData);\r\n }\r\n\r\n async onClickShowMore() {\r\n await this.updateSchemeOfStoragesToDisplay(++this.pageNumber);\r\n let startNumber: number = (this.pageNumber - 1) * ItxLiveDataTabComponent.storagesOnPage;\r\n let endNumber: number = (this.pageNumber - 1) * ItxLiveDataTabComponent.storagesOnPage + ItxLiveDataTabComponent.storagesOnPage;\r\n\r\n let storageIdsToGetData = this._storages.slice(startNumber, endNumber).map(x => x.id);\r\n\r\n await this._itxBinDataService.getDataForLiveData(storageIdsToGetData);\r\n }\r\n\r\n async onClickQuickEditStorage(storage: ItxBinLiveDataViewModel) {\r\n this.quickEditStorage.show({ id: storage.id, material: storage.material, name: storage.name });\r\n }\r\n\r\n\r\n\r\n private checkIfShowMore() {\r\n if (this._storages.length == this.storagesCount) {\r\n this._showShowMore = false;\r\n } else {\r\n this._showShowMore = true;\r\n }\r\n }\r\n\r\n private async updateSchemeOfStoragesToDisplay(pageNumber: number) {\r\n this.pageNumber = pageNumber;\r\n let items = await this._itxBinDataService.getSchemeForLiveData(this.filterParameters,\r\n this.pageNumber,\r\n this._selectedSortParam.value);\r\n if (items) {\r\n let liveDataViewModels = (items as unknown as ItxSchemeLiveData).itxBinSchemeResponses as ItxBinLiveDataViewModel[];\r\n liveDataViewModels.forEach(storage => {\r\n if (this.userPreferences.id != 0) {\r\n storage.sizeUnit = this.userPreferences.sizeMeasure;\r\n storage.capacityUnit = this.getCapacityUnitAccordingToUserPreferences(storage.binType);\r\n storage.temperatureUnit = this.userPreferences.temperatureMeasure;\r\n } else {\r\n storage.temperatureUnit = TemperatureMeasureEnum.Fahrenheit;\r\n }\r\n if (this._selectedSortParam.value == ItxStorageSortingEnum.Capacity || this._selectedSortParam.value == ItxStorageSortingEnum.CapacityDesc || this._selectedSortParam.value == ItxStorageSortingEnum.Percentage || this._selectedSortParam.value == ItxStorageSortingEnum.PercentageDesc) {\r\n storage.colorHex = this.getColorHex(this._staticStorageMembers.find(stat => stat.locationId == storage.locationId).fullnessRangeResponses, storage.binPercentFullness);\r\n if (this.locationIdsToBeUpdatedAutomatically.indexOf(storage.locationId) == -1) {\r\n let acquisitionRate = this._periodToGetLiveData.find(l => l.locationId == storage.locationId).acquisitionRate;\r\n let timestamp = new Date(storage.timestamp);\r\n let timeDelta = this.getMinutesForFirstUpdate(timestamp.getMinutes(), acquisitionRate);\r\n this.locationIdsToBeUpdatedAutomatically.push(storage.locationId);\r\n this.setFirstTimer(storage.locationId, timeDelta);\r\n }\r\n }\r\n });\r\n\r\n this._storages.push(...liveDataViewModels);\r\n if (this._storages.length > 0) {\r\n this._isReadyForExport = true;\r\n }\r\n this.storagesCount = (items as ItxSchemeLiveData).totalFilteredCount;\r\n }\r\n this.checkIfShowMore();\r\n }\r\n\r\n private async updateLiveData(locationId: number) {\r\n let toUpdate: number[] = [];\r\n this._storages.forEach(s => {\r\n if (locationId == s.locationId) {\r\n toUpdate.push(s.id);\r\n }\r\n })\r\n if (toUpdate.length > 0) {\r\n await this._itxBinDataService.getDataForLiveData(toUpdate);\r\n }\r\n }\r\n\r\n showTutorial() {\r\n this.tutorialPopup.showPopup(TutorialMenuEnum.ItxLiveData);\r\n }\r\n}\r\n","export * from './itx-reports-tab.component'","import { Component, ElementRef, OnInit, ViewChild } from '@angular/core';\r\nimport { FormBuilder, FormControl, FormGroup } from '@angular/forms';\r\nimport { Chart } from 'chart.js';\r\nimport { Calendar } from 'primeng/calendar';\r\n\r\nimport { ErrorCodeEnum, ErrorModel, UserRoleEnum } from '../../../common';\r\nimport {\r\n CalendarDefaultValues,\r\n CapacityUnitLabel,\r\n CapacityUnitLiquidLabel,\r\n CapacityUnitLoosLabel,\r\n DefaultDateRangeLabel,\r\n EnglishDateLocale,\r\n ItxReportRadarReadingUnitLabel,\r\n ItxReportReadingUnitLabel,\r\n SizeMeasureLabel,\r\n TemperatureMeasureLabel,\r\n} from '../../constants';\r\nimport {\r\n CapacityUnitEnum,\r\n DefaultDateRangeEnum,\r\n ItxBinTypeEnum,\r\n ItxReportsReadingUnitEnum,\r\n SizeMeasureEnum,\r\n TemperatureMeasureEnum,\r\n TutorialMenuEnum,\r\n} from '../../enums';\r\nimport { ItxBinDataSourceService, ReportDatasourceService, RoleService } from '../../services';\r\nimport {\r\n ItxLocationReportFilter,\r\n ItxTelemetry,\r\n ItxTelemetryDataResponse,\r\n ReportDataFilterPost,\r\n ReportHistoricalDataResponse,\r\n} from './../../models';\r\nimport { ItxExportReportPopupComponent, TutorialPopupComponent } from './../popups';\r\n\r\nChart.defaults.multicolorLine = Chart.defaults.line;\r\nChart.controllers.multicolorLine = Chart.controllers.line.extend({\r\n draw: function (ease) {\r\n let startIndex = 0,\r\n meta = this.getMeta(),\r\n points = meta.data || [],\r\n area = this.chart.chartArea,\r\n originalDatasets = meta.dataset._children;\r\n\r\n function _setLine(newColor, borderDash, meta) {\r\n meta.dataset._view.borderColor = newColor;\r\n meta.dataset._view.borderDash = borderDash;\r\n }\r\n\r\n let segmentColor = 'rgba(255,0,0,1)'\r\n let nanIndex: number[] = [];\r\n let mainColor: string;\r\n points.forEach(x => {\r\n if (x._view.skip) {\r\n nanIndex.push(x._index);\r\n mainColor = x._view.borderColor;\r\n }\r\n });\r\n\r\n nanIndex.forEach(x => {\r\n _setLine(mainColor, [], meta);\r\n meta.dataset._children = originalDatasets.slice(startIndex, x);\r\n meta.dataset.draw();\r\n startIndex = x - 1;\r\n\r\n _setLine(segmentColor, [3, 3], meta);\r\n meta.dataset._children = originalDatasets.slice(startIndex, x + 2);\r\n meta.dataset.draw();\r\n startIndex = x + 1;\r\n });\r\n\r\n if (nanIndex.length > 0) {\r\n _setLine(mainColor, [], meta);\r\n }\r\n meta.dataset._children = originalDatasets.slice(startIndex);\r\n meta.dataset.draw();\r\n meta.dataset._children = originalDatasets;\r\n\r\n points.forEach(function (point) {\r\n point.draw(area);\r\n });\r\n }\r\n});\r\n\r\n@Component({\r\n selector: 'greensleeves-itx-reports-tab',\r\n templateUrl: './itx-reports-tab.component.html',\r\n styles: []\r\n})\r\n\r\nexport class ItxReportsTabComponent implements OnInit {\r\n\r\n private readonly OneMinuteSeconds: number = 60;\r\n private readonly NoDataRateInMinute: number = 65;\r\n\r\n @ViewChild(ItxExportReportPopupComponent, { read: false, static: false })\r\n private _exportReportModal: ItxExportReportPopupComponent;\r\n\r\n @ViewChild(\"calendar\", { static: false })\r\n private calendar: Calendar;\r\n\r\n @ViewChild('chartReport', { static: true })\r\n private canvas: ElementRef;\r\n\r\n @ViewChild(TutorialPopupComponent, { read: false, static: false })\r\n private tutorialPopup: TutorialPopupComponent;\r\n\r\n private ctx: CanvasRenderingContext2D;\r\n private chart: Chart;\r\n private defaultDateRangePreviousState: DefaultDateRangeEnum = null;\r\n\r\n options: any;\r\n value: Date;\r\n startDate: Date;\r\n endDate: Date;\r\n _dataLocale: EnglishDateLocale = new EnglishDateLocale();\r\n _reportFilter: ReportDataFilterPost = new ReportDataFilterPost();\r\n _selectedDefaultDateRange: DefaultDateRangeEnum = null;\r\n _isAvgValues = false;\r\n\r\n _reportPeriod: FormGroup;\r\n _rangeDate: Date[] = [];\r\n _dateRange: { label: string, value: DefaultDateRangeEnum }[] = [];\r\n _selectedDateRange: { label: string, value: DefaultDateRangeEnum } = { label: \"Day\", value: DefaultDateRangeEnum.Day };\r\n _selectReportData: FormGroup;\r\n\r\n _locationFilter: {\r\n label: string, value: {\r\n bins: {\r\n label: string, value: {\r\n label: string, id: number, type: ItxBinTypeEnum, locationId: number\r\n radars: {\r\n id: number,\r\n radarId: number,\r\n radarAddress: number,\r\n }[]\r\n }\r\n }[]\r\n }\r\n }[] = [];\r\n\r\n _selectedLocationFilter: {\r\n bins: {\r\n label: string, value: {\r\n label: string, id: number, type: ItxBinTypeEnum, locationId: number,\r\n radars: {\r\n id: number,\r\n radarId: number,\r\n radarAddress: number,\r\n }[]\r\n }\r\n }[]\r\n };\r\n\r\n _storageFilter: {\r\n label: string, value: {\r\n label: string, id: number, type: ItxBinTypeEnum, locationId: number,\r\n radars: {\r\n id: number,\r\n radarId: number,\r\n radarAddress: number,\r\n }[]\r\n }\r\n }[];\r\n\r\n _selectedStorageFilter: {\r\n label: string, id: number, type: ItxBinTypeEnum, locationId: number,\r\n radars: {\r\n id: number,\r\n radarId: number,\r\n radarAddress: number,\r\n }[]\r\n };\r\n\r\n _readingUnit: { label: string, value: { label: string, value: ItxReportsReadingUnitEnum } }[] = [];\r\n _selectedReadingUnit: { label: string, value: ItxReportsReadingUnitEnum };\r\n\r\n _measureUnit: { label: string, value: { label: string, value: number } }[] = []\r\n _selectedMeasure: { label: string, value: number };\r\n\r\n _radarReadingUnit: { label: string, value: { label: string, value: ItxReportsReadingUnitEnum } }[] = [];\r\n _selectedRadarReadingUnit: { label: string, value: ItxReportsReadingUnitEnum };\r\n\r\n sizeUnit: { label: string, value: { label: string, value: SizeMeasureEnum } }[] = [];\r\n capacityUnitLoos: { label: string, value: { label: string, value: CapacityUnitEnum } }[] = [];\r\n capacityUnitLiquid: { label: string, value: { label: string, value: CapacityUnitEnum } }[] = [];\r\n temperatureUnit: { label: string, value: { label: string, value: TemperatureMeasureEnum } }[] = [];\r\n itxBinIds: number[] = [];\r\n capacityUnit: { label: string, value: CapacityUnitEnum }[] = [];\r\n isReportGenerated: boolean;\r\n _isReportRun = false;\r\n _isReportEmpty: boolean;\r\n _itxReportReadingUnit = ItxReportsReadingUnitEnum;\r\n _isCollapseSidebar: boolean = false;\r\n\r\n collapseSidebar() {\r\n this._isCollapseSidebar = true;\r\n };\r\n\r\n expandSidebar() {\r\n this._isCollapseSidebar = false;\r\n }\r\n\r\n private chartColors: string[] = [\r\n 'rgba(54, 162, 235, 1)', 'rgba(54, 235, 93, 1)', 'rgba(191, 54, 235, 1)', 'rgba(6, 6, 6, 1)', 'rgba(139,69,19,1)', 'rgba(112,128,144, 1)', 'rgba(245, 40, 145, 1)'\r\n ];\r\n\r\n get _startDate() {\r\n return this._rangeDate[0];\r\n }\r\n get _endDate() {\r\n return this._rangeDate[1] == null ? this._rangeDate[0] : this._rangeDate[1];\r\n }\r\n\r\n get isTutorialUser(): boolean {\r\n return this._roleService.userHasRole(UserRoleEnum.CompanyAdmin) || this._roleService.userHasRole(UserRoleEnum.CompanyUser) || this._roleService.userHasRole(UserRoleEnum.Vendor);\r\n }\r\n\r\n private readingUnitForBinOrSiloType: { label: string, value: { label: string, value: ItxReportsReadingUnitEnum } }[] = [];\r\n private readingUnitIfNoBinOrSiloType: { label: string, value: { label: string, value: ItxReportsReadingUnitEnum } }[] = [];\r\n\r\n constructor(\r\n private _itxBinDataService: ItxBinDataSourceService,\r\n private _reportDataService: ReportDatasourceService,\r\n private _formBuilder: FormBuilder,\r\n private _roleService: RoleService,\r\n ) {\r\n\r\n this._selectReportData = this._formBuilder.group({\r\n reportType: null,\r\n location: null,\r\n storage: null,\r\n readingUnit: null,\r\n radar: null,\r\n radarReadingUnit: null,\r\n measurement: null,\r\n })\r\n }\r\n\r\n async ngOnInit() {\r\n this.ctx = this.canvas.nativeElement.getContext('2d');\r\n this.setSelectParameters();\r\n this.resetCalendar();\r\n this._reportPeriod = this._formBuilder.group({\r\n selectedPeriod: [this._rangeDate],\r\n dateRange: [],\r\n startPeriod: [this._startDate],\r\n endOfPeriod: [this._endDate],\r\n });\r\n this.setDefaultFilterValues();\r\n let today = new Date();\r\n today.setHours(0, 0, 0, 0);\r\n this._reportFilter.dateFrom = (today.getTime() / CalendarDefaultValues.defaultOneSecondMilliseconds) | 0;\r\n this._reportFilter.dateTo = (today.getTime() / CalendarDefaultValues.defaultOneSecondMilliseconds) | 0;\r\n this.createEmptyChart();\r\n }\r\n\r\n private setSelectParameters() {\r\n for (const [key, value] of Object.entries(SizeMeasureLabel)) {\r\n this.sizeUnit.push({ label: value, value: { label: value, value: Number(key) } });\r\n }\r\n\r\n for (const [key, value] of Object.entries(ItxReportReadingUnitLabel)) {\r\n this.readingUnitForBinOrSiloType.push({ label: value, value: { label: value, value: Number(key) } })\r\n if (Number(key) != ItxReportsReadingUnitEnum.CalcUsedCapacity && Number(key) != ItxReportsReadingUnitEnum.CalcAvailableCapacity) {\r\n this.readingUnitIfNoBinOrSiloType.push({ label: value, value: { label: value, value: Number(key) } })\r\n }\r\n }\r\n\r\n for (const [key, value] of Object.entries(ItxReportRadarReadingUnitLabel)) {\r\n this._radarReadingUnit.push({ label: value, value: { label: value, value: Number(key) } })\r\n }\r\n\r\n for (const [key, value] of Object.entries(DefaultDateRangeLabel)) {\r\n this._dateRange.push({ label: value, value: Number(key) })\r\n }\r\n\r\n for (const [key, value] of Object.entries(CapacityUnitLiquidLabel)) {\r\n this.capacityUnitLiquid.push({ label: value, value: { label: value, value: Number(key) } });\r\n }\r\n\r\n for (const [key, value] of Object.entries(CapacityUnitLoosLabel)) {\r\n this.capacityUnitLoos.push({ label: value, value: { label: value, value: Number(key) } });\r\n }\r\n\r\n this.temperatureUnit.push({ label: TemperatureMeasureLabel[1], value: { label: TemperatureMeasureLabel[1], value: TemperatureMeasureEnum.Fahrenheit } });\r\n this.temperatureUnit.push({ label: TemperatureMeasureLabel[0], value: { label: TemperatureMeasureLabel[0], value: TemperatureMeasureEnum.Celsius } });\r\n\r\n for (const [key, value] of Object.entries(CapacityUnitLabel)) {\r\n this.capacityUnit.push({ label: value, value: Number(key) });\r\n }\r\n }\r\n\r\n private async setDefaultFilterValues() {\r\n let locations = await this._itxBinDataService.getLocationReportFilters() as ItxLocationReportFilter[];\r\n if (locations && locations.length > 0) {\r\n locations.forEach(x => {\r\n if (x.itxBins.length > 0) {\r\n this._locationFilter.push({\r\n label: x.locationName, value: {\r\n bins: x.itxBins.map(b => ({\r\n label: b.name,\r\n value: {\r\n label: b.name, id: b.id, type: b.binType, locationId: x.locationId,\r\n radars: b.radars.map(r => ({\r\n id: r.id, radarId: r.radarId, radarAddress: r.radarIdAddress\r\n })),\r\n }\r\n }))\r\n }\r\n });\r\n }\r\n });\r\n this._selectedLocationFilter = this._locationFilter[0].value;\r\n this._storageFilter = this._selectedLocationFilter.bins;\r\n this._selectedStorageFilter = this._storageFilter[0].value;\r\n\r\n this.fillReadingUnit(this._selectedStorageFilter.type);\r\n\r\n this._selectedReadingUnit = this._readingUnit[0].value;\r\n if (this._selectedStorageFilter.type == ItxBinTypeEnum.LiquidStorageConical ||\r\n this._selectedStorageFilter.type == ItxBinTypeEnum.LiquidStorageFlat ||\r\n this._selectedStorageFilter.type == ItxBinTypeEnum.LiquidStorageSloped) {\r\n this._measureUnit.push(...this.capacityUnitLiquid)\r\n } else {\r\n this._measureUnit.push(...this.capacityUnitLoos);\r\n }\r\n this._selectedMeasure = this._measureUnit[0].value\r\n this.setReportDataFilter();\r\n }\r\n }\r\n\r\n async onFocusControl(control: FormControl) {\r\n control.markAsTouched();\r\n }\r\n\r\n async onBlurControl(control: FormControl) {\r\n control.markAsUntouched();\r\n }\r\n\r\n onChangeSelectedLocation() {\r\n this.isReportGenerated = false;\r\n this._selectedStorageFilter = undefined;\r\n this._measureUnit = [];\r\n this._selectedReadingUnit = undefined;\r\n this._selectedRadarReadingUnit = undefined;\r\n this._storageFilter = this._selectedLocationFilter.bins;\r\n this._selectedMeasure = undefined;\r\n this._isReportEmpty = false;\r\n }\r\n\r\n onChangeSelectedStorage() {\r\n this.isReportGenerated = false;\r\n this._selectedReadingUnit = undefined;\r\n this.fillReadingUnit(this._selectedStorageFilter.type);\r\n this._measureUnit = [];\r\n this._selectedMeasure = undefined;\r\n this._isReportEmpty = false;\r\n this._selectedRadarReadingUnit = undefined;\r\n }\r\n\r\n onChangeSelectedReadingUnit() {\r\n this.isReportGenerated = false;\r\n this._measureUnit = [];\r\n this._selectedMeasure = undefined;\r\n this._selectedRadarReadingUnit = undefined;\r\n switch (this._selectedReadingUnit.value) {\r\n case ItxReportsReadingUnitEnum.Temperature:\r\n this._measureUnit.push(...this.temperatureUnit);\r\n break;\r\n case ItxReportsReadingUnitEnum.HeadSpace:\r\n case ItxReportsReadingUnitEnum.FillHeight:\r\n this._measureUnit.push(...this.sizeUnit);\r\n break;\r\n case ItxReportsReadingUnitEnum.CalcAvailableCapacity:\r\n case ItxReportsReadingUnitEnum.CalcUsedCapacity:\r\n case ItxReportsReadingUnitEnum.AvailableCapacity:\r\n case ItxReportsReadingUnitEnum.UsedCapacity:\r\n if (this._selectedStorageFilter.type == ItxBinTypeEnum.LiquidStorageConical ||\r\n this._selectedStorageFilter.type == ItxBinTypeEnum.LiquidStorageFlat ||\r\n this._selectedStorageFilter.type == ItxBinTypeEnum.LiquidStorageSloped) {\r\n this._measureUnit.push(...this.capacityUnitLiquid);\r\n } else {\r\n this._measureUnit.push(...this.capacityUnitLoos);\r\n }\r\n break;\r\n case ItxReportsReadingUnitEnum.PercentFull:\r\n this._measureUnit.push({ label: '%', value: { label: '%', value: 0 } });\r\n this._selectedMeasure = { label: '%', value: 0 };\r\n break;\r\n }\r\n }\r\n\r\n onChangeSelectedRadarReadingUnit() {\r\n this.isReportGenerated = false;\r\n this._selectedMeasure = undefined;\r\n this._selectedReadingUnit = undefined;\r\n this._measureUnit = [];\r\n switch (this._selectedRadarReadingUnit.value) {\r\n case ItxReportsReadingUnitEnum.HeadSpace:\r\n this._measureUnit.push(...this.sizeUnit);\r\n break;\r\n case ItxReportsReadingUnitEnum.Temperature:\r\n this._measureUnit.push(...this.temperatureUnit);\r\n break;\r\n case ItxReportsReadingUnitEnum.PercentFull:\r\n this._measureUnit.push({ label: '%', value: { label: '%', value: 0 } });\r\n this._selectedMeasure = { label: '%', value: 0 };\r\n break;\r\n case ItxReportsReadingUnitEnum.UsedCapacity:\r\n if (this._selectedStorageFilter.type == ItxBinTypeEnum.LiquidStorageConical ||\r\n this._selectedStorageFilter.type == ItxBinTypeEnum.LiquidStorageFlat ||\r\n this._selectedStorageFilter.type == ItxBinTypeEnum.LiquidStorageSloped) {\r\n this._measureUnit.push(...this.capacityUnitLiquid);\r\n } else {\r\n this._measureUnit.push(...this.capacityUnitLoos);\r\n }\r\n break;\r\n }\r\n }\r\n\r\n onChangeSelectedMeasure() {\r\n this.isReportGenerated = false;\r\n //this.createunitLabel();\r\n }\r\n\r\n onChangeSelectedDateValue(option) {\r\n this.isReportGenerated = false;\r\n this._dateRange = option.value;\r\n }\r\n\r\n onSeclectCalendar() {\r\n if (this._rangeDate[0] && this._rangeDate[1]) {\r\n let startDate = new Date(this._rangeDate[0]);\r\n let endDate = new Date(this._rangeDate[1]);\r\n\r\n const diffInMS = new Date(endDate).getTime() - new Date(startDate).getTime();\r\n const msToDaysDivider = 1000 * 60 * 60 * 24;\r\n const diffInDays = diffInMS / msToDaysDivider;\r\n\r\n if (diffInDays > 30) {\r\n const thirtyDaysInMs = 1000 * 60 * 60 * 24 * 30;\r\n this._rangeDate[1] = new Date(this._rangeDate[0].getTime() + (thirtyDaysInMs));\r\n }\r\n }\r\n this._selectedDefaultDateRange = null;\r\n }\r\n\r\n async onGenerateReport() {\r\n this._isReportRun = true;\r\n this.setReportDataFilter();\r\n let result = await this._reportDataService.getItxReportHistoricalDataByFilter(this._reportFilter);\r\n this.clearChart();\r\n if (result) {\r\n if (result instanceof ErrorModel && (result.code == ErrorCodeEnum.ItxStorageNotFound || result.code == ErrorCodeEnum.LocationNotFound)) {\r\n this._isReportEmpty = true;\r\n this.isReportGenerated = false;\r\n }\r\n else {\r\n this._isReportEmpty = false;\r\n this.isReportGenerated = true;\r\n let data = result as ReportHistoricalDataResponse;\r\n this._isAvgValues = data.isAverageValues;\r\n let chartDatasets = this.createDataSets(data.reportData);\r\n if (chartDatasets) {\r\n this.chart = new Chart(this.ctx, {\r\n type: 'multicolorLine',\r\n plugins: [this.verticalHoverPlugin],\r\n data: {\r\n datasets: chartDatasets\r\n },\r\n options: {\r\n scales: {\r\n xAxes: [{\r\n type: \"time\",\r\n time: this.scalesChart(data.reportData),\r\n bounds: 'ticks',\r\n ticks: {\r\n major: {\r\n enabled: true,\r\n fontStyle: 'bold',\r\n },\r\n },\r\n }],\r\n },\r\n tooltips: {\r\n mode: \"index\",\r\n intersect: false,\r\n callbacks: {\r\n label: function (tooltipItem, data) {\r\n var label = data.datasets[tooltipItem.datasetIndex].label || '';\r\n if (label) {\r\n label += ': ';\r\n }\r\n label += new Intl.NumberFormat('en-US').format(tooltipItem.yLabel);\r\n return label;\r\n }\r\n },\r\n },\r\n elements: {\r\n line: {\r\n tension: 0\r\n }\r\n },\r\n hover: {\r\n intersect: false\r\n },\r\n }\r\n });\r\n }\r\n else {\r\n this.createEmptyChart();\r\n this._isReportEmpty = true;\r\n this.isReportGenerated = false;\r\n }\r\n }\r\n }\r\n else {\r\n this.createEmptyChart();\r\n this._isReportEmpty = true;\r\n this.isReportGenerated = false;\r\n }\r\n this._isReportRun = false;\r\n }\r\n\r\n onApplyDateRangeFilter() {\r\n this.isReportGenerated = false;\r\n if (this._rangeDate == undefined || this._rangeDate.length == 0) {\r\n this.resetCalendar();\r\n }\r\n if (this._rangeDate[1] == undefined || this._rangeDate[1] == null) {\r\n this._rangeDate[1] = this._rangeDate[0];\r\n }\r\n this._reportFilter.dateFrom = (this._rangeDate[0].getTime() / CalendarDefaultValues.defaultOneSecondMilliseconds) | 0;\r\n this._reportFilter.dateTo = (this._rangeDate[1].getTime() / CalendarDefaultValues.defaultOneSecondMilliseconds) | 0;\r\n this.defaultDateRangePreviousState = this._selectedDefaultDateRange;\r\n this.calendar.toggle();\r\n }\r\n\r\n onCloseCalendar() {\r\n if (this._reportFilter.dateFrom == null && this._reportFilter.dateTo == null) {\r\n this.resetCalendar();\r\n return;\r\n }\r\n if (this.defaultDateRangePreviousState != null) {\r\n this.setDefaultDate(this.defaultDateRangePreviousState);\r\n return;\r\n }\r\n this._rangeDate = [];\r\n this._rangeDate.push(new Date(this._reportFilter.dateFrom * CalendarDefaultValues.defaultOneSecondMilliseconds));\r\n this._rangeDate.push(new Date(this._reportFilter.dateTo * CalendarDefaultValues.defaultOneSecondMilliseconds));\r\n }\r\n\r\n setDefaultDate(defaultDateRange: DefaultDateRangeEnum) {\r\n let endDate = new Date();\r\n let startDate = new Date();\r\n endDate.setHours(0, 0, 0, 0);\r\n startDate.setHours(0, 0, 0, 0);\r\n this._rangeDate = [];\r\n switch (defaultDateRange) {\r\n case DefaultDateRangeEnum.Week:\r\n startDate.setDate(startDate.getDate() - CalendarDefaultValues.defaultOneWeekDays);\r\n break;\r\n case DefaultDateRangeEnum.Month:\r\n startDate.setDate(startDate.getDate() - CalendarDefaultValues.defaultOneMonthDays);\r\n break;\r\n }\r\n this._selectedDefaultDateRange = defaultDateRange;\r\n this._rangeDate.push(startDate);\r\n this._rangeDate.push(endDate);\r\n this._selectedDateRange = this._dateRange.find(x => x.value == defaultDateRange);\r\n }\r\n\r\n onClickExportReport() {\r\n var reportFilter = new ReportDataFilterPost();\r\n reportFilter.dateFrom = this._reportFilter.dateFrom;\r\n reportFilter.dateTo = this._reportFilter.dateTo;\r\n reportFilter.itxBinId = this._reportFilter.itxBinId;\r\n reportFilter.locationId = this._reportFilter.locationId;\r\n reportFilter.reportsReadingUnit = this._reportFilter.reportsReadingUnit;\r\n reportFilter.reportsRadarReadingUnit = this._reportFilter.reportsRadarReadingUnit;\r\n reportFilter.unit = this._reportFilter.unit;\r\n reportFilter.radarIds = null;\r\n if (this._reportFilter.reportsRadarReadingUnit != null) {\r\n for (var i = 0; i < this.chart.data.datasets.length; i++) {\r\n if (this.chart.isDatasetVisible(i)) {\r\n if (reportFilter.radarIds == null) {\r\n reportFilter.radarIds = [];\r\n }\r\n\r\n if (i < this._reportFilter.radarIds.length) {\r\n reportFilter.radarIds.push(this._reportFilter.radarIds[i]);\r\n }\r\n }\r\n }\r\n\r\n if (reportFilter.radarIds == null) reportFilter.radarIds = this._reportFilter.radarIds;\r\n }\r\n\r\n this._exportReportModal.showDownloadHistoricalReport(reportFilter, this._selectedStorageFilter.label);\r\n }\r\n\r\n private resetCalendar() {\r\n this.defaultDateRangePreviousState = null;\r\n this._selectedDefaultDateRange = null;\r\n this._rangeDate = [];\r\n let today = new Date();\r\n today.setHours(0, 0, 0, 0);\r\n this._rangeDate.push(today);\r\n this._rangeDate.push(today);\r\n }\r\n\r\n private setReportDataFilter() {\r\n this._reportFilter.locationId = this._selectedStorageFilter.locationId;\r\n this._reportFilter.itxBinId = this._selectedStorageFilter.id;\r\n this._reportFilter.reportsReadingUnit = this._selectedReadingUnit != undefined ? this._selectedReadingUnit.value : null;\r\n this._reportFilter.reportsRadarReadingUnit = this._selectedRadarReadingUnit != undefined ? this._selectedRadarReadingUnit.value : null;\r\n this._reportFilter.radarIds = this._selectedRadarReadingUnit != undefined ? this._selectedStorageFilter.radars.map(r => r.radarId) : null;\r\n this._reportFilter.unit = this._selectedMeasure.value;\r\n }\r\n\r\n private fillReadingUnit(binType: ItxBinTypeEnum) {\r\n let isSiloOrBin = binType == ItxBinTypeEnum.BinConical || binType == ItxBinTypeEnum.BinFlat || binType == ItxBinTypeEnum.BinSloped\r\n || binType == ItxBinTypeEnum.SiloConical || binType == ItxBinTypeEnum.SiloFlat || binType == ItxBinTypeEnum.SiloSloped;\r\n\r\n isSiloOrBin ? this._readingUnit = this.readingUnitForBinOrSiloType : this._readingUnit = this.readingUnitIfNoBinOrSiloType;\r\n }\r\n\r\n private clearChart() {\r\n if (this.chart !== undefined) this.chart.destroy();\r\n }\r\n\r\n private createEmptyChart() {\r\n this.clearChart();\r\n let today = new Date();\r\n today.setHours(0, 0, 0, 0);\r\n this.chart = new Chart(this.ctx, {\r\n type: 'line',\r\n data: {\r\n datasets: [],\r\n },\r\n options: {\r\n scales: {\r\n xAxes: [{\r\n type: \"time\",\r\n time: {\r\n unit: \"hour\",\r\n displayFormats: {\r\n hour: 'HH:mm',\r\n }\r\n },\r\n ticks: {\r\n min: new Date().setHours(0, 0, 0, 0),\r\n max: new Date().setHours(24, 0, 0, 0),\r\n },\r\n }],\r\n yAxes: [{\r\n ticks: {\r\n max: 100,\r\n min: 0,\r\n }\r\n }]\r\n },\r\n elements: {\r\n line: {\r\n tension: 0\r\n }\r\n },\r\n }\r\n });\r\n }\r\n\r\n unitLabel() {\r\n let unitLabel: string;\r\n if (this._selectedReadingUnit != undefined) {\r\n unitLabel = (this._selectedReadingUnit ? this._selectedReadingUnit.label : '') + (this._selectedMeasure ? ` (${this._selectedMeasure.label})` : '');\r\n }\r\n else if (this._selectedRadarReadingUnit != undefined) {\r\n unitLabel = 'Radars'\r\n + (this._selectedRadarReadingUnit ? `: ${this._selectedRadarReadingUnit.label}` : '')\r\n + (this._selectedMeasure ? ` (${this._selectedMeasure.label})` : '');\r\n }\r\n else {\r\n unitLabel = '';\r\n }\r\n return unitLabel;\r\n }\r\n\r\n private scalesChart(telemetry: ItxTelemetryDataResponse[]) {\r\n let dates: number[] = [];\r\n telemetry.forEach(x => {\r\n dates.push(Math.min(...x.reportDataTelemetry.map(i => i.timestamp)));\r\n dates.push(Math.max(...x.reportDataTelemetry.map(i => i.timestamp)));\r\n })\r\n let minDate = Math.min(...dates);\r\n let maxDate = Math.max(...dates);\r\n let diffDays = ((maxDate - minDate) / (3600 * 24)) | 0;\r\n if (diffDays <= 21) {\r\n return {\r\n unit: 'hour',\r\n displayFormats: {\r\n hour: 'HH:mm',\r\n day: 'MM.DD.YYYY',\r\n month: 'MMM,YY',\r\n year: 'YYYY',\r\n },\r\n tooltipFormat: 'MMM DD, YYYY, HH:mm',\r\n }\r\n }\r\n\r\n if (diffDays <= 180) {\r\n return {\r\n unit: 'day',\r\n displayFormats: {\r\n hour: 'HH:mm',\r\n day: 'DD',\r\n month: 'MMM YYYY',\r\n year: 'YYYY'\r\n },\r\n tooltipFormat: 'MMM DD, YYYY, HH:mm',\r\n }\r\n }\r\n\r\n return {\r\n unit: 'month',\r\n displayFormats: {\r\n hour: 'HH:mm',\r\n day: 'DD',\r\n month: 'MMM',\r\n year: 'YYYY'\r\n },\r\n tooltipFormat: 'MMM DD, YYYY, HH:mm',\r\n }\r\n }\r\n\r\n private createDataSets(telemetry: ItxTelemetryDataResponse[]): any {\r\n if (!telemetry || telemetry.length == 0) {\r\n return null;\r\n }\r\n\r\n let dataset: any[] = [];\r\n telemetry.forEach((t, index) => {\r\n if (index == 0 && (!t.reportDataTelemetry || t.reportDataTelemetry.length == 0)) {\r\n return null;\r\n }\r\n let label: string;\r\n\r\n if (this._selectedReadingUnit != undefined) {\r\n label = 'Actual Data'\r\n } else {\r\n if (this._selectedStorageFilter.radars && this._selectedStorageFilter.radars.length > index) {\r\n label = `RadarId: ${t.radarId} `;\r\n }\r\n else {\r\n label = 'Unknow';\r\n }\r\n }\r\n\r\n dataset.push({\r\n label: label,\r\n data: this.getSerisesPoints(t.reportDataTelemetry),\r\n fill: false,\r\n borderColor: index < this.chartColors.length ? this.chartColors[index] : this.random_rgba(),\r\n borderWidth: 2,\r\n pointRadius: 0,\r\n pointHoverRadius: 0,\r\n spanGaps: true,\r\n //showLine:true,\r\n });\r\n\r\n });\r\n\r\n return dataset;\r\n }\r\n\r\n private getSerisesPoints(telemetry: ItxTelemetry[]) {\r\n let delta = this.NoDataRateInMinute * this.OneMinuteSeconds;\r\n let points: { x: Date, y: number }[] = [];\r\n let previosDt: number = Math.min(...telemetry.map(x => x.timestamp));\r\n telemetry.forEach(pt => {\r\n let diff: number = pt.timestamp - previosDt;\r\n if (diff > delta) {\r\n points.push({ x: new Date((pt.timestamp - diff / 2) * CalendarDefaultValues.defaultOneSecondMilliseconds), y: null });\r\n }\r\n points.push({ x: new Date(pt.timestamp * CalendarDefaultValues.defaultOneSecondMilliseconds), y: pt.value });\r\n previosDt = pt.timestamp;\r\n });\r\n return points;\r\n }\r\n\r\n private random_rgba() {\r\n var o = Math.round, r = Math.random, s = 255;\r\n return 'rgba(' + o(r() * s) + ',' + o(r() * s) + ',' + o(r() * s) + ', 1)';\r\n }\r\n\r\n verticalHoverPlugin = {\r\n afterDraw: chart => {\r\n if (chart.tooltip && chart.tooltip._active && chart.tooltip._active.length) {\r\n let activePoint = this.chart.tooltip._active[0];\r\n let ctx = this.chart.ctx;\r\n let x = activePoint.tooltipPosition().x;\r\n let topY = this.chart.legend.bottom;\r\n let bottomY = this.chart.chartArea.bottom;\r\n\r\n // Set line opts\r\n ctx.save();\r\n ctx.lineWidth = 1;\r\n ctx.setLineDash([3, 3]);\r\n ctx.strokeStyle = '#FF4949';\r\n\r\n // draw vertical line\r\n ctx.beginPath();\r\n ctx.moveTo(x, topY);\r\n ctx.lineTo(x, bottomY);\r\n ctx.stroke();\r\n ctx.restore();\r\n }\r\n }\r\n }\r\n\r\n showTutorial() {\r\n this.tutorialPopup.showPopup(TutorialMenuEnum.ItxReports);\r\n }\r\n}\r\n","export * from './itx-grid';\r\nexport * from './itx-tab.component';\r\nexport * from './itx-bins-tab';\r\n","export * from './itx-bins-tab.component';\r\nexport * from './itx-bin-grid';","export * from './itx-bin-grid';","import PerfectScrollbar from 'perfect-scrollbar';\r\nimport { FormBuilder, FormGroup } from '@angular/forms';\r\nimport { Component, OnInit, ElementRef, NgZone, AfterViewInit, Input, OnDestroy, EventEmitter, ViewChild } from '@angular/core';\r\nimport { Subscription } from 'rxjs';\r\n\r\nimport { ItxBinViewModel } from './../../../../models';\r\nimport { ItxBinDataSourceService } from './../../../../services';\r\nimport { ColumnTypeEnum, ItxBinTypeEnum, CapacityUnitEnum, SizeMeasureEnum } from '../../../../enums';\r\nimport { ItxBinIconClass, ItxBinTypeLabel, CapacityUnitLabel } from '../../../../constants';\r\nimport { ItxListAddRadarPopupComponent, ItxBinDeletePopupComponent } from '@popups';\r\nimport { ConvertDataFunctions } from '../../../../../common';\r\n\r\n@Component({\r\n selector: 'greensleeves-itx-bin-grid',\r\n templateUrl: './itx-bin-grid.html',\r\n})\r\n\r\nexport class ItxBinGridComponent implements OnInit, OnDestroy, AfterViewInit {\r\n static STORAGE_NAME_KEY = 'name';\r\n static STORAGE_TYPE_KEY = 'binType';\r\n static SORT_ORDER_DEFAULT = 1;\r\n\r\n @ViewChild(ItxBinDeletePopupComponent, { read: false, static: false })\r\n private deleteModal: ItxBinDeletePopupComponent;\r\n\r\n @Input() _location: { id: number, name: string };\r\n\r\n _columnTypeEnum = ColumnTypeEnum;\r\n _sortField = ItxBinGridComponent.STORAGE_NAME_KEY;\r\n _sortOrder = ItxBinGridComponent.SORT_ORDER_DEFAULT;\r\n _gridData: ItxBinViewModel[];\r\n _storageNameKey = ItxBinGridComponent.STORAGE_NAME_KEY;\r\n _searchPhrase: string = '';\r\n _ps: PerfectScrollbar;\r\n public onEditClicked = new EventEmitter();\r\n\r\n _columnsView = [\r\n { header: 'Storage Icon', columnType: ColumnTypeEnum.StorageIcon, dataField: 'binType' },\r\n { header: 'Storage Name', columnType: ColumnTypeEnum.StorageName, dataField: 'name' },\r\n { header: 'Storage Type', columnType: ColumnTypeEnum.StorageType, dataField: 'binType' },\r\n { header: 'Total Capacity', columnType: ColumnTypeEnum.Capacity, dataField: 'totalCapacity' },\r\n { header: 'Capacity Unit', columnType: ColumnTypeEnum.CapacityUnit, dataField: 'capacityUnit' },\r\n { header: 'Stored Material', columnType: ColumnTypeEnum.StoredMaterial, dataField: 'material' },\r\n { header: 'Number Of Radars', columnType: ColumnTypeEnum.Bins, dataField: 'countOfRadars' },\r\n ]\r\n\r\n _frozenColumns = [\r\n { header: '', columnType: ColumnTypeEnum.Radar, width: 46 },\r\n { header: '', columnType: ColumnTypeEnum.Edit, width: 46 },\r\n { header: '', columnType: ColumnTypeEnum.Delete, width: 46 }\r\n ]\r\n\r\n _columnsViewLength: number = 0;\r\n\r\n _searchForm: FormGroup;\r\n _lastSearchPhrase: string;\r\n subscriptions: Subscription[] = [];\r\n\r\n get _frozenWidth() {\r\n return `${this._frozenColumns.reduce((a, v) => a + v.width, 0)}px`;\r\n }\r\n\r\n @ViewChild(ItxListAddRadarPopupComponent, { read: false, static: false })\r\n _radarListComponent: ItxListAddRadarPopupComponent;\r\n\r\n constructor(\r\n private _el: ElementRef,\r\n private _zone: NgZone,\r\n formBuilder: FormBuilder,\r\n private _itxBinDataSerivece: ItxBinDataSourceService) {\r\n this._searchForm = formBuilder.group({\r\n searchPhrase: [''],\r\n });\r\n }\r\n\r\n ngOnInit() {\r\n this.reInitScrollBar(0);\r\n let itxSub = this._itxBinDataSerivece.itxBin$.subscribe(item => {\r\n if (item) {\r\n this._gridData = [];\r\n item.forEach(bin => {\r\n let getBin = ItxBinViewModel.ToNewViewModel(bin);\r\n getBin.totalCapacity = this.getCapacityValue(getBin.totalCapacity, getBin.capacityUnit, getBin.binType);\r\n getBin.height = this.getSizeValueFromFt(getBin.height, getBin.sizeMeasure);\r\n getBin.width = this.getSizeValueFromFt(getBin.width, getBin.sizeMeasure);\r\n getBin.depth = this.getSizeValueFromFt(getBin.depth, getBin.sizeMeasure);\r\n if (getBin.roofCap != null) {\r\n getBin.roofCap = this.getSizeValueFromFt(getBin.roofCap, getBin.sizeMeasure);\r\n }\r\n this._gridData.push(getBin);\r\n });\r\n }\r\n });\r\n this._itxBinDataSerivece.getItxBinsByLocationId(this._location.id);\r\n this.subscriptions.push(itxSub);\r\n this._columnsViewLength = this._columnsView.length + 1;\r\n }\r\n\r\n ngOnDestroy() {\r\n this.subscriptions && this.subscriptions.forEach((sub) => sub.unsubscribe());\r\n this._ps && this._ps.destroy();\r\n this._ps = null;\r\n this._gridData = [];\r\n }\r\n\r\n ngAfterViewInit() {\r\n this.reInitScrollBar(0);\r\n }\r\n\r\n onClickRadar(itxBinViewModel: ItxBinViewModel) {\r\n this._itxBinDataSerivece.markItxBinRadarForOthersAsInUpdate(itxBinViewModel.id, true);\r\n this._radarListComponent.show(itxBinViewModel);\r\n }\r\n\r\n onClickEdit(itxBin: ItxBinViewModel) {\r\n this.onEditClicked.emit(itxBin);\r\n }\r\n\r\n onClickDelete(itxBin: ItxBinViewModel) {\r\n this.deleteModal.show(itxBin);\r\n }\r\n\r\n onUpdateLastSearch() {\r\n this._lastSearchPhrase = this._searchForm.controls.searchPhrase.value;\r\n }\r\n\r\n public reInitScrollBar(timeout?: number, withCheck = false) {\r\n if (withCheck) {\r\n return;\r\n }\r\n\r\n if (this._ps) {\r\n this._ps.destroy();\r\n }\r\n\r\n const createScrollbarFunc = () => {\r\n this._zone.runOutsideAngular(() => {\r\n try {\r\n const el = this._el.nativeElement.querySelector('.ui-table-scrollable-view.ui-table-unfrozen-view .ui-table-scrollable-body');\r\n if (!el) {\r\n return;\r\n }\r\n\r\n this._ps = new PerfectScrollbar(el, {\r\n wheelSpeed: 2,\r\n wheelPropagation: true,\r\n minScrollbarLength: 20\r\n });\r\n } catch (error) {\r\n }\r\n })\r\n };\r\n\r\n if (timeout) {\r\n setTimeout(() => {\r\n createScrollbarFunc();\r\n }, timeout);\r\n } else {\r\n createScrollbarFunc();\r\n }\r\n }\r\n\r\n getBinClass(binType: ItxBinTypeEnum): string {\r\n return ItxBinIconClass.getIconClass(binType);\r\n }\r\n\r\n getBinTypeLabel(binType: ItxBinTypeEnum): string {\r\n return ItxBinTypeLabel[binType];\r\n }\r\n\r\n getCapacityUnitLabel(capasityUnit: CapacityUnitEnum): string {\r\n return CapacityUnitLabel[capasityUnit];\r\n }\r\n\r\n private getSizeValueFromFt(value: number, sizeUnit: SizeMeasureEnum): number {\r\n let result = ConvertDataFunctions.convertSizeFromFt(value, sizeUnit);\r\n return Math.round(result * 100) / 100;\r\n }\r\n\r\n getCapacityValue(value: number, capacityUnit: CapacityUnitEnum, binType: ItxBinTypeEnum): number {\r\n let result: number;\r\n switch (binType) {\r\n case ItxBinTypeEnum.LiquidStorageConical:\r\n case ItxBinTypeEnum.LiquidStorageFlat:\r\n case ItxBinTypeEnum.LiquidStorageSloped:\r\n result = ConvertDataFunctions.convertFromGal(value, capacityUnit);\r\n break;\r\n default:\r\n result = ConvertDataFunctions.convertFromFt3(value, capacityUnit);\r\n }\r\n return Math.round(result * 100) / 100;\r\n }\r\n}\r\n","import { switchMap } from 'rxjs/operators';\r\nimport { RoutePaths } from 'src/app/common';\r\nimport { Component, OnInit, OnDestroy, ViewChild, AfterViewInit } from '@angular/core';\r\nimport { ActivatedRoute, Router } from '@angular/router';\r\nimport { Subscription } from 'rxjs';\r\n\r\nimport { MainRoutePaths } from '../../../constants';\r\nimport { LocationsItxDatasourceService } from '../../../services';\r\nimport { ItxBinAddEditPopupComponent } from './../../popups';\r\nimport { ItxBinGridComponent } from './itx-bin-grid';\r\nimport { ItxBinViewModel } from './../../../models';\r\n@Component({\r\n selector: 'greensleeves-itx-bins-tab',\r\n templateUrl: './itx-bins-tab.component.html',\r\n styles: []\r\n})\r\nexport class ItxBinsTabComponent implements OnInit, OnDestroy, AfterViewInit {\r\n @ViewChild(ItxBinAddEditPopupComponent, { read: false, static: false })\r\n private _addEditModal: ItxBinAddEditPopupComponent;\r\n\r\n @ViewChild(ItxBinGridComponent, { read: false, static: false })\r\n private _itxBinGridComponent: ItxBinGridComponent;\r\n\r\n private _subscription: Subscription;\r\n _locationId: number | undefined;\r\n _locationName: string = '';\r\n _linkGoBack = `/${RoutePaths.MAIN_USER}/${MainRoutePaths.ITX_MANAGEMENT}`;\r\n\r\n constructor(\r\n private _route: ActivatedRoute,\r\n private _locationsItxDataSourceService: LocationsItxDatasourceService,\r\n private _router: Router) { }\r\n\r\n ngOnInit() {\r\n const subscribtion = this._locationsItxDataSourceService.locationsItx$;\r\n if (this._router.url.indexOf('/back-door') > -1) {\r\n this._locationId = 0;\r\n this._locationName = 'LocationName';\r\n return;\r\n }\r\n\r\n this._route.paramMap.pipe(\r\n switchMap(params => params.getAll('id'))\r\n ).subscribe(data => {\r\n this._locationId = +data;\r\n const location = subscribtion.getValue().find(l => l.id == this._locationId);\r\n if (location) {\r\n this._locationName = location.locationName;\r\n }\r\n else {\r\n this._router.navigateByUrl(`/${RoutePaths.MAIN_USER}/${MainRoutePaths.ITX_MANAGEMENT}`);\r\n }\r\n });\r\n }\r\n\r\n ngAfterViewInit() {\r\n this._subscription = this._itxBinGridComponent.onEditClicked.subscribe((itxBin: ItxBinViewModel) => {\r\n this._addEditModal.showEdit(itxBin);\r\n });\r\n }\r\n\r\n ngOnDestroy() {\r\n this._locationsItxDataSourceService.markLocationItxForOthersAsStoragesInView(this._locationId, false);\r\n this._subscription.unsubscribe();\r\n }\r\n\r\n onClickAdd() {\r\n let location = { id: this._locationId, name: this._locationName };\r\n this._addEditModal.showAdd(location);\r\n }\r\n}\r\n","export * from './itx-grid.component';\r\n","import { Component, OnInit, AfterViewInit, OnDestroy, ElementRef, NgZone, EventEmitter, ViewChild, ChangeDetectorRef } from '@angular/core';\r\nimport PerfectScrollbar from 'perfect-scrollbar';\r\nimport { FormBuilder, FormGroup } from '@angular/forms';\r\nimport { Subscription } from 'rxjs';\r\nimport { ActivatedRoute, Router } from '@angular/router';\r\n\r\nimport { FullnessRangeViewModel, LocationItxViewModel } from './../../../models/';\r\nimport { ColumnTypeEnum, ProjectEnum } from '../../../enums';\r\nimport { ItxAddEditPopupComponent, ItxManageColorPopupComponent, ItxRangeDeletePopupComponent, ItxListAddRadarPopupComponent, DeviceCommunicationPopupComponent } from '../../popups';\r\nimport { LocationsItxDatasourceService } from '@services';\r\nimport { MainRoutePaths } from '../../../constants';\r\n\r\n\r\n@Component({\r\n selector: 'greensleeves-itx-grid',\r\n templateUrl: './itx-grid.component.html'\r\n})\r\n\r\nexport class ITXGridComponent implements OnInit, OnDestroy, AfterViewInit {\r\n @ViewChild(DeviceCommunicationPopupComponent, { read: false, static: false })\r\n private deviceCommunicationPopup: DeviceCommunicationPopupComponent;\r\n\r\n static LOCATION_NAME_KEY = 'locationName';\r\n static COMPANY_NAME_KEY = 'companyName';\r\n static SORT_ORDER_DEFAULT = 1;\r\n\r\n public onEditClicked = new EventEmitter();\r\n public onFullnessRangesClicked = new EventEmitter();\r\n public onDeleteClicked = new EventEmitter();\r\n\r\n _columnTypeEnum = ColumnTypeEnum;\r\n _sortField = ITXGridComponent.LOCATION_NAME_KEY;\r\n _sortOrder = ITXGridComponent.SORT_ORDER_DEFAULT;\r\n _gridData: LocationItxViewModel[];\r\n _companyNameKey = ITXGridComponent.COMPANY_NAME_KEY;\r\n _locationNameKey = ITXGridComponent.LOCATION_NAME_KEY;\r\n _searchPhrase: string = '';\r\n _ps: PerfectScrollbar;\r\n _initializeDeviceKey = 'isInitialized';\r\n _canBeInitializedKey = 'canDeviceBeInitialized';\r\n\r\n @ViewChild(ItxAddEditPopupComponent, { read: false, static: false })\r\n _editModal: ItxAddEditPopupComponent;\r\n\r\n @ViewChild(ItxManageColorPopupComponent, { read: false, static: false })\r\n private manageColorModal: ItxManageColorPopupComponent;\r\n\r\n @ViewChild(ItxRangeDeletePopupComponent, { read: false, static: false })\r\n _rangeDeleteModal: ItxRangeDeletePopupComponent;\r\n\r\n @ViewChild(ItxManageColorPopupComponent, { read: false, static: false })\r\n _fullnessRangesModal: ItxManageColorPopupComponent;\r\n\r\n _columnsView = [\r\n { header: 'Location name', columnType: ColumnTypeEnum.LocationName, dataField: ITXGridComponent.LOCATION_NAME_KEY },\r\n { header: 'Company', columnType: ColumnTypeEnum.Company, dataField: ITXGridComponent.COMPANY_NAME_KEY },\r\n { header: 'ITX IP Address', columnType: ColumnTypeEnum.IPAddress, dataField: 'ipAddress' },\r\n { header: 'Port', columnType: ColumnTypeEnum.Port, dataField: 'port', width: \"70\" },\r\n { header: 'Acq rate', columnType: ColumnTypeEnum.AcquisitionRate, dataField: 'acquisitionRate', width: \"100\" },\r\n { header: 'Storages', columnType: ColumnTypeEnum.Bins, dataField: 'countOfBins', width: \"70\" },\r\n ]\r\n\r\n _frozenColumns = [\r\n { header: '', columnType: ColumnTypeEnum.InitializeDevice, width: 46 },\r\n { header: '', columnType: ColumnTypeEnum.DownloadConnectionFile, width: 46 },\r\n { header: '', columnType: ColumnTypeEnum.Equipment, width: 46, dataField: 'id' },\r\n { header: '', columnType: ColumnTypeEnum.Edit, width: 46 },\r\n { header: '', columnType: ColumnTypeEnum.Delete, width: 46 }\r\n ]\r\n\r\n _searchForm: FormGroup;\r\n _lastSearchPhrase: string;\r\n\r\n _initLoaders: { [key: number]: boolean } = {};\r\n subscriptions: Subscription[] = [];\r\n _loading: boolean = false;\r\n get _frozenWidth() {\r\n return `${this._frozenColumns.reduce((a, v) => a + v.width, 0)}px`;\r\n }\r\n\r\n constructor(\r\n private _locationsItxDataSourceService: LocationsItxDatasourceService,\r\n private _el: ElementRef,\r\n private _zone: NgZone,\r\n formBuilder: FormBuilder,\r\n private _router: Router,\r\n private _route: ActivatedRoute) {\r\n this._searchForm = formBuilder.group({\r\n searchPhrase: [''],\r\n });\r\n }\r\n\r\n async ngOnInit() {\r\n this.reInitScrollBar(0);\r\n let locationSub = this._locationsItxDataSourceService.locationsItx$.subscribe(items => {\r\n this._gridData = items;\r\n this._loading = false;\r\n });\r\n this._loading = true;\r\n this._locationsItxDataSourceService.get();\r\n this.subscriptions.push(locationSub);\r\n }\r\n\r\n ngOnDestroy() {\r\n this.subscriptions &&\r\n this.subscriptions.forEach((sub) => sub.unsubscribe());\r\n\r\n this._ps && this._ps.destroy();\r\n this._ps = null;\r\n }\r\n\r\n ngAfterViewInit() {\r\n\r\n let rangeDeleteSubscription = this._fullnessRangesModal.onRangeDeleteClicked.subscribe((range: FullnessRangeViewModel) => {\r\n this._rangeDeleteModal.show(range);\r\n })\r\n\r\n\r\n let fullnessSubscription = this.onFullnessRangesClicked.subscribe((location) => {\r\n this._fullnessRangesModal.show(location);\r\n });\r\n\r\n let rangeDeletedSubscription = this._rangeDeleteModal.onSubmit$.subscribe((range: FullnessRangeViewModel) => {\r\n this._fullnessRangesModal.removeRange(range);\r\n });\r\n\r\n this.subscriptions.push(\r\n fullnessSubscription,\r\n rangeDeleteSubscription,\r\n rangeDeletedSubscription\r\n )\r\n this.reInitScrollBar(0);\r\n }\r\n\r\n public async onEdit(location) {\r\n await this._locationsItxDataSourceService.markLocationItxForOthersAsInUpdate(location.id);\r\n this.onEditClicked.emit(location);\r\n }\r\n\r\n async onClickDownloadFile(location: LocationItxViewModel) {\r\n if (!location) {\r\n return;\r\n }\r\n\r\n this.deviceCommunicationPopup.onShow({ locationName: location.locationName, locationId: location.id, deviceId: location.deviceId, project: ProjectEnum.Itx });\r\n }\r\n\r\n onManageEquipmentClick(location: LocationItxViewModel) {\r\n this.manageColorModal.show(location);\r\n }\r\n\r\n onUpdateLastSearch() {\r\n this._lastSearchPhrase = this._searchForm.controls.searchPhrase.value;\r\n }\r\n\r\n async onClickDelete(location: LocationItxViewModel) {\r\n this.onDeleteClicked.emit(location);\r\n }\r\n\r\n async onClickInitialized(location: LocationItxViewModel) {\r\n if (!location) {\r\n return;\r\n }\r\n\r\n location.isDeviceInInitialization = true;\r\n location.isInitialized = await this._locationsItxDataSourceService.initializeDeviceConfiguration(location.id) as boolean;\r\n location.isDeviceInInitialization = false;\r\n }\r\n\r\n public reInitScrollBar(timeout?: number, withCheck = false) {\r\n if (withCheck) {\r\n return;\r\n }\r\n\r\n if (this._ps) {\r\n this._ps.destroy();\r\n }\r\n\r\n const createScrollbarFunc = () => {\r\n this._zone.runOutsideAngular(() => {\r\n try {\r\n const el = this._el.nativeElement.querySelector('.ui-table-scrollable-view.ui-table-unfrozen-view .ui-table-scrollable-body');\r\n if (!el) {\r\n return;\r\n }\r\n\r\n this._ps = new PerfectScrollbar(el, {\r\n wheelSpeed: 2,\r\n wheelPropagation: true,\r\n minScrollbarLength: 20\r\n });\r\n } catch (error) {\r\n }\r\n })\r\n };\r\n\r\n if (timeout) {\r\n setTimeout(() => {\r\n createScrollbarFunc();\r\n }, timeout);\r\n } else {\r\n createScrollbarFunc();\r\n }\r\n }\r\n\r\n onShowStorages(locationId: number) {\r\n this._locationsItxDataSourceService.markLocationItxForOthersAsStoragesInView(locationId, true);\r\n this._router.navigate([`../${MainRoutePaths.ITX_STORAGES_MANAGEMENT}`, locationId], { relativeTo: this._route });\r\n }\r\n}\r\n","import { AfterViewInit, Component, OnDestroy, ViewChild } from '@angular/core';\r\nimport { Subscription } from 'rxjs';\r\n\r\nimport { LocationItxViewModel } from '../../models';\r\nimport { ItxAddEditPopupComponent, LocationBtxKtxDeletePopupComponent } from '../popups';\r\nimport { ITXGridComponent } from './itx-grid';\r\n\r\n@Component({\r\n selector: 'greensleeves-itx-tab',\r\n templateUrl: './itx-tab.component.html'\r\n})\r\n\r\nexport class ItxTabComponent implements AfterViewInit, OnDestroy {\r\n @ViewChild(ItxAddEditPopupComponent, { read: false, static: false })\r\n _addEditModal: ItxAddEditPopupComponent;\r\n \r\n @ViewChild(ITXGridComponent, {read: false, static: false})\r\n _gridComponent: ITXGridComponent;\r\n\r\n @ViewChild(LocationBtxKtxDeletePopupComponent, {read:false, static:false})\r\n _deleteComponent: LocationBtxKtxDeletePopupComponent;\r\n\r\n private _subscriptions: Subscription[] = [];\r\n\r\n constructor() { }\r\n\r\n ngOnDestroy() {\r\n this._subscriptions &&\r\n this._subscriptions.forEach((sub) => sub.unsubscribe());\r\n }\r\n\r\n ngAfterViewInit() {\r\n\r\n let editSubscription = this._gridComponent.onEditClicked.subscribe((location: LocationItxViewModel) => {\r\n this._addEditModal.showEdit(location);\r\n });\r\n\r\n let deleteItxSubscription = this._gridComponent.onDeleteClicked.subscribe((location: LocationItxViewModel) => {\r\n this._deleteComponent.show(location);\r\n });\r\n\r\n this._subscriptions.push(\r\n editSubscription,\r\n deleteItxSubscription,\r\n );\r\n }\r\n\r\n public onAdd() {\r\n this._addEditModal.showAdd();\r\n }\r\n}\r\n","export * from './ktx-current-data-tab.component';\r\nexport * from './ktx-bin-details-tab';\r\nexport * from './ktx-location-details-tab';\r\n","export * from './ktx-bin-details-tab.component';\r\n","import {\r\n AfterViewInit,\r\n ChangeDetectorRef,\r\n Component,\r\n ElementRef,\r\n EventEmitter,\r\n NgZone,\r\n OnDestroy,\r\n OnInit,\r\n ViewChild,\r\n} from '@angular/core';\r\nimport { ActivatedRoute, Router } from '@angular/router';\r\nimport { BehaviorSubject, Subscription } from 'rxjs';\r\nimport { TreeNode } from 'primeng';\r\n\r\nimport {\r\n KtxCurrentDataExportReportPopupComponent,\r\n KtxUnitFullscreenPopupComponent,\r\n} from '@popups';\r\nimport { HubService, LocationsKtxDataSourceService } from '@services';\r\nimport { ConvertDataFunctions, ErrorModel } from '../../../../common';\r\n\r\nimport {\r\n AlarmViewModel,\r\n BinSchemeViewModel,\r\n CableSchemeViewModel,\r\n LocationKtxSchemeViewModel,\r\n LocationKtxTemperatureRangeUpdatedHubMessage,\r\n SensorKtxSchemeViewModel,\r\n TelemetrySnapshotViewModel,\r\n TemperatureRangeViewModel,\r\n TemperatureColorViewModel,\r\n} from '@models';\r\nimport { MainRoutePaths, SensorAlarmLabels } from '../../../constants';\r\nimport {\r\n BinTypeEnum,\r\n ColumnTypeEnum,\r\n MeasureEnum,\r\n SensorStatusEnum,\r\n} from '../../../enums';\r\n\r\n@Component({\r\n selector: 'greensleeves-ktx-bin-details-tab',\r\n templateUrl: './ktx-bin-details-tab.component.html',\r\n})\r\nexport class KtxBinDetailsTabComponent implements OnInit, OnDestroy, AfterViewInit {\r\n static WINDOW_FUNCTION_GET_SCHEME_NAME = 'getScheme';\r\n static WINDOW_FUNCTION_GET_TELEMETRY_NAME = 'getTelemetry';\r\n static WINDOW_FIELD_IS_WEB_NAME = 'isWeb';\r\n static WINDOW_FUNCTION_DISPLAY_SCHEME_NAME = 'displayScheme';\r\n static NAME_FIELD = 'name';\r\n static MUX_OR_DEVICE_FIELD = 'multiplexerId';\r\n static SENSORS_FIELD = 'sensors';\r\n\r\n @ViewChild('model2d', { static: false }) iframe2d: ElementRef;\r\n @ViewChild('model3d', { static: false }) iframe3d: ElementRef;\r\n\r\n @ViewChild('fullScreenContainer', { static: false })\r\n fullScreenContainer: ElementRef;\r\n\r\n @ViewChild(KtxUnitFullscreenPopupComponent, { static: false })\r\n ktxUnitFullscreen: KtxUnitFullscreenPopupComponent;\r\n\r\n @ViewChild(KtxCurrentDataExportReportPopupComponent, {\r\n read: false,\r\n static: false,\r\n })\r\n exportReportModal: KtxCurrentDataExportReportPopupComponent;\r\n\r\n _locationScheme: LocationKtxSchemeViewModel;\r\n _isSchemeHidden = true;\r\n _isSchemeLoading = true;\r\n _isShowScheme: boolean = false;\r\n _isLoading: boolean;\r\n _gridData: CableSchemeViewModel[] = [];\r\n _resistanceGridData: CableSchemeViewModel[] = [];\r\n _is2dDisplayMode = true;\r\n _currentBin: BinSchemeViewModel;\r\n _columnType = ColumnTypeEnum;\r\n _binTypeEnum = BinTypeEnum;\r\n onViewCableDetailsClick = new EventEmitter();\r\n _columnsView = [];\r\n _sortField = 'name';\r\n temperatureTelemetry: TelemetrySnapshotViewModel;\r\n resistanceTelemetry: TelemetrySnapshotViewModel;\r\n _binId: number;\r\n _locationBinsNodes: TreeNode[] = [];\r\n _selectedBinNode: TreeNode;\r\n _isOpenBinsList = false;\r\n temperatureRanges: TemperatureRangeViewModel[];\r\n\r\n _frozenColumns = [\r\n {\r\n header: 'Cable',\r\n columnType: ColumnTypeEnum.CableName,\r\n dataField: KtxBinDetailsTabComponent.NAME_FIELD,\r\n width: 60,\r\n },\r\n {\r\n header: 'Device',\r\n columnType: ColumnTypeEnum.MUXOrDevice,\r\n dataField: KtxBinDetailsTabComponent.MUX_OR_DEVICE_FIELD,\r\n width: 60,\r\n },\r\n ];\r\n\r\n _lastUpdatingStatus: string;\r\n private subscriptions: Subscription[] = [];\r\n private schemeData$ = new BehaviorSubject<{\r\n binScheme: BinSchemeViewModel;\r\n alarm: AlarmViewModel;\r\n temperatureRanges: TemperatureRangeViewModel[];\r\n }>(null);\r\n private telemetry$ = new BehaviorSubject(null);\r\n private displayScheme$ = new BehaviorSubject(false);\r\n private isFahrenheitMeasureMode: boolean;\r\n private isTemperatureMeasureMode: boolean = true;\r\n private receivingTimestamp: string;\r\n\r\n get _isFahrenheitMeasureMode() {\r\n return this.isFahrenheitMeasureMode;\r\n }\r\n\r\n set _isFahrenheitMeasureMode(value: boolean) {\r\n this.isFahrenheitMeasureMode = value;\r\n }\r\n\r\n get _isTemperatureMeasureMode() {\r\n return this.isTemperatureMeasureMode;\r\n }\r\n\r\n set _isTemperatureMeasureMode(value: boolean) {\r\n this.isTemperatureMeasureMode = value;\r\n\r\n if (this._currentBin.displaySchemes) {\r\n if (value) {\r\n this.telemetry$.next(this.temperatureTelemetry);\r\n } else {\r\n this.telemetry$.next(this.resistanceTelemetry);\r\n }\r\n }\r\n }\r\n get _frozenWidth() {\r\n return `${this._frozenColumns.reduce((a, v) => a + v.width, 0)}px`;\r\n }\r\n\r\n get _locationName(): string {\r\n return this._locationScheme ? this._locationScheme.locationName : '';\r\n }\r\n\r\n get _selectedBinName(): string {\r\n if (!this._selectedBinNode) {\r\n return '';\r\n }\r\n\r\n const { label, parent } = this._selectedBinNode;\r\n\r\n return parent ? `${parent.label}: ${label}` : label;\r\n }\r\n\r\n get _temperatureRanges(): TemperatureColorViewModel[] {\r\n if (!this.temperatureRanges) {\r\n return [];\r\n }\r\n\r\n const temperatures: TemperatureColorViewModel[] = this\r\n ._isFahrenheitMeasureMode\r\n ? this.temperatureRanges.map((tr) => ({\r\n value: this.onCelsiusToFahrenheit(tr.to),\r\n colorHex: tr.colorHex,\r\n }))\r\n : this.temperatureRanges.map((tr) => ({\r\n value: Math.round(tr.to).toString(),\r\n colorHex: tr.colorHex,\r\n }));\r\n\r\n const {\r\n openTcColorHex,\r\n noResponseColorHex,\r\n maxRiseColorHex,\r\n highResistanceColorHex,\r\n highTemperatureColorHex,\r\n } = this._currentBin.alarm;\r\n\r\n const hlValue = this._isTemperatureMeasureMode\r\n ? highTemperatureColorHex\r\n : highResistanceColorHex;\r\n\r\n return [\r\n ...temperatures,\r\n {\r\n value: SensorAlarmLabels.OpenTc,\r\n colorHex: openTcColorHex,\r\n },\r\n {\r\n value: SensorAlarmLabels.NoResponse,\r\n colorHex: noResponseColorHex,\r\n },\r\n {\r\n value: SensorAlarmLabels.MaxRise,\r\n colorHex: maxRiseColorHex,\r\n },\r\n {\r\n value: SensorAlarmLabels.HighLimit,\r\n colorHex: hlValue,\r\n },\r\n ];\r\n }\r\n\r\n get _binHasUnit(): boolean {\r\n return this._selectedBinNode && !!this._selectedBinNode.parent;\r\n }\r\n\r\n constructor(\r\n private _ktxLocationService: LocationsKtxDataSourceService,\r\n private _router: Router,\r\n private _route: ActivatedRoute,\r\n private _el: ElementRef,\r\n private _hubService: HubService,\r\n private _cdr: ChangeDetectorRef,\r\n private _zone: NgZone\r\n ) { }\r\n\r\n ngOnInit() {\r\n this._currentBin = new BinSchemeViewModel();\r\n this.temperatureTelemetry = new TelemetrySnapshotViewModel();\r\n this.resistanceTelemetry = new TelemetrySnapshotViewModel();\r\n\r\n window[KtxBinDetailsTabComponent.WINDOW_FUNCTION_GET_SCHEME_NAME] = () => {\r\n return this.schemeData$;\r\n };\r\n window[KtxBinDetailsTabComponent.WINDOW_FUNCTION_GET_TELEMETRY_NAME] =\r\n () => {\r\n return this.telemetry$;\r\n };\r\n window[KtxBinDetailsTabComponent.WINDOW_FIELD_IS_WEB_NAME] = true;\r\n window[KtxBinDetailsTabComponent.WINDOW_FUNCTION_DISPLAY_SCHEME_NAME] =\r\n () => {\r\n return this.displayScheme$;\r\n };\r\n\r\n this.setSubscriptions();\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n const detailsSubscription = this.ktxUnitFullscreen.onDetailsClick.subscribe(\r\n (bin: BinSchemeViewModel) => {\r\n this._zone.run(() => {\r\n this._router.navigate([`../${bin.id}`], {\r\n relativeTo: this._route,\r\n });\r\n });\r\n }\r\n );\r\n\r\n this.subscriptions.push(detailsSubscription);\r\n this._el.nativeElement.querySelector('.ui-table-scrollable-view.ui-table-unfrozen-view .ui-table-scrollable-body').classList.add('is-scrollable-y', 'is-scrollable-x');\r\n }\r\n\r\n ngOnDestroy() {\r\n this.clearSubscriptions();\r\n this._ktxLocationService.companiesWithLocations$.next([]);\r\n }\r\n\r\n onClickGoBackLink(): void {\r\n this._router.navigate([`../../${MainRoutePaths.KTX_LOCATION_VIEW}`], {\r\n relativeTo: this._route,\r\n });\r\n }\r\n\r\n setSubscriptions(): void {\r\n const locationSchemeSubscription =\r\n this._ktxLocationService.locationScheme$.subscribe((locationScheme) => {\r\n this._locationScheme = locationScheme;\r\n });\r\n\r\n const telemetrySubscription = this._ktxLocationService.telemetry$.subscribe(\r\n (telemetry) => {\r\n if (telemetry) {\r\n if (this._currentBin.displaySchemes) {\r\n this.telemetry$.next(telemetry);\r\n }\r\n\r\n if (this.isTemperatureMeasureMode) {\r\n this.temperatureTelemetry = telemetry;\r\n this.mapTelemetryToGridData(this._gridData, telemetry);\r\n } else {\r\n this.resistanceTelemetry = telemetry;\r\n this.mapTelemetryToGridData(this._resistanceGridData, telemetry);\r\n }\r\n }\r\n }\r\n );\r\n\r\n const hubSubscription = this._hubService.temperatureRangeUpdated.subscribe(\r\n (message: LocationKtxTemperatureRangeUpdatedHubMessage) => {\r\n if (message.updatedRanges.locationId === this._currentBin.locationId) {\r\n this._currentBin.temperatureRanges = message.updatedRanges.ranges;\r\n this._currentBin.alarm = message.updatedRanges.alarm;\r\n\r\n this.schemeData$.next({\r\n binScheme: this._currentBin,\r\n alarm: this._currentBin.alarm,\r\n temperatureRanges: this._currentBin.temperatureRanges,\r\n });\r\n }\r\n }\r\n );\r\n\r\n const lastTelemetrySubscription =\r\n this._ktxLocationService.lastTelemetry$.subscribe(\r\n (telemetry: TelemetrySnapshotViewModel) => {\r\n if (telemetry) {\r\n const highLimitValue: number =\r\n this._currentBin.alarm &&\r\n this._currentBin.alarm.highTemperatureValue;\r\n\r\n if (highLimitValue && telemetry.snapshot) {\r\n telemetry.snapshot.forEach((x) => {\r\n if (x.sensors) {\r\n x.sensors.forEach((y) => {\r\n y.status =\r\n y.value >= highLimitValue\r\n ? SensorStatusEnum.HighLimit\r\n : y.status;\r\n });\r\n }\r\n });\r\n }\r\n this.mapTelemetryToGridData(this._gridData, telemetry);\r\n\r\n if (this._currentBin.displaySchemes) {\r\n this.telemetry$.next(telemetry);\r\n }\r\n }\r\n }\r\n );\r\n\r\n const binIdSubscription = this._route.paramMap.subscribe((params) => {\r\n if (!this._locationScheme) {\r\n this.onClickGoBackLink();\r\n }\r\n\r\n const binId = Number(params.get('id'));\r\n\r\n this._binId = binId;\r\n this.initLocationBinsNodes();\r\n this.setBinNodeById(binId);\r\n this.loadBinById(binId);\r\n });\r\n\r\n this.subscriptions.push(\r\n locationSchemeSubscription,\r\n telemetrySubscription,\r\n hubSubscription,\r\n lastTelemetrySubscription,\r\n binIdSubscription\r\n );\r\n }\r\n\r\n clearSubscriptions(): void {\r\n this.subscriptions.forEach((s) => s.unsubscribe());\r\n this.subscriptions = null;\r\n }\r\n\r\n onIframeLoad() {\r\n this._isSchemeLoading = false;\r\n }\r\n\r\n splitStringBySpace(input: string): string[] {\r\n return input.split(' ');\r\n }\r\n\r\n onFullScreenClose() {\r\n this._isSchemeHidden = true;\r\n const modelHolder = this._el.nativeElement.querySelector('.popup-iframe');\r\n\r\n if (this._is2dDisplayMode) {\r\n modelHolder.appendChild(this.iframe2d.nativeElement);\r\n this.iframe2d.nativeElement.setAttribute('height', '300');\r\n this.iframe2d.nativeElement.setAttribute('width', '300');\r\n } else {\r\n this.iframe3d.nativeElement.setAttribute('height', '300');\r\n this.iframe3d.nativeElement.setAttribute('width', '300');\r\n modelHolder.appendChild(this.iframe3d.nativeElement);\r\n }\r\n }\r\n\r\n public showFullScreen() {\r\n this._isSchemeHidden = false;\r\n this._isSchemeLoading = true;\r\n if (this._is2dDisplayMode) {\r\n this.fullScreenContainer.nativeElement.appendChild(\r\n this.iframe2d.nativeElement\r\n );\r\n this.iframe2d.nativeElement.setAttribute('height', '600');\r\n this.iframe2d.nativeElement.setAttribute('width', '600');\r\n } else {\r\n this.fullScreenContainer.nativeElement.appendChild(\r\n this.iframe3d.nativeElement\r\n );\r\n this.iframe3d.nativeElement.setAttribute('height', '600');\r\n this.iframe3d.nativeElement.setAttribute('width', '600');\r\n }\r\n }\r\n\r\n public async show(bin: BinSchemeViewModel) {\r\n this._currentBin = bin;\r\n this._isShowScheme = bin.displaySchemes;\r\n this.isFahrenheitMeasureMode = true;\r\n\r\n if (bin.cables) {\r\n this._resistanceGridData = JSON.parse(JSON.stringify(bin.cables));\r\n this._gridData = JSON.parse(JSON.stringify(bin.cables));\r\n\r\n const maxTcCount = Math.max(\r\n ...bin.cables.map((o) => o.thermocoupleCount)\r\n );\r\n\r\n this._columnsView = Array.from({ length: maxTcCount }, (_, index) => ({\r\n header: 'TC ' + (index + 1),\r\n columnType: ColumnTypeEnum.TC,\r\n dataField: KtxBinDetailsTabComponent.SENSORS_FIELD,\r\n }));\r\n }\r\n\r\n this._isLoading = true;\r\n const listOfCableIds = bin.cables\r\n ? bin.cables.map((x) => {\r\n return x.id;\r\n })\r\n : [];\r\n\r\n await this._ktxLocationService.getTelemetry(bin.id, listOfCableIds);\r\n\r\n const binScheme = {\r\n binScheme: this._currentBin,\r\n alarm: this._currentBin.alarm,\r\n temperatureRanges: bin.temperatureRanges,\r\n };\r\n this.schemeData$.next(binScheme);\r\n\r\n if (bin.displaySchemes) {\r\n this.displayScheme$.next(bin.displaySchemes);\r\n }\r\n\r\n\r\n this._cdr.detectChanges();\r\n }\r\n\r\n loadBinById(binId: number) {\r\n const binScheme = this.findBinById(binId);\r\n\r\n if (!binScheme) {\r\n return;\r\n }\r\n\r\n const { locationId } = this._locationScheme;\r\n\r\n const location = this._ktxLocationService.locationsKtx$\r\n .getValue()\r\n .find((l) => l.id === locationId);\r\n\r\n if (location.temperatureRanges && location.alarm) {\r\n binScheme.temperatureRanges = location.temperatureRanges;\r\n binScheme.alarm = location.alarm;\r\n this.temperatureRanges = location.temperatureRanges;\r\n } else {\r\n this._ktxLocationService.getTemperatureRanges(locationId).then(() => {\r\n binScheme.temperatureRanges = location.temperatureRanges;\r\n binScheme.alarm = location.alarm;\r\n this.temperatureRanges = location.temperatureRanges;\r\n });\r\n }\r\n\r\n binScheme.locationId = locationId;\r\n binScheme.displaySchemes = this._locationScheme.displayScheme;\r\n binScheme.wasDeviceInitialized = this._locationScheme.wasDeviceInitialized;\r\n\r\n this.show(binScheme);\r\n }\r\n\r\n findBinById(binId: number): BinSchemeViewModel {\r\n if (!this._locationScheme || !this._locationScheme.binSchemes) {\r\n return null;\r\n }\r\n\r\n const bins: BinSchemeViewModel[] = this._locationScheme.binSchemes.reduce(\r\n (result, bin) =>\r\n !bin.bins || bin.bins.length === 0\r\n ? [...result, bin]\r\n : result.concat(bin.bins),\r\n []\r\n );\r\n\r\n const bin = bins.find((b) => b.id === binId);\r\n\r\n return bin;\r\n }\r\n\r\n findUnitByBinId(binId: number): BinSchemeViewModel {\r\n const unit = this._locationScheme.binSchemes\r\n .filter((b) => b.bins && b.bins.length > 0)\r\n .find((u) => u.bins.map((b) => b.id).includes(binId));\r\n\r\n return unit;\r\n }\r\n\r\n onClickViewUnit() {\r\n const unit: BinSchemeViewModel = this.findUnitByBinId(this._currentBin.id);\r\n\r\n if (!unit) {\r\n return;\r\n }\r\n\r\n this.ktxUnitFullscreen.show(unit);\r\n }\r\n\r\n async onClickReadSiloData() {\r\n this.receivingTimestamp = null;\r\n this._lastUpdatingStatus = '';\r\n this._isLoading = true;\r\n this._ktxLocationService\r\n .ReadSiloData(\r\n this._currentBin.id,\r\n this.isTemperatureMeasureMode\r\n ? MeasureEnum.Temperature\r\n : MeasureEnum.Resistance\r\n )\r\n .then((result) => {\r\n if (result instanceof ErrorModel) {\r\n this._lastUpdatingStatus = result.message;\r\n }\r\n this._isLoading = false;\r\n });\r\n }\r\n\r\n _getSensorColor(cable: CableSchemeViewModel, sensorIndex: number): string {\r\n const sensor =\r\n cable && cable.sensors\r\n ? (cable.sensors[sensorIndex] as SensorKtxSchemeViewModel)\r\n : null;\r\n\r\n if (!sensor) {\r\n return '-';\r\n }\r\n\r\n if (sensor.status === SensorStatusEnum.OpenTC) {\r\n return this._currentBin.alarm.openTcColorHex;\r\n }\r\n\r\n if (sensor.status === SensorStatusEnum.NoResponse) {\r\n return this._currentBin.alarm.noResponseColorHex;\r\n }\r\n\r\n if (this.isTemperatureMeasureMode) {\r\n if (sensor.status === SensorStatusEnum.HighLimit) {\r\n return this._currentBin.alarm.highTemperatureColorHex;\r\n }\r\n\r\n if (sensor.status === SensorStatusEnum.MaxRise) {\r\n return this._currentBin.alarm\r\n ? this._currentBin.alarm.maxRiseColorHex\r\n : '';\r\n }\r\n\r\n if (this._currentBin.temperatureRanges) {\r\n const temperatureRange = this._currentBin.temperatureRanges.find(\r\n (x) => sensor.value >= x.from && sensor.value <= x.to\r\n );\r\n\r\n return !temperatureRange ? '' : temperatureRange.colorHex;\r\n }\r\n\r\n return '-';\r\n } else {\r\n if (sensor.status === SensorStatusEnum.HighLimit) {\r\n return this._currentBin.alarm.highResistanceColorHex;\r\n }\r\n\r\n return this._currentBin.alarm.normalResistanceColorHex;\r\n }\r\n }\r\n\r\n _getSensorValue(\r\n cable: CableSchemeViewModel,\r\n sensorIndex: number\r\n ): string | number {\r\n const sensor =\r\n cable && cable.sensors\r\n ? (cable.sensors[sensorIndex] as SensorKtxSchemeViewModel)\r\n : null;\r\n\r\n if (!sensor) {\r\n return '';\r\n }\r\n\r\n if (sensor.status === SensorStatusEnum.OpenTC) {\r\n return SensorAlarmLabels.OpenTc;\r\n }\r\n\r\n if (sensor.status === SensorStatusEnum.NoResponse) {\r\n return '-';\r\n }\r\n\r\n if (this.isFahrenheitMeasureMode && this.isTemperatureMeasureMode) {\r\n const FahrenheitValue = this.onCelsiusToFahrenheit(sensor.value);\r\n return FahrenheitValue;\r\n }\r\n\r\n return sensor.value;\r\n }\r\n\r\n onCelsiusToFahrenheit(value: number): string {\r\n if (value || value === 0) {\r\n const convertedValue = ConvertDataFunctions.celsiusToFahrenheit(value);\r\n return convertedValue.toString();\r\n } else {\r\n return '-';\r\n }\r\n }\r\n\r\n getBackGroundTextColor(\r\n cable: CableSchemeViewModel,\r\n sensorIndex: number\r\n ): string {\r\n const sensor = cable\r\n ? (cable[sensorIndex] as SensorKtxSchemeViewModel)\r\n : null;\r\n\r\n if (sensor) {\r\n if (sensor.status === SensorStatusEnum.OpenTC) {\r\n return '#FFFFFF';\r\n }\r\n }\r\n\r\n return '';\r\n }\r\n\r\n private mapTelemetryToGridData(\r\n gridData: CableSchemeViewModel[],\r\n telemetry: TelemetrySnapshotViewModel\r\n ) {\r\n if (gridData) {\r\n gridData.map((cable) => {\r\n if (telemetry.snapshot) {\r\n if (telemetry.recievingTimestamp) {\r\n const date = new Date(telemetry.recievingTimestamp * 1000);\r\n this.receivingTimestamp = date.toLocaleString('en-US');\r\n }\r\n\r\n telemetry.snapshot.map((snap) => {\r\n if (cable.id === snap.cableId) {\r\n cable.sensors = snap.sensors;\r\n }\r\n });\r\n }\r\n });\r\n }\r\n this._isLoading = false;\r\n this.sertastUpdatingStatus();\r\n }\r\n\r\n reInitScrollBarTable(timeout?: number, withCheck = false) {\r\n const el = this._el.nativeElement.querySelector('.ui-table-scrollable-view.ui-table-unfrozen-view .ui-table-scrollable-body');\r\n if (el) {\r\n }\r\n }\r\n\r\n initLocationBinsNodes() {\r\n this._locationBinsNodes = LocationKtxSchemeViewModel.toBinsTreeNode(\r\n this._locationScheme\r\n );\r\n }\r\n\r\n onSelectBinNode(event: any) {\r\n const { node } = event;\r\n\r\n if (node) {\r\n this.loadBinById(node.data);\r\n this._isOpenBinsList = false;\r\n }\r\n }\r\n\r\n setBinNodeById(binId: number) {\r\n if (!this._locationBinsNodes) {\r\n return;\r\n }\r\n\r\n const bins: TreeNode[] = this._locationBinsNodes.reduce(\r\n (result, bin) =>\r\n !bin.children || bin.children.length === 0\r\n ? [...result, bin]\r\n : result.concat(bin.children),\r\n []\r\n );\r\n\r\n const binNode = bins.find((l) => +l.data === binId);\r\n\r\n if (!binNode) {\r\n return;\r\n }\r\n\r\n this._selectedBinNode = binNode;\r\n }\r\n\r\n toggleBinsList(): void {\r\n this._isOpenBinsList = !this._isOpenBinsList;\r\n }\r\n\r\n onClickExportReport() {\r\n this.exportReportModal.show(this._locationScheme, this._isFahrenheitMeasureMode ? 1 : 0);\r\n }\r\n\r\n private sertastUpdatingStatus() {\r\n let statusText = 'Last updating: ';\r\n if (this._isLoading) {\r\n this._lastUpdatingStatus = statusText + 'Receiving data';\r\n } else if (this.receivingTimestamp && !this._isLoading) {\r\n this._lastUpdatingStatus = statusText + this.receivingTimestamp;\r\n } else {\r\n this._lastUpdatingStatus = '';\r\n }\r\n }\r\n}\r\n","import {\r\n AfterViewInit,\r\n Component,\r\n ElementRef,\r\n EventEmitter,\r\n NgZone,\r\n OnDestroy,\r\n OnInit,\r\n ViewChild,\r\n} from '@angular/core';\r\nimport { ActivatedRoute, Router } from '@angular/router';\r\nimport { BehaviorSubject, Subject, Subscription } from 'rxjs';\r\nimport { takeUntil } from 'rxjs/operators';\r\nimport { TreeNode } from 'primeng';\r\n\r\nimport {\r\n LocationsKtxDataSourceService,\r\n RoleService,\r\n} from '@services';\r\nimport {\r\n KtxCurrentDataExportReportPopupComponent,\r\n KtxLocationAddEditPopupComponent,\r\n KtxRangeDeletePopupComponent,\r\n KtxTemperatureRangesPopupComponent,\r\n TutorialPopupComponent,\r\n} from '@popups';\r\nimport { CommonFunctions, ConvertDataFunctions, UserRoleEnum } from '../../../common';\r\n\r\nimport {\r\n AlarmViewModel,\r\n BinSchemeViewModel,\r\n CompanyViewModel,\r\n LocationKtxSchemeViewModel,\r\n LocationKtxViewModel,\r\n TemperatureColorViewModel,\r\n TemperatureRangeViewModel,\r\n} from '@models';\r\nimport { BinTypeEnum, SensorStatusEnum, TutorialMenuEnum } from '../../enums';\r\nimport {\r\n MainRoutePaths,\r\n SensorAlarmLabels,\r\n} from '../../constants';\r\n\r\n@Component({\r\n selector: 'greensleeves-ktx-current-data-tab',\r\n templateUrl: './ktx-current-data-tab.component.html',\r\n})\r\nexport class KtxCurrentDataTabComponent\r\n implements OnInit, AfterViewInit, OnDestroy {\r\n static WINDOW_FUNCTION_GET_LOCATION_NAME = 'getLocation';\r\n static WINDOW_FUNCTION_SHOW_SCHEME_NAME = 'showScheme';\r\n static WINDOW_FUNCTION_BIN_DETAILS_CLICK_NAME = 'binDetailsClick';\r\n static WINDOW_LOCATION_BACKGROUND_COLOR = 'locationBackgroundColor';\r\n static WINDOW_FIELD_IS_WEB_NAME = 'isWeb';\r\n static BIN_UNKNOWN_COLOR = '#808080';\r\n\r\n public ktxCompaniesWithLocationsNodes: TreeNode[] = [];\r\n public selectedLocationNode: TreeNode;\r\n public locationBinsNodes: TreeNode[] = [];\r\n public selectedLocationBinNode: TreeNode;\r\n public isOpenLocationList = false;\r\n public locationScheme: LocationKtxSchemeViewModel;\r\n public isSchemeLoading = true;\r\n public isSchemeHidden = true;\r\n\r\n private locations: LocationKtxViewModel[];\r\n private width: number;\r\n private height: number;\r\n private locationBackgroundColor = '#f5f5f5';\r\n private subscriptions: Subscription[] = [];\r\n private destroy$ = new Subject();\r\n private showScheme$ = new BehaviorSubject(false);\r\n private onBinDetailsClick$ = new BehaviorSubject(0);\r\n private onDetailsClick = new EventEmitter();\r\n\r\n @ViewChild('locationModel', { static: false })\r\n locationModel: ElementRef;\r\n @ViewChild('fullScreenContainer', { static: false })\r\n fullScreenContainer: ElementRef;\r\n @ViewChild('locationFrame', { static: false })\r\n locationFrame: ElementRef;\r\n @ViewChild(KtxTemperatureRangesPopupComponent, { read: false, static: false })\r\n private _temperatureRangesModal: KtxTemperatureRangesPopupComponent;\r\n @ViewChild(KtxRangeDeletePopupComponent, { read: false, static: false })\r\n private _rangeDeleteModal: KtxRangeDeletePopupComponent;\r\n @ViewChild(KtxLocationAddEditPopupComponent, { read: false, static: false })\r\n private _addEditModal: KtxLocationAddEditPopupComponent;\r\n @ViewChild(KtxCurrentDataExportReportPopupComponent, {\r\n read: false,\r\n static: false,\r\n })\r\n exportReportModal: KtxCurrentDataExportReportPopupComponent;\r\n @ViewChild(TutorialPopupComponent, { read: false, static: false })\r\n private tutorialPopup: TutorialPopupComponent;\r\n _loading: Boolean = false;\r\n _temperatureRanges: TemperatureColorViewModel[];\r\n get isTutorialUser(): boolean {\r\n return this._roleService.userHasRole(UserRoleEnum.CompanyAdmin) || this._roleService.userHasRole(UserRoleEnum.CompanyUser);\r\n }\r\n constructor(\r\n private _el: ElementRef,\r\n private _ktxLocationService: LocationsKtxDataSourceService,\r\n private _router: Router,\r\n private _route: ActivatedRoute,\r\n private _zone: NgZone,\r\n private _roleService: RoleService,\r\n ) { }\r\n\r\n get currentLocationName(): string {\r\n return this.locationScheme ? this.locationScheme.locationName : '';\r\n }\r\n\r\n get currentLocationNameWithCompany(): string {\r\n if (!this.selectedLocationNode) {\r\n return '';\r\n }\r\n\r\n const { label, parent } = this.selectedLocationNode;\r\n\r\n if (!this.isServiceUser) {\r\n return label;\r\n }\r\n\r\n return parent ? `${parent.label}: ${label}` : label;\r\n }\r\n\r\n get isCompanyAdmin(): boolean {\r\n return this._roleService.userHasRole(UserRoleEnum.CompanyAdmin);\r\n }\r\n\r\n get isServiceUser(): boolean {\r\n return this._roleService.userHasRole(UserRoleEnum.ServiceUser);\r\n }\r\n\r\n get isDisplayableLocationScheme(): boolean {\r\n if (!this.locationScheme) {\r\n return false;\r\n }\r\n const { width, depth, displayScheme } = this.locationScheme;\r\n\r\n if (!width || !depth) {\r\n return false;\r\n }\r\n\r\n return displayScheme;\r\n }\r\n\r\n ngOnInit() {\r\n this.setSubscriptions();\r\n\r\n window[KtxCurrentDataTabComponent.WINDOW_FUNCTION_GET_LOCATION_NAME] =\r\n () => {\r\n return this._ktxLocationService.locationScheme$;\r\n };\r\n window[KtxCurrentDataTabComponent.WINDOW_FUNCTION_SHOW_SCHEME_NAME] =\r\n () => {\r\n return this.showScheme$;\r\n };\r\n\r\n window[KtxCurrentDataTabComponent.WINDOW_FUNCTION_BIN_DETAILS_CLICK_NAME] =\r\n () => {\r\n return this.onBinDetailsClick$;\r\n };\r\n\r\n window[KtxCurrentDataTabComponent.WINDOW_FIELD_IS_WEB_NAME] = true;\r\n\r\n window[KtxCurrentDataTabComponent.WINDOW_LOCATION_BACKGROUND_COLOR] =\r\n this.locationBackgroundColor;\r\n\r\n this.onBinDetailsClick$\r\n .pipe(takeUntil(this.destroy$))\r\n .subscribe((id: number) => {\r\n if (id) {\r\n let bins: BinSchemeViewModel[] = [];\r\n\r\n this.locationScheme.binSchemes.forEach(\r\n (binScheme: BinSchemeViewModel) => {\r\n if (binScheme.binType === BinTypeEnum.Unit) {\r\n binScheme.bins.forEach((bin) => bins.push(bin));\r\n } else {\r\n bins.push(binScheme);\r\n }\r\n }\r\n );\r\n\r\n const bin = bins.find((x) => x.id === id);\r\n if (!bin.isDecorBin) {\r\n this.onClickDetails(bin);\r\n }\r\n }\r\n });\r\n }\r\n\r\n ngAfterViewInit() {\r\n this.setPopupSubscriptions();\r\n\r\n this.width = this.locationFrame.nativeElement.clientWidth;\r\n this.height = this.locationFrame.nativeElement.clientHeight;\r\n\r\n this.locationModel.nativeElement.setAttribute('width', this.width);\r\n this.locationModel.nativeElement.setAttribute('height', this.height);\r\n }\r\n\r\n onIframeLoad() {\r\n this.isSchemeLoading = false;\r\n }\r\n\r\n showFullScreen() {\r\n const percentageCorrelation = 128.9;\r\n const height = Math.floor((this.height * percentageCorrelation) / 100);\r\n const width = Math.floor((this.width * percentageCorrelation) / 100);\r\n\r\n this.isSchemeLoading = true;\r\n this.isSchemeHidden = false;\r\n this.fullScreenContainer.nativeElement.appendChild(\r\n this.locationModel.nativeElement\r\n );\r\n this.locationModel.nativeElement.setAttribute('height', height);\r\n this.locationModel.nativeElement.setAttribute('width', width);\r\n }\r\n\r\n onFullScreenClose() {\r\n this.isSchemeHidden = true;\r\n this.isSchemeLoading = true;\r\n const modelHolder =\r\n this._el.nativeElement.querySelector('.location-iframe');\r\n modelHolder.appendChild(this.locationModel.nativeElement);\r\n this.locationModel.nativeElement.setAttribute('height', this.height);\r\n this.locationModel.nativeElement.setAttribute('width', this.width);\r\n }\r\n\r\n onClickDetails(binScheme: BinSchemeViewModel) {\r\n this._zone.run(() => {\r\n this.redirectToBin(binScheme);\r\n this.onDetailsClick.emit(binScheme);\r\n });\r\n }\r\n\r\n ngOnDestroy() {\r\n this.destroy$.next();\r\n this.destroy$.complete();\r\n this.clearSubscriptions();\r\n }\r\n\r\n setFirstLocationNode(): void {\r\n if (!this.ktxCompaniesWithLocationsNodes) {\r\n return;\r\n }\r\n\r\n const companyNodeWithLocations = this.ktxCompaniesWithLocationsNodes.find(\r\n (companyNode) => companyNode.children && companyNode.children.length > 0\r\n );\r\n\r\n if (!companyNodeWithLocations) {\r\n return;\r\n }\r\n\r\n this.selectedLocationNode = companyNodeWithLocations.children[0];\r\n this.selectedLocationNode.parent.expanded = true;\r\n }\r\n\r\n setLocationNodeById(locationId: number) {\r\n if (!this.ktxCompaniesWithLocationsNodes) {\r\n return;\r\n }\r\n\r\n const mergedLocations: TreeNode[] =\r\n this.ktxCompaniesWithLocationsNodes.reduce(\r\n (result, companyNode) => result.concat(companyNode.children),\r\n []\r\n );\r\n\r\n const locationNode = mergedLocations.find((l) => +l.data === locationId);\r\n\r\n if (!locationNode) {\r\n return;\r\n }\r\n\r\n this.selectedLocationNode = locationNode;\r\n locationNode.parent.expanded = true;\r\n }\r\n\r\n loadLocationScheme(locationId: number) {\r\n this._loading = true;\r\n this.locationScheme = null;\r\n this.showScheme$.next(false);\r\n this.locationBinsNodes = [];\r\n this._ktxLocationService\r\n .getScheme(locationId, true)\r\n .then((_) => {\r\n this._loading = false;\r\n this.showScheme$.next(true);\r\n });\r\n }\r\n\r\n initLocationBinsNodes(locationScheme: LocationKtxSchemeViewModel) {\r\n this.locationBinsNodes =\r\n LocationKtxSchemeViewModel.toBinsTreeNode(locationScheme);\r\n }\r\n\r\n initCompanyWithLocationsNodes(companies: CompanyViewModel[]) {\r\n const companyWithLocationNodes =\r\n companies &&\r\n companies\r\n .map((company) => {\r\n const companyWithLocationNode: TreeNode = {\r\n label: company.name,\r\n selectable: false,\r\n expanded: false,\r\n };\r\n\r\n companyWithLocationNode.children = company.locations\r\n .filter(l => l.bins && l.bins.length > 0)\r\n .map((location) => {\r\n const locationNode: TreeNode = {\r\n label: location.name,\r\n data: location.id,\r\n selectable: true,\r\n parent: companyWithLocationNode,\r\n };\r\n\r\n return locationNode;\r\n })\r\n .sort(CommonFunctions.compareTreeNodeLabels);\r\n\r\n return companyWithLocationNode;\r\n })\r\n .filter(c => c.children && c.children.length > 0)\r\n .sort(CommonFunctions.compareTreeNodeLabels);\r\n\r\n this.ktxCompaniesWithLocationsNodes = companyWithLocationNodes;\r\n }\r\n\r\n onClickLocationDetails() {\r\n this._router.navigate(\r\n [`../${MainRoutePaths.KTX_LOCATION_DETAILS}`],\r\n {\r\n relativeTo: this._route,\r\n }\r\n );\r\n }\r\n\r\n redirectToBin(binScheme: BinSchemeViewModel) {\r\n this._router.navigate(\r\n [`../${MainRoutePaths.KTX_BIN_DETAILS}`, binScheme.id],\r\n {\r\n relativeTo: this._route,\r\n }\r\n );\r\n }\r\n\r\n onSelectLocationNode(event: any) {\r\n const { node } = event;\r\n\r\n if (node) {\r\n this.loadLocationScheme(node.data);\r\n this.isOpenLocationList = false;\r\n }\r\n }\r\n\r\n onClickLocationBins(event: any) {\r\n const { node } = event;\r\n let binScheme: BinSchemeViewModel;\r\n\r\n binScheme = this.locationScheme.binSchemes.find(\r\n (bs) => bs.id === Number(node.data)\r\n );\r\n\r\n if (!binScheme) {\r\n const mergedBinSchemes: BinSchemeViewModel[] =\r\n this.locationScheme.binSchemes.reduce(\r\n (result, bs) => result.concat(bs.bins ? bs.bins : []),\r\n []\r\n );\r\n\r\n binScheme = mergedBinSchemes.find(\r\n (bs) => bs.id === Number(node.data)\r\n );\r\n }\r\n\r\n this.redirectToBin(binScheme);\r\n }\r\n\r\n openLocationList(): void {\r\n this.isOpenLocationList = !this.isOpenLocationList;\r\n }\r\n\r\n clearSubscriptions(): void {\r\n this.subscriptions.forEach((s) => s.unsubscribe());\r\n this.subscriptions = null;\r\n }\r\n\r\n setSubscriptions(): void {\r\n const locationSchemeSubscription =\r\n this._ktxLocationService.locationScheme$.subscribe((locationScheme) => {\r\n this.initLocationBinsNodes(locationScheme);\r\n this.locationScheme = (locationScheme != null && locationScheme.displayScheme ? this.fillBinAverageColorForSchema(locationScheme) : locationScheme);\r\n if (this.locationScheme) {\r\n this._temperatureRanges = this.setTemperatureColorRanges(locationScheme.temperatureRanges, locationScheme.alarm);\r\n }\r\n else {\r\n this._temperatureRanges = [];\r\n }\r\n });\r\n\r\n const companiesSubscription =\r\n this._ktxLocationService.companiesWithLocations$.subscribe(\r\n (companies) => {\r\n this.initCompanyWithLocationsNodes(companies);\r\n if (this.locationScheme) {\r\n this.setLocationNodeById(this.locationScheme.locationId);\r\n }\r\n\r\n if (!this.selectedLocationNode) {\r\n this.setFirstLocationNode();\r\n }\r\n\r\n if (this.selectedLocationNode) {\r\n this.loadLocationScheme(this.selectedLocationNode.data);\r\n this.isOpenLocationList = false;\r\n }\r\n }\r\n );\r\n\r\n const locationsSubscription =\r\n this._ktxLocationService.locationsKtx$.subscribe((locations) => {\r\n this.locations = locations;\r\n });\r\n\r\n const withBins = true;\r\n if (!this.ktxCompaniesWithLocationsNodes || this.ktxCompaniesWithLocationsNodes.length == 0) {\r\n this._ktxLocationService.getCompaniesWithLocations(withBins);\r\n }\r\n this._ktxLocationService.get();\r\n\r\n this.subscriptions.push(\r\n companiesSubscription,\r\n locationSchemeSubscription,\r\n locationsSubscription\r\n );\r\n }\r\n\r\n setPopupSubscriptions() {\r\n const rangeDeleteSubscription =\r\n this._temperatureRangesModal.onClickRangeDelete.subscribe(\r\n (range: TemperatureRangeViewModel) => {\r\n this._rangeDeleteModal.show(range);\r\n }\r\n );\r\n\r\n const rangeDeletedSubscription = this._rangeDeleteModal.onSubmit$.subscribe(\r\n (range: TemperatureRangeViewModel) => {\r\n this._temperatureRangesModal.removeRange(range);\r\n }\r\n );\r\n\r\n this.subscriptions.push(rangeDeleteSubscription, rangeDeletedSubscription);\r\n }\r\n\r\n showEdit() {\r\n const currentLocation = this.getCurrentLocation();\r\n\r\n this._addEditModal.showEdit(currentLocation);\r\n }\r\n\r\n showTemperatureRanges() {\r\n const currentLocation = this.getCurrentLocation();\r\n this.showScheme$.next(false);\r\n this._temperatureRangesModal.show(currentLocation);\r\n }\r\n\r\n getCurrentLocation(): LocationKtxViewModel | null {\r\n if (!this.locationScheme) {\r\n return null;\r\n }\r\n\r\n const { locationId } = this.locationScheme;\r\n const currentLocation = this.locations.find((l) => l.id === locationId);\r\n\r\n return currentLocation;\r\n }\r\n\r\n onClickExportReport() {\r\n this.exportReportModal.show(this.locationScheme, 1);\r\n }\r\n\r\n showTutorial() {\r\n this.tutorialPopup.showPopup(TutorialMenuEnum.KtxCurrentData);\r\n }\r\n\r\n onClosePopup() {\r\n this.showScheme$.next(true);\r\n }\r\n\r\n private fillBinAverageColorForSchema(schema: LocationKtxSchemeViewModel): LocationKtxSchemeViewModel {\r\n schema.binSchemes.forEach(x => {\r\n this.fillBinColor(x, schema.temperatureRanges, schema.alarm);\r\n });\r\n return schema;\r\n }\r\n\r\n private fillBinColor(bin: BinSchemeViewModel, temperatureRanges: TemperatureRangeViewModel[], alarm: AlarmViewModel) {\r\n if (bin.binType == BinTypeEnum.Unit) {\r\n bin.bins.forEach(x => this.fillBinColor(x, temperatureRanges, alarm));\r\n }\r\n else {\r\n if (bin.cablesAverageAlarm != null && bin.cablesAverageAlarm == SensorStatusEnum.HighLimit) {\r\n bin.binColor = alarm.highTemperatureColorHex;\r\n }\r\n else if (bin.averageBinTemperature != null) {\r\n const color = temperatureRanges.find(c => bin.averageBinTemperature >= c.from && bin.averageBinTemperature <= c.to);\r\n bin.binColor = color ? color.colorHex : KtxCurrentDataTabComponent.BIN_UNKNOWN_COLOR;\r\n }\r\n }\r\n }\r\n\r\n private onCelsiusToFahrenheit(value: number): string {\r\n if (value || value === 0) {\r\n const convertedValue = ConvertDataFunctions.celsiusToFahrenheit(value);\r\n return convertedValue.toString();\r\n } else {\r\n return '-';\r\n }\r\n }\r\n\r\n private setTemperatureColorRanges(temperatureRanges: TemperatureRangeViewModel[], alarm: AlarmViewModel): TemperatureColorViewModel[] {\r\n if (!temperatureRanges) {\r\n return [];\r\n }\r\n\r\n const temperatures: TemperatureColorViewModel[] = temperatureRanges.map((tr) => ({\r\n value: this.onCelsiusToFahrenheit(tr.to),\r\n colorHex: tr.colorHex,\r\n }))\r\n\r\n return [\r\n {\r\n colorHex: KtxCurrentDataTabComponent.BIN_UNKNOWN_COLOR,\r\n value: SensorAlarmLabels.Unknown,\r\n },\r\n ...temperatures,\r\n {\r\n value: SensorAlarmLabels.HighLimit,\r\n colorHex: alarm.highTemperatureColorHex,\r\n },\r\n ];\r\n }\r\n}\r\n","export * from './ktx-location-details-tab.component';","import { Component, OnDestroy, OnInit, ViewChild } from '@angular/core';\r\nimport { ActivatedRoute, Router } from '@angular/router';\r\nimport { AlarmViewModel, BinSchemeViewModel, CableLocationSchemeViewModel, CableSchemeViewModel, CompanyViewModel, LocationKtxSchemeViewModel, SensorKtxSchemeViewModel, TelemetryBinsGetModel, TelemetrySnapshotViewModel, TemperatureColorViewModel, TemperatureRangeViewModel } from '@models';\r\nimport { KtxCurrentDataExportReportPopupComponent } from '@popups';\r\nimport { LocationsKtxDataSourceService } from '@services';\r\nimport { TreeNode } from 'primeng';\r\nimport { Subscription } from 'rxjs';\r\n\r\nimport { SensorStatusEnum } from './../../../../../../projects/components/src/lib/schemes.constants';\r\nimport { CommonFunctions, ConvertDataFunctions } from './../../../../common';\r\nimport { MainRoutePaths, SensorAlarmLabels } from './../../../constants';\r\nimport { ColumnTypeEnum } from 'src/app/main/enums';\r\n\r\n@Component({\r\n selector: 'greensleeves-ktx-location-details-tab',\r\n templateUrl: './ktx-location-details-tab.component.html',\r\n})\r\nexport class KtxLocationDetailsTabComponent implements OnInit, OnDestroy {\r\n static CABLE_NAME_FIELD = 'cableName';\r\n static NAME_FIELD = 'binName';\r\n static SENSORS_FIELD = 'sensors';\r\n @ViewChild(KtxCurrentDataExportReportPopupComponent, {\r\n read: false,\r\n static: false,\r\n })\r\n exportReportModal: KtxCurrentDataExportReportPopupComponent;\r\n\r\n _isOpenLocationList = false;\r\n _ktxCompaniesWithLocationsNodes: TreeNode[] = [];\r\n _selectedLocationNode: TreeNode;\r\n _loading: boolean = false;\r\n _wasLocationDeviceInitialized: boolean = false;\r\n\r\n _columnType = ColumnTypeEnum;\r\n _columnsView = [];\r\n _gridData: CableLocationSchemeViewModel[] = [];\r\n\r\n private locationScheme: LocationKtxSchemeViewModel;\r\n private temperatureRanges: TemperatureRangeViewModel[];\r\n private alarm: AlarmViewModel;\r\n private subscriptions: Subscription[] = [];\r\n private isFahrenheitMeasureMode: boolean = true;\r\n private lastUpdatingStatus: string;\r\n\r\n _frozenColumns = [\r\n {\r\n header: 'Bin',\r\n columnType: ColumnTypeEnum.BinName,\r\n dataField: KtxLocationDetailsTabComponent.NAME_FIELD,\r\n width: 136,\r\n },\r\n {\r\n header: 'Cable',\r\n columnType: ColumnTypeEnum.CableName,\r\n dataField: KtxLocationDetailsTabComponent.CABLE_NAME_FIELD,\r\n width: 60,\r\n }\r\n ];\r\n\r\n get _lastUpdatingStatus() {\r\n return this.lastUpdatingStatus ? this.lastUpdatingStatus : '-';\r\n }\r\n\r\n get _frozenWidth() {\r\n return `${this._frozenColumns.reduce((a, v) => a + v.width, 0)}px`;\r\n }\r\n\r\n get _locationName(): string {\r\n return this._selectedLocationNode ? this._selectedLocationNode.label : '-';\r\n }\r\n\r\n get _isFahrenheitMeasureMode() {\r\n return this.isFahrenheitMeasureMode;\r\n }\r\n\r\n set _isFahrenheitMeasureMode(value: boolean) {\r\n this.isFahrenheitMeasureMode = value;\r\n }\r\n\r\n get _temperatureRanges(): TemperatureColorViewModel[] {\r\n if (!this.temperatureRanges) {\r\n return [];\r\n }\r\n\r\n const temperatures: TemperatureColorViewModel[] = this\r\n ._isFahrenheitMeasureMode\r\n ? this.temperatureRanges.map((tr) => ({\r\n value: this.onCelsiusToFahrenheit(tr.to),\r\n colorHex: tr.colorHex,\r\n }))\r\n : this.temperatureRanges.map((tr) => ({\r\n value: Math.round(tr.to).toString(),\r\n colorHex: tr.colorHex,\r\n }));\r\n\r\n const {\r\n openTcColorHex,\r\n noResponseColorHex,\r\n maxRiseColorHex,\r\n highTemperatureColorHex,\r\n } = this.alarm;\r\n\r\n return [\r\n ...temperatures,\r\n {\r\n value: SensorAlarmLabels.OpenTc,\r\n colorHex: openTcColorHex,\r\n },\r\n {\r\n value: SensorAlarmLabels.NoResponse,\r\n colorHex: noResponseColorHex,\r\n },\r\n {\r\n value: SensorAlarmLabels.MaxRise,\r\n colorHex: maxRiseColorHex,\r\n },\r\n {\r\n value: SensorAlarmLabels.HighLimit,\r\n colorHex: highTemperatureColorHex,\r\n },\r\n ];\r\n }\r\n\r\n constructor(\r\n private _ktxLocationService: LocationsKtxDataSourceService,\r\n private _router: Router,\r\n private _route: ActivatedRoute,\r\n ) {\r\n }\r\n\r\n ngOnInit() {\r\n const companies = this._ktxLocationService.companiesWithLocations$.getValue();\r\n this.initCompanyWithLocationsNodes(companies);\r\n\r\n this._loading = true;\r\n const locationSchemeSubscription =\r\n this._ktxLocationService.locationScheme$.subscribe((locationScheme) => {\r\n this.locationScheme = locationScheme;\r\n if (!this._ktxCompaniesWithLocationsNodes || this._ktxCompaniesWithLocationsNodes.length == 0 || !location) {\r\n this.onClickGoBackLink();\r\n } else {\r\n this.setLocationNodeById(this.locationScheme.locationId);\r\n this.loadLocationTelemetry(this.locationScheme);\r\n }\r\n });\r\n this.subscriptions.push(locationSchemeSubscription);\r\n }\r\n\r\n ngOnDestroy() {\r\n this._loading = false;\r\n this.clearTableView();\r\n this.clearSubscriptions();\r\n }\r\n\r\n splitStringBySpace(input: string): string[] {\r\n return input.split(' ');\r\n }\r\n\r\n getBackGroundTextColor(\r\n cable: CableSchemeViewModel,\r\n sensorIndex: number\r\n ): string {\r\n const sensor = cable\r\n ? (cable[sensorIndex] as SensorKtxSchemeViewModel)\r\n : null;\r\n\r\n if (sensor) {\r\n if (sensor.status === SensorStatusEnum.OpenTC) {\r\n return '#FFFFFF';\r\n }\r\n }\r\n\r\n return '';\r\n }\r\n\r\n getSensorColor(cable: CableSchemeViewModel, sensorIndex: number): string {\r\n const sensor =\r\n cable && cable.sensors\r\n ? (cable.sensors[sensorIndex] as SensorKtxSchemeViewModel)\r\n : null;\r\n\r\n if (!sensor) {\r\n return '-';\r\n }\r\n\r\n if (sensor.status === SensorStatusEnum.OpenTC) {\r\n return this.alarm.openTcColorHex;\r\n }\r\n\r\n if (sensor.status === SensorStatusEnum.NoResponse) {\r\n return this.alarm.noResponseColorHex;\r\n }\r\n\r\n if (sensor.status === SensorStatusEnum.HighLimit) {\r\n return this.alarm.highTemperatureColorHex;\r\n }\r\n\r\n if (sensor.status === SensorStatusEnum.MaxRise) {\r\n return this.alarm\r\n ? this.alarm.maxRiseColorHex\r\n : '';\r\n }\r\n\r\n if (this.temperatureRanges) {\r\n const temperatureRange = this.temperatureRanges.find(\r\n (x) => sensor.value >= x.from && sensor.value <= x.to\r\n );\r\n return !temperatureRange ? '' : temperatureRange.colorHex;\r\n }\r\n\r\n return '-';\r\n\r\n }\r\n\r\n getSensorValue(\r\n cable: CableSchemeViewModel,\r\n sensorIndex: number\r\n ): string | number {\r\n const sensor =\r\n cable && cable.sensors\r\n ? (cable.sensors[sensorIndex] as SensorKtxSchemeViewModel)\r\n : null;\r\n\r\n if (!sensor) {\r\n return '';\r\n }\r\n\r\n if (sensor.status === SensorStatusEnum.OpenTC) {\r\n return SensorAlarmLabels.OpenTc;\r\n }\r\n\r\n if (sensor.status === SensorStatusEnum.NoResponse) {\r\n return '-';\r\n }\r\n\r\n if (this.isFahrenheitMeasureMode) {\r\n const FahrenheitValue = this.onCelsiusToFahrenheit(sensor.value);\r\n return FahrenheitValue;\r\n }\r\n\r\n return sensor.value;\r\n }\r\n\r\n onSelectLocationNode(event: any) {\r\n const { node } = event;\r\n if (node) {\r\n this.clearTableView();\r\n this._loading = true;\r\n this._ktxLocationService.getScheme(node.data, true);\r\n this._isOpenLocationList = false;\r\n }\r\n }\r\n\r\n clearSubscriptions(): void {\r\n this.subscriptions.forEach((s) => s.unsubscribe());\r\n this.subscriptions = null;\r\n }\r\n\r\n onClickGoBackLink(): void {\r\n this._router.navigate([`../${MainRoutePaths.KTX_LOCATION_VIEW}`], {\r\n relativeTo: this._route,\r\n });\r\n }\r\n\r\n onClickExportReport() {\r\n this.exportReportModal.show(this.locationScheme, this._isFahrenheitMeasureMode ? 1 : 0);\r\n }\r\n\r\n openLocationList(): void {\r\n this._isOpenLocationList = !this._isOpenLocationList;\r\n }\r\n\r\n private async loadLocationTelemetry(location: LocationKtxSchemeViewModel) {\r\n this.setTemperatureRange(location);\r\n this._wasLocationDeviceInitialized = location.wasDeviceInitialized;\r\n const getModel: TelemetryBinsGetModel[] = [];\r\n location.binSchemes.forEach(bin => {\r\n this.setTelemetryGetModel(getModel, bin);\r\n });\r\n let binsTelemetry: TelemetrySnapshotViewModel[] = [];\r\n if (location.wasDeviceInitialized) {\r\n binsTelemetry = await this._ktxLocationService.getBinsTelemetry(getModel) as TelemetrySnapshotViewModel[];\r\n this.setColumnView(location);\r\n }\r\n const lastUpdates: number[] = [];\r\n this.setTelemetryTable(location.binSchemes.sort((a, b) => CommonFunctions.compareStrings(a.name, b.name)), binsTelemetry, lastUpdates);\r\n if (lastUpdates.length > 0) {\r\n this.setLastReadTime(Math.max(...lastUpdates));\r\n }\r\n this._loading = false;\r\n }\r\n\r\n private setTelemetryTable(bins: BinSchemeViewModel[], binsTelemetry: TelemetrySnapshotViewModel[], lastUpdates: number[], unitName: string = null) {\r\n bins.forEach(bin => {\r\n if (bin.bins && bin.bins.length > 0) {\r\n this.setTelemetryTable(bin.bins.sort((a, b) => CommonFunctions.compareStrings(a.name, b.name)), binsTelemetry, lastUpdates, bin.name);\r\n } else {\r\n const binTelemetry = binsTelemetry.find(c => c.binId == bin.id);\r\n if (bin.cables) {\r\n const cables = bin.cables.sort((a, b) => a.name - b.name);\r\n cables.forEach(cab => {\r\n const cableTelemetry = binTelemetry ? binTelemetry.snapshot.find(c => c.cableId == cab.id) : null;\r\n if (binTelemetry) {\r\n lastUpdates.push(binTelemetry.recievingTimestamp);\r\n }\r\n this._gridData.push({\r\n binName: unitName ? `${unitName}: ${bin.name}` : bin.name,\r\n cableName: cab.name.toString(),\r\n sensors: cableTelemetry ? cableTelemetry.sensors : [],\r\n } as CableLocationSchemeViewModel);\r\n });\r\n }\r\n }\r\n });\r\n }\r\n\r\n private setLastReadTime(time: number) {\r\n const date = new Date(time * 1000);\r\n this.lastUpdatingStatus = 'Last updating: ' + date.toLocaleString('en-US', {\r\n year: 'numeric',\r\n month: '2-digit',\r\n day: '2-digit',\r\n hour: '2-digit',\r\n minute: '2-digit',\r\n });\r\n }\r\n\r\n private setTelemetryGetModel(model: TelemetryBinsGetModel[], bin: BinSchemeViewModel) {\r\n if (bin.cables && bin.cables.length > 0) {\r\n model.push(\r\n {\r\n binId: bin.id,\r\n listOfCableIds: bin.cables.map(x => x.id),\r\n } as TelemetryBinsGetModel\r\n );\r\n }\r\n if (bin.bins && bin.bins.length > 0) {\r\n bin.bins.forEach(x => this.setTelemetryGetModel(model, x));\r\n }\r\n }\r\n\r\n private clearTableView() {\r\n this._wasLocationDeviceInitialized = false;\r\n this.lastUpdatingStatus = \"-\";\r\n this.temperatureRanges = null;\r\n this._gridData = [];\r\n this._columnsView = [];\r\n }\r\n\r\n private setTemperatureRange(location: LocationKtxSchemeViewModel) {\r\n this.temperatureRanges = location.temperatureRanges;\r\n this.alarm = location.alarm;\r\n }\r\n\r\n private setColumnView(location: LocationKtxSchemeViewModel) {\r\n const cableCounts: number[] = [];\r\n location.binSchemes.forEach(bin => {\r\n if (bin.cables && bin.cables.length > 0) {\r\n cableCounts.push(...bin.cables.map(c => c.thermocoupleCount));\r\n }\r\n if (bin.bins && bin.bins.length > 0) {\r\n bin.bins.forEach(b => {\r\n if (b.cables && b.cables.length > 0) {\r\n cableCounts.push(...b.cables.map(c => c.thermocoupleCount));\r\n }\r\n });\r\n }\r\n })\r\n var maxCablesCount = Math.max(...cableCounts);\r\n\r\n this._columnsView = Array.from({ length: maxCablesCount }, (_, index) => ({\r\n header: 'TC ' + (index + 1),\r\n columnType: ColumnTypeEnum.TC,\r\n dataField: KtxLocationDetailsTabComponent.SENSORS_FIELD,\r\n }));\r\n }\r\n\r\n private onCelsiusToFahrenheit(value: number): string {\r\n if (value || value === 0) {\r\n const convertedValue = ConvertDataFunctions.celsiusToFahrenheit(value);\r\n return convertedValue.toString();\r\n } else {\r\n return '-';\r\n }\r\n }\r\n\r\n private initCompanyWithLocationsNodes(companies: CompanyViewModel[]) {\r\n const companyWithLocationNodes =\r\n companies &&\r\n companies\r\n .map((company) => {\r\n const companyWithLocationNode: TreeNode = {\r\n label: company.name,\r\n selectable: false,\r\n expanded: false,\r\n };\r\n\r\n companyWithLocationNode.children = company.locations\r\n .filter(l => l.bins && l.bins.length > 0)\r\n .map((location) => {\r\n const locationNode: TreeNode = {\r\n label: location.name,\r\n data: location.id,\r\n selectable: true,\r\n parent: companyWithLocationNode,\r\n };\r\n\r\n return locationNode;\r\n })\r\n .sort(CommonFunctions.compareTreeNodeLabels);\r\n\r\n return companyWithLocationNode;\r\n })\r\n .filter(c => c.children && c.children.length > 0)\r\n .sort(CommonFunctions.compareTreeNodeLabels);\r\n\r\n this._ktxCompaniesWithLocationsNodes = companyWithLocationNodes;\r\n }\r\n\r\n private setLocationNodeById(locationId: number) {\r\n const mergedLocations: TreeNode[] =\r\n this._ktxCompaniesWithLocationsNodes.reduce(\r\n (result, companyNode) => result.concat(companyNode.children),\r\n []\r\n );\r\n\r\n const locationNode = mergedLocations.find((l) => +l.data === locationId);\r\n\r\n if (!locationNode) {\r\n return;\r\n }\r\n\r\n this._selectedLocationNode = locationNode;\r\n locationNode.parent.expanded = true;\r\n }\r\n}\r\n","export * from './ktx-historical-data-tab.component';\r\n","import { Component, ElementRef, OnInit, ViewChild } from '@angular/core';\r\nimport { Subscription } from 'rxjs';\r\n\r\nimport {\r\n CableLocationSchemeViewModel,\r\n CableSchemeViewModel,\r\n CompanyViewModel,\r\n HistoricalBinSnapshots,\r\n HistoricalBinsSnapshots,\r\n KtxReportHistoricalDataFilterForPeriod,\r\n KtxWeeksRangeModel,\r\n SensorKtxSchemeViewModel,\r\n TelemetrySnapshotViewModel,\r\n TemperatureColorViewModel,\r\n TemperatureRangeAlarmViewModel,\r\n TemperatureRangeViewModel,\r\n} from '../../models';\r\nimport { ColumnTypeEnum, KtxNotificationFilterNodeTypeEnum, SensorStatusEnum, TutorialMenuEnum } from '../../enums';\r\nimport { LocationsKtxDataSourceService, ReportDatasourceService, RoleService } from '../../services';\r\nimport { CommonFunctions, ConvertDataFunctions, ErrorModel, UserRoleEnum } from '../../../common';\r\nimport { FormBuilder, FormGroup } from '@angular/forms';\r\nimport { TreeNode } from 'primeng';\r\nimport { TutorialPopupComponent } from '../popups';\r\nimport { SensorAlarmLabels } from '../../constants';\r\n\r\n@Component({\r\n selector: 'greensleeves-ktx-historical-data-tab',\r\n templateUrl: './ktx-historical-data-tab.component.html',\r\n})\r\nexport class KtxHistoricalDataTabComponent implements OnInit {\r\n @ViewChild(TutorialPopupComponent, { read: false, static: false })\r\n private tutorialPopup: TutorialPopupComponent\r\n\r\n _companies: CompanyViewModel[] = [];\r\n _ktxLocationNodes: TreeNode[] = [];\r\n _nodeSelected: TreeNode[];\r\n _isOpenFilterList: boolean = false;\r\n _isOpenDateFilter: boolean = false;\r\n _selectedTimeStamp: number;\r\n _temperatureColorRange: TemperatureColorViewModel[];\r\n _temperatureInfo: TemperatureRangeAlarmViewModel;\r\n _snapshots: number[] = [];\r\n _filterFormBuilder: FormGroup;\r\n _measuring: { label: string, value: number }[] = [];\r\n _ktxWeeksRange: KtxWeeksRangeModel[];\r\n _ktxWeeks: { week: string, range: string, value: number }[] = [];\r\n _gridData: CableLocationSchemeViewModel[] = [];\r\n _columnType = ColumnTypeEnum;\r\n _isLoading: boolean;\r\n _columnsView = [];\r\n temperatureTelemetry: TelemetrySnapshotViewModel;\r\n temperatureRanges: TemperatureRangeViewModel[];\r\n _frozenColumns = [\r\n { header: 'Bin', columnType: ColumnTypeEnum.BinName, dataField: 'binName', width: 130, },\r\n { header: 'Cable', columnType: ColumnTypeEnum.CableName, dataField: 'cableName', width: 50 }];\r\n _loading: boolean = false;\r\n _needLoadData: boolean = false;\r\n _generationReport: boolean = false;\r\n\r\n isOpenLocationList = false;\r\n\r\n private currentHistory: HistoricalBinSnapshots[] = null;\r\n private isFahrenheitMeasureMode: boolean;\r\n private isTemperatureMeasureMode: boolean = true;\r\n private subscriptions: Subscription[] = [];\r\n\r\n get _getSelectedFilterWeek() {\r\n return this._ktxWeeks[this._filterFormBuilder!.controls!.dateRange!.value - 1].week;\r\n }\r\n\r\n get _getSelectedFilterMeasure() {\r\n return this._measuring[this._filterFormBuilder!.controls!.measuring!.value].label;\r\n }\r\n\r\n get _getSelectedFilterDateRange() {\r\n return this._ktxWeeks[this._filterFormBuilder!.controls!.dateRange!.value - 1].range;\r\n }\r\n\r\n get _frozenWidth() {\r\n return `${this._frozenColumns.reduce((a, v) => a + v.width, 0)}px`;\r\n }\r\n\r\n get _isFahrenheitMeasureMode() {\r\n return this.isFahrenheitMeasureMode;\r\n }\r\n\r\n set _isFahrenheitMeasureMode(value: boolean) {\r\n this.isFahrenheitMeasureMode = value;\r\n }\r\n\r\n get _isTemperatureMeasureMode() {\r\n return this.isTemperatureMeasureMode;\r\n }\r\n\r\n set _isTemperatureMeasureMode(value: boolean) {\r\n this.isTemperatureMeasureMode = value;\r\n }\r\n\r\n get isTutorialUser(): boolean {\r\n return this._roleService.userHasRole(UserRoleEnum.CompanyAdmin) || this._roleService.userHasRole(UserRoleEnum.CompanyUser);\r\n }\r\n\r\n get _locationName(): string {\r\n if (this._nodeSelected.length > 0) {\r\n let node = this._nodeSelected.find(x => x.data.nodeType == KtxNotificationFilterNodeTypeEnum.Bin);\r\n const name = this.getLocationName(node);\r\n return name;\r\n }\r\n return '';\r\n }\r\n\r\n get _needLoad(): boolean {\r\n return this.currentHistory == null;\r\n }\r\n\r\n get _temperatureRanges(): TemperatureColorViewModel[] {\r\n if (!this._temperatureInfo || !this._temperatureInfo.temperatureRanges) {\r\n return [];\r\n }\r\n\r\n const temperatures: TemperatureColorViewModel[] = this._isFahrenheitMeasureMode\r\n ? this._temperatureInfo.temperatureRanges.map((tr) => ({\r\n value: this.onCelsiusToFahrenheit(tr.to),\r\n colorHex: tr.colorHex,\r\n }))\r\n : this._temperatureInfo.temperatureRanges.map((tr) => ({\r\n value: Math.round(tr.to).toString(),\r\n colorHex: tr.colorHex,\r\n }));\r\n const {\r\n openTcColorHex,\r\n noResponseColorHex,\r\n maxRiseColorHex,\r\n highResistanceColorHex,\r\n highTemperatureColorHex,\r\n } = this._temperatureInfo.alarm;\r\n\r\n const hlValue = this._isTemperatureMeasureMode\r\n ? highTemperatureColorHex\r\n : highResistanceColorHex;\r\n\r\n return [\r\n ...temperatures,\r\n {\r\n value: SensorAlarmLabels.OpenTc,\r\n colorHex: openTcColorHex,\r\n },\r\n {\r\n value: SensorAlarmLabels.NoResponse,\r\n colorHex: noResponseColorHex,\r\n },\r\n {\r\n value: SensorAlarmLabels.MaxRise,\r\n colorHex: maxRiseColorHex,\r\n },\r\n {\r\n value: SensorAlarmLabels.HighLimit,\r\n colorHex: hlValue,\r\n },\r\n ];\r\n }\r\n\r\n constructor(\r\n private _el: ElementRef,\r\n private _formBuilder: FormBuilder,\r\n private _reportDatasource: ReportDatasourceService,\r\n private _locationKtxDataSourceService: LocationsKtxDataSourceService,\r\n private _ktxLocationService: LocationsKtxDataSourceService,\r\n private _roleService: RoleService,\r\n ) {\r\n }\r\n\r\n async ngOnInit() {\r\n this.initListOfWeeksRange();\r\n this.initMeasuring();\r\n\r\n this._filterFormBuilder = this._formBuilder.group({\r\n dateRange: [this._ktxWeeks[0].value],\r\n measuring: [this._measuring[1].value],\r\n });\r\n this._isFahrenheitMeasureMode = this._filterFormBuilder.controls.measuring.value == 1;\r\n this.temperatureTelemetry = new TelemetrySnapshotViewModel();\r\n this.setSubscriptions();\r\n }\r\n\r\n ngAfterViewInit() {\r\n this.reInitScrollBarTable(0);\r\n this.reInitScrollBar(0);\r\n this._el.nativeElement.querySelector('.ui-table-scrollable-view.ui-table-unfrozen-view .ui-table-scrollable-body').classList.add('is-scrollable-y', 'is-scrollable-x');\r\n }\r\n\r\n ngOnDestroy() {\r\n this.subscriptions && this.subscriptions.forEach(sub => sub.unsubscribe());\r\n }\r\n\r\n openDateFilter() {\r\n this._isOpenDateFilter = !this._isOpenDateFilter;\r\n if (this._isOpenDateFilter) {\r\n this._isOpenFilterList = false;\r\n this.isOpenLocationList = false;\r\n }\r\n }\r\n\r\n openLocationList(): void {\r\n this.isOpenLocationList = !this.isOpenLocationList;\r\n if (this.isOpenLocationList) {\r\n this._isOpenDateFilter = false;\r\n this._isOpenFilterList = false;\r\n }\r\n }\r\n\r\n openFilterList(): void {\r\n this._isOpenFilterList = !this._isOpenFilterList;\r\n if (this._isOpenFilterList) {\r\n this._isOpenDateFilter = false;\r\n this.isOpenLocationList = false;\r\n }\r\n }\r\n\r\n markAsSelectedDateRange(index: number) {\r\n this._filterFormBuilder.controls.dateRange.setValue([this._ktxWeeks[index].value]);\r\n this.openDateFilter();\r\n this.clearView();\r\n }\r\n\r\n markAsSelectedMeasuring(index: number) {\r\n this._filterFormBuilder.controls.measuring.setValue([this._measuring[index].value]);\r\n this._isFahrenheitMeasureMode = this._filterFormBuilder.controls.measuring.value == 1;\r\n this.openFilterList();\r\n }\r\n\r\n fetchLocationDetails() {\r\n this._locationKtxDataSourceService.getTemperatureRangesForLocation(this.getLocationIdFromSelected()).then((result) => {\r\n this._temperatureInfo = result as TemperatureRangeAlarmViewModel;\r\n this._temperatureColorRange = TemperatureRangeViewModel.toTemperatureColorViewModels(this._temperatureInfo.temperatureRanges);\r\n });\r\n }\r\n\r\n fetchListOfSnapshots() {\r\n if (this._filterFormBuilder && this._filterFormBuilder.controls['dateRange'].value && this.getBinIdsFromSelected().length > 0) {\r\n this._gridData = [];\r\n this._columnsView = [];\r\n this.currentHistory = null;\r\n let weekFromTS = Math.floor(this._ktxWeeksRange[this._filterFormBuilder!.controls!.dateRange!.value - 1].weekFrom.getTime() / 1000);\r\n let weeksToTS = Math.floor(this._ktxWeeksRange[this._filterFormBuilder!.controls!.dateRange!.value - 1].weekTo.getTime() / 1000);\r\n\r\n this._locationKtxDataSourceService.getHistoricalBinsSnapshotForThePeriod(\r\n this.getBinIdsFromSelected(),\r\n weekFromTS,\r\n weeksToTS).then((x) => {\r\n let result = x as HistoricalBinsSnapshots;\r\n this.currentHistory = result.binSnapshots;\r\n this._snapshots = result.timeStamps && result.timeStamps.sort(function (a, b) { return b - a; });\r\n if (this._snapshots && this._snapshots.length > 0) {\r\n this._selectedTimeStamp = this._snapshots[0];\r\n this.fetchHistoricalSnapshotByTimeStamp(this._selectedTimeStamp);\r\n }\r\n else {\r\n this._loading = false;\r\n }\r\n this._needLoadData = false;\r\n });\r\n }\r\n else {\r\n this._loading = false;\r\n }\r\n }\r\n\r\n fetchHistoricalSnapshotByTimeStamp(timestamp: number) {\r\n this._gridData = [];\r\n let sensorCount: number[] = [1];\r\n const selectedBins = this._nodeSelected.filter(x => x.data.nodeType == KtxNotificationFilterNodeTypeEnum.Bin);\r\n let bins: { id: number, name: string }[] = selectedBins.map(x => {\r\n return {\r\n id: x.data.id,\r\n name: x.parent && x.parent.data.nodeType == KtxNotificationFilterNodeTypeEnum.Unit ? `${x.parent.label}: ${x.label}` : x.label,\r\n }\r\n });\r\n bins = bins.sort((a, b) => CommonFunctions.compareStrings(a.name, b.name));\r\n bins.forEach(bin => {\r\n const binSnapshots = this.currentHistory.find(x => x.binId == bin.id);\r\n if (binSnapshots) {\r\n let snapshots = binSnapshots.cableSnapshotsByPeriods.find(x => x.timeStamp == timestamp);\r\n if (snapshots) {\r\n let cableData = snapshots.cableSnapshots.sort((a, b) => a.name - b.name);\r\n cableData.forEach(cable => {\r\n this._gridData.push({\r\n binName: bin.name,\r\n cableName: cable.name.toString(),\r\n sensors: cable.sensors,\r\n })\r\n sensorCount.push(cable.sensors.length);\r\n });\r\n } else {\r\n this._gridData.push({\r\n binName: bin.name,\r\n cableName: '-',\r\n sensors: [],\r\n })\r\n }\r\n } else {\r\n this._gridData.push({\r\n binName: bin.name,\r\n cableName: '-',\r\n sensors: [],\r\n })\r\n }\r\n });\r\n this._columnsView = [];\r\n let maxSensorCount = Math.max(...sensorCount);\r\n for (let i = 1; i <= maxSensorCount; i++) {\r\n this._columnsView.push({ header: 'TC ' + i, columnType: ColumnTypeEnum.TC, dataField: 'sensors' })\r\n }\r\n this._loading = false;\r\n }\r\n\r\n getDate(unix: number) {\r\n var date = new Date(unix * 1000);\r\n let result = date.toLocaleString('default', { day: 'numeric' }) + ' ' + date.toLocaleString('default', { month: 'short' }) + ' ' + date.toLocaleString('default', { year: 'numeric' });\r\n return result;\r\n }\r\n\r\n getTime(unix: number) {\r\n var date = new Date(unix * 1000);\r\n let result = date.toLocaleTimeString();\r\n return result;\r\n }\r\n\r\n async onClickUnselectBinFilter(event) {\r\n if (this._nodeSelected.length == 0) {\r\n this.clearView();\r\n return;\r\n }\r\n\r\n this.fetchHistoricalSnapshotByTimeStamp(this._selectedTimeStamp);\r\n }\r\n\r\n private getLocationIdFromSelected(): number {\r\n const locationNode = this._nodeSelected.find(x => x.data.nodeType == KtxNotificationFilterNodeTypeEnum.Location);\r\n if (locationNode) {\r\n return locationNode.data.id;\r\n } else {\r\n return this._nodeSelected[0].data.locationId;\r\n }\r\n }\r\n\r\n private getBinIdsFromSelected(): number[] {\r\n const bins = this._nodeSelected.filter(x => x.data.nodeType == KtxNotificationFilterNodeTypeEnum.Bin);\r\n return bins.map(x => x.data.id);\r\n }\r\n\r\n private makeParentsPartialSelected(node: TreeNode, selected: boolean = true) {\r\n do {\r\n if (!node.parent) return;\r\n node.parent.partialSelected = selected;\r\n node = node.parent;\r\n } while (node.parent);\r\n }\r\n\r\n private selectChildren(node: TreeNode) {\r\n node.children.forEach(x => {\r\n this._nodeSelected.push(x);\r\n if (x.children) {\r\n x.expanded = true;\r\n this._nodeSelected.push(...x.children);\r\n }\r\n });\r\n }\r\n\r\n private makeParentsPartialUnSelected(nodes: TreeNode[]) {\r\n nodes.forEach(x => { if (x.parent) x.parent.partialSelected = false });\r\n }\r\n\r\n async onClickSelectBinFilter(event) {\r\n if (!event.node.expanded) {\r\n event.node.expanded = true;\r\n }\r\n if (event.node.data.nodeType == KtxNotificationFilterNodeTypeEnum.Location) {\r\n this.makeParentsPartialUnSelected(this._nodeSelected);\r\n this._nodeSelected = [];\r\n this._nodeSelected = [event.node];\r\n this.selectChildren(event.node);\r\n this.makeParentsPartialSelected(event.node);\r\n this.clearView();\r\n }\r\n\r\n if (event.node.data.nodeType == KtxNotificationFilterNodeTypeEnum.Unit) {\r\n if (this._nodeSelected.length > 0) {\r\n let locationIds = this._nodeSelected.filter(x => x.data.nodeType == KtxNotificationFilterNodeTypeEnum.Bin).map(x => x.data.locationId).filter((value, index, array) => array.indexOf(value) === index);\r\n if (locationIds.length > 1) {\r\n this.makeParentsPartialUnSelected(this._nodeSelected);\r\n this._nodeSelected = [];\r\n this._nodeSelected = [event.node];\r\n this.selectChildren(event.node);\r\n this.makeParentsPartialSelected(event.node);\r\n this.clearView();\r\n } else {\r\n var unitBins = event.node.children.map(x => x.data.id);\r\n let currentHistoryHasAllUnitBins: boolean = true;\r\n unitBins.forEach(bin => {\r\n if (!this.currentHistory || !this.currentHistory.find(x => x.binId == bin)) {\r\n currentHistoryHasAllUnitBins = false;\r\n }\r\n });\r\n if (currentHistoryHasAllUnitBins) {\r\n this.fetchHistoricalSnapshotByTimeStamp(this._selectedTimeStamp);\r\n } else {\r\n this._needLoadData = true;\r\n }\r\n }\r\n }\r\n }\r\n\r\n if (event.node.data.nodeType == KtxNotificationFilterNodeTypeEnum.Bin) {\r\n if (this._nodeSelected.length > 0) {\r\n let locationIds = this._nodeSelected.filter(x => x.data.nodeType == KtxNotificationFilterNodeTypeEnum.Bin).map(x => x.data.locationId).filter((value, index, array) => array.indexOf(value) === index);\r\n if (locationIds.length > 1) {\r\n this.makeParentsPartialUnSelected(this._nodeSelected);\r\n this._nodeSelected = [];\r\n this._nodeSelected = [event.node];\r\n this.makeParentsPartialSelected(event.node);\r\n this.clearView();\r\n }\r\n if (this.currentHistory && this.currentHistory.find(x => x.binId == event.node.data.id)) {\r\n this.fetchHistoricalSnapshotByTimeStamp(this._selectedTimeStamp);\r\n } else {\r\n this._needLoadData = true;\r\n }\r\n }\r\n }\r\n }\r\n\r\n onClickTimeStamp(timestamp: number) {\r\n if (timestamp) {\r\n this._selectedTimeStamp = timestamp;\r\n this.fetchHistoricalSnapshotByTimeStamp(timestamp);\r\n }\r\n }\r\n\r\n async onClickExportReport() {\r\n if (this._filterFormBuilder && this._filterFormBuilder.controls['dateRange'].value && this.getBinIdsFromSelected().length > 0) {\r\n const filter = {\r\n locationId: this.getLocationIdFromSelected(),\r\n binIds: this.getBinIdsFromSelected(),\r\n temperatureMeasureType: this._measuring[this._filterFormBuilder!.controls!.measuring!.value].value,\r\n timestampFrom: Math.floor(this._ktxWeeksRange[this._filterFormBuilder!.controls!.dateRange!.value - 1].weekFrom.getTime() / 1000),\r\n timestampTo: Math.floor(this._ktxWeeksRange[this._filterFormBuilder!.controls!.dateRange!.value - 1].weekTo.getTime() / 1000),\r\n timeZone: Intl.DateTimeFormat().resolvedOptions().timeZone,\r\n historySnapshots: [],\r\n } as KtxReportHistoricalDataFilterForPeriod;\r\n\r\n if (this.getBinIdsFromSelected().length == 1) {\r\n filter.historySnapshots = this.currentHistory.filter(x => x.binId == this._nodeSelected[0].data.id);\r\n } else {\r\n filter.binIds.forEach(bin => {\r\n let binHistory = this.currentHistory.find(x => x.binId == bin);\r\n if (binHistory) {\r\n let snapshots = binHistory.cableSnapshotsByPeriods.find(x => x.timeStamp == this._selectedTimeStamp);\r\n if (snapshots) {\r\n filter.historySnapshots.push({ binId: bin, cableSnapshotsByPeriods: [snapshots] });\r\n }\r\n }\r\n });\r\n }\r\n\r\n const locationName = this._locationName;\r\n this._generationReport = true;\r\n let result = await this._reportDatasource.downloadKtxHistoricalReportFile(filter);\r\n if (!(result instanceof ErrorModel)) {\r\n let fileName = locationName + '';\r\n fileName += this.getBinIdsFromSelected().length == 1\r\n ? this._nodeSelected[0].label + ' ' + this._ktxWeeksRange[this._filterFormBuilder!.controls!.dateRange!.value - 1].weekFrom.toLocaleDateString() + ' - ' + this._ktxWeeksRange[this._filterFormBuilder!.controls!.dateRange!.value - 1].weekTo.toLocaleDateString()\r\n : new Date(this._selectedTimeStamp * 1000).toLocaleDateString() + '_' + new Date(this._selectedTimeStamp * 1000).toLocaleTimeString();\r\n\r\n const url = URL.createObjectURL(result as Blob);\r\n let downloadLink = document.createElement('a');\r\n downloadLink.href = url;\r\n downloadLink.download = fileName;\r\n downloadLink.click();\r\n }\r\n this._generationReport = false;\r\n }\r\n }\r\n\r\n tryFetchSnapshotList() {\r\n this._loading = true;\r\n //this._gridData = [];\r\n this.fetchListOfSnapshots();\r\n if ((this._temperatureInfo && this._temperatureInfo.locationId != this.getLocationIdFromSelected()) || !this._temperatureInfo) {\r\n this.fetchLocationDetails();\r\n }\r\n }\r\n\r\n splitStringBySpace(input: string): string[] {\r\n return input.split(' ');\r\n }\r\n\r\n private clearView() {\r\n this._gridData = [];\r\n this._columnsView = [];\r\n this.currentHistory = null;\r\n this._temperatureInfo = null;\r\n this._temperatureColorRange = null;\r\n this._snapshots = [];\r\n this._needLoadData = true;\r\n }\r\n\r\n private reInitScrollBar(timeout?: number) {\r\n const el = this._el.nativeElement.querySelector('.popup-container');\r\n }\r\n\r\n reInitScrollBarTable(timeout?: number, withCheck = false) {\r\n const el = this._el.nativeElement.querySelector('.ui-table-scrollable-view.ui-table-unfrozen-view .ui-table-scrollable-body');\r\n if (el) {\r\n }\r\n }\r\n\r\n private isAnyChild(treeNode: TreeNode): boolean {\r\n return treeNode.children && treeNode.children.length > 0;\r\n }\r\n\r\n _getSensorColor(cable: CableSchemeViewModel, sensorIndex: number): string {\r\n const sensor = cable && cable.sensors ? cable.sensors[sensorIndex] as SensorKtxSchemeViewModel : null;\r\n if (sensor) {\r\n if (sensor.status === SensorStatusEnum.OpenTC) {\r\n return this._temperatureInfo.alarm.openTcColorHex;\r\n }\r\n\r\n else if (sensor.status === SensorStatusEnum.NoResponse) {\r\n return this._temperatureInfo.alarm.noResponseColorHex;\r\n }\r\n\r\n else {\r\n if (sensor.status === SensorStatusEnum.HighLimit) {\r\n return this._temperatureInfo.alarm.highTemperatureColorHex;\r\n }\r\n\r\n else if (sensor.status === SensorStatusEnum.MaxRise) {\r\n return this._temperatureInfo.alarm.maxRiseColorHex;\r\n }\r\n\r\n else if (this._temperatureInfo && this._temperatureInfo.temperatureRanges) {\r\n const temperatureRange = this._temperatureInfo.temperatureRanges.find(x => sensor.value >= x.from && sensor.value <= x.to);\r\n return temperatureRange == undefined ? '' : temperatureRange.colorHex;\r\n }\r\n\r\n return '-';\r\n }\r\n }\r\n return '-';\r\n }\r\n\r\n _getSensorValue(cable: CableSchemeViewModel, sensorIndex: number): string | number {\r\n const sensor = cable && cable.sensors ? cable.sensors[sensorIndex] as SensorKtxSchemeViewModel : null;\r\n if (sensor) {\r\n if (sensor.status === SensorStatusEnum.OpenTC) {\r\n return 'OT';\r\n }\r\n\r\n if (sensor.status === SensorStatusEnum.NoResponse) {\r\n return '-';\r\n }\r\n\r\n if (this.isFahrenheitMeasureMode) {\r\n const FahrenheitValue = this.onCelsiusToFahrenheit(sensor.value);\r\n return FahrenheitValue;\r\n }\r\n\r\n return sensor.value;\r\n }\r\n\r\n if (cable && cable.sensors && cable.sensors.length == 0) {\r\n return '-';\r\n }\r\n\r\n return '';\r\n }\r\n\r\n onCelsiusToFahrenheit(value: number): string {\r\n if (value || value === 0) {\r\n const convertedValue = ConvertDataFunctions.celsiusToFahrenheit(value);\r\n return convertedValue.toString();\r\n } else {\r\n return '-';\r\n }\r\n }\r\n\r\n getBackGroundTextColor(cable: CableSchemeViewModel, sensorIndex: number): string {\r\n const sensor = cable ? cable[sensorIndex] as SensorKtxSchemeViewModel : null;\r\n\r\n if (sensor) {\r\n if (sensor.status === SensorStatusEnum.OpenTC) {\r\n return '#FFFFFF';\r\n }\r\n }\r\n\r\n return '';\r\n }\r\n\r\n getWeekByIndex(index: number) {\r\n return this._ktxWeeks[index].week;\r\n }\r\n\r\n getDateRangeByIndex(index: number) {\r\n return this._ktxWeeks[index].range;\r\n }\r\n\r\n getMeasureByIndex(index: number) {\r\n return this._measuring[index].label;\r\n }\r\n\r\n setSubscriptions(): void {\r\n const companiesSubscription =\r\n this._ktxLocationService.companiesWithLocations$.subscribe(\r\n (companies) => {\r\n this._companies = companies;\r\n this.initCompanyWithLocationsNodes(companies);\r\n }\r\n );\r\n\r\n const withBins = true;\r\n this._ktxLocationService.getCompaniesWithLocations(withBins);\r\n this.subscriptions.push(companiesSubscription);\r\n }\r\n\r\n private initCompanyWithLocationsNodes(companies: CompanyViewModel[]) {\r\n this._nodeSelected = [];\r\n const companyWithLocationNodes =\r\n companies && companies\r\n .map(CompanyViewModel.toKtxTreeNode)\r\n .filter(c => c.children && c.children.length > 0)\r\n .sort(CommonFunctions.compareTreeNodeLabels);\r\n\r\n companyWithLocationNodes.forEach(x => x.selectable = false);\r\n this._ktxLocationNodes = companyWithLocationNodes;\r\n }\r\n\r\n private initListOfWeeksRange() {\r\n const weeks: KtxWeeksRangeModel[] = [];\r\n const currentDate = new Date();\r\n for (let i = 1; i <= 78; i++) {\r\n const weekStartDate = new Date(currentDate);\r\n weekStartDate.setDate(currentDate.getDate() - i * 7);\r\n weekStartDate.setHours(0, 0, 0, 0);\r\n\r\n const weekEndDate = new Date(currentDate);\r\n weekEndDate.setDate(currentDate.getDate() - i * 7 + 7);\r\n weekEndDate.setHours(23, 59, 59, 999);\r\n\r\n const model = new KtxWeeksRangeModel(i, weekStartDate, weekEndDate);\r\n this._ktxWeeks.push({ week: i + ' week ago ', range: weekStartDate.toLocaleDateString() + ' - ' + weekEndDate.toLocaleDateString(), value: i });\r\n weeks.push(model);\r\n }\r\n\r\n this._ktxWeeksRange = weeks;\r\n }\r\n\r\n private initMeasuring() {\r\n this._measuring.push({ label: 'C', value: 0 });\r\n this._measuring.push({ label: 'F', value: 1 });\r\n }\r\n\r\n showTutorial() {\r\n this.tutorialPopup.showPopup(TutorialMenuEnum.KtxHistoricalData);\r\n }\r\n\r\n private getLocationName(node: TreeNode) {\r\n if (node.parent) {\r\n if (node.parent.data.nodeType == KtxNotificationFilterNodeTypeEnum.Unit) {\r\n return this.getLocationName(node.parent);\r\n }\r\n if (node.parent.data.nodeType == KtxNotificationFilterNodeTypeEnum.Location) {\r\n return node.parent.label;\r\n }\r\n }\r\n return '';\r\n }\r\n}\r\n","export * from './ktx-notifications-tab.component';\r\n","import {\r\n Component,\r\n ElementRef,\r\n NgZone,\r\n OnDestroy,\r\n OnInit,\r\n ViewChild,\r\n} from '@angular/core';\r\nimport PerfectScrollbar from 'perfect-scrollbar';\r\nimport { TreeNode } from 'primeng/api';\r\nimport { Calendar } from 'primeng/calendar';\r\n\r\nimport {\r\n CompanyViewModel,\r\n KtxEventByPeriodPostModel,\r\n KtxEventGetModel,\r\n KtxEventsRequestModel,\r\n KtxEventViewModel,\r\n} from '@models';\r\nimport {\r\n EventDatasourceService,\r\n LocationsKtxDataSourceService,\r\n RoleService,\r\n} from '@services';\r\nimport {\r\n KtxEventTypesIconClass,\r\n KtxEventTypesLabel,\r\n EnglishDateLocale,\r\n DefaultDateRangeLabel,\r\n CalendarDefaultValues,\r\n} from '../../constants';\r\nimport {\r\n ColumnTypeEnum,\r\n KtxEventTypeEnum,\r\n DefaultDateRangeEnum,\r\n KtxNotificationFilterNodeTypeEnum,\r\n TutorialMenuEnum,\r\n ProjectEnum\r\n} from '../../enums';\r\nimport { FormBuilder, FormControl, FormGroup } from '@angular/forms';\r\nimport { Subscription } from 'rxjs';\r\nimport { ExportNotificationPopupComponent, KtxBinDetailsPopupComponent, TutorialPopupComponent } from '../popups';\r\nimport { UserRoleEnum } from './../../../common';\r\n\r\n@Component({\r\n selector: 'greensleeves-ktx-notifications-tab',\r\n templateUrl: './ktx-notifications-tab.component.html',\r\n})\r\nexport class KtxNotificationsTabComponent implements OnInit, OnDestroy {\r\n static ALERT_TYPE = 'alertType';\r\n static SORT_ORDER_DEFAULT = 1;\r\n static EVENTS_PER_PAGE = 11;\r\n\r\n @ViewChild('calendar', { static: false })\r\n private calendar: Calendar;\r\n @ViewChild(TutorialPopupComponent, { read: false, static: false })\r\n private tutorialPopup: TutorialPopupComponent;\r\n @ViewChild(ExportNotificationPopupComponent, { read: false, static: false })\r\n private exportPopup: ExportNotificationPopupComponent;\r\n @ViewChild(KtxBinDetailsPopupComponent, { read: false, static: false })\r\n private binDetailsPopup: KtxBinDetailsPopupComponent;\r\n\r\n _columnTypeEnum = ColumnTypeEnum;\r\n _sortField = KtxNotificationsTabComponent.ALERT_TYPE;\r\n _sortOrder = KtxNotificationsTabComponent.SORT_ORDER_DEFAULT;\r\n _gridData: KtxEventViewModel[];\r\n _ps: PerfectScrollbar;\r\n _alertTypes: { label: string; value: KtxEventTypeEnum }[] = [];\r\n _isOpenFilterList: boolean = false;\r\n _totalAlertsCount: number;\r\n _eventFilter: KtxEventByPeriodPostModel = new KtxEventByPeriodPostModel(\r\n KtxNotificationsTabComponent.EVENTS_PER_PAGE\r\n );\r\n\r\n _loadMore = false;\r\n _ktxLocationNodes: TreeNode[] = [];\r\n _ktxLocationNodesSelected: TreeNode[];\r\n _defaultDateRange: { label: string; value: DefaultDateRangeEnum }[] = [];\r\n _reportPeriod: FormGroup;\r\n _rangeDate: Date[] = [];\r\n _dataLocale: EnglishDateLocale = new EnglishDateLocale();\r\n _selectedDefaultDateRange: DefaultDateRangeEnum = null;\r\n _loading: boolean = false;\r\n\r\n private defaultDateRangePreviousState: DefaultDateRangeEnum = null;\r\n private subscriptions: Subscription[] = [];\r\n\r\n _columnsView = [\r\n {\r\n header: 'First Time:',\r\n columnType: ColumnTypeEnum.Date,\r\n dataField: 'firstNotificationTimeStamp',\r\n },\r\n {\r\n header: 'Last Time:',\r\n columnType: ColumnTypeEnum.Date,\r\n dataField: 'lastNotificationTimeStamp',\r\n },\r\n {\r\n header: 'Alert type:',\r\n columnType: ColumnTypeEnum.AlertIcon,\r\n dataField: 'ktxAlertType',\r\n },\r\n {\r\n header: 'Message:',\r\n columnType: ColumnTypeEnum.AlertTitle,\r\n dataField: 'title',\r\n },\r\n ];\r\n\r\n get _startDate() {\r\n return this._rangeDate[0];\r\n }\r\n get _endDate() {\r\n return !this._rangeDate[1] ? this._rangeDate[0] : this._rangeDate[1];\r\n }\r\n\r\n get _isActiveAlert() {\r\n return !this._eventFilter.dateTimeFrom && !this._eventFilter.dateTimeTo;\r\n }\r\n\r\n get isCompanyUsers(): boolean {\r\n return this._roleService.userHasRole(UserRoleEnum.CompanyAdmin) || this._roleService.userHasRole(UserRoleEnum.CompanyUser);\r\n }\r\n\r\n get getDataPickterYearRange(): string {\r\n const dateNow = new Date();\r\n return `${dateNow.getFullYear() - 3}:${dateNow.getFullYear()}`;\r\n }\r\n\r\n constructor(\r\n private _el: ElementRef,\r\n private _zone: NgZone,\r\n private _eventDatasourceService: EventDatasourceService,\r\n private _ktxLocationService: LocationsKtxDataSourceService,\r\n private _formBuilder: FormBuilder,\r\n private _roleService: RoleService,\r\n ) { }\r\n\r\n ngOnInit() {\r\n this.setSubscriptions();\r\n this.reInitScrollBar(0);\r\n this.resetCalendar();\r\n\r\n for (const [key, value] of Object.entries(KtxEventTypesLabel)) {\r\n this._alertTypes.push({ label: value, value: Number(key) });\r\n }\r\n\r\n for (const [key, value] of Object.entries(DefaultDateRangeLabel)) {\r\n this._defaultDateRange.push({ label: value, value: Number(key) });\r\n }\r\n\r\n this._reportPeriod = this._formBuilder.group({\r\n selectedPeriod: [this._rangeDate],\r\n dateRange: [],\r\n startPeriod: [this._startDate],\r\n endOfPeriod: [this._endDate],\r\n });\r\n\r\n this.onUpdateEventsByFilter();\r\n }\r\n\r\n ngOnDestroy() {\r\n this._ps && this._ps.destroy();\r\n this._ps = null;\r\n\r\n this.clearSubscriptions();\r\n }\r\n\r\n ngAfterViewInit() {\r\n this.reInitScrollBar(0);\r\n }\r\n\r\n setSubscriptions(): void {\r\n const companiesSubscription =\r\n this._ktxLocationService.companiesWithLocations$.subscribe(\r\n (companies) => {\r\n this._ktxLocationNodes = this.initCompanyWithLocationsNodes(companies);\r\n }\r\n );\r\n\r\n const withBins = true;\r\n this._ktxLocationService.getCompaniesWithLocations(withBins);\r\n\r\n this.subscriptions.push(companiesSubscription);\r\n }\r\n\r\n clearSubscriptions(): void {\r\n this.subscriptions.forEach((s) => s.unsubscribe());\r\n this.subscriptions = null;\r\n }\r\n\r\n getAlertClassByType(alert: KtxEventTypeEnum) {\r\n return KtxEventTypesIconClass[alert];\r\n }\r\n\r\n getAlertLabelByType(alert: KtxEventTypeEnum) {\r\n return KtxEventTypesLabel[alert];\r\n }\r\n\r\n openFilterList() {\r\n this._isOpenFilterList = !this._isOpenFilterList;\r\n }\r\n\r\n async onUpdateEventsByFilter() {\r\n this._loading = true;\r\n this._eventFilter.currentPage = 1;\r\n let result = (await this._eventDatasourceService.getKtxEventsByFilter(\r\n this._eventFilter\r\n )) as KtxEventsRequestModel;\r\n if (result) {\r\n this._gridData = result.events.map((i) =>\r\n KtxEventGetModel.toViewModel(i)\r\n );\r\n this._totalAlertsCount = result.totalCount;\r\n }\r\n this._loading = false;\r\n }\r\n\r\n async getMoreEvents() {\r\n this._loadMore = true;\r\n this._eventFilter.currentPage++;\r\n let result = (await this._eventDatasourceService.getKtxEventsByFilter(\r\n this._eventFilter\r\n )) as KtxEventsRequestModel;\r\n if (result) {\r\n this._gridData.push(\r\n ...result.events.map((i) => KtxEventGetModel.toViewModel(i))\r\n );\r\n }\r\n this._loadMore = false;\r\n }\r\n\r\n onClickLocationFilter() {\r\n this._eventFilter.binIds = [];\r\n this._eventFilter.locationIds = [];\r\n\r\n this._ktxLocationNodesSelected.forEach((i) => {\r\n switch (i.data.nodeType) {\r\n case KtxNotificationFilterNodeTypeEnum.Location:\r\n this._eventFilter.locationIds.push(i.data.id);\r\n break;\r\n case KtxNotificationFilterNodeTypeEnum.Bin:\r\n this._eventFilter.binIds.push(i.data.id);\r\n break;\r\n }\r\n });\r\n this.onUpdateEventsByFilter();\r\n }\r\n\r\n async onBlurControl(control: FormControl) {\r\n control.markAsUntouched();\r\n }\r\n\r\n async onFocusControl(control: FormControl) {\r\n control.markAsTouched();\r\n }\r\n\r\n setFastDate(fastRange: DefaultDateRangeEnum) {\r\n let endDate = new Date();\r\n let startDate = new Date();\r\n endDate.setHours(0, 0, 0, 0);\r\n startDate.setHours(0, 0, 0, 0);\r\n this._rangeDate = [];\r\n switch (fastRange) {\r\n case DefaultDateRangeEnum.Week:\r\n startDate.setDate(\r\n startDate.getDate() - CalendarDefaultValues.defaultOneWeekDays\r\n );\r\n break;\r\n case DefaultDateRangeEnum.Month:\r\n startDate.setDate(\r\n startDate.getDate() - CalendarDefaultValues.defaultOneMonthDays\r\n );\r\n break;\r\n }\r\n this._selectedDefaultDateRange = fastRange;\r\n this._rangeDate.push(startDate);\r\n this._rangeDate.push(endDate);\r\n }\r\n\r\n getCurrentEvents() {\r\n this.resetCalendar();\r\n this._selectedDefaultDateRange = null;\r\n this._eventFilter.dateTimeFrom = null;\r\n this._eventFilter.dateTimeTo = null;\r\n this.onUpdateEventsByFilter();\r\n }\r\n\r\n onApplyDateRangeFilter() {\r\n if (this._rangeDate == undefined || this._rangeDate.length == 0) {\r\n this.resetCalendar();\r\n }\r\n if (this._rangeDate[1] == undefined || this._rangeDate[1] == null) {\r\n this._rangeDate[1] = this._rangeDate[0];\r\n }\r\n this._eventFilter.dateTimeFrom =\r\n (this._rangeDate[0].getTime() /\r\n CalendarDefaultValues.defaultOneSecondMilliseconds) |\r\n 0;\r\n this._eventFilter.dateTimeTo =\r\n (this._rangeDate[1].getTime() /\r\n CalendarDefaultValues.defaultOneSecondMilliseconds) |\r\n 0;\r\n this.onUpdateEventsByFilter();\r\n this.defaultDateRangePreviousState = this._selectedDefaultDateRange;\r\n this.calendar.toggle();\r\n }\r\n\r\n onSeclectCalendar() {\r\n this._selectedDefaultDateRange = null;\r\n }\r\n\r\n onCloseCalendar() {\r\n if (\r\n this._eventFilter.dateTimeFrom == null &&\r\n this._eventFilter.dateTimeTo == null\r\n ) {\r\n this.resetCalendar();\r\n return;\r\n }\r\n if (this.defaultDateRangePreviousState != null) {\r\n this.setFastDate(this.defaultDateRangePreviousState);\r\n return;\r\n }\r\n this._rangeDate = [];\r\n this._rangeDate.push(\r\n new Date(\r\n this._eventFilter.dateTimeFrom *\r\n CalendarDefaultValues.defaultOneSecondMilliseconds\r\n )\r\n );\r\n this._rangeDate.push(\r\n new Date(\r\n this._eventFilter.dateTimeTo *\r\n CalendarDefaultValues.defaultOneSecondMilliseconds\r\n )\r\n );\r\n }\r\n\r\n reInitScrollBar(timeout?: number, withCheck = false) {\r\n if (withCheck) {\r\n return;\r\n }\r\n\r\n if (this._ps) {\r\n this._ps.destroy();\r\n }\r\n\r\n const createScrollbarFunc = () => {\r\n this._zone.runOutsideAngular(() => {\r\n try {\r\n const el = this._el.nativeElement.querySelector(\r\n '.ui-table-scrollable-view.ui-table-unfrozen-view .ui-table-scrollable-body'\r\n );\r\n if (!el) {\r\n return;\r\n }\r\n\r\n this._ps = new PerfectScrollbar(el, {\r\n wheelSpeed: 2,\r\n wheelPropagation: true,\r\n minScrollbarLength: 20,\r\n });\r\n } catch (error) { }\r\n });\r\n };\r\n\r\n if (timeout) {\r\n setTimeout(() => {\r\n createScrollbarFunc();\r\n }, timeout);\r\n } else {\r\n createScrollbarFunc();\r\n }\r\n }\r\n\r\n showTutorial() {\r\n this.tutorialPopup.showPopup(TutorialMenuEnum.KtxNotifications);\r\n }\r\n\r\n showExport() {\r\n const locationNodes: TreeNode[] = [];\r\n const locations = this.initCompanyWithLocationsNodes(this._ktxLocationService.companiesWithLocations$.getValue())\r\n locations.forEach(x => {\r\n if (x.children.length > 0) {\r\n locationNodes.push(...x.children);\r\n }\r\n }\r\n );\r\n\r\n this.exportPopup.onShow(locationNodes, ProjectEnum.Ktx);\r\n }\r\n\r\n onClickBinDetails(locationid: number, binId: number) {\r\n this.binDetailsPopup.showWithLoading(locationid, binId);\r\n }\r\n\r\n private resetCalendar() {\r\n this.defaultDateRangePreviousState = null;\r\n this._selectedDefaultDateRange = null;\r\n this._rangeDate = [];\r\n let today = new Date();\r\n today.setHours(0, 0, 0, 0);\r\n this._rangeDate.push(today);\r\n this._rangeDate.push(today);\r\n }\r\n\r\n private initCompanyWithLocationsNodes(companies: CompanyViewModel[]) {\r\n const companyWithLocationNodes =\r\n companies &&\r\n companies\r\n .map(CompanyViewModel.toKtxTreeNode)\r\n .sort((a, b) => a.label.localeCompare(b.label));\r\n\r\n return companyWithLocationNodes;\r\n }\r\n}\r\n","export * from './ktx-grid';\r\nexport * from './ktx-tab.component';","export * from './ktx-grid.component';\r\n","import { Component, OnInit, AfterViewInit, OnDestroy, ElementRef, NgZone, EventEmitter, ViewChild } from '@angular/core';\r\nimport PerfectScrollbar from 'perfect-scrollbar';\r\nimport { FormBuilder, FormGroup } from '@angular/forms';\r\nimport { Subscription } from 'rxjs';\r\n\r\nimport { LocationKtxViewModel } from './../../../models/';\r\nimport { ColumnTypeEnum, ProjectEnum } from '../../../enums';\r\nimport { LocationsKtxDataSourceService } from '../../../services';\r\nimport { DeviceCommunicationPopupComponent } from '../../popups';\r\n\r\n@Component({\r\n selector: 'greensleeves-ktx-grid',\r\n templateUrl: './ktx-grid.component.html'\r\n})\r\n\r\nexport class KtxGridComponent implements OnInit, OnDestroy, AfterViewInit {\r\n\r\n @ViewChild(DeviceCommunicationPopupComponent, { read: false, static: false })\r\n private deviceCommunicationPopup: DeviceCommunicationPopupComponent;\r\n\r\n static LOCATION_NAME_KEY = 'locationName';\r\n static COMPANY_NAME_KEY = 'companyName';\r\n static SORT_ORDER_DEFAULT = 1;\r\n\r\n public onEditClicked = new EventEmitter();\r\n public onBinClicked = new EventEmitter();\r\n public onUploadClicked = new EventEmitter();\r\n public onTemperatureRangesClicked = new EventEmitter();\r\n public onDeleteClicked = new EventEmitter();\r\n public onConnectionEditClicked = new EventEmitter();\r\n\r\n _columnTypeEnum = ColumnTypeEnum;\r\n _sortField = KtxGridComponent.LOCATION_NAME_KEY;\r\n _sortOrder = KtxGridComponent.SORT_ORDER_DEFAULT;\r\n _gridData: LocationKtxViewModel[];\r\n _companyNameKey = KtxGridComponent.COMPANY_NAME_KEY;\r\n _locationNameKey = KtxGridComponent.LOCATION_NAME_KEY;\r\n _searchPhrase: string = '';\r\n _ps: PerfectScrollbar;\r\n _initializeDeviceKey = 'isInitialized';\r\n _canBeInitializedKey = 'canDeviceBeInitialized';\r\n\r\n _columnsView = [\r\n { header: 'Location name', columnType: ColumnTypeEnum.LocationName, dataField: KtxGridComponent.LOCATION_NAME_KEY },\r\n { header: 'Company', columnType: ColumnTypeEnum.Company, dataField: KtxGridComponent.COMPANY_NAME_KEY },\r\n { header: 'Bins', columnType: ColumnTypeEnum.Bins, dataField: 'countOfBins' },\r\n ]\r\n\r\n _frozenColumns = [\r\n { header: '', columnType: ColumnTypeEnum.InitializeDevice, width: 46 },\r\n { header: '', columnType: ColumnTypeEnum.DownloadConnectionFile, width: 46 },\r\n { header: '', columnType: ColumnTypeEnum.UploadConfigFile, width: 46 },\r\n { header: '', columnType: ColumnTypeEnum.TemperatureRanges, width: 46 },\r\n { header: '', columnType: ColumnTypeEnum.IPAddress, width: 46 },\r\n { header: '', columnType: ColumnTypeEnum.EditKTX, width: 46 },\r\n { header: '', columnType: ColumnTypeEnum.Delete, width: 46 }\r\n ]\r\n\r\n _searchForm: FormGroup;\r\n _lastSearchPhrase: string;\r\n\r\n _initLoaders: { [key: number]: boolean } = {};\r\n subscriptions: Subscription[] = [];\r\n _loading = false;\r\n\r\n get _frozenWidth() {\r\n return `${this._frozenColumns.reduce((a, v) => a + v.width, 0)}px`;\r\n }\r\n\r\n constructor(\r\n private _locationsKtxDataSourceService: LocationsKtxDataSourceService,\r\n private _el: ElementRef,\r\n private _zone: NgZone,\r\n formBuilder: FormBuilder) {\r\n this._searchForm = formBuilder.group({\r\n searchPhrase: [''],\r\n });\r\n }\r\n\r\n ngOnInit() {\r\n this.reInitScrollBar(0);\r\n let locationSub = this._locationsKtxDataSourceService.locationsKtx$.subscribe(items => {\r\n this._gridData = items;\r\n this._loading = false;\r\n });\r\n this._loading = true;\r\n this._locationsKtxDataSourceService.get();\r\n this.subscriptions.push(locationSub);\r\n }\r\n\r\n ngOnDestroy() {\r\n this.subscriptions &&\r\n this.subscriptions.forEach((sub) => sub.unsubscribe());\r\n\r\n this._ps && this._ps.destroy();\r\n this._ps = null;\r\n }\r\n\r\n ngAfterViewInit() {\r\n this.reInitScrollBar(0);\r\n }\r\n\r\n async onEdit(location: LocationKtxViewModel) {\r\n await this._locationsKtxDataSourceService.markLocationKtxForOthersAsInUpdate(location.id);\r\n this.onEditClicked.emit(location);\r\n }\r\n\r\n async onClickInitialized(location: LocationKtxViewModel) {\r\n if (!location) {\r\n return;\r\n }\r\n\r\n location.isDeviceInInitialization = true;\r\n location.isInitialized = await this._locationsKtxDataSourceService.initializeDeviceConfiguration(location.id) as boolean;\r\n location.isDeviceInInitialization = false;\r\n }\r\n\r\n async onClickDownloadFile(location: LocationKtxViewModel) {\r\n if (!location) {\r\n return;\r\n }\r\n this.deviceCommunicationPopup.onShow({ locationName: location.locationName, locationId: location.id, deviceId: location.deviceId, project: ProjectEnum.Ktx });\r\n }\r\n\r\n onClickBins(location?: LocationKtxViewModel) {\r\n this.onBinClicked.emit(location);\r\n }\r\n\r\n onClickTemperatureRanges(location: LocationKtxViewModel) {\r\n this.onTemperatureRangesClicked.emit(location);\r\n }\r\n\r\n onUpdateLastSearch() {\r\n this._lastSearchPhrase = this._searchForm.controls.searchPhrase.value;\r\n }\r\n\r\n async onClickDelete(location: LocationKtxViewModel) {\r\n this.onDeleteClicked.emit(location);\r\n }\r\n\r\n async onClickUploadConfigFile(location: LocationKtxViewModel) {\r\n this.onUploadClicked.emit(location);\r\n }\r\n\r\n async onClickEditConnections(location: LocationKtxViewModel) {\r\n if (location.countOfBins > 0) {\r\n await this._locationsKtxDataSourceService.markLocationKtxForOthersAsInUpdate(location.id);\r\n this.onConnectionEditClicked.emit(location);\r\n }\r\n }\r\n\r\n private reInitScrollBar(timeout?: number, withCheck = false) {\r\n if (withCheck) {\r\n return;\r\n }\r\n\r\n if (this._ps) {\r\n this._ps.destroy();\r\n }\r\n\r\n const createScrollbarFunc = () => {\r\n this._zone.runOutsideAngular(() => {\r\n try {\r\n const el = this._el.nativeElement.querySelector('.ui-table-scrollable-view.ui-table-unfrozen-view .ui-table-scrollable-body');\r\n if (!el) {\r\n return;\r\n }\r\n\r\n this._ps = new PerfectScrollbar(el, {\r\n wheelSpeed: 2,\r\n wheelPropagation: true,\r\n minScrollbarLength: 20\r\n });\r\n } catch (error) {\r\n }\r\n })\r\n };\r\n\r\n if (timeout) {\r\n setTimeout(() => {\r\n createScrollbarFunc();\r\n }, timeout);\r\n } else {\r\n createScrollbarFunc();\r\n }\r\n }\r\n}\r\n","import { AfterViewInit, Component, OnDestroy, ViewChild } from '@angular/core';\r\nimport { Subscription } from 'rxjs';\r\n\r\nimport { BinSchemeViewModel, LocationKtxViewModel, TemperatureRangeViewModel } from './../../models';\r\nimport {\r\n KtxBinDetailsPopupComponent,\r\n KtxListCablesPopupComponent,\r\n KtxLocationAddEditPopupComponent,\r\n KtxLocationBinsPopupComponent,\r\n UploadConfigurationFilePopupComponent,\r\n SuccessOperationPopupComponent,\r\n KtxTemperatureRangesPopupComponent,\r\n LocationBtxKtxDeletePopupComponent,\r\n KtxUnitDetailsPopupComponent,\r\n KtxRangeDeletePopupComponent,\r\n KtxConnectionPopupComponent\r\n} from '../popups';\r\nimport { KtxGridComponent } from './ktx-grid';\r\n\r\n@Component({\r\n selector: 'greensleeves-ktx-tab',\r\n templateUrl: './ktx-tab.component.html'\r\n})\r\nexport class KtxTabComponent implements AfterViewInit, OnDestroy {\r\n @ViewChild(KtxLocationAddEditPopupComponent, { read: false, static: false })\r\n private _addEditModal: KtxLocationAddEditPopupComponent;\r\n\r\n @ViewChild(KtxLocationBinsPopupComponent, { read: false, static: false })\r\n private _binsModal: KtxLocationBinsPopupComponent;\r\n\r\n @ViewChild(KtxBinDetailsPopupComponent, { read: false, static: false })\r\n private _binDetailsModal: KtxBinDetailsPopupComponent;\r\n\r\n @ViewChild(KtxListCablesPopupComponent, { read: false, static: false })\r\n private _listCablesModal: KtxListCablesPopupComponent;\r\n\r\n @ViewChild(KtxGridComponent, { read: false, static: false })\r\n private _gridComponent: KtxGridComponent;\r\n\r\n @ViewChild(KtxTemperatureRangesPopupComponent, { read: false, static: false })\r\n private _temperatureRangesModal: KtxTemperatureRangesPopupComponent;\r\n\r\n @ViewChild(UploadConfigurationFilePopupComponent, { read: false, static: false })\r\n private _uploadConfigurationFilePopupComponent: UploadConfigurationFilePopupComponent;\r\n\r\n @ViewChild('successUpload', { read: false, static: false })\r\n private _successOperationPopupComponent: SuccessOperationPopupComponent;\r\n\r\n @ViewChild(LocationBtxKtxDeletePopupComponent, { read: false, static: false })\r\n private deleteKtxComponent: LocationBtxKtxDeletePopupComponent;\r\n\r\n @ViewChild(KtxUnitDetailsPopupComponent, { read: false, static: false })\r\n private _unitDetailsModal: KtxUnitDetailsPopupComponent;\r\n\r\n @ViewChild(KtxRangeDeletePopupComponent, { read: false, static: false })\r\n private _rangeDeleteModal: KtxRangeDeletePopupComponent;\r\n\r\n @ViewChild(KtxConnectionPopupComponent, { read: false, static: false })\r\n private _connectionModal: KtxConnectionPopupComponent;\r\n\r\n private _subscriptions: Subscription[] = [];\r\n\r\n constructor(\r\n ) { }\r\n\r\n ngAfterViewInit() {\r\n let detailsSubscription = this._binsModal.onDetailsClick.subscribe((bin: BinSchemeViewModel) => {\r\n this._binDetailsModal.show(bin);\r\n });\r\n\r\n let binsSubscription = this._gridComponent.onBinClicked.subscribe(async (location: LocationKtxViewModel) => {\r\n await this._binsModal.show(location.id);\r\n });\r\n\r\n let editSubscription = this._gridComponent.onEditClicked.subscribe((location: LocationKtxViewModel) => {\r\n this._addEditModal.showEdit(location);\r\n });\r\n\r\n let cableSubscription = this._binDetailsModal.onViewCableDetailsClick.subscribe((bin: BinSchemeViewModel) => {\r\n this._listCablesModal.show(bin);\r\n });\r\n\r\n let temperatureSubscription = this._gridComponent.onTemperatureRangesClicked.subscribe((location) => {\r\n this._temperatureRangesModal.show(location);\r\n });\r\n\r\n let uploadSubscription = this._gridComponent.onUploadClicked.subscribe((location: LocationKtxViewModel) => {\r\n this._uploadConfigurationFilePopupComponent.show(location.id, location.locationName);\r\n });\r\n\r\n let successUploadSubscription = this._uploadConfigurationFilePopupComponent.onUploadSuccess.subscribe((emitData: [string, number]) => {\r\n this._successOperationPopupComponent.show(emitData[0], emitData[1]);\r\n });\r\n\r\n let goToBinDetailsClickedSubscription = this._successOperationPopupComponent.onPrimaryClicked.subscribe(async (entityId: number) => {\r\n await this._binsModal.show(entityId);\r\n });\r\n\r\n let deleteKtxSubscription = this._gridComponent.onDeleteClicked.subscribe((location: LocationKtxViewModel) => {\r\n this.deleteKtxComponent.show(location);\r\n });\r\n\r\n let unitDetailsSubscription = this._binsModal.onUnitDetailsClick.subscribe((unit: BinSchemeViewModel) => {\r\n this._unitDetailsModal.show(unit);\r\n });\r\n\r\n let schemeDetailsFromUnit = this._unitDetailsModal.onDetailsClick.subscribe((scheme: BinSchemeViewModel) => {\r\n this._binDetailsModal.show(scheme);\r\n });\r\n\r\n let rangeDeleteSubscription = this._temperatureRangesModal.onClickRangeDelete.subscribe((range: TemperatureRangeViewModel) => {\r\n this._rangeDeleteModal.show(range);\r\n })\r\n\r\n let rangeDeletedSubscription = this._rangeDeleteModal.onSubmit$.subscribe((range: TemperatureRangeViewModel) => {\r\n this._temperatureRangesModal.removeRange(range);\r\n });\r\n\r\n let connectionEditSubscription = this._gridComponent.onConnectionEditClicked.subscribe((location: LocationKtxViewModel) => {\r\n this._connectionModal.show({ locationName: location.locationName, locationId: location.id });\r\n });\r\n\r\n this._subscriptions.push(\r\n detailsSubscription,\r\n binsSubscription,\r\n editSubscription,\r\n cableSubscription,\r\n uploadSubscription,\r\n successUploadSubscription,\r\n goToBinDetailsClickedSubscription,\r\n temperatureSubscription,\r\n deleteKtxSubscription,\r\n unitDetailsSubscription,\r\n schemeDetailsFromUnit,\r\n rangeDeleteSubscription,\r\n rangeDeletedSubscription,\r\n connectionEditSubscription\r\n );\r\n }\r\n\r\n ngOnDestroy() {\r\n this._subscriptions &&\r\n this._subscriptions.forEach((sub) => sub.unsubscribe());\r\n }\r\n\r\n onAdd() {\r\n this._addEditModal.showAdd();\r\n }\r\n}\r\n","export * from './locations-grid';\r\nexport * from './locations-tab.component';\r\n","export * from './locations-grid.component';\r\n","import { Component, OnInit, AfterViewInit, OnDestroy, ElementRef, NgZone, Output, EventEmitter, ViewChild } from '@angular/core';\r\nimport PerfectScrollbar from 'perfect-scrollbar';\r\nimport { Subscription } from 'rxjs';\r\nimport { FormBuilder, FormGroup } from '@angular/forms';\r\n\r\nimport { ColumnTypeEnum } from '../../../enums';\r\nimport { LocationViewModel } from '../../../models';\r\nimport { LocationsDataSourceService, RoleService } from '../../../services';\r\nimport { EquipmentPopupComponent, LocationDeletePopupComponent } from '../../popups';\r\nimport { UserRoleEnum } from '../../../../common'\r\n\r\n@Component({\r\n selector: 'greensleeves-locations-grid',\r\n templateUrl: './locations-grid.component.html'\r\n})\r\n\r\nexport class LocationsGridComponent implements OnInit, OnDestroy, AfterViewInit {\r\n static LOCATION_NAME_KEY = 'name';\r\n static COMPANY_NAME_KEY = 'companyName';\r\n static SORT_ORDER_DEFAULT = 1;\r\n\r\n @ViewChild(EquipmentPopupComponent, { read: false, static: false })\r\n _equipmentPopup: EquipmentPopupComponent;\r\n\r\n @ViewChild(LocationDeletePopupComponent, { read: false, static: false })\r\n _locationDeletePopup: LocationDeletePopupComponent;\r\n\r\n @Output()\r\n onEditClicked = new EventEmitter();\r\n\r\n _columnTypeEnum = ColumnTypeEnum;\r\n _sortField = LocationsGridComponent.LOCATION_NAME_KEY;\r\n _sortOrder = LocationsGridComponent.SORT_ORDER_DEFAULT;\r\n _gridData: LocationViewModel[];\r\n _companyNameKey = LocationsGridComponent.COMPANY_NAME_KEY;\r\n _locationNameKey = LocationsGridComponent.LOCATION_NAME_KEY;\r\n _searchPhrase: string = '';\r\n _ps: PerfectScrollbar;\r\n _initializeDeviceKey = 'isInitialized';\r\n\r\n _columnsView = [\r\n { header: 'Location name', columnType: ColumnTypeEnum.LocationName, dataField: LocationsGridComponent.LOCATION_NAME_KEY },\r\n { header: 'Location address', columnType: ColumnTypeEnum.LocationAddress, dataField: 'address' },\r\n { header: 'Service email', columnType: ColumnTypeEnum.ServiceEmail, dataField: 'serviceEmail' },\r\n { header: 'Service phone', columnType: ColumnTypeEnum.ServicePhone, dataField: 'servicePhone' },\r\n { header: 'Emergency phone', columnType: ColumnTypeEnum.EmergencyPhone, dataField: 'emergencyPhone' },\r\n { header: 'Site phone', columnType: ColumnTypeEnum.SitePhone, dataField: 'sitePhone' },\r\n { header: 'Site email', columnType: ColumnTypeEnum.SiteEmail, dataField: 'siteEmail' },\r\n ]\r\n\r\n _frozenColumns = [\r\n { header: '', columnType: ColumnTypeEnum.Edit, width: 46 }\r\n ]\r\n\r\n _locationsSubscription: Subscription;\r\n _locationsErrorsSubscription: Subscription;\r\n\r\n _searchForm: FormGroup;\r\n _lastSearchPhrase: string;\r\n\r\n _initLoaders: { [key: number]: boolean } = {};\r\n\r\n get _frozenWidth() {\r\n return `${this._frozenColumns.reduce((a, v) => a + v.width, 0)}px`;\r\n }\r\n\r\n constructor(\r\n private _locationsDataSourceService: LocationsDataSourceService,\r\n private _el: ElementRef,\r\n private _zone: NgZone,\r\n private _roleService: RoleService,\r\n formBuilder: FormBuilder) {\r\n this._searchForm = formBuilder.group({\r\n searchPhrase: [''],\r\n });\r\n }\r\n\r\n ngOnInit() {\r\n this.reInitScrollBar(0);\r\n this._locationsSubscription = this._locationsDataSourceService.locations$.subscribe(items => {\r\n this._gridData = items;\r\n });\r\n this._locationsDataSourceService.get();\r\n\r\n if (this._roleService.userHasRole(UserRoleEnum.ServiceUser)) {\r\n const companyColomn = { header: 'Company', columnType: ColumnTypeEnum.Company, dataField: LocationsGridComponent.COMPANY_NAME_KEY };\r\n const deleteIcon = { header: '', columnType: ColumnTypeEnum.Delete, width: 46 };\r\n\r\n this._columnsView.splice(1, 0, companyColomn);\r\n this._frozenColumns.push(deleteIcon);\r\n }\r\n }\r\n\r\n ngOnDestroy() {\r\n this._locationsSubscription && this._locationsSubscription.unsubscribe();\r\n this._locationsSubscription = null;\r\n\r\n this._locationsErrorsSubscription && this._locationsErrorsSubscription.unsubscribe();\r\n this._locationsErrorsSubscription = null;\r\n\r\n this._ps && this._ps.destroy();\r\n this._ps = null;\r\n }\r\n\r\n ngAfterViewInit() {\r\n this.reInitScrollBar(0);\r\n }\r\n\r\n async onEdit(location: LocationViewModel) {\r\n await this._locationsDataSourceService.markLocationForOthersAsInUpdate(location.id);\r\n this.onEditClicked.emit(location);\r\n }\r\n\r\n reInitScrollBar(timeout?: number, withCheck = false) {\r\n if (withCheck) {\r\n return;\r\n }\r\n\r\n if (this._ps) {\r\n this._ps.destroy();\r\n }\r\n\r\n const createScrollbarFunc = () => {\r\n this._zone.runOutsideAngular(() => {\r\n try {\r\n const el = this._el.nativeElement.querySelector('.ui-table-scrollable-view.ui-table-unfrozen-view .ui-table-scrollable-body');\r\n if (!el) {\r\n return;\r\n }\r\n\r\n this._ps = new PerfectScrollbar(el, {\r\n wheelSpeed: 2,\r\n wheelPropagation: true,\r\n minScrollbarLength: 20\r\n });\r\n } catch (error) {\r\n }\r\n })\r\n };\r\n\r\n if (timeout) {\r\n setTimeout(() => {\r\n createScrollbarFunc();\r\n }, timeout);\r\n } else {\r\n createScrollbarFunc();\r\n }\r\n }\r\n\r\n _updateScroll() {\r\n this._ps && this._ps.update();\r\n }\r\n\r\n onUpdateLastSearch() {\r\n this._lastSearchPhrase = this._searchForm.controls.searchPhrase.value;\r\n }\r\n\r\n async onClickDelete(location: LocationViewModel) {\r\n if (!location || location.hasActiveDevice) {\r\n return;\r\n }\r\n\r\n this._locationDeletePopup.show(location);\r\n }\r\n}\r\n","import { Component, ViewChild } from '@angular/core';\r\n\r\nimport { LocationsDataSourceService, RoleService } from '../../services';\r\nimport { LocationEditPopupComponent, TutorialPopupComponent } from '../popups';\r\nimport { LocationViewModel } from '../../models';\r\nimport { UserRoleEnum } from '../../../common';\r\nimport { TutorialMenuEnum } from '../../enums';\r\n\r\n@Component({\r\n selector: 'greensleeves-locations-tab',\r\n templateUrl: './locations-tab.component.html',\r\n})\r\nexport class LocationsTabComponent {\r\n @ViewChild(LocationEditPopupComponent, { read: false, static: false })\r\n private _editModal: LocationEditPopupComponent;\r\n\r\n @ViewChild(TutorialPopupComponent, { read: false, static: false })\r\n private tutorialPopup: TutorialPopupComponent\r\n\r\n constructor(\r\n private _locationsDataSourceService: LocationsDataSourceService,\r\n private _roleService: RoleService\r\n ) {}\r\n\r\n get _isServiceUser() {\r\n return this._roleService.userHasRole(UserRoleEnum.ServiceUser);\r\n }\r\n\r\n async onEdit(location?: LocationViewModel) {\r\n if (location) {\r\n let locationEquipment =\r\n await this._locationsDataSourceService.getEquipment(location.id);\r\n locationEquipment = {\r\n ...locationEquipment,\r\n ...location,\r\n };\r\n\r\n this._editModal.show(locationEquipment);\r\n } else {\r\n this._editModal.show();\r\n }\r\n }\r\n\r\n showTutorial() {\r\n this.tutorialPopup.showPopup(TutorialMenuEnum.Locations);\r\n }\r\n}\r\n","export * from './navigation-bar.component';\r\n","import { Component, OnInit, Output, EventEmitter } from '@angular/core';\r\nimport { Router } from '@angular/router';\r\n\r\nimport {\r\n AuthorizeService,\r\n CommonFunctions,\r\n LocalStorageService,\r\n} from '../../../common';\r\nimport {\r\n RoutesForRoles,\r\n NavigationItemsInfo,\r\n BackDoorRouteToRoleMap,\r\n BACK_DOOR,\r\n} from '../../constants';\r\nimport { UserRoleEnum } from '../../../common';\r\nimport { MenuItem, NavigationUser, RoleRouteInfo } from '@models';\r\nimport { RoleService } from '@services';\r\n\r\n@Component({\r\n selector: 'greensleeves-navigation-bar',\r\n templateUrl: './navigation-bar.component.html',\r\n})\r\nexport class NavigationBarComponent implements OnInit {\r\n @Output() toggleNavigationBar: EventEmitter = new EventEmitter(\r\n false\r\n );\r\n _menuItems: Array;\r\n _isOpenNavigationBar = true;\r\n private user: NavigationUser;\r\n constructor(\r\n private _localStorageService: LocalStorageService,\r\n private _router: Router,\r\n private _roleService: RoleService\r\n ) { }\r\n\r\n ngOnInit() {\r\n const url = this._router.url;\r\n const isBackDoor = url.indexOf(BACK_DOOR) !== -1;\r\n\r\n this.user = isBackDoor\r\n ? this._roleService.getBackDoorUserWithRole(url)\r\n : this._localStorageService.getLoginInfo();\r\n\r\n if (this.user.role in UserRoleEnum) {\r\n this._menuItems = this.getMenuItemsByUser(this.user);\r\n this.redirectCompanyUser(this.user);\r\n }\r\n }\r\n\r\n redirectCompanyUser(user: NavigationUser): void {\r\n if (user.role === UserRoleEnum.CompanyUser) {\r\n const menuItem = this._menuItems.find((mi) => mi.project && mi.children.length);\r\n\r\n if (menuItem && menuItem.children) {\r\n const url = this.getUrlToFirstChild(menuItem);\r\n menuItem.isExpanded = true;\r\n\r\n this._router.navigateByUrl(url);\r\n }\r\n }\r\n }\r\n\r\n getRoleRoute(): string {\r\n const isBackDoor = this._router.url.indexOf(BACK_DOOR) !== -1;\r\n const backDoorRoleRoute = Object.keys(BackDoorRouteToRoleMap).find(\r\n (key) => this.user.role === BackDoorRouteToRoleMap[key]\r\n );\r\n\r\n const roleRoute = isBackDoor\r\n ? backDoorRoleRoute\r\n : backDoorRoleRoute.substring(BACK_DOOR.length);\r\n\r\n return roleRoute;\r\n }\r\n\r\n getUrlToFirstChild(menuItem: MenuItem): string {\r\n const roleRoute = this.getRoleRoute();\r\n const firstChildRoute = menuItem.children[0];\r\n\r\n const url = `${roleRoute}/${firstChildRoute.route}`;\r\n\r\n return url;\r\n }\r\n\r\n getMenuItemsByUser(user: NavigationUser): MenuItem[] {\r\n const routesForRoles = RoutesForRoles[user.role];\r\n const menuItems = this.getMenuItems(routesForRoles, user.projects);\r\n\r\n return menuItems;\r\n }\r\n\r\n getMenuItems(\r\n routesForRoles: RoleRouteInfo[],\r\n userProjects: number | null\r\n ): MenuItem[] {\r\n const menuItems = routesForRoles.map((roleRoute) => {\r\n if (\r\n userProjects !== null &&\r\n roleRoute.project &&\r\n !CommonFunctions.containsProject(userProjects, roleRoute.project)\r\n ) {\r\n return null;\r\n }\r\n\r\n const routeInfo = NavigationItemsInfo[roleRoute.route];\r\n let childrenRoleRoutes: Array = [];\r\n\r\n if (routeInfo.childrenRoutes) {\r\n childrenRoleRoutes = routeInfo.childrenRoutes.map(\r\n (childRoute) => ({\r\n route: childRoute,\r\n })\r\n );\r\n }\r\n\r\n const routeChildren = this.getMenuItems(childrenRoleRoutes, userProjects);\r\n\r\n const menuItem: MenuItem = {\r\n route: roleRoute.route,\r\n label: routeInfo.label,\r\n icon: routeInfo.icon,\r\n isDisabled: roleRoute.isDisabled,\r\n isExpanded: false,\r\n children: routeChildren,\r\n project: roleRoute.project,\r\n };\r\n\r\n return menuItem;\r\n });\r\n\r\n return menuItems.filter((item) => item !== null);\r\n }\r\n\r\n isChildOrDependentRoute(route: string): boolean {\r\n const url = this._router.url;\r\n const { isExpanded, children } = this._menuItems.find(\r\n (mi) => mi.route === route\r\n );\r\n\r\n if (\r\n !isExpanded &&\r\n children &&\r\n children.some((child) => url.includes(child.route))\r\n ) {\r\n return true;\r\n }\r\n\r\n const { dependentRoutes } = NavigationItemsInfo[route];\r\n\r\n if (\r\n dependentRoutes &&\r\n dependentRoutes.some((dependentRoute) => url.includes(dependentRoute))\r\n ) {\r\n return true;\r\n }\r\n\r\n return false;\r\n }\r\n\r\n isDependentRoute(route: string):boolean {\r\n const url = this._router.url;\r\n const { dependentRoutes } = NavigationItemsInfo[route];\r\n\r\n if (\r\n dependentRoutes && dependentRoutes.some((dependentRoute) => url.includes(dependentRoute))\r\n ) {\r\n return true;\r\n }\r\n if(url.includes(route)){\r\n return true;\r\n }\r\n return false;\r\n }\r\n\r\n onToggleMenuItemClick(event: Event, item: MenuItem) {\r\n event.stopPropagation();\r\n event.preventDefault();\r\n item.isExpanded = !item.isExpanded;\r\n }\r\n\r\n onMenuItemClick(item: MenuItem) {\r\n if (!item.children || item.children.length === 0) {\r\n return;\r\n }\r\n\r\n if (item.isDisabled) {\r\n const url = this.getUrlToFirstChild(item);\r\n\r\n this._router.navigateByUrl(url);\r\n }\r\n\r\n item.isExpanded = true;\r\n }\r\n\r\n onToggleNavigationClick() {\r\n this._isOpenNavigationBar = !this._isOpenNavigationBar;\r\n this.toggleNavigationBar.emit(this._isOpenNavigationBar);\r\n }\r\n\r\n\r\n}\r\n","import { Component, Output, EventEmitter, Input, OnDestroy, AfterViewChecked } from '@angular/core';\r\nimport { FormBuilder, FormGroup, Validators, FormControl } from '@angular/forms';\r\n\r\nimport { EquipmentViewModel } from '../../../models';\r\nimport { equipmentTypeLabels, equipmentSubTypeLabels, equipmentSensorMapping } from 'src/app/main/constants';\r\nimport { digitsValidator } from 'src/app/common/validators';\r\nimport { BasePopupBehavior } from '../common';\r\nimport { ModbussAddress, TemplateFunctions } from '../../common';\r\nimport { bitOptions } from '../../../constants';\r\n\r\n@Component({\r\n selector: 'greensleeves-add-edit-equipment-popup',\r\n templateUrl: './add-edit-equipment-popup.component.html',\r\n styles: []\r\n})\r\nexport class AddEditEquipmentPopupComponent extends BasePopupBehavior implements OnDestroy, AfterViewChecked {\r\n _isHidden = true;\r\n _submitted = false;\r\n\r\n _equipment: EquipmentViewModel;\r\n _title: string;\r\n\r\n @Output()\r\n onSave: EventEmitter<[EquipmentViewModel, boolean]> = new EventEmitter<[EquipmentViewModel, boolean]>();\r\n\r\n @Output()\r\n onCancel: EventEmitter = new EventEmitter();\r\n\r\n @Input()\r\n uniqueValidator: (equipment: EquipmentViewModel) => boolean;\r\n\r\n @Input()\r\n uniqueAddressesValidator: (equipment: EquipmentViewModel) => ModbussAddress[];\r\n\r\n @Output()\r\n closedPopup: EventEmitter = new EventEmitter();\r\n\r\n _equipmentForm: FormGroup;\r\n\r\n _bitOptions = bitOptions;\r\n\r\n _equipmentTypes: Array<{ label: string, value: number }>;\r\n\r\n _equipmentSubtypes: Array<{ label: string, value: number }> = [];\r\n _submitLabel: string;\r\n\r\n private isEditMode: boolean;\r\n\r\n get _hasSensor(): boolean {\r\n return this._equipment && this._equipment.sensors && this._equipment.sensors.length > 0;\r\n }\r\n\r\n constructor(\r\n formBuilder: FormBuilder,\r\n ) {\r\n super();\r\n this._equipmentTypes = Object.keys(equipmentSensorMapping).map(k => ({ label: equipmentTypeLabels[k], value: Number.parseInt(k) }))\r\n this._equipmentForm = formBuilder.group({\r\n type: [\r\n null,\r\n Validators.compose([\r\n Validators.required\r\n ])\r\n ],\r\n subType: [\r\n null,\r\n Validators.compose([\r\n Validators.required\r\n ])\r\n ],\r\n name: [\r\n '',\r\n Validators.compose([\r\n Validators.required,\r\n Validators.minLength(3),\r\n Validators.maxLength(50)\r\n ])\r\n ],\r\n totalRunHoursFirstRegisterAddress: [\r\n null,\r\n Validators.compose([\r\n Validators.required,\r\n digitsValidator,\r\n Validators.min(1),\r\n Validators.max(65536)\r\n ])\r\n ],\r\n totalRunHoursSecondRegisterAddress: [\r\n null,\r\n Validators.compose([\r\n Validators.required,\r\n digitsValidator,\r\n Validators.min(1),\r\n Validators.max(65536)\r\n ])\r\n ],\r\n timeTillMaintenanceAddress: [\r\n null,\r\n ],\r\n shutDownAlarmAddress: [\r\n null,\r\n Validators.compose([\r\n Validators.required,\r\n digitsValidator,\r\n Validators.min(1),\r\n Validators.max(65536)\r\n ])\r\n ],\r\n shutDownAlarmAddressBit: [\r\n null,\r\n Validators.compose([\r\n Validators.required,\r\n Validators.min(1),\r\n Validators.max(16)\r\n ])\r\n ],\r\n maintenanceRequiredWarningAddress: [\r\n null,\r\n Validators.compose([\r\n Validators.required,\r\n digitsValidator,\r\n Validators.min(1),\r\n Validators.max(65536)\r\n ])\r\n ],\r\n maintenanceRequiredWarningAddressBit: [\r\n null,\r\n Validators.compose([\r\n Validators.required,\r\n Validators.min(1),\r\n Validators.max(16)\r\n ])\r\n ]\r\n })\r\n }\r\n\r\n onSubmit() {\r\n this._submitted = true;\r\n if (this._equipmentForm.hasError('unique')) {\r\n delete this._equipmentForm.errors.unique;\r\n this._equipmentForm.updateValueAndValidity();\r\n }\r\n if (this._equipmentForm.invalid) {\r\n return;\r\n }\r\n\r\n if (this._equipmentForm.controls.timeTillMaintenanceAddress.value == '') this._equipmentForm.controls.timeTillMaintenanceAddress.setValue(null);\r\n if (this._equipmentForm.controls.timeTillMaintenanceAddress.value != null) {\r\n var address = parseInt(this._equipmentForm.controls.timeTillMaintenanceAddress.value);\r\n if (isNaN(address) || address < 1 || address > 65536) {\r\n this._equipmentForm.controls.timeTillMaintenanceAddress.setErrors({ digitsValidator: true })\r\n return;\r\n }\r\n this._equipmentForm.controls.timeTillMaintenanceAddress.setValue(address);\r\n }\r\n\r\n const equipment = {\r\n ...this._equipment,\r\n ...this._equipmentForm.value\r\n } as EquipmentViewModel;\r\n\r\n if (!this.uniqueValidator(equipment)) {\r\n this._equipmentForm.setErrors({\r\n unique: 'Equipment with the same name already exists in the system'\r\n });\r\n return;\r\n }\r\n\r\n const notUniqueAddresses = this.uniqueAddressesValidator(equipment);\r\n if (notUniqueAddresses && notUniqueAddresses.length > 0) {\r\n TemplateFunctions.markAddressControllsAsNotUnique(this._equipmentForm, notUniqueAddresses);\r\n return;\r\n }\r\n\r\n this.onSave.emit([equipment, this.isEditMode]);\r\n this._isHidden = true;\r\n this.resetPopup();\r\n }\r\n\r\n ngAfterViewChecked() {\r\n super.ngAfterViewChecked();\r\n }\r\n\r\n public show(title: string, submitLabel: string, equipment: EquipmentViewModel = null) {\r\n this.isEditMode = !!equipment;\r\n this._equipment = equipment || new EquipmentViewModel();\r\n this.setFormValues(equipment);\r\n this.onTypeChanged();\r\n this._title = title;\r\n this._submitLabel = submitLabel;\r\n this._isHidden = false;\r\n }\r\n\r\n onClickClose() {\r\n this._isHidden = true;\r\n this.resetPopup();\r\n this.closedPopup.emit();\r\n }\r\n\r\n onTypeChanged() {\r\n const equipmentType = this._equipmentForm.get('type').value;\r\n this._equipmentSubtypes = ((equipmentType || equipmentType === 0) ? Object.keys(equipmentSensorMapping[equipmentType]) : [])\r\n .map(k => ({ label: equipmentSubTypeLabels[k], value: Number.parseInt(k) }));\r\n }\r\n\r\n private resetPopup() {\r\n this._equipmentForm.reset();\r\n this._equipment = null;\r\n this._submitted = false;\r\n }\r\n\r\n private setFormValues(equipment: EquipmentViewModel) {\r\n this._equipmentForm.reset();\r\n if (equipment) {\r\n const {\r\n type,\r\n subType,\r\n name,\r\n totalRunHoursFirstRegisterAddress,\r\n totalRunHoursSecondRegisterAddress,\r\n timeTillMaintenanceAddress,\r\n shutDownAlarmAddress,\r\n shutDownAlarmAddressBit,\r\n maintenanceRequiredWarningAddress,\r\n maintenanceRequiredWarningAddressBit\r\n } = equipment;\r\n this._equipmentForm.setValue({\r\n type,\r\n subType,\r\n name,\r\n totalRunHoursFirstRegisterAddress,\r\n totalRunHoursSecondRegisterAddress,\r\n timeTillMaintenanceAddress,\r\n shutDownAlarmAddress,\r\n shutDownAlarmAddressBit,\r\n maintenanceRequiredWarningAddress,\r\n maintenanceRequiredWarningAddressBit\r\n });\r\n }\r\n }\r\n\r\n hasValue(control: FormControl) {\r\n return control.value || control.value === 0;\r\n }\r\n}\r\n","export * from './add-edit-equipment-popup.component';","import { Component, EventEmitter, OnInit, Output } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'greensleeves-aqs-computation-sheet-confirm-popup',\r\n templateUrl: './aqs-computation-sheet-confirm-popup.component.html',\r\n styles: []\r\n})\r\nexport class AqsComputationSheetConfirmPopupComponent implements OnInit {\r\n\r\n constructor() { }\r\n\r\n @Output() method = new EventEmitter();\r\n\r\n _title = \"\";\r\n _subtitle = \"\";\r\n _isHidden = true;\r\n _parameter: any;\r\n\r\n ngOnInit() {\r\n }\r\n\r\n actionMethod() {\r\n if (this._parameter != undefined) {\r\n this.method.emit(this._parameter);\r\n } else {\r\n this.method.emit();\r\n }\r\n\r\n this.onCancel();\r\n }\r\n\r\n public showConfirmPopup(title: string, subtitle: string, parameter: any = undefined) {\r\n this._title = title;\r\n this._subtitle = subtitle;\r\n\r\n if (parameter != undefined) {\r\n this._parameter = parameter;\r\n }\r\n this._isHidden = false;\r\n }\r\n\r\n public onCancel() {\r\n this._isHidden = true;\r\n }\r\n}\r\n","export * from './aqs-computation-sheet-confirm-popup.component';","import { Component, EventEmitter, OnInit, Output } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'greensleeves-aqs-computation-sheet-resave-popup',\r\n templateUrl: './aqs-computation-sheet-resave-popup.component.html',\r\n styles: []\r\n})\r\nexport class AqsComputationSheetResavePopupComponent implements OnInit {\r\n\r\n constructor() { }\r\n\r\n @Output() saveMethod = new EventEmitter();\r\n @Output() saveAsNewMethod = new EventEmitter();\r\n\r\n _saveTitle: string = '';\r\n _isHidden = true;\r\n\r\n ngOnInit() {\r\n }\r\n\r\n save() {\r\n this.saveMethod.emit();\r\n this.onCancel();\r\n }\r\n\r\n saveAsNew() {\r\n this.saveAsNewMethod.emit();\r\n this.onCancel();\r\n }\r\n\r\n public showConfirmPopup(title: string = 'Save Computation Sheet') {\r\n this._saveTitle = title;\r\n this._isHidden = false;\r\n }\r\n\r\n public onCancel() {\r\n this._isHidden = true;\r\n }\r\n}\r\n","export * from './aqs-computation-sheet-resave-popup.component';","import { Component, OnInit, EventEmitter } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'greensleeves-aqs-confirm-popup',\r\n templateUrl: './aqs-confirm-popup.component.html',\r\n styles: []\r\n})\r\nexport class AqsConfirmPopupComponent implements OnInit {\r\n _isHidden = true;\r\n _isConfirmCapacityAndEffDepth = true;\r\n _confirmEffDepthMessage: string = '';\r\n _confirmCapacityMessage: string = '';\r\n confirm = new EventEmitter();\r\n\r\n constructor() { }\r\n\r\n ngOnInit() {\r\n }\r\n\r\n showForConfirmCapacityAndEffDepth(newEffDepth: number, oldEffDepth: number, newCapacity: number, oldCapacity: number) {\r\n this.setDialogMessages(newEffDepth, oldEffDepth, newCapacity, oldCapacity);\r\n this._isHidden = false;\r\n this._isConfirmCapacityAndEffDepth = true;\r\n }\r\n onClose() {\r\n this.onCancel();\r\n }\r\n\r\n onCancel() {\r\n this.confirm.emit(false);\r\n this._isHidden = true;\r\n }\r\n\r\n onSubmit() {\r\n this.confirm.emit(true);\r\n this._isHidden = true;\r\n }\r\n\r\n private setDialogMessages(newEffDepth: number, oldEffDepth: number, newCapacity: number, oldCapacity: number) {\r\n this._confirmCapacityMessage = `Computer Calculated Tank Capacity is ${oldCapacity} Bushels`;\r\n this._confirmEffDepthMessage = `Computer Calculated Effective Grain Depth is ${oldEffDepth} Feet`;\r\n if (newCapacity != oldCapacity) {\r\n let diffpersent = Math.round(Math.abs(oldCapacity - newCapacity) * 100 / oldCapacity * 10) / 10;\r\n //INT(ABS((CAPACITY - UCAPACITY) * 100) / CAPACITY * 10 + .5) / 10) + \"%\"\r\n this._confirmCapacityMessage += '
'\r\n + `User Modified Tank Capacity is ${newCapacity} Bushels
`\r\n + `Difference is ${diffpersent}%`;\r\n }\r\n if (newEffDepth != oldEffDepth) {\r\n let diffpersent = Math.round(Math.abs(oldEffDepth - newEffDepth) * 100 / oldEffDepth * 10) / 10;\r\n //INT(ABS((EFFDEPTH - UEFFDEPTH) * 100) / EFFDEPTH * 10 + .5) / 10)\r\n this._confirmEffDepthMessage += '
'\r\n + `User Effective Grain Depth is ${newEffDepth} Feet
`\r\n + `Difference is ${diffpersent}%`;\r\n }\r\n }\r\n}\r\n","export *from './aqs-confirm-popup.component';","import { Component, EventEmitter, OnInit, Output } from '@angular/core';\r\nimport { AqsSessionTypeEnum } from '../../../enums';\r\n\r\n@Component({\r\n selector: 'greensleeves-aqs-new-quote-popup',\r\n templateUrl: './aqs-new-quote-popup.component.html',\r\n styleUrls: []\r\n})\r\n\r\nexport class AqsNewQuotePopupComponent implements OnInit {\r\n @Output() redirectMethod = new EventEmitter();\r\n\r\n _isHidden: boolean = true;\r\n _sessionTypes = AqsSessionTypeEnum;\r\n _selectedSessionType: AqsSessionTypeEnum = null;\r\n\r\n get isSelectedType() {\r\n return this._selectedSessionType != null;\r\n }\r\n\r\n constructor() { }\r\n\r\n ngOnInit() {\r\n }\r\n\r\n public onSelectQuoteType(sessionType: AqsSessionTypeEnum) {\r\n this._selectedSessionType = sessionType;\r\n }\r\n\r\n public onClickCreate() {\r\n this.redirectMethod.emit(this._selectedSessionType);\r\n this.onCancel();\r\n }\r\n\r\n public showConfirmPopup() {\r\n this._isHidden = false;\r\n }\r\n\r\n public onCancel() {\r\n this._selectedSessionType = null;\r\n this._isHidden = true;\r\n }\r\n\r\n}\r\n","export * from './aqs-new-quote-popup.component'\r\n","import { Component, OnDestroy, OnInit } from '@angular/core';\r\nimport { BtxEquipmentWithTelemetryViewModel, BtxSensorWithTelemetryViewModel, EquipmentViewModel } from '@models';\r\nimport { EquipmentDataSourceService } from '@services';\r\nimport { Subscription } from 'rxjs';\r\n\r\nimport { equipmentSideLabels, sensorPositionLabels, sensorTypeLabels } from '../../../constants';\r\n\r\n@Component({\r\n selector: 'greensleeves-btx-equipment-details-popup',\r\n templateUrl: './btx-equipment-details-popup.component.html',\r\n styles: []\r\n})\r\nexport class BtxEquipmentDetailsPopupComponent implements OnInit, OnDestroy {\r\n _isHidden: boolean = true;\r\n _loading: boolean = false;\r\n _equipmentWithTelemetry: BtxEquipmentWithTelemetryViewModel;\r\n _equipmentName: string;\r\n private subscription: Subscription;\r\n\r\n get _sensors() {\r\n if (!this._equipmentWithTelemetry) {\r\n return [];\r\n }\r\n\r\n return this._equipmentWithTelemetry.sensors;\r\n }\r\n\r\n get _popupHeader(): string {\r\n return this._equipmentName ? this._equipmentName + ' Details' : 'Loading...'\r\n }\r\n\r\n constructor(\r\n private _equipmentService: EquipmentDataSourceService,\r\n ) { }\r\n\r\n ngOnInit() {\r\n this.subscription =\r\n this._equipmentService.equipmentWithTelemetry$.subscribe(\r\n equipmentWithTelemetry => {\r\n if (!equipmentWithTelemetry) {\r\n return;\r\n }\r\n this._equipmentName = equipmentWithTelemetry.name;\r\n this.setUpEquipment(equipmentWithTelemetry);\r\n this._loading = false;\r\n },\r\n );\r\n }\r\n\r\n ngOnDestroy() {\r\n this.subscription && this.subscription.unsubscribe();\r\n }\r\n\r\n public onCancel() {\r\n this._isHidden = true;\r\n this._equipmentName = null\r\n this._equipmentWithTelemetry = null;\r\n this._equipmentService.equipmentWithTelemetry$.next(null);\r\n }\r\n\r\n public async ShowWithLoad(equipmentId: number) {\r\n this._isHidden = false;\r\n this._loading = true;\r\n this._equipmentService.getEquipmentWithTelemetry(equipmentId);\r\n }\r\n\r\n setUpEquipment(equipmentWithTelemetry: BtxEquipmentWithTelemetryViewModel) {\r\n const equipmentWithSortedSensors: BtxEquipmentWithTelemetryViewModel = {\r\n ...equipmentWithTelemetry,\r\n sensors: equipmentWithTelemetry.sensors\r\n .sort(this.compareSensorsWithTelemetryByPosition)\r\n .map((s, index) => ({ ...s, index: index + 1 })),\r\n };\r\n\r\n this._equipmentWithTelemetry = equipmentWithSortedSensors;\r\n }\r\n\r\n compareSensorsWithTelemetryByPosition(\r\n a: BtxSensorWithTelemetryViewModel,\r\n b: BtxSensorWithTelemetryViewModel,\r\n ) {\r\n const aString = `${sensorTypeLabels[a.type.id]}${sensorPositionLabels[a.position.id]\r\n }${equipmentSideLabels[a.side.id]}`;\r\n const bString = `${sensorTypeLabels[b.type.id]}${sensorPositionLabels[b.position.id]\r\n }${equipmentSideLabels[b.side.id]}`;\r\n\r\n if (aString < bString) {\r\n return -1;\r\n }\r\n\r\n if (aString > bString) {\r\n return 1;\r\n }\r\n\r\n return 0;\r\n }\r\n}\r\n","export * from './btx-equipment-details-popup.component';","import { Component, OnInit } from '@angular/core';\r\nimport { TreeNode } from 'primeng';\r\nimport { isNumber } from 'util';\r\n\r\nimport { ReportDatasourceService } from '@services';\r\nimport {\r\n BtxLiveDataEquipmentViewModel,\r\n BtxLiveDataLocationViewModel,\r\n BtxReportLiveDataFilter,\r\n} from '@models';\r\nimport { ErrorModel } from '../../../../common';\r\n\r\n@Component({\r\n selector: 'greensleeves-btx-live-data-export-report-popup',\r\n templateUrl: './btx-live-data-export-report-popup.component.html',\r\n})\r\nexport class BtxLiveDataExportReportPopupComponent implements OnInit {\r\n static SELECT_ALL = 'Select All';\r\n\r\n _isHidden = true;\r\n _isReportRun = false;\r\n _equipmentNodes: TreeNode[] = [];\r\n _selectedEquipmentNodes: TreeNode[] = [];\r\n _locationId: number;\r\n\r\n constructor(private _reportDatasource: ReportDatasourceService) { }\r\n\r\n ngOnInit() {\r\n }\r\n\r\n public show(\r\n liveDataLocations: BtxLiveDataLocationViewModel[],\r\n locationId: number, equipmentId: number,\r\n ) {\r\n this._isHidden = false;\r\n this._locationId = locationId;\r\n this._selectedEquipmentNodes = [];\r\n this.initLocationEquipmentNodes(liveDataLocations, equipmentId);\r\n }\r\n\r\n onCancel() {\r\n this._isHidden = true;\r\n }\r\n\r\n async download() {\r\n this._isReportRun = true;\r\n\r\n const filter: BtxReportLiveDataFilter = new BtxReportLiveDataFilter();\r\n\r\n filter.equipmentIds = this._selectedEquipmentNodes\r\n .map(eqn => eqn.data)\r\n .filter(x => isNumber(x));\r\n filter.timeZone = Intl.DateTimeFormat().resolvedOptions().timeZone;\r\n\r\n const result = await this._reportDatasource.downloadBtxLiveDataReportFile(\r\n filter,\r\n );\r\n\r\n if (!(result instanceof ErrorModel)) {\r\n const fileName = 'Btx Live Data Report ' + new Date().toLocaleString();\r\n const url = URL.createObjectURL(result as Blob);\r\n const downloadLink = document.createElement('a');\r\n downloadLink.href = url;\r\n downloadLink.download = fileName;\r\n downloadLink.click();\r\n this._isHidden = true;\r\n }\r\n\r\n this._isReportRun = false;\r\n }\r\n\r\n onNodeSelect(event: any) {\r\n if (this.isSelectAllNode(event.node)) {\r\n this.selectAllNodes();\r\n }\r\n }\r\n\r\n onNodeUnselect(event: any) {\r\n if (this.isSelectAllNode(event.node)) {\r\n this.unselectAllNodes();\r\n\r\n return;\r\n }\r\n\r\n this._selectedEquipmentNodes = this._selectedEquipmentNodes.filter(\r\n n => !this.isSelectAllNode(n),\r\n );\r\n }\r\n\r\n private initLocationEquipmentNodes(\r\n liveDataLocations: BtxLiveDataLocationViewModel[], equipmentId: number,\r\n ) {\r\n const { SELECT_ALL } = BtxLiveDataExportReportPopupComponent;\r\n\r\n const selectAllNodes: TreeNode = {\r\n label: SELECT_ALL,\r\n data: SELECT_ALL,\r\n key: SELECT_ALL,\r\n };\r\n\r\n const selectedLocation = liveDataLocations.find(\r\n location => location.id === this._locationId,\r\n );\r\n\r\n this._equipmentNodes = [\r\n selectAllNodes,\r\n ...selectedLocation.equipments.map(\r\n BtxLiveDataEquipmentViewModel.toReportEquipmentTreeNode,\r\n ),\r\n ];\r\n const selectEqipment = this._equipmentNodes.find(x => x.data == equipmentId);\r\n if (selectEqipment != undefined) {\r\n this._selectedEquipmentNodes.push(selectEqipment);\r\n }\r\n }\r\n\r\n private selectAllNodes() {\r\n this._selectedEquipmentNodes = [...this._equipmentNodes];\r\n }\r\n\r\n private unselectAllNodes() {\r\n this._selectedEquipmentNodes = [];\r\n }\r\n\r\n private isSelectAllNode(node: TreeNode) {\r\n const { label, data, key } = node;\r\n const { SELECT_ALL } = BtxLiveDataExportReportPopupComponent;\r\n\r\n return label === SELECT_ALL && data === SELECT_ALL && key === SELECT_ALL;\r\n }\r\n}\r\n","export * from './btx-live-data-export-report-popup.component';","import { PLCDeviceEnum } from './../../../enums/equipment.enum';\r\nimport { Component, OnInit, OnDestroy, AfterViewChecked, ViewChild } from '@angular/core';\r\nimport { FormBuilder, FormGroup, Validators, FormControl } from '@angular/forms';\r\nimport { Subscription } from 'rxjs';\r\n\r\nimport {\r\n EquipmentViewModel,\r\n LocationBtxEquipmentViewModel,\r\n LocationBtxViewModel\r\n} from '../../../models';\r\nimport { LocationsBtxDataSourceService, LocationsDataSourceService } from '../../../services';\r\nimport { AcquisitionRateEnum } from '../../../enums';\r\nimport { TemplateFunctions, ValidationFunctions } from '../../common';\r\nimport { BasePopupBehavior } from '../common';\r\nimport { digitsValidator } from 'src/app/common/validators';\r\nimport { BtxHardwareIconClass, BtxPLCDeviceLabel, ModelsTypes } from '../../../constants';\r\nimport { LocationChangedPopupComponent } from '../location-changed-popup';\r\nimport { ErrorCodeEnum, ErrorModel, LocalStorageService, UserRoleEnum } from '../../../../common';\r\n\r\n@Component({\r\n selector: 'greensleeves-btx-location-edit-popup',\r\n templateUrl: './btx-location-edit-popup.component.html',\r\n styles: []\r\n})\r\nexport class BtxLocationEditPopupComponent extends BasePopupBehavior implements OnInit, OnDestroy, AfterViewChecked {\r\n @ViewChild(LocationChangedPopupComponent, { read: false, static: false })\r\n _locationChangedPopupComponent: LocationChangedPopupComponent;\r\n\r\n _isHidden = true;\r\n _submitted = false;\r\n _isAddPopup = false;\r\n _arduinoAlreadyAssigned = false;\r\n\r\n _acquisitionRateOptions = [\r\n { label: \"10 seconds\", value: AcquisitionRateEnum.TenSeconds },\r\n { label: \"30 seconds\", value: AcquisitionRateEnum.ThirtySeconds },\r\n { label: \"1 minute\", value: AcquisitionRateEnum.OneMinute },\r\n { label: \"3 minutes\", value: AcquisitionRateEnum.ThreeMinutes },\r\n { label: \"5 minutes\", value: AcquisitionRateEnum.FiveMinutes }\r\n ];\r\n\r\n _selectedHardwareOptions: PLCDeviceEnum;\r\n _hardwareOptions: { label: string, value: PLCDeviceEnum }[] = [];\r\n _deviceEnum = PLCDeviceEnum;\r\n\r\n _locationBtx: LocationBtxEquipmentViewModel;\r\n _locationForm: FormGroup;\r\n\r\n _bitOptions: Array<{ label: string, value: number }> = Array(16).fill(null).map((_, i) => ({ label: (i + 1).toLocaleString(), value: i + 1 }));\r\n\r\n _locationsBtx: { label: string, value: number }[];\r\n _locations: { label: string, value: number }[];\r\n _nameControlKey = 'name';\r\n _uniquenessErrorKey = 'unique';\r\n\r\n _customPatternsForMacAddress = { 'A': { pattern: new RegExp('([a-fA-F])|([0-9])') } };\r\n\r\n private _subscriptions: Subscription[] = [];\r\n private role: UserRoleEnum;\r\n constructor(\r\n private _formBuilder: FormBuilder,\r\n private _locationsBtxService: LocationsBtxDataSourceService,\r\n private _locationService: LocationsDataSourceService,\r\n private _localStorageService: LocalStorageService,\r\n ) {\r\n super();\r\n }\r\n\r\n ngOnInit() {\r\n super.ngOnInit();\r\n const info = this._localStorageService.getLoginInfo();\r\n this.role = info ? info.role : null;\r\n\r\n for (const [key, value] of Object.entries(BtxPLCDeviceLabel)) {\r\n this._hardwareOptions.push({ label: value, value: Number(key) });\r\n }\r\n if (this.role == UserRoleEnum.ServiceUser) {\r\n this._locationBtx = new LocationBtxEquipmentViewModel();\r\n let subscriptionBtx = this._locationsBtxService.locationsBtx$.subscribe(data => {\r\n if (data) {\r\n this._locationsBtx = data.map(x => ({ label: x.locationName, value: x.id }));\r\n }\r\n });\r\n\r\n this._locationService.get();\r\n\r\n let subscriptionLocations = this._locationService.locations$.subscribe(data => {\r\n if (data) {\r\n this._locations = data.map(x => ({ label: x.name, value: x.id }));\r\n }\r\n });\r\n\r\n this._subscriptions.push(subscriptionBtx);\r\n this._subscriptions.push(subscriptionLocations);\r\n }\r\n }\r\n\r\n ngOnDestroy() {\r\n super.ngOnDestroy();\r\n this._subscriptions && this._subscriptions.forEach(sub => sub.unsubscribe());\r\n this._subscriptions = [];\r\n }\r\n\r\n ngAfterViewChecked() {\r\n super.ngAfterViewChecked();\r\n }\r\n onChangeHardware() {\r\n this._locationBtx.plcDeviceConnection = this._selectedHardwareOptions;\r\n if (this._selectedHardwareOptions == PLCDeviceEnum.Raspberry) {\r\n this._locationForm.controls.deviceMacAddress.clearValidators();\r\n this._locationForm.controls.deviceMacAddress.disable();\r\n this._locationForm.controls.deviceMacAddress.updateValueAndValidity();\r\n this._locationForm.controls.deviceIp.clearValidators();\r\n this._locationForm.controls.deviceIp.disable();\r\n this._locationForm.controls.deviceIp.updateValueAndValidity();\r\n }\r\n else {\r\n this._locationForm.controls.deviceIp.enable();\r\n this._locationForm.controls.deviceIp.setValidators(\r\n Validators.compose([\r\n Validators.required,\r\n TemplateFunctions.ipValidator,\r\n ]));\r\n this._locationForm.controls.deviceIp.updateValueAndValidity();\r\n this._locationForm.controls.deviceMacAddress.enable();\r\n this._locationForm.controls.deviceMacAddress.setValidators(\r\n Validators.compose([\r\n Validators.required,\r\n TemplateFunctions.macAddressValidator,\r\n ]));\r\n this._locationForm.controls.deviceMacAddress.updateValueAndValidity();\r\n }\r\n }\r\n\r\n async onSubmit() {\r\n this._arduinoAlreadyAssigned = false;\r\n this._submitted = true;\r\n if (this._locationForm.invalid || this._selectedHardwareOptions == undefined) {\r\n return;\r\n }\r\n const value = {\r\n ...this._locationBtx,\r\n ...this._locationForm.value,\r\n companyName: this._locations.find(x => x.value == this._locationForm.value.locationId).label\r\n } as LocationBtxEquipmentViewModel;\r\n if (this._selectedHardwareOptions == PLCDeviceEnum.Raspberry) {\r\n value.deviceMacAddress = null;\r\n value.deviceIp = null;\r\n }\r\n\r\n this.validateAddressesForUniqueness(value);\r\n if (this._locationForm.invalid) {\r\n return;\r\n }\r\n\r\n const response = this._isAddPopup\r\n ? await this._locationsBtxService.add(value)\r\n : await this._locationsBtxService.edit(value);\r\n if (response instanceof ErrorModel && response.code === ErrorCodeEnum.ArduinoDeviceAlreadyAssigned) {\r\n this._arduinoAlreadyAssigned = true;\r\n } else if (response) {\r\n this._locationBtx = null;\r\n this._isHidden = true;\r\n this._submitted = false;\r\n this._arduinoAlreadyAssigned = false;\r\n\r\n if ((response as LocationBtxViewModel).isConnectionFileUpdated) {\r\n this._locationChangedPopupComponent.show();\r\n }\r\n }\r\n }\r\n\r\n async onFocusControl(control: FormControl) {\r\n control.markAsTouched();\r\n }\r\n\r\n async onBlurControl(control: FormControl) {\r\n control.markAsUntouched();\r\n }\r\n\r\n async onClose() {\r\n this._locationsBtxService.markLocationForOthersAsUpdated(this._locationBtx, false);\r\n }\r\n\r\n public show(location?: LocationBtxEquipmentViewModel) {\r\n this._isAddPopup = !location;\r\n this._submitted = false;\r\n this._locationBtx = location ? Object.assign({}, location) : new LocationBtxEquipmentViewModel();\r\n this._isHidden = false;\r\n this._selectedHardwareOptions = location ? location.plcDeviceConnection : undefined;\r\n this.reInitForm();\r\n }\r\n\r\n private validateAddressesForUniqueness(location: LocationBtxEquipmentViewModel) {\r\n const existentItems: (LocationBtxViewModel | EquipmentViewModel)[] = [];\r\n if (this._locationBtx.equipments) {\r\n this._locationBtx.equipments.forEach(eq => existentItems.push(eq));\r\n }\r\n\r\n location.modelType = ModelsTypes.locationViewModel;\r\n const notUniqueAddresses = ValidationFunctions.checkIsAllAddressesUnique(existentItems, location);\r\n\r\n if (notUniqueAddresses && notUniqueAddresses.length > 0) {\r\n TemplateFunctions.markAddressControllsAsNotUnique(this._locationForm, notUniqueAddresses);\r\n }\r\n }\r\n\r\n private reInitForm() {\r\n this._locationForm = this._formBuilder.group({\r\n locationId: [\r\n this._locationBtx.id,\r\n Validators.compose([\r\n Validators.required,\r\n ])\r\n ],\r\n deviceIp: [\r\n this._locationBtx.deviceIp,\r\n Validators.compose([\r\n Validators.required,\r\n TemplateFunctions.ipValidator,\r\n ])\r\n ],\r\n deviceMacAddress: [\r\n this._locationBtx.deviceMacAddress,\r\n Validators.compose([\r\n Validators.required,\r\n TemplateFunctions.macAddressValidator,\r\n ])\r\n ],\r\n btxIp: [\r\n this._locationBtx.btxIp,\r\n Validators.compose([\r\n Validators.required,\r\n TemplateFunctions.ipValidator,\r\n ])\r\n ],\r\n btxPort: [\r\n this._locationBtx.btxPort,\r\n Validators.compose([\r\n Validators.required,\r\n Validators.min(0),\r\n Validators.max(65535),\r\n digitsValidator\r\n ])\r\n ],\r\n acquisitionRate: [\r\n this._locationBtx.acquisitionRate,\r\n Validators.compose([\r\n Validators.required,\r\n Validators.min(1),\r\n Validators.max(65536),\r\n digitsValidator\r\n ])\r\n ],\r\n batteryAlarmAddressBit: [\r\n this._locationBtx.batteryAlarmAddressBit,\r\n Validators.compose([\r\n Validators.required,\r\n ])\r\n ],\r\n batteryAlarmAddress: [\r\n this._locationBtx.batteryAlarmAddress,\r\n Validators.compose([\r\n Validators.required,\r\n Validators.min(1),\r\n Validators.max(65536),\r\n digitsValidator\r\n ])\r\n ],\r\n suppressorAlarmAddressBit: [\r\n this._locationBtx.suppressorAlarmAddressBit,\r\n Validators.compose([\r\n Validators.required,\r\n ])\r\n ],\r\n suppressorAlarmAddress: [\r\n this._locationBtx.suppressorAlarmAddress,\r\n Validators.compose([\r\n Validators.required,\r\n Validators.min(1),\r\n Validators.max(65536),\r\n digitsValidator\r\n ])\r\n ],\r\n communicationAlarmAddressBit: [\r\n this._locationBtx.communicationAlarmAddressBit,\r\n Validators.compose([\r\n Validators.required,\r\n ])\r\n ],\r\n communicationAlarmAddress: [\r\n this._locationBtx.communicationAlarmAddress,\r\n Validators.compose([\r\n Validators.required,\r\n Validators.min(1),\r\n Validators.max(65536),\r\n digitsValidator\r\n ])\r\n ],\r\n hardwareOptions: [\r\n this._locationBtx.plcDeviceConnection,\r\n ],\r\n });\r\n\r\n if (this._selectedHardwareOptions == PLCDeviceEnum.Raspberry) {\r\n this._locationForm.controls.deviceMacAddress.clearValidators();\r\n this._locationForm.controls.deviceMacAddress.disable();\r\n this._locationForm.controls.deviceMacAddress.updateValueAndValidity();\r\n this._locationForm.controls.deviceIp.clearValidators();\r\n this._locationForm.controls.deviceIp.disable();\r\n this._locationForm.controls.deviceIp.updateValueAndValidity();\r\n }\r\n }\r\n\r\n getHardwareClass(plcDeviceType: PLCDeviceEnum = this._locationBtx ? this._locationBtx.plcDeviceConnection : null): string {\r\n return BtxHardwareIconClass.getIconClass(plcDeviceType);\r\n }\r\n}\r\n","export * from './btx-location-edit-popup.component';","import { OnInit, AfterViewChecked, ViewChildren, QueryList, OnDestroy } from '@angular/core';\r\nimport { AnimationEvent } from '@angular/animations';\r\nimport PerfectScrollbar from 'perfect-scrollbar';\r\nimport { Dropdown } from 'primeng/dropdown';\r\nimport { MultiSelect } from 'primeng/multiselect';\r\n\r\nexport class BasePopupBehavior implements OnInit, AfterViewChecked, OnDestroy {\r\n @ViewChildren('dropdownScrollable')\r\n _dropdownsAll: QueryList;\r\n\r\n @ViewChildren('multiSelectScrollable')\r\n _multiSelectsAll: QueryList;\r\n\r\n _perfectScrollbarMain: PerfectScrollbar;\r\n _resizeHelperMutationObserver: MutationObserver;\r\n\r\n _perfectScrollbarForDropdown: PerfectScrollbar;\r\n _perfectScrollBarForTable: PerfectScrollbar;\r\n\r\n private isDropdownsInited = false;\r\n private isMultiSelectsInited = false;\r\n private dropdownItemsWrapperClass = 'ui-dropdown-items-wrapper';\r\n private multiSelectItemsWrapperClass = 'ui-multiselect-items-wrapper';\r\n\r\n constructor() { }\r\n\r\n ngOnInit() {\r\n }\r\n\r\n ngAfterViewChecked() {\r\n if (!this.isDropdownsInited && this._dropdownsAll && this._dropdownsAll.length > 0) {\r\n this.isDropdownsInited = true;\r\n this._dropdownsAll.forEach(d => d.onShow.subscribe(event => this.onShowDropdown(event)));\r\n }\r\n if (!this.isMultiSelectsInited && this._multiSelectsAll && this._multiSelectsAll.length > 0) {\r\n this.isMultiSelectsInited = true;\r\n this._multiSelectsAll.forEach(d => d.onPanelShow.subscribe(() => this.onOpenMultiSelect(d)));\r\n }\r\n }\r\n\r\n ngOnDestroy() {\r\n this._perfectScrollbarMain && this._perfectScrollbarMain.destroy();\r\n this._perfectScrollbarForDropdown && this._perfectScrollbarForDropdown.destroy();\r\n this._perfectScrollBarForTable && this._perfectScrollBarForTable.destroy();\r\n }\r\n\r\n onShowDropdown(event: AnimationEvent) {\r\n let el = event.element.getElementsByClassName(this.dropdownItemsWrapperClass);\r\n this.reInitDropdownScrollBar(el[0], 10);\r\n }\r\n\r\n onOpenMultiSelect(multiSelect: MultiSelect) {\r\n let el = multiSelect.el.nativeElement.getElementsByClassName(this.multiSelectItemsWrapperClass);\r\n this.reInitDropdownScrollBar(el[0], 10);\r\n }\r\n\r\n protected reInitMainScrollBar(element: HTMLElement, timeout?: number) {\r\n this._perfectScrollbarMain && this._perfectScrollbarMain.destroy();\r\n\r\n const createScrollbarFunc = () => {\r\n this._perfectScrollbarMain = new PerfectScrollbar(element);\r\n };\r\n\r\n if (timeout) {\r\n setTimeout(() => {\r\n createScrollbarFunc();\r\n }, timeout);\r\n } else {\r\n createScrollbarFunc();\r\n }\r\n }\r\n\r\n protected reInitTableScrollBar(element: HTMLElement, timeout?: number) {\r\n this._perfectScrollBarForTable && this._perfectScrollBarForTable.destroy();\r\n\r\n const createScrollbarFunc = () => {\r\n this._perfectScrollBarForTable = new PerfectScrollbar(element);\r\n };\r\n\r\n if (timeout) {\r\n setTimeout(() => {\r\n createScrollbarFunc();\r\n }, timeout);\r\n } else {\r\n createScrollbarFunc();\r\n }\r\n }\r\n\r\n protected destroyMainScrollBar() {\r\n if (this._perfectScrollbarMain) {\r\n this._perfectScrollbarMain.destroy();\r\n }\r\n }\r\n\r\n protected destroyTableScrollBar() {\r\n this._perfectScrollBarForTable && this._perfectScrollBarForTable.destroy();\r\n }\r\n\r\n private reInitDropdownScrollBar(element: HTMLElement, timeout?: number) {\r\n this._perfectScrollbarForDropdown && this._perfectScrollbarForDropdown.destroy();\r\n\r\n const createScrollbarFunc = () => {\r\n this._perfectScrollbarForDropdown = new PerfectScrollbar(element);\r\n };\r\n\r\n if (timeout) {\r\n setTimeout(() => {\r\n createScrollbarFunc();\r\n }, timeout);\r\n } else {\r\n createScrollbarFunc();\r\n }\r\n }\r\n}\r\n","import { Component, OnInit, Input, Output, EventEmitter, ChangeDetectorRef, HostListener, AfterViewChecked, OnDestroy } from '@angular/core';\r\n\r\nimport { TemplateFunctions } from '../../../common';\r\nimport { BasePopupBehavior } from '../base-popup.behavior';\r\n\r\n@Component({\r\n selector: 'greensleeves-base-popup',\r\n templateUrl: './base-popup.component.html'\r\n})\r\nexport class BasePopupComponent extends BasePopupBehavior\r\n implements OnInit, AfterViewChecked, AfterViewChecked, OnDestroy {\r\n @Input()\r\n public isHidden: boolean;\r\n @Input()\r\n public isNeedToPreventClose: boolean;\r\n @Input()\r\n public isNeedToHideCloseButton: boolean;\r\n @Output()\r\n public isHiddenChange = new EventEmitter();\r\n @Output()\r\n public popupClosed = new EventEmitter();\r\n\r\n _popupWrapperId = TemplateFunctions.makeid(11);\r\n _resizeHelperMutationObserver: MutationObserver;\r\n _popupWrapperElement: any;\r\n _heightPx = '';\r\n\r\n private isResizeOnShowWereChecked = false;\r\n\r\n constructor(\r\n private cdRef: ChangeDetectorRef,\r\n ) {\r\n super();\r\n }\r\n\r\n ngOnInit() {\r\n }\r\n\r\n ngAfterViewChecked() {\r\n if (!this.isHidden && !this.isResizeOnShowWereChecked) {\r\n this.isResizeOnShowWereChecked = true;\r\n this.checkAndResize();\r\n }\r\n }\r\n\r\n ngOnDestroy() {\r\n super.ngOnDestroy();\r\n }\r\n\r\n onClose() {\r\n if (!this.isNeedToPreventClose) {\r\n this.isHidden = true;\r\n this.isResizeOnShowWereChecked = false;\r\n this.isHiddenChange.emit(this.isHidden);\r\n this.popupClosed.emit();\r\n\r\n this.destroyMainScrollBar();\r\n this._heightPx = '';\r\n } else {\r\n this.popupClosed.emit();\r\n }\r\n }\r\n\r\n @HostListener('window: resize', ['$event.target'])\r\n onResize() {\r\n if (!this.isHidden) {\r\n this.checkAndResize();\r\n }\r\n }\r\n\r\n private checkAndResize() {\r\n this._heightPx = '';\r\n if (!this._popupWrapperElement) {\r\n this._popupWrapperElement = document.getElementById(this._popupWrapperId);\r\n }\r\n\r\n const height = this._popupWrapperElement.offsetHeight;\r\n const documentHeigth = document.documentElement.clientHeight;\r\n\r\n if (height > documentHeigth) {\r\n // this._heightPx = height - (height - documentHeigth) + 'px';\r\n this._heightPx = (documentHeigth - 40) + 'px';\r\n this.cdRef.detectChanges();\r\n super.reInitMainScrollBar(this._popupWrapperElement);\r\n } else {\r\n super.destroyMainScrollBar();\r\n }\r\n }\r\n}\r\n","export * from './base-popup.component';","export * from './base-popup';\r\nexport * from './base-popup.behavior';\r\n","import { Component, OnInit } from '@angular/core';\r\nimport { FormGroup, FormBuilder, Validators } from '@angular/forms';\r\n\r\nimport { CompaniesDataSourceService } from '../../../services';\r\nimport { UserRoleEnum, ErrorModel, ErrorCodeEnum } from '../../../../common';\r\nimport { CompanyViewModel, CompanyPostModel } from '../../../models';\r\n\r\n@Component({\r\n selector: 'greensleeves-companies-add-edit-popup',\r\n templateUrl: './companies-add-edit-popup.component.html',\r\n styles: []\r\n})\r\nexport class CompaniesAddEditPopupComponent {\r\n _isHidden = true;\r\n _submitted = false;\r\n _companiesForm: FormGroup;\r\n _isAddPopup: boolean;\r\n _company: CompanyViewModel;\r\n _invalidName = false;\r\n\r\n _role: UserRoleEnum;\r\n\r\n constructor(\r\n private _formBuilder: FormBuilder,\r\n private _companiesService: CompaniesDataSourceService,\r\n ) {\r\n }\r\n\r\n onChange() {\r\n this._submitted = false;\r\n }\r\n\r\n public showAdd() {\r\n this._invalidName = false;\r\n this._companiesForm = this._formBuilder.group({\r\n name: [\r\n '',\r\n Validators.compose([\r\n Validators.required,\r\n Validators.minLength(3),\r\n Validators.maxLength(50)\r\n ])\r\n ]\r\n });\r\n\r\n this._isAddPopup = true;\r\n this._submitted = false;\r\n this._isHidden = false;\r\n this._companiesForm.reset();\r\n }\r\n\r\n public showEdit(company: CompanyViewModel) {\r\n this._invalidName = false;\r\n this._company = company;\r\n this._companiesForm = this._formBuilder.group({\r\n name: [\r\n this._company.name,\r\n Validators.compose([\r\n Validators.required,\r\n Validators.minLength(3),\r\n Validators.maxLength(50)\r\n ])\r\n ]\r\n });\r\n\r\n this._isAddPopup = false;\r\n this._submitted = false;\r\n this._isHidden = false;\r\n }\r\n\r\n async onSubmit() {\r\n this._submitted = true;\r\n if (this._companiesForm.invalid && !this._invalidName) {\r\n return;\r\n }\r\n\r\n if (this._isAddPopup) {\r\n const value = this._companiesForm.value as string;\r\n this._companiesService.add(value)\r\n .then((response: CompanyViewModel) => {\r\n if(response instanceof ErrorModel && response.code === ErrorCodeEnum.NotUniqueCompanyName) {\r\n this._invalidName = true;\r\n } else if (response) {\r\n this._submitted = false;\r\n this._isHidden = true;\r\n }\r\n })\r\n }\r\n\r\n else {\r\n const value = {\r\n ...this._companiesForm.value,\r\n id: this._company.id,\r\n } as CompanyPostModel;\r\n this._companiesService.edit(value)\r\n .then((response: CompanyViewModel) => {\r\n if(response instanceof ErrorModel && response.code === ErrorCodeEnum.NotUniqueCompanyName) {\r\n this._invalidName = true;\r\n } else if (response) {\r\n this._submitted = false;\r\n this._isHidden = true;\r\n }\r\n })\r\n }\r\n }\r\n\r\n async onClose() {\r\n this._companiesService.markCompanyForOthersAsUpdated(this._company, false);\r\n }\r\n}","export * from './companies-add-edit-popup.component';","import { Component, OnInit } from '@angular/core';\r\n\r\nimport { CompanyViewModel } from '../../../models';\r\nimport { CompaniesDataSourceService } from '../../../services';\r\n\r\n\r\n@Component({\r\n selector: 'greensleeves-companies-delete-popup',\r\n templateUrl: './companies-delete-popup.component.html',\r\n styles: []\r\n})\r\n\r\nexport class CompaniesDeletePopupComponent implements OnInit {\r\n _isHidden = true;\r\n _submitted: boolean;\r\n _company: CompanyViewModel;\r\n constructor(\r\n private _companiesDataSourceService: CompaniesDataSourceService,\r\n ) { }\r\n\r\n ngOnInit() {\r\n }\r\n \r\n public show(company: CompanyViewModel){\r\n this._submitted = false;\r\n this._isHidden = false;\r\n this._company = company;\r\n }\r\n\r\n async onSubmit() {\r\n try {\r\n const result = await this._companiesDataSourceService.delete(this._company.id);\r\n if (result != null){\r\n this._isHidden = true;\r\n this._company = null;\r\n this._submitted = true;\r\n }\r\n } catch (error){\r\n this._submitted = false;\r\n console.log('ERROR', error);\r\n }\r\n }\r\n\r\n onCancel(){\r\n \r\n this._isHidden = true;\r\n this._company = null;\r\n }\r\n}\r\n","export * from './companies-delete-popup.component';","import { Component, OnInit, OnDestroy, AfterViewChecked } from '@angular/core';\r\nimport { CompanyAdminInviteModel, CompanyAdminViewModel } from '../../../models';\r\nimport { FormGroup, FormBuilder, Validators } from '@angular/forms';\r\nimport { Subscription } from 'rxjs';\r\n\r\nimport { CompaniesDataSourceService, CompanyAdminsDataSourceService } from '../../../services';\r\nimport { LocalStorageService, UserRoleEnum, ErrorModel, ErrorCodeEnum } from '../../../../common';\r\nimport { emailValidator } from '../../../../common/validators';\r\nimport { BasePopupBehavior } from '../common';\r\n\r\n@Component({\r\n selector: 'greensleeves-company-admin-add-popup',\r\n templateUrl: './company-admin-add-popup.component.html',\r\n styles: []\r\n})\r\nexport class CompanyAdminAddPopupComponent extends BasePopupBehavior implements OnInit, OnDestroy, AfterViewChecked {\r\n _isHidden = true;\r\n _submitted = false;\r\n _invalidEmail = false;\r\n _isSubmit = false;\r\n\r\n _companyAdminForm: FormGroup;\r\n\r\n _companies: { label: string, value: number }[];\r\n private _companiesSubscription: Subscription;\r\n\r\n _role: UserRoleEnum;\r\n\r\n get _isServiceUser() {\r\n return this._role === UserRoleEnum.ServiceUser;\r\n }\r\n\r\n get _isCompanyAdmin() {\r\n return this._role === UserRoleEnum.CompanyAdmin;\r\n }\r\n\r\n constructor(\r\n private _formBuilder: FormBuilder,\r\n private _companiesService: CompaniesDataSourceService,\r\n private _localStorageService: LocalStorageService,\r\n private _companyAdminsService: CompanyAdminsDataSourceService,\r\n ) {\r\n super();\r\n }\r\n\r\n ngOnInit() {\r\n super.ngOnInit();\r\n this._companiesSubscription = this._companiesService.companies$.subscribe(data => {\r\n if (data) {\r\n this._companies = data.map(x => ({ label: x.name, value: x.id }));\r\n }\r\n });\r\n \r\n const info = this._localStorageService.getLoginInfo();\r\n this._role = info ? info.role : null;\r\n\r\n if(this._isServiceUser) {\r\n this._companiesService.get();\r\n }\r\n\r\n this._invalidEmail = false;\r\n\r\n const loginInfo = this._localStorageService.getLoginInfo();\r\n this._role = loginInfo ? loginInfo.role : null;\r\n\r\n this._companyAdminForm = this._formBuilder.group({\r\n email: [\r\n '',\r\n Validators.compose([\r\n Validators.required,\r\n Validators.email,\r\n emailValidator(),\r\n Validators.minLength(3),\r\n Validators.maxLength(50),\r\n ])\r\n ],\r\n ...(this._isServiceUser ? {\r\n companyId: [\r\n null,\r\n Validators.compose([\r\n Validators.required\r\n ])\r\n ]\r\n } : {})\r\n });\r\n\r\n this._companyAdminForm.valueChanges.subscribe(() => this._invalidEmail = false);\r\n }\r\n\r\n ngOnDestroy() {\r\n super.ngOnDestroy();\r\n this._companiesSubscription && this._companiesSubscription.unsubscribe();\r\n this._companiesSubscription = null;\r\n }\r\n\r\n ngAfterViewChecked() {\r\n super.ngAfterViewChecked();\r\n }\r\n\r\n public show() {\r\n this._invalidEmail = false;\r\n this._submitted = false;\r\n this._companyAdminForm.reset();\r\n if (this._isServiceUser){\r\n this._companiesService.get();\r\n }\r\n this._isHidden = false;\r\n }\r\n\r\n async onSubmit() {\r\n this._submitted = true;\r\n if (this._companyAdminForm.invalid || this._invalidEmail) {\r\n return;\r\n }\r\n\r\n const value = this._companyAdminForm.value as CompanyAdminInviteModel;\r\n if (this._isCompanyAdmin) {\r\n value.companyId = this._localStorageService.getLoginInfo().companyId;\r\n }\r\n\r\n this._companyAdminsService.invite(value)\r\n .then((response) => {\r\n if(response instanceof ErrorModel && response.code === ErrorCodeEnum.UserAlreadyExist) {\r\n this._isSubmit = false;\r\n this._invalidEmail = true;\r\n } else if(response) {\r\n this.resetForm();\r\n }\r\n })\r\n }\r\n\r\n private resetForm() {\r\n this._submitted = false;\r\n this._isSubmit = false;\r\n this._isHidden = true;\r\n this._companyAdminForm.reset();\r\n this._companyAdminForm.markAsUntouched();\r\n Object.keys(this._companyAdminForm.controls).forEach((name) => {\r\n const control = this._companyAdminForm.controls[name];\r\n control.setErrors(null);\r\n });\r\n }\r\n}\r\n","export * from './company-admin-add-popup.component';","import { Component, OnInit } from '@angular/core';\r\n\r\nimport { CompanyAdminViewModel } from '../../../models';\r\nimport { CompanyAdminsDataSourceService } from '../../../services';\r\n\r\n\r\n@Component({\r\n selector: 'greensleeves-company-admin-delete-popup',\r\n templateUrl: './company-admin-delete-popup.component.html',\r\n styles: []\r\n})\r\n\r\nexport class CompanyAdminDeletePopupComponent implements OnInit {\r\n _isHidden = true;\r\n _companyAdmin: CompanyAdminViewModel;\r\n constructor(\r\n private _companyAdminsDataSourceService: CompanyAdminsDataSourceService,\r\n ) { }\r\n\r\n ngOnInit() {\r\n }\r\n \r\n public show(companyAdmin: CompanyAdminViewModel){\r\n this._isHidden = false;\r\n this._companyAdmin = companyAdmin;\r\n }\r\n\r\n async onSubmit() {\r\n const result = await this._companyAdminsDataSourceService.delete(this._companyAdmin.id, this._companyAdmin.companyId);\r\n if (result != null){\r\n this._isHidden = true;\r\n this._companyAdmin = null;\r\n }\r\n }\r\n\r\n onCancel(){\r\n this._isHidden = true;\r\n this._companyAdmin = null;\r\n }\r\n}\r\n","export * from './company-admin-delete-popup.component';","import { Component, OnInit, OnDestroy, AfterViewChecked } from '@angular/core';\r\nimport { CompanyAdminViewModel, CompanyAdminPostModel } from '../../../models';\r\nimport { FormGroup, FormBuilder, Validators } from '@angular/forms';\r\nimport { Subscription } from 'rxjs';\r\nimport { CompanyAdminsDataSourceService, CompaniesDataSourceService } from '../../../services';\r\nimport { LocalStorageService, UserRoleEnum } from '../../../../common';\r\nimport { BasePopupBehavior } from '../common';\r\n\r\n@Component({\r\n selector: 'greensleeves-company-admin-edit-popup',\r\n templateUrl: './company-admin-edit-popup.component.html',\r\n styles: []\r\n})\r\nexport class CompanyAdminEditPopupComponent extends BasePopupBehavior implements OnInit, OnDestroy, AfterViewChecked {\r\n _isHidden = true;\r\n _submitted = false;\r\n\r\n _companyAdmin: CompanyAdminViewModel;\r\n _companyAdminForm: FormGroup;\r\n\r\n _companies: { label: string, value: number }[];\r\n private _companiesSubscription: Subscription;\r\n\r\n _role: UserRoleEnum;\r\n\r\n get _isServiceUser() {\r\n return this._role === UserRoleEnum.ServiceUser;\r\n }\r\n\r\n constructor(\r\n private _formBuilder: FormBuilder,\r\n private _companyAdminsService: CompanyAdminsDataSourceService,\r\n private _companiesService: CompaniesDataSourceService,\r\n private _localStorageService: LocalStorageService,\r\n ) {\r\n super();\r\n }\r\n\r\n ngOnInit() {\r\n super.ngOnInit();\r\n if (this._isServiceUser) {\r\n this._companiesService.get();\r\n }\r\n this._companiesSubscription = this._companiesService.companies$.subscribe(data => {\r\n if (data) {\r\n this._companies = data.map(x => ({ label: x.name, value: x.id }));\r\n }\r\n });\r\n\r\n const loginInfo = this._localStorageService.getLoginInfo();\r\n this._role = loginInfo ? loginInfo.role : null;\r\n }\r\n\r\n ngOnDestroy() {\r\n super.ngOnDestroy();\r\n this._companiesSubscription && this._companiesSubscription.unsubscribe();\r\n this._companiesSubscription = null;\r\n }\r\n\r\n ngAfterViewChecked() {\r\n super.ngAfterViewChecked();\r\n }\r\n\r\n public show(companyAdmin: CompanyAdminViewModel) {\r\n this._companyAdmin = companyAdmin;\r\n this._companyAdminForm = this._formBuilder.group({\r\n firstName: [\r\n this._companyAdmin.firstName,\r\n Validators.compose([\r\n Validators.required,\r\n Validators.minLength(3),\r\n Validators.maxLength(50)\r\n ])\r\n ],\r\n lastName: [\r\n this._companyAdmin.lastName,\r\n Validators.compose([\r\n Validators.required,\r\n Validators.minLength(3),\r\n Validators.maxLength(50)\r\n ])\r\n ],\r\n ...(this._isServiceUser ? {\r\n companyId: [\r\n this._companyAdmin.companyId,\r\n Validators.compose([\r\n Validators.required\r\n ])\r\n ],\r\n } : {})\r\n });\r\n this._isHidden = false;\r\n }\r\n\r\n async onSubmit() {\r\n this._submitted = true;\r\n if (this._companyAdminForm.invalid) {\r\n return;\r\n }\r\n\r\n try {\r\n let value = {\r\n ...this._companyAdminForm.value,\r\n id: this._companyAdmin.id,\r\n ...(this._isServiceUser ? {\r\n companyName: this._companies.find(c => c.value === this._companyAdminForm.value.companyId).label\r\n } : {})\r\n } as CompanyAdminPostModel;\r\n const result = await this._companyAdminsService.edit(value);\r\n if (result) {\r\n if (this._isServiceUser) {\r\n this._companyAdminsService.get(null)\r\n }\r\n value = {\r\n ...this._companyAdmin,\r\n ...value,\r\n };\r\n this._companyAdminsService.markCompanyAdminForOthersAsUpdated(value, true);\r\n\r\n this._isHidden = true;\r\n this._submitted = false;\r\n }\r\n } catch (error) {\r\n console.log('ERROR', error)\r\n }\r\n }\r\n\r\n async onClose() {\r\n this._companyAdminsService.markCompanyAdminForOthersAsUpdated(this._companyAdmin, false);\r\n this._submitted = false;\r\n this._companyAdminForm.reset();\r\n }\r\n}\r\n","export * from './company-admin-edit-popup.component';","import { Component, OnInit, OnDestroy, AfterViewChecked } from '@angular/core';\r\nimport { CompanyUserInviteModel, CompanyUserViewModel } from '../../../models';\r\nimport { FormGroup, FormBuilder, Validators } from '@angular/forms';\r\nimport { Subscription } from 'rxjs';\r\n\r\nimport { LocationsDataSourceService, CompanyUsersDataSourceService } from '../../../services';\r\nimport { LocalStorageService, UserRoleEnum, ErrorModel, ErrorCodeEnum } from '../../../../common';\r\nimport { emailValidator } from '../../../../common/validators';\r\nimport { BasePopupBehavior } from '../common';\r\n\r\n@Component({\r\n selector: 'greensleeves-company-user-add-popup',\r\n templateUrl: './company-user-add-popup.component.html',\r\n styles: []\r\n})\r\nexport class CompanyUserAddPopupComponent extends BasePopupBehavior implements OnInit, OnDestroy, AfterViewChecked {\r\n _isHidden = true;\r\n _submitted = false;\r\n _isSubmit = false;\r\n _invalidEmail = false;\r\n _noLocationSelected = false;\r\n _companyUserForm: FormGroup;\r\n\r\n _btxLocations: { label: string, value: number }[];\r\n _ktxLocations: { label: string, value: number }[];\r\n _itxLocations: { label: string, value: number }[];\r\n private _locationsSubscription: Subscription;\r\n\r\n _role: UserRoleEnum;\r\n\r\n get _isCompanyAdmin() {\r\n return this._role === UserRoleEnum.CompanyAdmin;\r\n }\r\n\r\n constructor(\r\n private _formBuilder: FormBuilder,\r\n private _locationsService: LocationsDataSourceService,\r\n private _localStorageService: LocalStorageService,\r\n private _companyUsersService: CompanyUsersDataSourceService,\r\n ) {\r\n super();\r\n }\r\n\r\n ngOnInit() {\r\n super.ngOnInit();\r\n const loginInfo = this._localStorageService.getLoginInfo();\r\n this._role = loginInfo ? loginInfo.role : null;\r\n if (this._isCompanyAdmin) {\r\n this._locationsService.getKtxBtxItxLocationForCompany(loginInfo.companyId);\r\n\r\n this._locationsSubscription = this._locationsService.btxLocationsForCompany$.subscribe(data => {\r\n if (data) {\r\n this._btxLocations = data.map(x => ({ label: x.locationName, value: x.id }));\r\n }\r\n });\r\n\r\n this._locationsSubscription = this._locationsService.ktxLocationsForCompany$.subscribe(data => {\r\n if (data) {\r\n this._ktxLocations = data.map(x => ({ label: x.locationName, value: x.id }));\r\n }\r\n });\r\n\r\n this._locationsSubscription = this._locationsService.itxLocationsForCompany$.subscribe(data => {\r\n if (data) {\r\n this._itxLocations = data.map(x => ({ label: x.locationName, value: x.id }));\r\n }\r\n });\r\n }\r\n\r\n this._companyUserForm = this._formBuilder.group({\r\n email: [\r\n '',\r\n Validators.compose([\r\n Validators.required,\r\n Validators.email,\r\n emailValidator(),\r\n Validators.minLength(3),\r\n Validators.maxLength(50),\r\n ])\r\n ],\r\n ...(this._isCompanyAdmin ? {\r\n btxLocationIds: [\r\n '',\r\n Validators.compose([\r\n ])\r\n ],\r\n } : {}),\r\n ...(this._isCompanyAdmin ? {\r\n ktxLocationIds: [\r\n '',\r\n Validators.compose([\r\n ])\r\n ],\r\n } : {}),\r\n ...(this._isCompanyAdmin ? {\r\n itxLocationIds: [\r\n '',\r\n Validators.compose([\r\n ])\r\n ],\r\n } : {}),\r\n });\r\n\r\n this._companyUserForm.valueChanges.subscribe(() => this._invalidEmail = false);\r\n }\r\n\r\n ngOnDestroy() {\r\n super.ngOnDestroy();\r\n this._locationsSubscription && this._locationsSubscription.unsubscribe();\r\n this._locationsSubscription = null;\r\n }\r\n\r\n ngAfterViewChecked() {\r\n super.ngAfterViewChecked();\r\n }\r\n\r\n public show() {\r\n this.resetForm();\r\n this._isHidden = false;\r\n }\r\n\r\n async onSubmit() {\r\n this._submitted = true;\r\n this._noLocationSelected = false;\r\n const value = this._companyUserForm.value as CompanyUserInviteModel;\r\n\r\n if (this._companyUserForm.invalid || this._invalidEmail) {\r\n if ((!value.btxLocationIds || value.btxLocationIds.length === 0) && (!value.ktxLocationIds || value.ktxLocationIds.length === 0) && (!value.itxLocationIds || value.itxLocationIds.length === 0)) {\r\n this._noLocationSelected = true;\r\n }\r\n\r\n return;\r\n }\r\n\r\n if ((!value.btxLocationIds || value.btxLocationIds.length === 0) && (!value.ktxLocationIds || value.ktxLocationIds.length === 0) && (!value.itxLocationIds || value.itxLocationIds.length === 0)) {\r\n this._noLocationSelected = true;\r\n return;\r\n }\r\n\r\n this._companyUsersService.invite(value)\r\n .then((response: CompanyUserViewModel) => {\r\n if (response instanceof ErrorModel && response.code === ErrorCodeEnum.UserAlreadyExist) {\r\n this._isSubmit = false;\r\n this._invalidEmail = true;\r\n } else if (response) {\r\n const loginInfo = this._localStorageService.getLoginInfo();\r\n this._companyUsersService.get(loginInfo.companyId);\r\n this.resetForm();\r\n }\r\n })\r\n }\r\n\r\n private resetForm() {\r\n this._submitted = false;\r\n this._isSubmit = false;\r\n this._isHidden = true;\r\n this._noLocationSelected = false;\r\n this._companyUserForm.reset();\r\n this._companyUserForm.markAsUntouched();\r\n Object.keys(this._companyUserForm.controls).forEach((name) => {\r\n const control = this._companyUserForm.controls[name];\r\n control.setErrors(null);\r\n });\r\n }\r\n}\r\n","export * from './company-user-add-popup.component';","import { Component, OnInit } from '@angular/core';\r\nimport { CompanyUserViewModel } from '../../../models';\r\nimport { CompanyUsersDataSourceService } from '../../../services';\r\n\r\n@Component({\r\n selector: 'greensleeves-company-user-delete-popup',\r\n templateUrl: './company-user-delete-popup.component.html',\r\n styles: []\r\n})\r\n\r\nexport class CompanyUserDeletePopupComponent implements OnInit {\r\n _isHidden = true;\r\n _companyUser: CompanyUserViewModel;\r\n\r\n constructor(\r\n private _companyUserDataSourceService: CompanyUsersDataSourceService,\r\n ) { }\r\n\r\n ngOnInit() {\r\n }\r\n\r\n public show(companyUser: CompanyUserViewModel) {\r\n this._isHidden = false;\r\n this._companyUser = companyUser;\r\n }\r\n\r\n async onSubmit() {\r\n const result = await this._companyUserDataSourceService.delete(this._companyUser.id);\r\n if (result != null){\r\n this._isHidden = true;\r\n this._companyUser = null;\r\n }\r\n }\r\n\r\n onCancel() {\r\n this._isHidden = true;\r\n this._companyUser = null;\r\n }\r\n}","export * from './company-user-delete-popup.component';","import { Component, OnInit, OnDestroy, AfterViewChecked } from '@angular/core';\r\nimport { FormGroup, FormBuilder, Validators } from '@angular/forms';\r\nimport { Subscription } from 'rxjs';\r\n\r\nimport { CompanyUserPostModel, CompanyUserViewModel } from '../../../models';\r\nimport { CompanyUsersDataSourceService, LocationsDataSourceService } from '../../../services';\r\nimport { LocalStorageService, UserRoleEnum } from '../../../../common';\r\nimport { UserStatusEnum } from '../../../enums';\r\nimport { BasePopupBehavior } from '../common';\r\n\r\n@Component({\r\n selector: 'greensleeves-company-user-edit-popup',\r\n templateUrl: './company-user-edit-popup.component.html',\r\n styles: []\r\n})\r\nexport class CompanyUserEditPopupComponent extends BasePopupBehavior implements OnInit, OnDestroy, AfterViewChecked {\r\n _isHidden = true;\r\n _submitted = false;\r\n _noLocationSelected = false;\r\n _companyUser: CompanyUserViewModel;\r\n _companyUserForm: FormGroup;\r\n _selectedlocatinos;\r\n _selectedBtxLocations;\r\n _selectedKtxLocations;\r\n _selectedItxLocations;\r\n _selectedStatus;\r\n _btxLocations: { label: string, value: number }[];\r\n _ktxLocations: { label: string, value: number }[];\r\n _itxLocations: { label: string, value: number }[];\r\n private _locationsSubscription: Subscription;\r\n\r\n _role: UserRoleEnum;\r\n\r\n get _isCompanyAdmin() {\r\n return this._role === UserRoleEnum.CompanyAdmin;\r\n }\r\n\r\n constructor(\r\n private _formBuilder: FormBuilder,\r\n private _companyUsersService: CompanyUsersDataSourceService,\r\n private _locationsService: LocationsDataSourceService,\r\n private _localStorageService: LocalStorageService\r\n ) {\r\n super();\r\n }\r\n\r\n ngOnInit() {\r\n super.ngOnInit();\r\n this._locationsSubscription = this._locationsService.btxLocationsForCompany$.subscribe(data => {\r\n if (data) {\r\n this._btxLocations = data.map(x => ({ label: x.locationName, value: x.id }));\r\n }\r\n });\r\n\r\n this._locationsSubscription = this._locationsService.ktxLocationsForCompany$.subscribe(data => {\r\n if (data) {\r\n this._ktxLocations = data.map(x => ({ label: x.locationName, value: x.id }));\r\n }\r\n });\r\n\r\n this._locationsSubscription = this._locationsService.itxLocationsForCompany$.subscribe(data => {\r\n if (data) {\r\n this._itxLocations = data.map(x => ({ label: x.locationName, value: x.id }));\r\n }\r\n });\r\n\r\n const loginInfo = this._localStorageService.getLoginInfo();\r\n this._role = loginInfo ? loginInfo.role : null;\r\n }\r\n\r\n ngAfterViewChecked() {\r\n super.ngAfterViewChecked();\r\n }\r\n\r\n ngOnDestroy() {\r\n super.ngOnDestroy();\r\n this._locationsSubscription && this._locationsSubscription.unsubscribe();\r\n this._locationsSubscription = null;\r\n }\r\n\r\n public show(companyUser: CompanyUserViewModel) {\r\n this._companyUser = companyUser;\r\n this._selectedStatus = UserStatusEnum[companyUser.status];\r\n this._selectedBtxLocations = this._companyUser.arduinoLocations.map(l => l.id);\r\n this._selectedKtxLocations = this._companyUser.raspberryLocations.map(l => l.id);\r\n this._selectedItxLocations = this._companyUser.itxLocations.map(l => l.id)\r\n this._selectedlocatinos = this._selectedBtxLocations + this._selectedKtxLocations + this._selectedItxLocations;\r\n\r\n this._companyUserForm = this._formBuilder.group({\r\n firstName: [\r\n this._companyUser.firstName,\r\n Validators.compose([\r\n Validators.required,\r\n Validators.minLength(3),\r\n Validators.maxLength(50),\r\n ])\r\n ],\r\n lastName: [\r\n this._companyUser.lastName,\r\n Validators.compose([\r\n Validators.required,\r\n Validators.minLength(3),\r\n Validators.maxLength(50),\r\n ])\r\n ],\r\n ...(this._isCompanyAdmin ? {\r\n btxLocationIds: [\r\n this._selectedBtxLocations,\r\n Validators.compose([\r\n ])\r\n ],\r\n } : {}),\r\n ...(this._isCompanyAdmin ? {\r\n ktxLocationIds: [\r\n this._selectedKtxLocations,\r\n Validators.compose([\r\n ])\r\n ],\r\n } : {}),\r\n ...(this._isCompanyAdmin ? {\r\n itxLocationIds: [\r\n this._selectedItxLocations,\r\n Validators.compose([\r\n ])\r\n ],\r\n } : {}),\r\n ...(this._isCompanyAdmin ? {\r\n status: [\r\n this._companyUser.status,\r\n Validators.compose([\r\n Validators.required\r\n ])\r\n ],\r\n } : {})\r\n });\r\n this._isHidden = false;\r\n }\r\n\r\n async onSubmit() {\r\n this._submitted = true;\r\n this._noLocationSelected = false;\r\n\r\n let value = {\r\n ...this._companyUserForm.value,\r\n status: UserStatusEnum[this._companyUserForm.value.status],\r\n id: this._companyUser.id,\r\n ...(this._isCompanyAdmin ? {\r\n locationIds: this._companyUserForm.value.locationIds\r\n } : {})\r\n } as CompanyUserPostModel;\r\n if (this._companyUserForm.invalid) {\r\n if ((!value.btxLocationIds || value.btxLocationIds.length === 0) && (!value.ktxLocationIds || value.ktxLocationIds.length === 0) && (!value.itxLocationIds || value.itxLocationIds.length === 0)) {\r\n this._noLocationSelected = true;\r\n }\r\n\r\n return;\r\n }\r\n\r\n if ((!value.btxLocationIds || value.btxLocationIds.length === 0) && (!value.ktxLocationIds || value.ktxLocationIds.length === 0) && (!value.itxLocationIds || value.itxLocationIds.length === 0)) {\r\n this._noLocationSelected = true;\r\n return;\r\n }\r\n\r\n try {\r\n const result = await this._companyUsersService.edit(value);\r\n if (result) {\r\n this._isHidden = true;\r\n this._submitted = false;\r\n }\r\n } catch (error) {\r\n console.log('ERROR', error)\r\n }\r\n }\r\n\r\n async onCancel() {\r\n this._companyUsersService.markCompanyUserForOthersAsUpdated(this._companyUser, false);\r\n this._noLocationSelected = false;\r\n this._submitted = false;\r\n this._isHidden = true;\r\n this._selectedStatus = null;\r\n this._companyUser = null;\r\n this._companyUserForm.reset;\r\n this.ngOnDestroy();\r\n }\r\n}\r\n","export * from './company-user-edit-popup.component';","import { Component, EventEmitter, OnInit } from '@angular/core';\r\nimport { QuoteFlatStorageReportModel, QuoteRoundStorageReportModel, ReportComputationSheetModel } from '@models';\r\nimport { AqsReportDatasourceService } from '@services';\r\n\r\nimport { ErrorModel } from '../../../../common';\r\nimport { AqsReportFormatFileLabel } from '../../../constants';\r\nimport { AqsSessionTypeEnum, ReportFormatEnum } from '../../../enums';\r\n\r\n@Component({\r\n selector: 'greensleeves-computation-sheet-report-popup',\r\n templateUrl: './computation-sheet-report-popup.component.html',\r\n styles: []\r\n})\r\nexport class ComputationSheetReportPopupComponent implements OnInit {\r\n public exportCompleted = new EventEmitter();\r\n private reportComputationSheetModel: ReportComputationSheetModel;\r\n private quoteRoundStorageReportModel: QuoteRoundStorageReportModel;\r\n private quoteFlatStorageReportModel: QuoteFlatStorageReportModel;\r\n private quoteStorageIds: number[];\r\n private quoteNumbers: string[];\r\n\r\n _session: AqsSessionTypeEnum;\r\n _sessionTypeEnum = AqsSessionTypeEnum;\r\n\r\n _isHidden = true;\r\n _formatReport: { label: string, value: number }[] = [];\r\n _selectedFormat: ReportFormatEnum;\r\n _isReportRun = false;\r\n _date: Date;\r\n\r\n constructor(\r\n private _aqsReportService: AqsReportDatasourceService) { }\r\n\r\n ngOnInit() {\r\n this._date = new Date();\r\n }\r\n\r\n async download() {\r\n this._isReportRun = true;\r\n\r\n let result: any;\r\n\r\n switch (this._session) {\r\n case AqsSessionTypeEnum.ComputationSheetType:\r\n this.reportComputationSheetModel.reportFormat = this._selectedFormat;\r\n this.reportComputationSheetModel.timeZone = Intl.DateTimeFormat().resolvedOptions().timeZone;\r\n this.reportComputationSheetModel.printDate = this._date;\r\n result = await this._aqsReportService.downloadReportComputationSheetFile(this.reportComputationSheetModel);\r\n break;\r\n case AqsSessionTypeEnum.RoundSessionType:\r\n this.quoteRoundStorageReportModel.reportFormat = this._selectedFormat;\r\n this.quoteRoundStorageReportModel.timeZone = Intl.DateTimeFormat().resolvedOptions().timeZone;\r\n this.quoteRoundStorageReportModel.printDate = this._date;\r\n result = await this._aqsReportService.downloadReportQuoteRoundStorageFile(this.quoteRoundStorageReportModel);\r\n break;\r\n case AqsSessionTypeEnum.FlatSessionType:\r\n this.quoteFlatStorageReportModel.reportFormat = this._selectedFormat;\r\n this.quoteFlatStorageReportModel.timeZone = Intl.DateTimeFormat().resolvedOptions().timeZone;\r\n this.quoteFlatStorageReportModel.printDate = this._date;\r\n result = await this._aqsReportService.downloadReportQuoteFlatStorageFile(this.quoteFlatStorageReportModel);\r\n break;\r\n default:\r\n let format = this._selectedFormat;\r\n let timeZone = Intl.DateTimeFormat().resolvedOptions().timeZone;\r\n result = await this._aqsReportService.downloadReportListOfQuoteFile(\r\n this.quoteStorageIds,\r\n format,\r\n timeZone,\r\n this._date);\r\n break;\r\n }\r\n\r\n if (!(result instanceof ErrorModel)) {\r\n let fileName = this.generateFileName();\r\n let url = URL.createObjectURL(result);\r\n let downloadLink = document.createElement('a');\r\n downloadLink.href = url;\r\n downloadLink.download = fileName;\r\n downloadLink.click();\r\n this.onCancel();\r\n this._isReportRun = false;\r\n this.exportCompleted.emit(true);\r\n }\r\n else {\r\n this._isReportRun = false\r\n }\r\n }\r\n\r\n public showDownloadComputationSheetReport(reportComputationSheetModel: ReportComputationSheetModel) {\r\n this.initFormatLabels();\r\n this.reportComputationSheetModel = reportComputationSheetModel;\r\n this._session = AqsSessionTypeEnum.ComputationSheetType;\r\n this._isHidden = false;\r\n }\r\n\r\n public showDownloadQuoteRoundStorageReport(quoteStorage: QuoteRoundStorageReportModel) {\r\n this.initFormatLabels();\r\n this.quoteRoundStorageReportModel = quoteStorage;\r\n this._session = AqsSessionTypeEnum.RoundSessionType;\r\n this._isHidden = false;\r\n }\r\n\r\n public showDownloadQuoteFlatStorageReport(quoteStorage: QuoteFlatStorageReportModel) {\r\n this.initFormatLabels();\r\n this.quoteFlatStorageReportModel = quoteStorage;\r\n this._session = AqsSessionTypeEnum.FlatSessionType;\r\n this._isHidden = false;\r\n }\r\n\r\n public showDownloadListOfQuoteReport(quoteStorageIds: number[], quoteNumbers: string[]) {\r\n this.initFormatLabels();\r\n this.quoteStorageIds = quoteStorageIds;\r\n this.quoteNumbers = quoteNumbers;\r\n this._isHidden = false;\r\n }\r\n\r\n onCancel() {\r\n this._date = new Date();\r\n this._isHidden = true;\r\n }\r\n\r\n private generateFileName(): string {\r\n let name: string = 'Quote_';\r\n\r\n switch (this._session) {\r\n case AqsSessionTypeEnum.ComputationSheetType:\r\n name += this.reportComputationSheetModel.customerStorageLocation.quoteNumber;\r\n break;\r\n case AqsSessionTypeEnum.RoundSessionType:\r\n name += this.quoteRoundStorageReportModel.coverSheet.quoteNumber;\r\n break;\r\n case AqsSessionTypeEnum.FlatSessionType:\r\n name += this.quoteFlatStorageReportModel.coverSheet.quoteNumber;\r\n break;\r\n default:\r\n let quoteNumbers = [... new Set(this.quoteNumbers)];\r\n if (quoteNumbers.length == 1) {\r\n name += quoteNumbers[0];\r\n } else {\r\n name = 'Quotes';\r\n for (let i = 0; i < quoteNumbers.length; i++) {\r\n name += `_${quoteNumbers[i]}`;\r\n }\r\n }\r\n break;\r\n }\r\n\r\n return `${name.replace(/\\s+/g, '')}-${new Date().toLocaleDateString()}.${AqsReportFormatFileLabel[this._selectedFormat]}`;\r\n }\r\n\r\n private initFormatLabels() {\r\n this._formatReport = [];\r\n\r\n for (const [key, value] of Object.entries(AqsReportFormatFileLabel)) {\r\n\r\n let label = value as string;\r\n\r\n this._formatReport.push({ label: label, value: Number(key) })\r\n }\r\n\r\n this._selectedFormat = this._formatReport[0].value;\r\n }\r\n}\r\n","export * from './computation-sheet-report-popup.component';","import { Component, EventEmitter, OnInit } from '@angular/core';\r\n\r\nimport { QuoteFlatStorageReportModel, QuoteRoundStorageReportModel, ReportComputationSheetModel } from '@models';\r\nimport { AqsReportDatasourceService } from '@services';\r\nimport { ErrorModel } from 'src/app/common';\r\nimport { AqsReportFormatFileLabel } from '../../../constants';\r\nimport { AqsSessionTypeEnum, ReportFormatEnum } from '../../../enums';\r\n\r\n\r\n@Component({\r\n selector: 'greensleeves-computation-sheet-share-report-popup',\r\n templateUrl: './computation-sheet-share-report-popup.component.html',\r\n styles: []\r\n})\r\nexport class ComputationSheetShareReportPopupComponent implements OnInit {\r\n public shareCompleted = new EventEmitter();\r\n private reportComputationSheetModel: ReportComputationSheetModel;\r\n private quoteRoundStorageReportModel: QuoteRoundStorageReportModel;\r\n private quoteFlatStorageReportModel: QuoteFlatStorageReportModel;\r\n private quoteStorageIds: number[];\r\n private quoteNumbers: string[];\r\n\r\n _session: AqsSessionTypeEnum;\r\n _sessionTypeEnum = AqsSessionTypeEnum;\r\n\r\n _isHidden = true;\r\n _formatReport: { label: string, value: number }[] = [];\r\n _selectedFormat: ReportFormatEnum;\r\n _isReportRun = false;\r\n _date: Date;\r\n\r\n private subject: string;\r\n\r\n constructor(private _aqsReportService: AqsReportDatasourceService) { }\r\n\r\n ngOnInit() {\r\n this._date = new Date();\r\n }\r\n\r\n async onClickShare() {\r\n this._isReportRun = true;\r\n\r\n let result: any;\r\n\r\n switch (this._session) {\r\n case AqsSessionTypeEnum.ComputationSheetType:\r\n this.reportComputationSheetModel.reportFormat = this._selectedFormat;\r\n this.reportComputationSheetModel.timeZone = Intl.DateTimeFormat().resolvedOptions().timeZone;\r\n this.reportComputationSheetModel.printDate = this._date;\r\n result = await this._aqsReportService.getComputationSheetReportInBlob(this.reportComputationSheetModel);\r\n break;\r\n case AqsSessionTypeEnum.RoundSessionType:\r\n this.quoteRoundStorageReportModel.reportFormat = this._selectedFormat;\r\n this.quoteRoundStorageReportModel.timeZone = Intl.DateTimeFormat().resolvedOptions().timeZone;\r\n this.quoteRoundStorageReportModel.printDate = this._date;\r\n result = await this._aqsReportService.getQuoteRoundStorageReportInBlob(this.quoteRoundStorageReportModel);\r\n break;\r\n case AqsSessionTypeEnum.FlatSessionType:\r\n this.quoteFlatStorageReportModel.reportFormat = this._selectedFormat;\r\n this.quoteFlatStorageReportModel.timeZone = Intl.DateTimeFormat().resolvedOptions().timeZone;\r\n this.quoteFlatStorageReportModel.printDate = this._date;\r\n result = await this._aqsReportService.getQuoteFlatStorageReportInBlob(this.quoteFlatStorageReportModel);\r\n break;\r\n default:\r\n let format = this._selectedFormat;\r\n let timeZone = Intl.DateTimeFormat().resolvedOptions().timeZone;\r\n result = await this._aqsReportService.getListOfQuoteReportInBlob(\r\n this.quoteStorageIds,\r\n format,\r\n timeZone,\r\n this._date);\r\n break;\r\n }\r\n\r\n if (!(result instanceof ErrorModel)) {\r\n let bodyText = this.generateEmailText(result);\r\n let email = document.createElement('a');\r\n email.href = `mailto:?to=&subject=${this.getStringMailTo(this.subject)}&body=${this.getStringMailTo(bodyText)}`;\r\n email.click();\r\n this.onCancel();\r\n this.shareCompleted.emit(true);\r\n } else {\r\n this._isReportRun = false;\r\n }\r\n }\r\n\r\n showDownloadComputationSheetReport(reportComputationSheetModel: ReportComputationSheetModel) {\r\n this.initFormatLabels();\r\n this.reportComputationSheetModel = reportComputationSheetModel;\r\n this._session = AqsSessionTypeEnum.ComputationSheetType;\r\n this.subject = `${reportComputationSheetModel.customerCompany.name}, ${reportComputationSheetModel.customerCompany.companyName}. ${reportComputationSheetModel.customerStorageLocation.quoteNumber}.`\r\n this._isHidden = false;\r\n }\r\n\r\n public showDownloadQuoteRoundStorageReport(quoteStorage: QuoteRoundStorageReportModel) {\r\n this.initFormatLabels();\r\n this.quoteRoundStorageReportModel = quoteStorage;\r\n this._session = AqsSessionTypeEnum.RoundSessionType;\r\n this.subject = `${quoteStorage.coverSheet.customerName}, ${quoteStorage.coverSheet.companyName}. ${quoteStorage.coverSheet.quoteNumber}.`\r\n this._isHidden = false;\r\n }\r\n\r\n public showDownloadQuoteFlatStorageReport(quoteStorage: QuoteFlatStorageReportModel) {\r\n this.initFormatLabels();\r\n this.quoteFlatStorageReportModel = quoteStorage;\r\n this._session = AqsSessionTypeEnum.FlatSessionType;\r\n this.subject = `${quoteStorage.coverSheet.customerName}, ${quoteStorage.coverSheet.companyName}. ${quoteStorage.coverSheet.quoteNumber}.`\r\n this._isHidden = false;\r\n }\r\n\r\n public showDownloadListOfQuoteReport(quoteStorageIds: number[], quoteNumbers: string[]) {\r\n this.initFormatLabels();\r\n this.quoteStorageIds = quoteStorageIds;\r\n this.quoteNumbers = quoteNumbers;\r\n this._isHidden = false;\r\n this.subject = '';\r\n }\r\n\r\n onCancel() {\r\n this._isReportRun = false;\r\n this._isHidden = true;\r\n this.subject = '';\r\n this._date = new Date();\r\n }\r\n\r\n private generateEmailText(link: string): string {\r\n let quote: string = 'Quote ';\r\n\r\n switch (this._session) {\r\n case AqsSessionTypeEnum.ComputationSheetType:\r\n quote += `${this.reportComputationSheetModel.customerStorageLocation.quoteNumber} has`;\r\n break;\r\n case AqsSessionTypeEnum.RoundSessionType:\r\n quote += `${this.quoteRoundStorageReportModel.coverSheet.quoteNumber} has`;\r\n break;\r\n case AqsSessionTypeEnum.FlatSessionType:\r\n quote += `${this.quoteFlatStorageReportModel.coverSheet.quoteNumber} has`;\r\n break;\r\n default:\r\n let quoteNumbers = [... new Set(this.quoteNumbers)];\r\n if (quoteNumbers.length == 1) {\r\n quote += `${quoteNumbers[0]} has`;\r\n } else {\r\n quote = `Quotes ${quoteNumbers[0]}`;\r\n for (let i = 1; i < quoteNumbers.length; i++) {\r\n quote += `, ${quoteNumbers[i]}`;\r\n }\r\n\r\n quote += ' have'\r\n }\r\n break;\r\n }\r\n\r\n return `Dear Customer:\\n${quote} been shared with you from Rolfes @ Boone.` +\r\n `\\n\\nPlease find the quote at:\\n${link}` +\r\n `\\n\\nFor additional inquiries please contact us at info@rolfesatboone.com or call 1.800.265.2010.` +\r\n `\\n\\nThank you for your interest, Rolfes @ Boone.`\r\n }\r\n\r\n private getStringMailTo(text: string): string {\r\n text = text.replace(/%/g, \"%25\");\r\n text = text.replace(/\\\\u0026/g, \"%26\");\r\n text = text.replace(/\\n/g, \"%0D%0A\");\r\n text = text.replace(/ /g, \"%20\");\r\n text = text.replace(/\"/g, \"%22\");\r\n text = text.replace(/'/g, \"%27\");\r\n text = text.replace(/&/g, \"%26\");\r\n text = text.replace(/\\t/g, \"%09\");\r\n\r\n return text;\r\n }\r\n\r\n private initFormatLabels() {\r\n this._formatReport = [];\r\n\r\n for (const [key, value] of Object.entries(AqsReportFormatFileLabel)) {\r\n\r\n let label = value as string;\r\n\r\n this._formatReport.push({ label: label, value: Number(key) })\r\n }\r\n\r\n this._selectedFormat = this._formatReport[0].value;\r\n }\r\n}","export * from './computation-sheet-share-report-popup.component';","import { Component, EventEmitter, OnInit, Output } from '@angular/core';\r\n\r\nimport { BasePopupBehavior } from '../common';\r\nimport { ConfirmationDialogEnum } from './../../../enums';\r\n\r\n@Component({\r\n selector: 'greensleeves-confirmation-popup',\r\n templateUrl: './confirmation-popup.component.html',\r\n})\r\nexport class ConfirmationPopupComponent extends BasePopupBehavior implements OnInit {\r\n @Output() onConfirmationClick: EventEmitter = new EventEmitter()\r\n _mainDialogTitle: string = '';\r\n _secondDialogTitle: string = '';\r\n _confirmButtonText: string = 'Delete';\r\n _cancelButtonText: string = 'Cancel';\r\n _isHidden = true;\r\n\r\n constructor() { super(); }\r\n\r\n ngOnInit() {\r\n }\r\n\r\n show(mainDialogTitle, secondTitle, confirmButtonText: string = 'Delete', cancelButtonText: string = 'Cancel') {\r\n this._isHidden = false;\r\n this._mainDialogTitle = mainDialogTitle;\r\n this._secondDialogTitle = secondTitle;\r\n this._confirmButtonText = confirmButtonText;\r\n this._cancelButtonText = cancelButtonText;\r\n }\r\n\r\n onCancel() {\r\n this.closeDialog();\r\n this.onConfirmationClick.emit(ConfirmationDialogEnum.Cancel);\r\n }\r\n\r\n onConfirm() {\r\n this.closeDialog();\r\n this.onConfirmationClick.emit(ConfirmationDialogEnum.Confirmation);\r\n }\r\n\r\n private closeDialog() {\r\n this._isHidden = true;\r\n this._mainDialogTitle = '';\r\n this._secondDialogTitle = '';\r\n }\r\n}\r\n","export * from './confirmation-popup.component';","import { Component, OnDestroy, OnInit } from '@angular/core';\r\nimport { Subscription } from 'rxjs';\r\n\r\nimport { BasePopupBehavior } from '../common';\r\nimport { ColumnTypeEnum } from './../../../enums';\r\nimport { ProjectEnum } from './../../../enums/project.enum';\r\nimport { DeviceFileLogInfoViewModel } from './../../../models';\r\nimport { DeviceLogDatasourceService, LocationsBtxDataSourceService, LocationsItxDatasourceService, LocationsKtxDataSourceService, UpdaterDeviceDatasourceService } from './../../../services';\r\n\r\n@Component({\r\n selector: 'greensleeves-device-communication-popup',\r\n templateUrl: './device-communication-popup.component.html',\r\n styleUrls: []\r\n})\r\nexport class DeviceCommunicationPopupComponent extends BasePopupBehavior implements OnInit, OnDestroy {\r\n static FILE_NAME_WITHOUT_DEVICE_ID = 'fileNameWithoutDeviceId';\r\n static CREATING_DATE_KEY = 'createdDate';\r\n static SORT_ORDER_DEFAULT = -1;\r\n\r\n _columnTypeEnum = ColumnTypeEnum;\r\n _sortField = DeviceCommunicationPopupComponent.CREATING_DATE_KEY;\r\n _sortOrder = DeviceCommunicationPopupComponent.SORT_ORDER_DEFAULT;\r\n _isHidden = true;\r\n _locationName: string = '';\r\n _gridData: DeviceFileLogInfoViewModel[];\r\n _selectedFiles: DeviceFileLogInfoViewModel[] = [];\r\n _loading = true;\r\n _isDownloadArchive = false;\r\n _isDownloadFile = 'isDownload';\r\n _isDeiveceTwinHasLogLink: boolean = false;\r\n _addLinkToTwin: boolean = false;\r\n _availableProjects: string = null;\r\n\r\n private deviceInfo: { locationName: string, locationId: number, project: ProjectEnum, deviceId: string };\r\n private subscrible: Subscription;\r\n\r\n _columnsView = [\r\n { header: 'Selected', columnType: ColumnTypeEnum.QuoteSelected, dataField: 'isSelected', width: 100 },\r\n { header: 'File', columnType: ColumnTypeEnum.FileName, dataField: DeviceCommunicationPopupComponent.FILE_NAME_WITHOUT_DEVICE_ID, width: 200 },\r\n { header: 'Last modified', columnType: ColumnTypeEnum.Date, dataField: 'lastModifiedDate', width: 150 },\r\n { header: 'Creation date', columnType: ColumnTypeEnum.Date, dataField: DeviceCommunicationPopupComponent.CREATING_DATE_KEY, width: 150 },\r\n { header: 'Size', columnType: ColumnTypeEnum.Details, dataField: 'size', width: 100 },\r\n { header: '', columnType: ColumnTypeEnum.DownloadConnectionFile, width: 150 },\r\n ];\r\n\r\n constructor(\r\n private _locationsItxDataSourceService: LocationsItxDatasourceService,\r\n private _locationsKtxDataSourceService: LocationsKtxDataSourceService,\r\n private _locationsBtxDataSourceService: LocationsBtxDataSourceService,\r\n private _updaterDataSourceSerice: UpdaterDeviceDatasourceService,\r\n private _deviceLogDatasource: DeviceLogDatasourceService,\r\n ) {\r\n super();\r\n }\r\n\r\n ngOnInit() {\r\n this.subscrible = this._deviceLogDatasource.deviceLogInfo$.subscribe(item => {\r\n this._gridData = item.deviceFileLogInfo;\r\n this._isDeiveceTwinHasLogLink = item.isTwinHasLogLink;\r\n this._loading = false;\r\n })\r\n }\r\n\r\n ngOnDestroy() {\r\n this.subscrible.unsubscribe();\r\n }\r\n\r\n onShow(deviceInfo: { locationName: string, locationId: number, project: ProjectEnum, deviceId: string }) {\r\n this.deviceInfo = deviceInfo;\r\n this._deviceLogDatasource.getLogsInfoList(deviceInfo.deviceId);\r\n this._locationName = this.deviceInfo.locationName;\r\n this._selectedFiles = [];\r\n this._isHidden = false;\r\n this._loading = true;\r\n }\r\n\r\n onShowUpdaterDevice(deviceInfo: { locationName: string, locationId: number, project: ProjectEnum, deviceId: string }, availableProjects: ProjectEnum){\r\n this.onShow(deviceInfo);\r\n this._availableProjects = this.flagToString(availableProjects);\r\n console.log(this._availableProjects);\r\n }\r\n\r\n onCancel() {\r\n this._isHidden = true;\r\n this.deviceInfo = null;\r\n this._selectedFiles = [];\r\n this._gridData = [];\r\n this._locationName = '';\r\n this._loading = false;\r\n this._availableProjects = null;\r\n }\r\n\r\n async onClickDownloadConfigFile() {\r\n let result;\r\n switch (this.deviceInfo.project) {\r\n case ProjectEnum.Itx:\r\n result = await this._locationsItxDataSourceService.downloadConnectionFile(this.deviceInfo.locationId);\r\n break;\r\n case ProjectEnum.Ktx:\r\n result = await this._locationsKtxDataSourceService.downloadConnectionFile(this.deviceInfo.locationId);\r\n break;\r\n case ProjectEnum.Btx:\r\n result = await this._locationsBtxDataSourceService.downloadConnectionFile(this.deviceInfo.locationId);\r\n break;\r\n case ProjectEnum.Updater:\r\n result = await this._updaterDataSourceSerice.downloadConnectionFile(this.deviceInfo.deviceId);\r\n break;\r\n default:\r\n return;\r\n }\r\n\r\n if (result instanceof Blob) {\r\n const url = URL.createObjectURL(result as Blob);\r\n let downloadLink = document.createElement('a');\r\n downloadLink.href = url;\r\n downloadLink.download = 'configuration.zip';\r\n downloadLink.click();\r\n }\r\n }\r\n\r\n async onDownloadFileLog(fileInfo: DeviceFileLogInfoViewModel) {\r\n fileInfo[this._isDownloadFile] = true;\r\n let result = await this._deviceLogDatasource.downloadLogFile(this.deviceInfo.deviceId, fileInfo.fileName);\r\n if (result instanceof Blob) {\r\n const url = URL.createObjectURL(result as Blob);\r\n let downloadLink = document.createElement('a');\r\n downloadLink.href = url;\r\n downloadLink.download = fileInfo.fileName;\r\n downloadLink.click();\r\n }\r\n fileInfo[this._isDownloadFile] = false;\r\n }\r\n\r\n onSelectLog(file: DeviceFileLogInfoViewModel) {\r\n if (this._selectedFiles.includes(file)) {\r\n this._selectedFiles = this._selectedFiles.filter(x => x != file);\r\n }\r\n else {\r\n this._selectedFiles.push(file);\r\n }\r\n }\r\n\r\n async onDownloadSelectedFileLogs() {\r\n if (this._selectedFiles.length > 0) {\r\n this._isDownloadArchive = true;\r\n this._selectedFiles = this._selectedFiles.sort((a, b) => new Date(a.createdDate).getTime() - new Date(b.createdDate).getTime());\r\n let fileList = this._selectedFiles.map(x => x.fileName);\r\n\r\n let result = await this._deviceLogDatasource.downloadLogFiles(this.deviceInfo.deviceId, fileList);\r\n if (result instanceof Blob) {\r\n let fileName: string = `${this.deviceInfo.deviceId}_${new Date(this._selectedFiles[0].createdDate).getDate()}-${new Date(this._selectedFiles[0].createdDate).getMonth() + 1}-${new Date(this._selectedFiles[0].createdDate).getFullYear()}`;\r\n if (this._selectedFiles.length > 1) {\r\n let lastIndex = this._selectedFiles.length - 1;\r\n fileName = fileName + `_${new Date(this._selectedFiles[lastIndex].createdDate).getDate()}-${new Date(this._selectedFiles[lastIndex].createdDate).getMonth() + 1}-${new Date(this._selectedFiles[lastIndex].createdDate).getFullYear()}`\r\n }\r\n fileName = fileName + '.zip';\r\n const url = URL.createObjectURL(result as Blob);\r\n let downloadLink = document.createElement('a');\r\n downloadLink.href = url;\r\n downloadLink.download = fileName;\r\n downloadLink.click();\r\n this.onClearSelected();\r\n }\r\n this._isDownloadArchive = false;\r\n }\r\n }\r\n\r\n onClearSelected() {\r\n this._gridData.forEach(item => {\r\n item['isSelected'] = false;\r\n });\r\n this._selectedFiles = [];\r\n }\r\n\r\n async onClickAddLink() {\r\n this._addLinkToTwin = true;\r\n let result = await this._deviceLogDatasource.addLogLinkToDeviceTwin(this.deviceInfo.deviceId);\r\n this._isDeiveceTwinHasLogLink = result;\r\n this._addLinkToTwin = false;\r\n }\r\n\r\n private flagToString(value: ProjectEnum): string {\r\n const flagNames = Object.keys(ProjectEnum)\r\n .filter((key) => isNaN(Number(key)))\r\n .filter((key) => ProjectEnum[key as keyof typeof ProjectEnum] !== ProjectEnum.None)\r\n .filter((key) => (value & ProjectEnum[key as keyof typeof ProjectEnum]) === ProjectEnum[key as keyof typeof ProjectEnum])\r\n .join(', ');\r\n \r\n return flagNames || 'None';\r\n }\r\n}\r\n","export * from './device-communication-popup.component';","import { Component, Input, OnDestroy, OnInit, OnChanges } from '@angular/core';\r\nimport { Subscription } from 'rxjs';\r\n\r\nimport { EmailServicePostModel, EmailServiceViewModel } from '@models';\r\nimport { BasePopupBehavior } from '../common';\r\nimport { FormBuilder, FormGroup, Validators } from '@angular/forms';\r\nimport { ConvertDataFunctions, ErrorModel, LocalStorageService } from '../../../../common';\r\nimport { EmailServiceDataSourceService } from '../../../services';\r\n\r\nimport { BtxEventTypesLabel, EmailServiceScheduleLable, ItxEventTypesLabel } from '../../../constants';\r\nimport { EmailServiceScheduleEnum, KtxEventTypeEnum } from '../../../enums';\r\n\r\n@Component({\r\n selector: 'greensleeves-email-service-add-edit-popup',\r\n templateUrl: './email-service-add-edit-popup.component.html',\r\n styles: []\r\n})\r\nexport class EmailServiceAddEditPopupComponent extends BasePopupBehavior implements OnInit, OnDestroy {\r\n @Input() _btxLocations: { label: string, value: number }[];\r\n @Input() _ktxLocations: { label: string, value: number }[];\r\n @Input() _itxLocations: { label: string, value: number }[];\r\n _isHidden = true;\r\n _isAddPopup: boolean = true;\r\n _emailServiceForm: FormGroup;\r\n _submitted: boolean = false;\r\n\r\n _btxEventTypesOprions: { label: string, value: number }[] = [];\r\n _ktxEventTypesOprions: { label: string, value: number }[] = [];\r\n _itxEventTypesOprions: { label: string, value: number }[] = [];\r\n _scheduleOptions: { label: string, value: number }[] = [];\r\n _scheduleTypes = EmailServiceScheduleEnum;\r\n\r\n private emailService: EmailServiceViewModel;\r\n private companyId: number;\r\n\r\n constructor(\r\n private _formBuilder: FormBuilder,\r\n private _localStorageService: LocalStorageService,\r\n private _emailServiceDatasource: EmailServiceDataSourceService,\r\n ) {\r\n super();\r\n }\r\n\r\n get _isSelectedLocations() {\r\n return this._emailServiceForm.controls.btxLocations.value.length > 0 || this._emailServiceForm.controls.ktxLocations.value.length > 0 || this._emailServiceForm.controls.itxLocations.value.length > 0;\r\n }\r\n\r\n ngOnInit() {\r\n\r\n for (const [key, value] of Object.entries(EmailServiceScheduleLable)) {\r\n this._scheduleOptions.push({ label: value, value: Number(key) });\r\n }\r\n\r\n for (const [key, value] of Object.entries(BtxEventTypesLabel)) {\r\n this._btxEventTypesOprions.push({ label: value, value: Number(key) });\r\n }\r\n\r\n this._ktxEventTypesOprions.push({ label: 'Alarm', value: KtxEventTypeEnum.Alarm });\r\n\r\n for (const [key, value] of Object.entries(ItxEventTypesLabel)) {\r\n this._itxEventTypesOprions.push({ label: value, value: Number(key) });\r\n }\r\n\r\n const info = this._localStorageService.getLoginInfo();\r\n this.companyId = info ? info.companyId : 0;\r\n }\r\n\r\n ngOnDestroy() {\r\n super.ngOnDestroy();\r\n }\r\n\r\n onShow(emailService: EmailServiceViewModel, addPopup: boolean = true) {\r\n this._isAddPopup = addPopup;\r\n this._isHidden = false;\r\n this.emailService = emailService;\r\n this.buildForm();\r\n }\r\n\r\n onCancel() {\r\n this._isHidden = true;\r\n this._submitted = false;\r\n this._emailServiceForm.reset();\r\n }\r\n\r\n needSelectEventTypes(locationControlName: string, eventTypeControlName: string): boolean {\r\n return this._emailServiceForm.controls[locationControlName].value.length > 0 && this._emailServiceForm.controls[eventTypeControlName].value.length == 0;\r\n }\r\n\r\n async onSubmit() {\r\n this._submitted = true;\r\n if (this._emailServiceForm.invalid || !this._isSelectedLocations || this.needSelectEventTypes('btxLocations', 'btxEventTypes') || this.needSelectEventTypes('ktxLocations', 'ktxEventTypes') || this.needSelectEventTypes('itxLocations', 'itxEventTypes')) {\r\n return;\r\n }\r\n\r\n const value = {\r\n id: this._isAddPopup ? 0 : this.emailService.id,\r\n ...this._emailServiceForm.value,\r\n emails: JSON.stringify(this._emailServiceForm.controls.emails.value),\r\n scheduleTime: ConvertDataFunctions.stringToSeconds(this._emailServiceForm.controls.scheduleTime.value),\r\n companyId: this.companyId,\r\n timeZone: Intl.DateTimeFormat().resolvedOptions().timeZone,\r\n ktxLocations: this._emailServiceForm.controls.scheduleType.value == this._scheduleTypes.Daily ? [] : this._emailServiceForm.controls.ktxLocations.value,\r\n } as EmailServicePostModel;\r\n\r\n const result = await this._emailServiceDatasource.addEditSevice(value);\r\n if (result instanceof ErrorModel) {\r\n console.log(result);\r\n }\r\n\r\n this.onCancel();\r\n }\r\n\r\n onChangesKtxLocation(event) {\r\n if (this._emailServiceForm.controls.ktxLocations.value.length > 0) {\r\n this._emailServiceForm.controls.ktxEventTypes.setValue([0]);\r\n }\r\n else {\r\n this._emailServiceForm.controls.ktxEventTypes.setValue([]);\r\n }\r\n }\r\n\r\n onAddChip(event) {\r\n if (!event.value.match(/^\\w+([\\.-]?\\w+)*@\\w+([\\.-]?\\w+)*(\\.\\w{2,3})+$/)) {\r\n this._emailServiceForm.controls.emails.value.pop();\r\n }\r\n }\r\n\r\n private buildForm() {\r\n this._emailServiceForm = this._formBuilder.group({\r\n ...{\r\n emails: [\r\n this._isAddPopup ? null : this.emailService.emails,\r\n Validators.compose([\r\n Validators.required,\r\n ])\r\n ]\r\n },\r\n ...{\r\n btxLocations: [\r\n this._isAddPopup ? [] : this.emailService.btxLocations.map(x => x.id),\r\n ]\r\n },\r\n ...{\r\n ktxLocations: [\r\n this._isAddPopup ? [] : this.emailService.ktxLocations.map(x => x.id),\r\n ]\r\n },\r\n ...{\r\n itxLocations: [\r\n this._isAddPopup ? [] : this.emailService.itxLocations.map(x => x.id),\r\n ]\r\n },\r\n scheduleType: [\r\n this._isAddPopup ? null : this.emailService.scheduleType,\r\n Validators.compose([\r\n Validators.required,\r\n ])],\r\n scheduleTime: [\r\n this._isAddPopup ? null : ConvertDataFunctions.secondsToHHMMString(this.emailService.scheduleTime),\r\n Validators.compose([\r\n Validators.required,\r\n ])\r\n ],\r\n ...{\r\n btxEventTypes: [\r\n this._isAddPopup ? [] : this.emailService.btxEventTypes,\r\n ]\r\n },\r\n ...{\r\n ktxEventTypes: [\r\n this._isAddPopup ? [] : this.emailService.ktxEventTypes,\r\n ]\r\n },\r\n ...{\r\n itxEventTypes: [\r\n this._isAddPopup ? [] : this.emailService.itxEventTypes,\r\n ]\r\n },\r\n });\r\n }\r\n}\r\n","export * from './email-service-add-edit-popup.component';\r\n","import { Component, OnInit } from '@angular/core';\r\n\r\nimport { EmailServiceDataSourceService } from '@services';\r\nimport { ErrorModel } from '../../../../common';\r\nimport { LocalStorageService } from './../../../../common';\r\n\r\n@Component({\r\n selector: 'greensleeves-email-service-delete-popup',\r\n templateUrl: './email-service-delete-popup.component.html',\r\n styles: []\r\n})\r\nexport class EmailServiceDeletePopupComponent implements OnInit {\r\n _isHidden = true;\r\n private emailServiceId: number;\r\n constructor(\r\n private _emailServiceDataSource: EmailServiceDataSourceService,\r\n private _localStorageService: LocalStorageService,\r\n ) { }\r\n\r\n ngOnInit() {\r\n }\r\n\r\n onCancel() {\r\n this._isHidden = true;\r\n }\r\n\r\n onShow(emailServiceId: number) {\r\n this.emailServiceId = emailServiceId;\r\n this._isHidden = false;\r\n }\r\n\r\n async onSubmit() {\r\n const info = this._localStorageService.getLoginInfo();\r\n const result = await this._emailServiceDataSource.delete(this.emailServiceId, info ? info.companyId : 0);\r\n if (result instanceof ErrorModel) {\r\n console.log(result);\r\n }\r\n this.onCancel();\r\n }\r\n}\r\n","export * from './email-service-delete-popup.component';\r\n","import { Component, OnInit, Input, Output, EventEmitter, SimpleChanges, OnChanges } from '@angular/core';\r\nimport { FormBuilder, FormGroup, Validators, FormControl } from '@angular/forms';\r\n\r\nimport { SensorViewModel } from '../../../../models';\r\nimport { EquipmentSubTypeEnum, EquipmentTypeEnum, SensorTypeEnum, SensorPositionEnum, EquipmentSideEnum } from '../../../../enums';\r\nimport { equipmentSensorMapping } from 'src/app/main/constants/equipment-sensor-mapping.constants';\r\nimport { sensorPositionLabels, sensorTypeLabels, equipmentWestEastSideLabels, equipmentNorthSouthSideLabels } from 'src/app/main/constants';\r\nimport { bitOptions, disabledBitOptions } from 'src/app/main/constants/equipment-options';\r\nimport { digitsValidator } from 'src/app/common/validators';\r\nimport { ModbussAddress, TemplateFunctions } from '../../../common';\r\n\r\n@Component({\r\n selector: 'greensleeves-edit-sensor-popup',\r\n templateUrl: './edit-sensor-popup.component.html',\r\n styles: []\r\n})\r\nexport class EditSensorPopupComponent implements OnInit, OnChanges {\r\n _isHidden = true;\r\n\r\n @Input()\r\n type: EquipmentSubTypeEnum;\r\n\r\n @Input()\r\n equipment: EquipmentTypeEnum;\r\n\r\n @Input()\r\n uniqueValidator: (sensor: SensorViewModel) => boolean;\r\n\r\n @Input()\r\n uniqueAddressesValidator: (sensor: SensorViewModel) => ModbussAddress[];\r\n\r\n _sensor: SensorViewModel;\r\n\r\n @Output()\r\n sensorChange: EventEmitter = new EventEmitter();\r\n\r\n _submitted = false;\r\n _sensorForm: FormGroup;\r\n\r\n _sensorType = 'sensorType';\r\n _sensorPosition = 'sensorPosition';\r\n _equipmentSide = 'equipmentSide';\r\n _generalAddressErrorText = 'Address already in use';\r\n _generalBitErrorText = 'Bit already in use';\r\n\r\n _editableSensorTypes: { [key: number]: Array<{}> } = {};\r\n _editableSensorPositions: { [key: number]: Array<{}> } = {};\r\n _editableEquipmentSides: { [key: number]: Array<{}> } = {};\r\n\r\n _sensorTypes: Array<{ label: string, value: number }> = [];\r\n _sensorPositions: Array<{ label: string, value: number }> = [];\r\n _equipmentSides: Array<{ label: string, value: number }> = [];\r\n\r\n private disableBitOptions = disabledBitOptions;\r\n private enabledBitOptions = bitOptions;\r\n _bitOptions = bitOptions;\r\n _rateOfChangeBitOptions = bitOptions;\r\n\r\n get _allowedSensorTypes() {\r\n return this.toDropdownOptions(equipmentSensorMapping[this.equipment][this.type], this._sensorType);\r\n }\r\n\r\n get _allowedSensorPositions() {\r\n return this.getAllowedSensorPositions(this._sensorForm.get('type').value);\r\n }\r\n\r\n get _allowedSides() {\r\n return this.getAllowedSides(this._sensorForm.get('type').value, this._sensorForm.get('position').value);\r\n }\r\n\r\n constructor(\r\n _formBuilder: FormBuilder\r\n ) {\r\n this._sensorForm = _formBuilder.group({\r\n type: [\r\n null,\r\n Validators.compose([\r\n Validators.required\r\n ])\r\n ],\r\n position: [\r\n null,\r\n Validators.compose([\r\n Validators.required\r\n ])\r\n ],\r\n side: [\r\n null,\r\n Validators.compose([\r\n Validators.required\r\n ])\r\n ],\r\n modbusAddress: [\r\n null,\r\n Validators.compose([\r\n Validators.required,\r\n digitsValidator,\r\n Validators.min(1),\r\n Validators.max(65536)\r\n ])\r\n ],\r\n warningAddress: [\r\n null,\r\n Validators.compose([\r\n Validators.required,\r\n digitsValidator,\r\n Validators.min(1),\r\n Validators.max(65536)\r\n ])\r\n ],\r\n warningAddressBit: [\r\n null,\r\n Validators.compose([\r\n Validators.required,\r\n digitsValidator,\r\n Validators.min(1),\r\n Validators.max(16)\r\n ])\r\n ],\r\n alarmAddress: [\r\n null,\r\n Validators.compose([\r\n Validators.required,\r\n digitsValidator,\r\n Validators.min(1),\r\n Validators.max(65536)\r\n ])\r\n ],\r\n alarmAddressBit: [\r\n null,\r\n Validators.compose([\r\n Validators.required,\r\n digitsValidator,\r\n Validators.min(1),\r\n Validators.max(16)\r\n ])\r\n ],\r\n rateOfChangeAlarmAddress: [\r\n null,\r\n Validators.compose([\r\n Validators.required,\r\n digitsValidator,\r\n Validators.min(1),\r\n Validators.max(65536)\r\n ])\r\n ],\r\n rateOfChangeAlarmAddressBit: [\r\n null,\r\n Validators.compose([\r\n Validators.required,\r\n digitsValidator,\r\n Validators.min(1),\r\n Validators.max(16)\r\n ])\r\n ],\r\n rateOfChangeWarningAddress: [\r\n null,\r\n Validators.compose([\r\n Validators.required,\r\n digitsValidator,\r\n Validators.min(1),\r\n Validators.max(65536)\r\n ])\r\n ],\r\n rateOfChangeWarningAddressBit: [\r\n null,\r\n Validators.compose([\r\n Validators.required,\r\n digitsValidator,\r\n Validators.min(1),\r\n Validators.max(16)\r\n ])\r\n ]\r\n })\r\n }\r\n\r\n ngOnInit() {\r\n this.updateFormOptions();\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges) {\r\n this.updateFormOptions();\r\n }\r\n\r\n onSubmit() {\r\n this._submitted = true;\r\n if (this._sensorForm.hasError('unique')) {\r\n delete this._sensorForm.errors.unique;\r\n this._sensorForm.updateValueAndValidity();\r\n }\r\n\r\n if (this._sensorForm.invalid) {\r\n return;\r\n }\r\n\r\n const newSensor = SensorViewModel.getViewModel(this._sensorForm.value);\r\n if (this._sensor.type == newSensor.type) {\r\n newSensor.id = this._sensor.id;\r\n }\r\n\r\n if (!this.uniqueValidator(newSensor)) {\r\n this._sensorForm.setErrors({\r\n unique: 'Sensor with such type, position and side is already set'\r\n });\r\n return;\r\n }\r\n\r\n const notUniqueAddresses = this.uniqueAddressesValidator(newSensor);\r\n if (notUniqueAddresses && notUniqueAddresses.length > 0) {\r\n TemplateFunctions.markAddressControllsAsNotUnique(this._sensorForm, notUniqueAddresses);\r\n return;\r\n }\r\n\r\n this.sensorChange.emit(newSensor);\r\n this._isHidden = true;\r\n this._submitted = false;\r\n this._sensorForm.reset();\r\n }\r\n\r\n getAllowedSensorPositions(sensorType: SensorTypeEnum) {\r\n return this.toDropdownOptions((sensorType || sensorType === 0) && equipmentSensorMapping[this.equipment][this.type][sensorType] || null, this._sensorPosition);\r\n }\r\n\r\n getAllowedSides(sensorType: SensorTypeEnum, position: SensorPositionEnum) {\r\n let allowedSides = this.toDropdownOptions((sensorType || sensorType === 0) && (position || position === 0) && equipmentSensorMapping[this.equipment][this.type][sensorType][position] || null, this._equipmentSide);\r\n return allowedSides.filter(side => side.label);\r\n }\r\n\r\n private toDropdownOptions(map: Object, type: string) {\r\n if (!map) {\r\n return [];\r\n }\r\n\r\n let labels;\r\n switch (type) {\r\n case this._sensorType:\r\n labels = sensorTypeLabels;\r\n break;\r\n case this._sensorPosition:\r\n labels = sensorPositionLabels;\r\n break;\r\n case this._equipmentSide:\r\n if (this._sensor.side as EquipmentSideEnum === EquipmentSideEnum.East || this._sensor.side as EquipmentSideEnum === EquipmentSideEnum.West) {\r\n labels = equipmentWestEastSideLabels;\r\n } else {\r\n labels = equipmentNorthSouthSideLabels;\r\n }\r\n break;\r\n default:\r\n return [];\r\n }\r\n\r\n return Object.keys(map).map(k => {\r\n return {\r\n label: labels[k],\r\n value: Number.parseInt(k)\r\n };\r\n });\r\n }\r\n\r\n updateFormOptions() {\r\n this._sensorTypes = this._allowedSensorTypes;\r\n this._sensorPositions = this._allowedSensorPositions;\r\n this._equipmentSides = this._allowedSides;\r\n }\r\n\r\n public show(sensor: SensorViewModel) {\r\n this._sensor = sensor;\r\n const {\r\n type,\r\n position,\r\n side,\r\n modbusAddress,\r\n warningAddress,\r\n warningAddressBit,\r\n alarmAddress,\r\n alarmAddressBit,\r\n rateOfChangeWarningAddress,\r\n rateOfChangeWarningAddressBit,\r\n rateOfChangeAlarmAddress,\r\n rateOfChangeAlarmAddressBit,\r\n } = sensor;\r\n this._sensorForm.setValue({\r\n type,\r\n position,\r\n side,\r\n modbusAddress: isNaN(modbusAddress) ? null : modbusAddress,\r\n warningAddress,\r\n warningAddressBit,\r\n alarmAddress,\r\n alarmAddressBit,\r\n rateOfChangeWarningAddress,\r\n rateOfChangeWarningAddressBit,\r\n rateOfChangeAlarmAddress,\r\n rateOfChangeAlarmAddressBit,\r\n });\r\n this.onSelectSensorType(true);\r\n this._isHidden = false;\r\n }\r\n\r\n onClickClose() {\r\n this._isHidden = true;\r\n this._submitted = false;\r\n this._sensorForm.reset();\r\n }\r\n\r\n hasValue(control: FormControl) {\r\n return control.value || control.value === 0;\r\n }\r\n\r\n onSelectSensorType(load:boolean=false) {\r\n this.updateFormOptions();\r\n switch (this._sensorForm.controls.type.value) {\r\n case SensorTypeEnum.Speed:\r\n case SensorTypeEnum.CurrentAmpDraw:\r\n case SensorTypeEnum.CurrentDesignLoad:\r\n this._sensorForm.controls.position.setValue(SensorPositionEnum.OnePerEquipment);\r\n this.updateFormOptions();\r\n this._sensorForm.controls.side.setValue(EquipmentSideEnum.None);\r\n break;\r\n }\r\n\r\n switch (this._sensorForm.controls.type.value) {\r\n case SensorTypeEnum.Vibration:\r\n case SensorTypeEnum.CurrentAmpDraw:\r\n case SensorTypeEnum.CurrentDesignLoad:\r\n this._sensorForm.controls.rateOfChangeWarningAddress.reset();\r\n this._sensorForm.controls.rateOfChangeWarningAddress.clearValidators();\r\n this._sensorForm.controls.rateOfChangeWarningAddress.disable();\r\n this._sensorForm.controls.rateOfChangeWarningAddress.setValue('-');\r\n this._sensorForm.controls.rateOfChangeWarningAddressBit.reset();\r\n this._sensorForm.controls.rateOfChangeWarningAddressBit.clearValidators();\r\n this._sensorForm.controls.rateOfChangeWarningAddressBit.setValue(null);\r\n this._sensorForm.controls.rateOfChangeWarningAddressBit.disable();\r\n this._sensorForm.controls.rateOfChangeAlarmAddress.reset();\r\n this._sensorForm.controls.rateOfChangeAlarmAddress.clearValidators();\r\n this._sensorForm.controls.rateOfChangeAlarmAddress.setValue(\"-\");\r\n this._sensorForm.controls.rateOfChangeAlarmAddress.disable();\r\n this._sensorForm.controls.rateOfChangeAlarmAddressBit.reset();\r\n this._sensorForm.controls.rateOfChangeAlarmAddressBit.clearValidators();\r\n this._sensorForm.controls.rateOfChangeAlarmAddressBit.setValue(null);\r\n this._sensorForm.controls.rateOfChangeAlarmAddressBit.disable();\r\n this._rateOfChangeBitOptions = disabledBitOptions;\r\n break;\r\n default:\r\n this._sensorForm.controls.rateOfChangeWarningAddress.setValidators(Validators.compose([\r\n Validators.required,\r\n digitsValidator,\r\n Validators.min(1),\r\n Validators.max(65536)\r\n ]));\r\n this._sensorForm.controls.rateOfChangeWarningAddress.enable();\r\n this._sensorForm.controls.rateOfChangeWarningAddressBit.setValidators(Validators.compose([\r\n Validators.required,\r\n digitsValidator,\r\n Validators.min(1),\r\n Validators.max(16)\r\n ]));\r\n this._sensorForm.controls.rateOfChangeWarningAddressBit.enable();\r\n this._sensorForm.controls.rateOfChangeAlarmAddress.setValidators(Validators.compose([\r\n Validators.required,\r\n digitsValidator,\r\n Validators.min(1),\r\n Validators.max(65536)\r\n ]));\r\n this._sensorForm.controls.rateOfChangeAlarmAddress.enable();\r\n this._sensorForm.controls.rateOfChangeAlarmAddressBit.setValidators(Validators.compose([\r\n Validators.required,\r\n digitsValidator,\r\n Validators.min(1),\r\n Validators.max(16)\r\n ]));\r\n this._sensorForm.controls.rateOfChangeAlarmAddressBit.enable();\r\n this._rateOfChangeBitOptions = this.enabledBitOptions;\r\n if(!load){\r\n this._sensorForm.controls.rateOfChangeAlarmAddress.setValue(null);\r\n this._sensorForm.controls.rateOfChangeWarningAddress.setValue(null);\r\n }\r\n break;\r\n }\r\n }\r\n}\r\n","export * from './edit-sensor-popup.component';","import { Component, Input, Output, EventEmitter } from '@angular/core';\r\nimport { BehaviorSubject } from 'rxjs';\r\n\r\n@Component({\r\n selector: 'greensleeves-equipment-menu',\r\n templateUrl: './equipment-menu.component.html',\r\n styles: []\r\n})\r\nexport class EquipmentMenuComponent {\r\n @Input()\r\n index: number = -1;\r\n\r\n @Output()\r\n onToggle: EventEmitter<{ index: number, isOpen: boolean }> = new EventEmitter<{ index: number, isOpen: boolean }>();\r\n \r\n _isMenuOpen: boolean = false;\r\n \r\n close() {\r\n this._isMenuOpen = false;\r\n this.notifyNext()\r\n }\r\n\r\n onToogleMenu() {\r\n this._isMenuOpen = !this._isMenuOpen;\r\n this.notifyNext();\r\n }\r\n\r\n onElementClick(e: Event) {\r\n e.stopPropagation();\r\n }\r\n\r\n private notifyNext() {\r\n this.onToggle.emit({ isOpen: this._isMenuOpen, index: this.index });\r\n }\r\n}\r\n","export * from './equipment-menu.component';","import { Component, ViewChild, AfterViewInit, OnDestroy } from '@angular/core';\r\nimport { Subscription } from 'rxjs';\r\n\r\nimport { LocationsBtxDataSourceService } from '../../../services';\r\nimport {\r\n SensorViewModel,\r\n EquipmentViewModel,\r\n LocationBtxEquipmentViewModel,\r\n LocationBtxEquipmentPostModel,\r\n LocationBtxViewModel\r\n} from './../../../models';\r\nimport { EditSensorPopupComponent } from './edit-sensor-popup';\r\nimport { ViewSensorPopupComponent } from './view-sensor-popup';\r\nimport { AddEditEquipmentPopupComponent } from '../add-edit-equipment-popup';\r\nimport { equipmentSensorMapping, equipmentSchemes, sensorTypeLabels, sensorPositionLabels, equipmentSideLabels, SideAB } from 'src/app/main/constants';\r\nimport { EquipmentSideEnum } from '../../../enums';\r\nimport { EquipmentSensorDeletePopupComponent } from './equipment-sensor-delete-popup/equipment-sensor-delete-popup.component';\r\nimport { ValidationFunctions, ModbussAddress } from '../../common';\r\nimport { ModelsTypes } from '../../../constants';\r\nimport { EquipmentViewDataPopupComponent } from './equipment-view-data/equipment-view-data.component';\r\n\r\n@Component({\r\n selector: 'greensleeves-equipment-popup',\r\n templateUrl: './equipment-popup.component.html',\r\n styles: []\r\n})\r\n\r\nexport class EquipmentPopupComponent implements AfterViewInit, OnDestroy {\r\n @ViewChild(EditSensorPopupComponent, { read: false, static: false })\r\n private _editSensorModal: EditSensorPopupComponent;\r\n\r\n @ViewChild(ViewSensorPopupComponent, { read: false, static: false })\r\n private _viewSensorModal: ViewSensorPopupComponent;\r\n\r\n @ViewChild(AddEditEquipmentPopupComponent, { read: false, static: false })\r\n private _addEquipmentModal: AddEditEquipmentPopupComponent;\r\n\r\n @ViewChild(EquipmentSensorDeletePopupComponent, { read: false, static: false })\r\n private _equipmentSensorDeleteModal: EquipmentSensorDeletePopupComponent;\r\n\r\n @ViewChild(EquipmentViewDataPopupComponent, { read: false, static: false })\r\n private _equipmentViewDataModal: EquipmentViewDataPopupComponent;\r\n\r\n _isHidden = true;\r\n _submitted = false;\r\n\r\n _location: LocationBtxEquipmentViewModel;\r\n\r\n _companies: { label: string, value: number }[];\r\n\r\n _activeEquipment: EquipmentViewModel = null;\r\n _activeSensor: SensorViewModel = null;\r\n\r\n _activeAccordionTabIndex = -1;\r\n\r\n private _activeSensorIndex: any;\r\n private subscriptions: Subscription[] = [];\r\n\r\n private _editingEquipmentIndex?: number = null;\r\n\r\n _schema: Array<{ className: string, markers: Array<{ className: string, index: number, tooltip: string }> }> = [];\r\n\r\n constructor(\r\n private _locationBtxService: LocationsBtxDataSourceService,\r\n ) {\r\n this.isSensorUnique = this.isSensorUnique.bind(this);\r\n this.equipmentHasUniqueName = this.equipmentHasUniqueName.bind(this);\r\n this.isSensorAddressesUnique = this.isSensorAddressesUnique.bind(this);\r\n this.isEquipmentAddressesUnique = this.isEquipmentAddressesUnique.bind(this);\r\n }\r\n\r\n ngAfterViewInit() {\r\n let subs = this._addEquipmentModal.onSave.subscribe((emitModel: [EquipmentViewModel, boolean]) => {\r\n if (emitModel[1]) {\r\n this.onEquipmentEditSave(emitModel[0]);\r\n } else {\r\n this.onEquipmentAddSave(emitModel[0]);\r\n }\r\n });\r\n this.subscriptions.push(subs);\r\n\r\n subs = this._addEquipmentModal.onCancel.subscribe(() => this.onEquipmentAddCancel());\r\n this.subscriptions.push(subs);\r\n\r\n subs = this._addEquipmentModal.closedPopup.subscribe(() => this._locationBtxService.markLocationEquipmentsForOthersAsUpdated(this._location.id));\r\n this.subscriptions.push(subs);\r\n }\r\n\r\n ngAfterViewChecked() {\r\n this._equipmentSensorDeleteModal.equipmentDelete.subscribe(equipmentId => { this.onDeleteEquipment(equipmentId) });\r\n }\r\n\r\n ngOnDestroy() {\r\n this.subscriptions && this.subscriptions.forEach(subs => subs.unsubscribe());\r\n this._activeEquipment = null;\r\n }\r\n\r\n public show(locationEquipment: LocationBtxEquipmentViewModel) {\r\n this._location = locationEquipment;\r\n this.buildSchema();\r\n if (!this._location.equipments || !this._location.equipments.length) {\r\n this._addEquipmentModal.show(\"Add first equipment\", \"Add first equipment\");\r\n } else {\r\n this._isHidden = false;\r\n }\r\n }\r\n\r\n onToggleMenu({ isOpen, index }) {\r\n if (isOpen) {\r\n this._activeAccordionTabIndex = index;\r\n }\r\n }\r\n\r\n onAccordionOpen(index) {\r\n this._activeEquipment = this._location.equipments[index];\r\n this.buildSchema();\r\n\r\n setTimeout(() => {\r\n let tab = document.getElementById(`${this._activeEquipment.id}`);\r\n if (tab) {\r\n let sensorWrap = document.getElementById('sensorsWrap');\r\n if (sensorWrap) {\r\n sensorWrap.style.setProperty('top', `${tab.offsetTop}px`);\r\n }\r\n }\r\n }, 300);\r\n }\r\n\r\n onAccordionClose() {\r\n this._activeEquipment = null;\r\n this.buildSchema();\r\n }\r\n\r\n onSensorEditClicked(e: { sensor: SensorViewModel, index: number }) {\r\n this._activeSensorIndex = e.index;\r\n this._editSensorModal.show(e.sensor);\r\n }\r\n\r\n onSensorViewClicked(sensor: SensorViewModel) {\r\n this._viewSensorModal.show(sensor);\r\n }\r\n\r\n async onClickSave() {\r\n this._submitted = true;\r\n const postModel = new LocationBtxEquipmentPostModel(this._location);\r\n const result = await this._locationBtxService.addOrUpdateEquipment(postModel);\r\n\r\n this._submitted = false;\r\n if (result) {\r\n this._isHidden = true;\r\n this._activeEquipment = null;\r\n this._location = null;\r\n }\r\n }\r\n\r\n onSensorChanged(sensor: SensorViewModel) {\r\n this._activeEquipment.sensors[this._activeSensorIndex] = sensor;\r\n this._activeSensorIndex = null;\r\n this._activeSensor = null;\r\n this.buildSchema();\r\n }\r\n\r\n onDeleteEquipment(equipmentId: number) {\r\n this._location.equipments = this._location.equipments.filter(equipment => equipment.id !== equipmentId);\r\n this._activeEquipment = null;\r\n this.buildSchema();\r\n }\r\n\r\n onChangeSensors(sensors: SensorViewModel[]) {\r\n if (!this._activeEquipment) {\r\n return;\r\n }\r\n\r\n this._activeEquipment.sensors = sensors\r\n this.buildSchema();\r\n }\r\n\r\n private sortSensors() {\r\n if (!this._activeEquipment) {\r\n return;\r\n }\r\n\r\n const sortByPosition = (a: SensorViewModel, b: SensorViewModel) => {\r\n const aString = `${sensorTypeLabels[a.type]}${sensorPositionLabels[a.position]}${equipmentSideLabels[a.side]}`;\r\n const bString = `${sensorTypeLabels[b.type]}${sensorPositionLabels[b.position]}${equipmentSideLabels[b.side]}`;\r\n if (aString < bString) {\r\n return -1;\r\n }\r\n if (aString > bString) {\r\n return 1;\r\n }\r\n return 0;\r\n };\r\n this._activeEquipment.sensors = this._activeEquipment.sensors.sort(sortByPosition);\r\n }\r\n\r\n onEquipmentAddSave(equipment: EquipmentViewModel) {\r\n if (!this._location.equipments || !this._location.equipments.length) {\r\n this._location.equipments = [];\r\n }\r\n\r\n this._location.equipments.push(equipment);\r\n\r\n if (this._location.equipments.length) {\r\n this._isHidden = false;\r\n this.buildSchema();\r\n }\r\n }\r\n\r\n onEquipmentEditSave(equipment: EquipmentViewModel) {\r\n this._location.equipments[this._editingEquipmentIndex] = equipment as EquipmentViewModel;\r\n this._editingEquipmentIndex = null;\r\n\r\n if (this._location.equipments.length) {\r\n this._isHidden = false;\r\n this.buildSchema();\r\n }\r\n }\r\n\r\n onEquipmentAddCancel() {\r\n if (!this._location.equipments || !this._location.equipments.length) {\r\n this._isHidden = true;\r\n }\r\n }\r\n\r\n onClickAddMenu() {\r\n this._editingEquipmentIndex = null;\r\n this._addEquipmentModal.show(\"Add new equipment\", \"Add\");\r\n }\r\n\r\n onClickDeleteMenu(equipment: EquipmentViewModel) {\r\n this._equipmentSensorDeleteModal.showEquipmentView(equipment.id);\r\n }\r\n\r\n onClickEditMenu(equipment: EquipmentViewModel, index: number) {\r\n this._editingEquipmentIndex = index;\r\n this._addEquipmentModal.show(\"Edit equipment\", \"Save\", equipment);\r\n }\r\n\r\n onClickViewData(equipment: EquipmentViewModel) {\r\n this._equipmentViewDataModal.show(equipment, this._location.id);\r\n }\r\n\r\n async onClickClose() {\r\n await this._locationBtxService.markLocationEquipmentsForOthersAsUpdated(this._location.id);\r\n this._activeEquipment = null;\r\n this._isHidden = true;\r\n this._location = null;\r\n this._submitted = false;\r\n }\r\n\r\n buildSchema() {\r\n if (!this._activeEquipment) {\r\n this._schema = [];\r\n return;\r\n }\r\n\r\n this.sortSensors();\r\n const mapping = equipmentSensorMapping[this._activeEquipment.type][this._activeEquipment.subType];\r\n\r\n let selectedSideA: EquipmentSideEnum;\r\n let selectedSideB: EquipmentSideEnum;\r\n\r\n if (this._activeEquipment.sensors && this._activeEquipment.sensors.length > 0 && (this._activeEquipment.sensors[0].side as EquipmentSideEnum === EquipmentSideEnum.North ||\r\n this._activeEquipment.sensors[0].side as EquipmentSideEnum === EquipmentSideEnum.South)) {\r\n selectedSideA = EquipmentSideEnum.South;\r\n selectedSideB = EquipmentSideEnum.North;\r\n } else {\r\n selectedSideA = EquipmentSideEnum.East;\r\n selectedSideB = EquipmentSideEnum.West;\r\n }\r\n\r\n\r\n const sides = [\r\n equipmentSchemes[this._activeEquipment.type][this._activeEquipment.subType][0],\r\n equipmentSchemes[this._activeEquipment.type][this._activeEquipment.subType][selectedSideA],\r\n equipmentSchemes[this._activeEquipment.type][this._activeEquipment.subType][selectedSideB]\r\n ];\r\n\r\n const shouldAddNonSided = Object.keys(sides).some(x => Number(x) as EquipmentSideEnum === EquipmentSideEnum.None);\r\n this._schema = Object.entries(sides)\r\n .filter(([side, schemaClassName]) => !!schemaClassName)\r\n .map(([side, schemaClassName]) => ({ side: Number(side) as EquipmentSideEnum, schemaClassName: schemaClassName as string }))\r\n .map(({ side, schemaClassName: className }) => {\r\n const markers = this._activeEquipment.sensors\r\n .map((sensor, index) => ({ ...sensor, index: index + 1 }))\r\n .filter(sensor => sensor.side === side || sensor.side === SideAB[side] || (shouldAddNonSided && sensor.side === EquipmentSideEnum.None))\r\n .map(sensor => ({\r\n index: sensor.index,\r\n tooltip: sensor.index + ' - ' + sensorPositionLabels[sensor.position] + '\\n' + sensorTypeLabels[sensor.type],\r\n className: mapping[sensor.type][sensor.position][sensor.side]\r\n }))\r\n .filter(marker => !!marker.className);\r\n return {\r\n className,\r\n markers\r\n };\r\n });\r\n }\r\n\r\n isSensorUnique(sensor: SensorViewModel): boolean {\r\n return this._activeEquipment && !this._activeEquipment.sensors\r\n .filter((s, i) => this._activeSensorIndex === null || this._activeSensorIndex === undefined || i !== this._activeSensorIndex)\r\n .some(s => s.type === sensor.type && s.position === sensor.position && s.side === sensor.side);\r\n }\r\n\r\n equipmentHasUniqueName(equipment: EquipmentViewModel) {\r\n return !this._location.equipments\r\n .some((e, i) => (this._editingEquipmentIndex === null || this._editingEquipmentIndex !== i) && e.name === equipment.name);\r\n }\r\n\r\n isSensorAddressesUnique(sensor: SensorViewModel): ModbussAddress[] {\r\n const existentItems: (LocationBtxViewModel | EquipmentViewModel | SensorViewModel)[] = [this._location];\r\n this._location.equipments.forEach(eq => {\r\n existentItems.push(eq);\r\n eq.sensors.forEach(s => (s.id !== sensor.id) && existentItems.push(s));\r\n });\r\n sensor.modelType = ModelsTypes.sensorViewModel;\r\n return ValidationFunctions.checkIsAllAddressesUnique(existentItems, sensor, this._location);\r\n }\r\n\r\n isEquipmentAddressesUnique(equipment: EquipmentViewModel): ModbussAddress[] {\r\n const existentItems: (LocationBtxViewModel | EquipmentViewModel | SensorViewModel)[] = [this._location];\r\n this._location.equipments.forEach(eq => {\r\n if (eq.id !== equipment.id) {\r\n existentItems.push(eq);\r\n }\r\n\r\n eq.sensors.forEach(s => existentItems.push(s));\r\n });\r\n equipment.modelType = ModelsTypes.equipmentViewModel;\r\n return ValidationFunctions.checkIsAllAddressesUnique(existentItems, equipment);\r\n }\r\n}\r\n","import { Component, OnInit, OnDestroy, Input, Output, EventEmitter, ElementRef, NgZone, AfterViewInit, ViewChild } from '@angular/core';\r\nimport { FormBuilder, FormGroup, Validators, FormControl } from '@angular/forms';\r\n\r\nimport { SensorViewModel } from '../../../../models';\r\nimport { EquipmentSubTypeEnum, EquipmentTypeEnum, SensorTypeEnum, SensorPositionEnum, EquipmentSideEnum } from '../../../../enums';\r\nimport { equipmentSensorMapping } from 'src/app/main/constants/equipment-sensor-mapping.constants';\r\nimport { equipmentSideLabels, sensorPositionLabels, sensorTypeLabels, equipmentNorthSouthSideLabels, equipmentWestEastSideLabels } from 'src/app/main/constants';\r\nimport PerfectScrollbar from 'perfect-scrollbar';\r\nimport { bitOptions, disabledBitOptions } from 'src/app/main/constants/equipment-options';\r\nimport { digitsValidator } from 'src/app/common/validators';\r\nimport { EquipmentSensorDeletePopupComponent } from '../equipment-sensor-delete-popup/equipment-sensor-delete-popup.component';\r\nimport { ModbussAddress, TemplateFunctions } from '../../../common';\r\n\r\n@Component({\r\n selector: 'greensleeves-equipment-scheme-editor',\r\n templateUrl: './equipment-scheme.component.html',\r\n styles: []\r\n})\r\nexport class EquipmentSchemeEditorComponent implements OnInit, OnDestroy, AfterViewInit {\r\n @ViewChild(EquipmentSensorDeletePopupComponent, { read: false, static: false })\r\n private _equipmentSensorDeleteModal: EquipmentSensorDeletePopupComponent;\r\n\r\n @Input()\r\n type: EquipmentSubTypeEnum;\r\n\r\n @Input()\r\n equipment: EquipmentTypeEnum;\r\n\r\n @Input()\r\n schemes: SensorViewModel[];\r\n\r\n @Input()\r\n uniqueValidator: (sensor: SensorViewModel) => boolean;\r\n\r\n @Input()\r\n uniqueAddressesValidator: (sensor: SensorViewModel) => ModbussAddress[];\r\n\r\n @Output()\r\n schemesChange: EventEmitter> = new EventEmitter>();\r\n\r\n @Output()\r\n onEditClicked: EventEmitter<{ sensor: SensorViewModel, index: number }> = new EventEmitter<{ sensor: SensorViewModel, index: number }>();\r\n\r\n @Output()\r\n onViewClicked: EventEmitter = new EventEmitter();\r\n\r\n _view = 'view';\r\n _edit = 'edit';\r\n _delete = 'delete';\r\n _sensorType = 'sensorType';\r\n _sensorPosition = 'sensorPosition';\r\n _equipmentSide = 'equipmentSide';\r\n _generalAddressErrorText = 'Address already in use';\r\n _generalBitErrorText = 'Bit already in use';\r\n\r\n _submitted = false;\r\n _sensorForm: FormGroup;\r\n\r\n _sensorTypes: Array<{ label: string, value: number }> = [];\r\n _sensorPositions: Array<{ label: string, value: number }> = [];\r\n _equipmentSides: Array<{ label: string, value: number }> = [];\r\n\r\n private disableBitOptions = disabledBitOptions;\r\n private enabledBitOptions = bitOptions;\r\n _bitOptions = bitOptions;\r\n _rateOfChangeBitOptions = bitOptions;\r\n\r\n _columns = [\r\n { header: '', dataField: 'index', getLabel: (_, index) => ++index },\r\n { header: '', dataField: 'type', getLabel: (data: SensorViewModel) => data && sensorTypeLabels[data.type] },\r\n { header: '', dataField: 'position', getLabel: (data: SensorViewModel) => data && sensorPositionLabels[data.position] },\r\n { header: '', dataField: 'side', getLabel: (data: SensorViewModel) => data && equipmentSideLabels[data.side] },\r\n { header: '', type: this._view },\r\n { header: '', type: this._edit },\r\n { header: '', type: this._delete }\r\n ];\r\n\r\n _ps: PerfectScrollbar;\r\n _psConfig = {\r\n wheelSpeed: 2,\r\n wheelPropagation: true,\r\n minScrollbarLength: 20\r\n };\r\n\r\n get _allowedSensorTypes() {\r\n return this.toDropdownOptions(equipmentSensorMapping[this.equipment][this.type], this._sensorType);\r\n }\r\n\r\n get _allowedSensorPositions() {\r\n return this.getAllowedSensorPositions(this._sensorForm.get('type').value);\r\n }\r\n\r\n get _allowedSides() {\r\n return this.getAllowedSides(this._sensorForm.get('type').value, this._sensorForm.get('position').value);\r\n }\r\n\r\n constructor(\r\n private _formBuilder: FormBuilder,\r\n private _el: ElementRef,\r\n private _zone: NgZone\r\n ) {\r\n this._sensorForm = _formBuilder.group({\r\n type: [\r\n null,\r\n Validators.compose([\r\n Validators.required\r\n ])\r\n ],\r\n position: [\r\n null,\r\n Validators.compose([\r\n Validators.required\r\n ])\r\n ],\r\n side: [\r\n null,\r\n Validators.compose([\r\n Validators.required\r\n ])\r\n ],\r\n modbusAddress: [\r\n null,\r\n Validators.compose([\r\n Validators.required,\r\n digitsValidator,\r\n Validators.min(1),\r\n Validators.max(65536)\r\n ])\r\n ],\r\n warningAddress: [\r\n null,\r\n Validators.compose([\r\n Validators.required,\r\n digitsValidator,\r\n Validators.min(1),\r\n Validators.max(65536)\r\n ])\r\n ],\r\n warningAddressBit: [\r\n null,\r\n Validators.compose([\r\n Validators.required,\r\n digitsValidator,\r\n Validators.min(1),\r\n Validators.max(16)\r\n ])\r\n ],\r\n alarmAddress: [\r\n null,\r\n Validators.compose([\r\n Validators.required,\r\n digitsValidator,\r\n Validators.min(1),\r\n Validators.max(65536)\r\n ])\r\n ],\r\n alarmAddressBit: [\r\n null,\r\n Validators.compose([\r\n Validators.required,\r\n digitsValidator,\r\n Validators.min(1),\r\n Validators.max(16)\r\n ])\r\n ],\r\n rateOfChangeWarningAddress: [\r\n null,\r\n Validators.compose([\r\n Validators.required,\r\n digitsValidator,\r\n Validators.min(1),\r\n Validators.max(65536)\r\n ])\r\n ],\r\n rateOfChangeWarningAddressBit: [\r\n null,\r\n Validators.compose([\r\n Validators.required,\r\n digitsValidator,\r\n Validators.min(1),\r\n Validators.max(16)\r\n ])\r\n ],\r\n rateOfChangeAlarmAddress: [\r\n null,\r\n Validators.compose([\r\n Validators.required,\r\n digitsValidator,\r\n Validators.min(1),\r\n Validators.max(65536)\r\n ])\r\n ],\r\n rateOfChangeAlarmAddressBit: [\r\n null,\r\n Validators.compose([\r\n Validators.required,\r\n digitsValidator,\r\n Validators.min(1),\r\n Validators.max(16)\r\n ])\r\n ]\r\n })\r\n }\r\n\r\n ngOnInit() {\r\n this.reInitScrollBar(0);\r\n this.updateFormOptions();\r\n }\r\n\r\n ngAfterViewChecked() {\r\n this._equipmentSensorDeleteModal.sensorDelete.subscribe(sensorId => {\r\n this.onDeleteSensor(sensorId);\r\n });\r\n }\r\n\r\n ngOnDestroy() {\r\n this._ps && this._ps.destroy();\r\n this._ps = null;\r\n }\r\n\r\n ngAfterViewInit() {\r\n this.reInitScrollBar(0);\r\n }\r\n\r\n onSchemeFormSubmit() {\r\n this._submitted = true;\r\n if (this._sensorForm.invalid) {\r\n return;\r\n }\r\n\r\n const scheme = SensorViewModel.getViewModel(this._sensorForm.value);\r\n if (this.uniqueValidator && !this.uniqueValidator(scheme)) {\r\n this._sensorForm.setErrors({\r\n unique: 'Sensor with such type, position and side is already set'\r\n });\r\n return;\r\n }\r\n\r\n const notUniqueAddresses = this.uniqueAddressesValidator(scheme);\r\n if (notUniqueAddresses && notUniqueAddresses.length > 0) {\r\n TemplateFunctions.markAddressControllsAsNotUnique(this._sensorForm, notUniqueAddresses);\r\n return;\r\n }\r\n\r\n this._sensorForm.controls.rateOfChangeAlarmAddressBit.statusChanges.subscribe\r\n const schemes = [\r\n ...this.schemes,\r\n scheme\r\n ];\r\n\r\n this.schemesChange.emit(schemes);\r\n this._submitted = false;\r\n this._sensorForm.reset();\r\n this.onSelectSensorType();\r\n }\r\n\r\n getAllowedSensorPositions(sensorType: SensorTypeEnum) {\r\n return this.toDropdownOptions((sensorType || sensorType === 0) && equipmentSensorMapping[this.equipment][this.type][sensorType] || null, this._sensorPosition);\r\n }\r\n\r\n getAllowedSides(sensorType: SensorTypeEnum, position: SensorPositionEnum) {\r\n let allowedSides = this.toDropdownOptions((sensorType || sensorType === 0) && (position || position === 0) && equipmentSensorMapping[this.equipment][this.type][sensorType][position] || null, this._equipmentSide);\r\n return allowedSides.filter(side => side.label);\r\n }\r\n\r\n private toDropdownOptions(map: Object, type: string) {\r\n if (!map) {\r\n return [];\r\n }\r\n\r\n let labels;\r\n switch (type) {\r\n case this._sensorType:\r\n labels = sensorTypeLabels;\r\n break;\r\n case this._sensorPosition:\r\n labels = sensorPositionLabels;\r\n break;\r\n case this._equipmentSide:\r\n if (this.schemes.length === 0) {\r\n labels = equipmentSideLabels;\r\n } else if (this.schemes[0].side as EquipmentSideEnum === EquipmentSideEnum.East || this.schemes[0].side as EquipmentSideEnum === EquipmentSideEnum.West) {\r\n labels = equipmentWestEastSideLabels;\r\n } else if (this.schemes[0].side as EquipmentSideEnum === EquipmentSideEnum.South || this.schemes[0].side as EquipmentSideEnum === EquipmentSideEnum.North) {\r\n labels = equipmentNorthSouthSideLabels;\r\n } else {\r\n labels = equipmentSideLabels;\r\n }\r\n break;\r\n default:\r\n return [];\r\n }\r\n\r\n return Object.keys(map).map(k => {\r\n return {\r\n label: labels[k],\r\n value: Number.parseInt(k)\r\n };\r\n });\r\n }\r\n\r\n updateFormOptions() {\r\n this._sensorTypes = this._allowedSensorTypes;\r\n this._sensorPositions = this._allowedSensorPositions;\r\n this._equipmentSides = this._allowedSides;\r\n }\r\n\r\n onClickEdit(sensor: SensorViewModel, index: number) {\r\n this.onEditClicked.emit({ sensor, index });\r\n }\r\n\r\n onClickView(sensor: SensorViewModel) {\r\n this.onViewClicked.emit(sensor);\r\n }\r\n\r\n onDeleteSensor(sensorId: number) {\r\n this.schemes = this.schemes.filter(sensor => sensor.id !== sensorId);\r\n this.schemesChange.emit(this.schemes);\r\n }\r\n\r\n onClickDelete(sensor: SensorViewModel) {\r\n this._equipmentSensorDeleteModal.showSensorView(sensor.id);\r\n }\r\n\r\n updateEditableOptions() {\r\n this._updateScroll();\r\n }\r\n\r\n reInitScrollBar(timeout?: number, withCheck = false) {\r\n if (withCheck) {\r\n return;\r\n }\r\n\r\n if (this._ps) {\r\n this._ps.destroy();\r\n }\r\n\r\n const createScrollbarFunc = () => {\r\n this._zone.runOutsideAngular(() => {\r\n try {\r\n const el = this._el.nativeElement.querySelector('.scroll-container .ui-table-scrollable-body');\r\n if (!el) {\r\n return;\r\n }\r\n\r\n this._ps = new PerfectScrollbar(el, {\r\n wheelSpeed: 2,\r\n wheelPropagation: true,\r\n minScrollbarLength: 20\r\n });\r\n } catch (error) {\r\n }\r\n })\r\n };\r\n\r\n if (timeout) {\r\n setTimeout(() => {\r\n createScrollbarFunc();\r\n }, timeout);\r\n } else {\r\n createScrollbarFunc();\r\n }\r\n }\r\n\r\n _updateScroll() {\r\n this._ps && this._ps.update();\r\n }\r\n\r\n hasValue(control: FormControl) {\r\n return control.value || control.value === 0;\r\n }\r\n\r\n onSelectSensorType() {\r\n this.updateFormOptions();\r\n switch (this._sensorForm.controls.type.value) {\r\n case SensorTypeEnum.Speed:\r\n case SensorTypeEnum.CurrentAmpDraw:\r\n case SensorTypeEnum.CurrentDesignLoad:\r\n this._sensorForm.controls.position.setValue(SensorPositionEnum.OnePerEquipment);\r\n this.updateFormOptions();\r\n this._sensorForm.controls.side.setValue(EquipmentSideEnum.None);\r\n break;\r\n default:\r\n this._sensorForm.controls.position.setValue(null);\r\n break;\r\n }\r\n\r\n switch (this._sensorForm.controls.type.value) {\r\n case SensorTypeEnum.Vibration:\r\n case SensorTypeEnum.CurrentAmpDraw:\r\n case SensorTypeEnum.CurrentDesignLoad:\r\n this._sensorForm.controls.rateOfChangeWarningAddress.reset();\r\n this._sensorForm.controls.rateOfChangeWarningAddress.clearValidators();\r\n this._sensorForm.controls.rateOfChangeWarningAddress.disable();\r\n this._sensorForm.controls.rateOfChangeWarningAddress.setValue('-');\r\n this._sensorForm.controls.rateOfChangeWarningAddressBit.reset();\r\n this._sensorForm.controls.rateOfChangeWarningAddressBit.clearValidators();\r\n this._sensorForm.controls.rateOfChangeWarningAddressBit.setValue(null);\r\n this._sensorForm.controls.rateOfChangeWarningAddressBit.disable();\r\n this._sensorForm.controls.rateOfChangeAlarmAddress.reset();\r\n this._sensorForm.controls.rateOfChangeAlarmAddress.clearValidators();\r\n this._sensorForm.controls.rateOfChangeAlarmAddress.setValue(\"-\");\r\n this._sensorForm.controls.rateOfChangeAlarmAddress.disable();\r\n this._sensorForm.controls.rateOfChangeAlarmAddressBit.reset();\r\n this._sensorForm.controls.rateOfChangeAlarmAddressBit.clearValidators();\r\n this._sensorForm.controls.rateOfChangeAlarmAddressBit.setValue(null);\r\n this._sensorForm.controls.rateOfChangeAlarmAddressBit.disable();\r\n this._rateOfChangeBitOptions = disabledBitOptions;\r\n break;\r\n default:\r\n this._sensorForm.controls.rateOfChangeWarningAddress.setValidators(Validators.compose([\r\n Validators.required,\r\n digitsValidator,\r\n Validators.min(1),\r\n Validators.max(65536)\r\n ]));\r\n this._sensorForm.controls.rateOfChangeWarningAddress.setValue(null);\r\n this._sensorForm.controls.rateOfChangeWarningAddress.enable();\r\n this._sensorForm.controls.rateOfChangeWarningAddressBit.setValidators(Validators.compose([\r\n Validators.required,\r\n digitsValidator,\r\n Validators.min(1),\r\n Validators.max(16)\r\n ]));\r\n this._sensorForm.controls.rateOfChangeWarningAddressBit.enable();\r\n this._sensorForm.controls.rateOfChangeAlarmAddress.setValidators(Validators.compose([\r\n Validators.required,\r\n digitsValidator,\r\n Validators.min(1),\r\n Validators.max(65536)\r\n ]));\r\n this._sensorForm.controls.rateOfChangeAlarmAddress.setValue(null);\r\n this._sensorForm.controls.rateOfChangeAlarmAddress.enable();\r\n this._sensorForm.controls.rateOfChangeAlarmAddressBit.setValidators(Validators.compose([\r\n Validators.required,\r\n digitsValidator,\r\n Validators.min(1),\r\n Validators.max(16)\r\n ]));\r\n this._sensorForm.controls.rateOfChangeAlarmAddressBit.enable();\r\n this._rateOfChangeBitOptions = this.enabledBitOptions;\r\n break;\r\n }\r\n }\r\n}\r\n","export * from './equipment-scheme.component';","import { Component, OnInit, EventEmitter, Input, Output } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'greensleeves-equipment-sensor-delete-popup',\r\n templateUrl: './equipment-sensor-delete-popup.component.html',\r\n styles: []\r\n})\r\n\r\nexport class EquipmentSensorDeletePopupComponent implements OnInit {\r\n @Output('sensorDelete')\r\n sensorDelete: EventEmitter = new EventEmitter();\r\n\r\n @Output('equipmentDelete')\r\n equipmentDelete: EventEmitter = new EventEmitter();\r\n\r\n _isHidden = true;\r\n _isSubmitted: boolean;\r\n _isSensorDeletePopup: boolean;\r\n _sensorId: number;\r\n _equipmentId: number;\r\n constructor() { }\r\n\r\n ngOnInit() {\r\n this._isSubmitted = false;\r\n this._isHidden = true;\r\n }\r\n\r\n public showSensorView(sensorId: number) {\r\n this._sensorId = sensorId;\r\n this._isSubmitted = false;\r\n this._isSensorDeletePopup = true;\r\n this._isHidden = false;\r\n }\r\n\r\n public showEquipmentView(equipmentId: number) {\r\n this._isSubmitted = false;\r\n this._equipmentId = equipmentId;\r\n this._isSensorDeletePopup = false;\r\n this._isHidden = false;\r\n }\r\n\r\n async onSubmit() {\r\n this._isSubmitted = true;\r\n if (this._isSensorDeletePopup) {\r\n this.sensorDelete.emit(this._sensorId);\r\n } else {\r\n this.equipmentDelete.emit(this._equipmentId);\r\n }\r\n\r\n this._isHidden = true;\r\n }\r\n\r\n onCancel() {\r\n this._isHidden = true;\r\n this._isSubmitted = false;\r\n }\r\n}\r\n","export * from './equipment-sensor-delete-popup.component';","import { AfterViewChecked, Component, ElementRef, OnDestroy, OnInit } from '@angular/core';\r\nimport { FormGroup } from '@angular/forms';\r\nimport { CommonFunctions, ErrorModel } from '../../../../../common';\r\nimport { SideAB, equipmentSchemes, equipmentSensorMapping, equipmentSideLabels, sensorPositionLabels, sensorTypeLabels } from '../../../../constants';\r\nimport { EquipmentSideEnum, EquipmentSubTypeEnum, EquipmentTypeEnum, SensorPositionEnum, SensorTypeEnum, SensorValuesStatusEnum } from '../../../../enums';\r\n\r\nimport { EquipmentViewModel, SensorViewModel } from '../../../../models';\r\nimport { LastTelemetrySensorResponse } from '../../../../models/lastTelemetrySensorResponse.model';\r\nimport { LocationsBtxDataSourceService } from '../../../../services';\r\nimport { BasePopupBehavior } from '../../common';\r\n\r\n\r\n@Component({\r\n selector: 'greensleeves-equipment-view-data',\r\n templateUrl: './equipment-view-data.component.html',\r\n styles: []\r\n})\r\nexport class EquipmentViewDataPopupComponent extends BasePopupBehavior implements OnInit, OnDestroy, AfterViewChecked {\r\n _schema: Array<{ className: string, markers: Array<{ className: string, sensorType: SensorTypeEnum, sensorPosition: SensorPositionEnum, sensorId: number, sensorValueData: string, sensorMarkerData: string, sensorMarkerColor: string, sensorTableData: string, tooltip: string }> }> = [];\r\n\r\n _view = 'view';\r\n _isHidden = true;\r\n _sensorPosition = 'sensorPosition';\r\n _equipmentSide = 'equipmentSide';\r\n _activeEquipment: EquipmentViewModel;\r\n _currentLocationId: number;\r\n _submitted = false;\r\n _sensorForm: FormGroup;\r\n _equipmentSensors: LastTelemetrySensorResponse[];\r\n _receivingTimestamp: string;\r\n _leftSchemeSideName: string = null;\r\n _rightSchemeSideName: string = null;\r\n _sensorTypeEnum = SensorTypeEnum;\r\n\r\n _sensorTypes: Array<{ label: string, value: number }> = [];\r\n _sensorPositions: Array<{ label: string, value: number }> = [];\r\n _equipmentSides: Array<{ label: string, value: number }> = [];\r\n\r\n _sensorTempTable: Array<{ label: string, value: string, sensorMarkerColor: string, isRightSide: boolean }> = [];\r\n\r\n _sensorTempTableForLeftSchemeLeftColumn: Array<{ label: string, value: string, sensorMarkerColor: string }> = [];\r\n _sensorTempTableForLeftSchemeRightColumn: Array<{ label: string, value: string, sensorMarkerColor: string }> = [];\r\n _sensorTempTableForRightSchemeLeftColumn: Array<{ label: string, value: string, sensorMarkerColor: string }> = [];\r\n _sensorTempTableForRightSchemeRightColumn: Array<{ label: string, value: string, sensorMarkerColor: string }> = [];\r\n _sensorTempTableOnePerEquipmentSensors: Array<{ label: string, value: string, sensorMarkerColor: string, sensorType: SensorTypeEnum }> = [];\r\n\r\n constructor(\r\n private _el: ElementRef,\r\n private _locationBtxService: LocationsBtxDataSourceService,) {\r\n super();\r\n }\r\n\r\n ngAfterViewInit() {\r\n this.reInitScrollBar(0);\r\n }\r\n\r\n public show(equipment: EquipmentViewModel, locationId: number) {\r\n this._schema = [];\r\n this._sensorTempTable = [];\r\n this._sensorTempTableForLeftSchemeLeftColumn = [];\r\n this._sensorTempTableForLeftSchemeRightColumn = [];\r\n this._sensorTempTableForRightSchemeLeftColumn = [];\r\n this._sensorTempTableForRightSchemeRightColumn = [];\r\n this._sensorTempTableOnePerEquipmentSensors = [];\r\n this._receivingTimestamp = '';\r\n this._activeEquipment = equipment;\r\n this._currentLocationId = locationId;\r\n this.getLastDataForEquipment();\r\n this.buildSchema();\r\n this._isHidden = false;\r\n }\r\n\r\n onClickClose() {\r\n this._isHidden = true;\r\n this._activeEquipment = null;\r\n this._equipmentSensors = [];\r\n }\r\n\r\n buildSchema() {\r\n this._leftSchemeSideName = null;\r\n this._rightSchemeSideName = null;\r\n\r\n if (!this._activeEquipment) {\r\n this._schema = [];\r\n return;\r\n }\r\n\r\n this.sortSensors();\r\n const mapping = equipmentSensorMapping[this._activeEquipment.type][this._activeEquipment.subType];\r\n\r\n let selectedSideA: EquipmentSideEnum;\r\n let selectedSideB: EquipmentSideEnum;\r\n\r\n if (this._activeEquipment.sensors && this._activeEquipment.sensors.length > 0 && (this._activeEquipment.sensors[0].side as EquipmentSideEnum === EquipmentSideEnum.North ||\r\n this._activeEquipment.sensors[0].side as EquipmentSideEnum === EquipmentSideEnum.South)) {\r\n selectedSideA = EquipmentSideEnum.South;\r\n selectedSideB = EquipmentSideEnum.North;\r\n } else {\r\n selectedSideA = EquipmentSideEnum.East;\r\n selectedSideB = EquipmentSideEnum.West;\r\n }\r\n\r\n this._leftSchemeSideName = EquipmentSideEnum[selectedSideA];\r\n this._rightSchemeSideName = EquipmentSideEnum[selectedSideB];\r\n\r\n const sides = [\r\n equipmentSchemes[this._activeEquipment.type][this._activeEquipment.subType][0],\r\n equipmentSchemes[this._activeEquipment.type][this._activeEquipment.subType][selectedSideA],\r\n equipmentSchemes[this._activeEquipment.type][this._activeEquipment.subType][selectedSideB]\r\n ];\r\n let sensorTempTableOnePerEquipmentSensors: Array<{ label: string, value: string, sensorMarkerColor: string, sensorType: SensorTypeEnum }> = [];\r\n this._sensorTempTableOnePerEquipmentSensors = [];\r\n\r\n const shouldAddNonSided = Object.keys(sides).some(x => Number(x) as EquipmentSideEnum === EquipmentSideEnum.None);\r\n this._schema = Object.entries(sides)\r\n .filter(([side, schemaClassName]) => !!schemaClassName)\r\n .map(([side, schemaClassName]) => ({ side: Number(side) as EquipmentSideEnum, schemaClassName: schemaClassName as string }))\r\n .map(({ side, schemaClassName: className }) => {\r\n const markers = this._activeEquipment.sensors\r\n .map((sensor, index) => ({ ...sensor, index: index + 1 }))\r\n .filter(sensor => sensor.side === side || sensor.side === SideAB[side] || (shouldAddNonSided && sensor.side === EquipmentSideEnum.None))\r\n .map(sensor => ({\r\n sensorId: sensor.id,\r\n sensorType: sensor.type,\r\n sensorPosition: sensor.position,\r\n sensorTableData: sensor.position == SensorPositionEnum.OnePerEquipment ? sensorTypeLabels[sensor.type] : sensorPositionLabels[sensor.position] + ',\\n' + sensorTypeLabels[sensor.type],\r\n sensorValueData: this.getSensorValue(sensor.id, sensor.type),\r\n sensorMarkerData: sensor.type != SensorTypeEnum.Vibration ? sensorTypeLabels[sensor.type] : sensorPositionLabels[sensor.position] + ',\\n' + sensorTypeLabels[sensor.type],\r\n sensorMarkerColor: this.getSensorColor(sensor.id),\r\n className: mapping[sensor.type][sensor.position][sensor.side],\r\n tooltip: sensor.index + ' - ' + sensorPositionLabels[sensor.position] + '\\n' + sensorTypeLabels[sensor.type],\r\n }))\r\n .filter(marker => !!marker.className);\r\n return {\r\n className,\r\n markers\r\n };\r\n });\r\n\r\n if (this._equipmentSensors && this._equipmentSensors.length > 0) {\r\n const date = new Date(this._equipmentSensors[0].timestamp * 1000);\r\n this._receivingTimestamp = 'Last updating timestamp: ' + date.toLocaleString(\"en-US\");\r\n }\r\n\r\n this._sensorTempTable = [];\r\n\r\n if (this._activeEquipment) {\r\n let isRightTableSide = false;\r\n this._schema.forEach(s => {\r\n s.markers.forEach(m => {\r\n if (this._activeEquipment.subType === EquipmentSubTypeEnum.Belt) {\r\n if (!this.isThisSensorForConveyorBeltScheme(m.sensorType, m.sensorPosition) && (m.sensorPosition != SensorPositionEnum.OnePerEquipment && m.sensorType != SensorTypeEnum.Vibration)) {\r\n this._sensorTempTable.push({ label: m.sensorTableData, value: m.sensorValueData, isRightSide: isRightTableSide, sensorMarkerColor: m.sensorMarkerColor })\r\n }\r\n }\r\n if (this._activeEquipment.type != EquipmentTypeEnum.Fan && (m.sensorPosition == SensorPositionEnum.OnePerEquipment || m.sensorType == SensorTypeEnum.Vibration)) {\r\n sensorTempTableOnePerEquipmentSensors.push({ label: m.sensorTableData, value: m.sensorValueData, sensorMarkerColor: m.sensorMarkerColor, sensorType: m.sensorType })\r\n }\r\n }), isRightTableSide = true\r\n });\r\n if (this._activeEquipment.subType === EquipmentSubTypeEnum.Belt) {\r\n this._sensorTempTableForRightSchemeLeftColumn = this._sensorTempTable.filter(stt => stt.isRightSide).filter((a, i) => i % 2 == 0);\r\n this._sensorTempTableForRightSchemeRightColumn = this._sensorTempTable.filter(stt => stt.isRightSide).filter((a, i) => i % 2 !== 0);\r\n\r\n this._sensorTempTableForLeftSchemeLeftColumn = this._sensorTempTable.filter(stt => !stt.isRightSide).filter((a, i) => i % 2 === 0);\r\n this._sensorTempTableForLeftSchemeRightColumn = this._sensorTempTable.filter(stt => !stt.isRightSide).filter((a, i) => i % 2 !== 0);\r\n\r\n this._schema.forEach(sc => sc.markers = sc.markers.filter(st => this.isThisSensorForConveyorBeltScheme(st.sensorType, st.sensorPosition)));\r\n }\r\n if (sensorTempTableOnePerEquipmentSensors.length > 0) {\r\n this._schema.forEach(sc => sc.markers = sc.markers.filter(st => st.sensorPosition != SensorPositionEnum.OnePerEquipment && st.sensorType != SensorTypeEnum.Vibration));\r\n sensorTempTableOnePerEquipmentSensors.forEach(s => {\r\n if (!this._sensorTempTableOnePerEquipmentSensors.some(stf => stf.label == s.label)) {\r\n this._sensorTempTableOnePerEquipmentSensors.push({ label: s.label, value: s.value, sensorMarkerColor: s.sensorMarkerColor, sensorType: s.sensorType });\r\n }\r\n });\r\n }\r\n }\r\n }\r\n\r\n private isThisSensorForConveyorBeltScheme(sensorType: SensorTypeEnum, sensorPosition: SensorPositionEnum) {\r\n let isThisSensorForConveyorBeltScheme = (sensorType == SensorTypeEnum.BearingTemperature && sensorPosition == SensorPositionEnum.Head) ||\r\n (sensorType == SensorTypeEnum.RubBlockTemperature && sensorPosition == SensorPositionEnum.Head) ||\r\n (sensorType == SensorTypeEnum.BearingTemperature && sensorPosition == SensorPositionEnum.BendHead) ||\r\n (sensorType == SensorTypeEnum.RubBlockTemperature && sensorPosition == SensorPositionEnum.BendHead) ||\r\n (sensorType == SensorTypeEnum.BearingTemperature && sensorPosition == SensorPositionEnum.Tail) ||\r\n (sensorType == SensorTypeEnum.RubBlockTemperature && sensorPosition == SensorPositionEnum.Tail) ||\r\n (sensorType == SensorTypeEnum.BearingTemperature && sensorPosition == SensorPositionEnum.BendTail) ||\r\n (sensorType == SensorTypeEnum.RubBlockTemperature && sensorPosition == SensorPositionEnum.BendTail)\r\n\r\n return isThisSensorForConveyorBeltScheme;\r\n }\r\n\r\n private reInitScrollBar(timeout?: number) {\r\n const el = this._el.nativeElement.querySelector('.popup-container');\r\n this.reInitMainScrollBar(el, timeout);\r\n }\r\n\r\n private getSensorValue(sensorId: number, sensorType: SensorTypeEnum) {\r\n let sensor = this._equipmentSensors.find(x => x.id == sensorId);\r\n if (sensor) {\r\n return sensor.value.toString() + this.getMeasure(sensorType);\r\n } else {\r\n return 'No data'\r\n }\r\n }\r\n\r\n private getSensorColor(sensorId: number) {\r\n let sensor = this._equipmentSensors.find(x => x.id == sensorId);\r\n if (sensor) {\r\n if (sensor.status === SensorValuesStatusEnum.Norm) { return 'white'; }\r\n if (sensor.status === SensorValuesStatusEnum.Alarm) { return 'red'; }\r\n if (sensor.status === SensorValuesStatusEnum.Warning) { return 'yellow'; }\r\n if (sensor.status === SensorValuesStatusEnum.Error) { return 'grey'; }\r\n } else {\r\n return 'white';\r\n }\r\n }\r\n\r\n private sortSensors() {\r\n if (!this._activeEquipment) {\r\n return;\r\n }\r\n\r\n const sortByPosition = (a: SensorViewModel, b: SensorViewModel) => {\r\n const aString = `${sensorTypeLabels[a.type]}${sensorPositionLabels[a.position]}${equipmentSideLabels[a.side]}`;\r\n const bString = `${sensorTypeLabels[b.type]}${sensorPositionLabels[b.position]}${equipmentSideLabels[b.side]}`;\r\n if (aString < bString) {\r\n return -1;\r\n }\r\n if (aString > bString) {\r\n return 1;\r\n }\r\n return 0;\r\n };\r\n this._activeEquipment.sensors = this._activeEquipment.sensors.sort(sortByPosition);\r\n }\r\n\r\n private async getLastDataForEquipment() {\r\n this._equipmentSensors = [];\r\n let equipmentSensorIds = this._activeEquipment.sensors.map(x => x.id);\r\n const result = await this._locationBtxService.getLastData(this._currentLocationId, this._activeEquipment.id, equipmentSensorIds);\r\n if (result instanceof ErrorModel) {\r\n } else {\r\n this._equipmentSensors = result;\r\n }\r\n\r\n this.buildSchema();\r\n }\r\n\r\n private getMeasure(sensorType: SensorTypeEnum): string {\r\n return CommonFunctions.btxGetSensorMeasure(sensorType);\r\n }\r\n}","export * from './equipment-view-data.component';","export * from './equipment-popup.component';\r\nexport * from './equipment-scheme';\r\nexport * from './edit-sensor-popup';\r\nexport * from './view-sensor-popup';\r\nexport * from './equipment-menu';\r\nexport * from './equipment-sensor-delete-popup';\r\nexport * from './equipment-view-data';","export * from './view-sensor-popup.component';","import { Component } from '@angular/core';\r\nimport { SensorViewModel } from '../../../../models';\r\nimport { equipmentSideLabels, sensorPositionLabels, sensorTypeLabels } from 'src/app/main/constants';\r\n\r\n@Component({\r\n selector: 'greensleeves-view-sensor-popup',\r\n templateUrl: './view-sensor-popup.component.html',\r\n styles: []\r\n})\r\nexport class ViewSensorPopupComponent {\r\n _isHidden = true;\r\n _sensor: SensorViewModel;\r\n\r\n get _typeLabel() {\r\n return sensorTypeLabels[this._sensor.type];\r\n }\r\n\r\n get _positionLabel() {\r\n return sensorPositionLabels[this._sensor.position];\r\n }\r\n\r\n get _sideLabel() {\r\n return equipmentSideLabels[this._sensor.side];\r\n }\r\n\r\n public show(sensor: SensorViewModel) {\r\n this._sensor = sensor;\r\n this._isHidden = false;\r\n }\r\n\r\n onClickClose() {\r\n this._isHidden = true;\r\n this._sensor = null;\r\n }\r\n getRateOfChangeLabel(value): string {\r\n return value == null ? '-' : value;\r\n }\r\n}","import { Component, OnInit, ViewChild } from '@angular/core';\r\nimport { TreeNode } from 'primeng/api/treenode';\r\nimport { Calendar } from 'primeng/calendar';\r\n\r\nimport { ErrorModel } from '../../../../common';\r\nimport { BtxEventTypesLabel, CalendarDefaultValues, EnglishDateLocale, ItxEventTypesLabel, KtxEventTypesLabel } from './../../../constants';\r\nimport { BtxNotificationFilterNodeTypeEnum, ItxNodeTypesEnum, KtxNotificationFilterNodeTypeEnum, ProjectEnum } from './../../../enums';\r\nimport { NotificationReportPostModel } from './../../../models';\r\nimport { ReportDatasourceService } from './../../../services';\r\n\r\n@Component({\r\n selector: 'greensleeves-export-notification-popup',\r\n templateUrl: './export-notification-popup.component.html',\r\n styles: []\r\n})\r\nexport class ExportNotificationPopupComponent implements OnInit {\r\n static SELECT_ALL = 'Select All';\r\n @ViewChild('calendar', { static: false })\r\n private calendar: Calendar;\r\n\r\n _isHidden = true;\r\n _dataLocale: EnglishDateLocale = new EnglishDateLocale();\r\n _alertTypeOptions: { label: string, value: number }[] = [];\r\n _locationNodes: TreeNode[];\r\n _locationNodesSelected: TreeNode[];\r\n _loading = false;\r\n _dateRange: Date[];\r\n _eventTypes: number[];\r\n private project: ProjectEnum;\r\n\r\n get getDataPickterYearRange(): string {\r\n const dateNow = new Date();\r\n return `${dateNow.getFullYear() - 3}:${dateNow.getFullYear()}`;\r\n }\r\n\r\n get popupHeader(): string {\r\n return this.project==ProjectEnum.Itx?'Export alerts':'Export notifications';\r\n }\r\n\r\n constructor(\r\n private _reportDataSource: ReportDatasourceService,\r\n ) { }\r\n\r\n ngOnInit() {\r\n }\r\n\r\n onShow(locationNodes: TreeNode[], project: ProjectEnum) {\r\n this.project = project;\r\n this._locationNodesSelected = [];\r\n this.initialNode(locationNodes);\r\n this.initValues();\r\n this._isHidden = false;\r\n }\r\n\r\n onClose() {\r\n this._isHidden = true;\r\n }\r\n\r\n onApplyDateRangeFilter() {\r\n this.checkCalendar();\r\n this.calendar.toggle();\r\n }\r\n\r\n onCloseCalendar() {\r\n this.checkCalendar();\r\n }\r\n\r\n private checkCalendar(): boolean {\r\n if (this._dateRange == undefined || this._dateRange.length == 0) {\r\n this.resetCalendar();\r\n return false;\r\n }\r\n if (this._dateRange[1] == undefined || this._dateRange[1] == null) {\r\n let x = this._dateRange.map(x => x);\r\n x[1] = this._dateRange[0];\r\n this._dateRange = x.map(x => x);\r\n }\r\n return true\r\n }\r\n\r\n async onExport() {\r\n if (!this.checkCalendar()) return;\r\n if (!this._locationNodesSelected || this._locationNodesSelected.length === 0) return;\r\n this._loading = true;\r\n let locationIds: number[] = [];\r\n let equipmentIds: number[] = [];\r\n this._locationNodesSelected.forEach(i => {\r\n switch (this.project) {\r\n case ProjectEnum.Btx:\r\n switch (i.data.nodeType) {\r\n case BtxNotificationFilterNodeTypeEnum.Equipment:\r\n equipmentIds.push(i.data.id);\r\n if (i.data && i.data.locationId) locationIds.push(i.data.locationId);\r\n break;\r\n }\r\n break;\r\n case ProjectEnum.Ktx:\r\n switch (i.data.nodeType) {\r\n case KtxNotificationFilterNodeTypeEnum.Bin:\r\n equipmentIds.push(i.data.id);\r\n if (i.data && i.data.locationId) locationIds.push(i.data.locationId);\r\n break;\r\n }\r\n break;\r\n case ProjectEnum.Itx:\r\n switch (i.data.nodeType) {\r\n case ItxNodeTypesEnum.Bin:\r\n equipmentIds.push(i.data.id);\r\n if (i.data && i.data.locationId) locationIds.push(i.data.locationId);\r\n break;\r\n }\r\n break;\r\n }\r\n });\r\n\r\n const request = new NotificationReportPostModel();\r\n request.locationIds = [...new Set(locationIds)];\r\n request.equipmentIds = equipmentIds;\r\n request.eventTypes = this._eventTypes;\r\n request.dateTimeFromSeconds = this._dateRange[0].getTime() / CalendarDefaultValues.defaultOneSecondMilliseconds;\r\n request.dateTimeToSeconds = this._dateRange[1].getTime() / CalendarDefaultValues.defaultOneSecondMilliseconds;\r\n request.project = this.project;\r\n request.timeZone = Intl.DateTimeFormat().resolvedOptions().timeZone;\r\n\r\n let result = await this._reportDataSource.downloadNotificationReport(request);\r\n if (!(result instanceof ErrorModel)) {\r\n let fileName = `${ProjectEnum[this.project]}NotificationReport_${this._dateRange[0].toLocaleDateString()}-${this._dateRange[1].toLocaleDateString()}.csv`;\r\n const url = URL.createObjectURL(result as Blob);\r\n let downloadLink = document.createElement('a');\r\n downloadLink.href = url;\r\n downloadLink.download = fileName;\r\n downloadLink.click();\r\n this.onClose();\r\n }\r\n this._loading = false;\r\n }\r\n\r\n private initValues() {\r\n this.initAlerTypes();\r\n this.resetCalendar();\r\n this._eventTypes = [];\r\n }\r\n\r\n private resetCalendar() {\r\n let today = new Date();\r\n today.setHours(0, 0, 0, 0);\r\n this._dateRange = [today, today];\r\n }\r\n\r\n private initAlerTypes() {\r\n this._alertTypeOptions = [];\r\n switch (this.project) {\r\n case ProjectEnum.Btx:\r\n for (const [key, value] of Object.entries(BtxEventTypesLabel)) {\r\n this._alertTypeOptions.push({ label: value, value: Number(key) });\r\n }\r\n break;\r\n case ProjectEnum.Ktx:\r\n for (const [key, value] of Object.entries(KtxEventTypesLabel)) {\r\n this._alertTypeOptions.push({ label: value, value: Number(key) });\r\n }\r\n break;\r\n case ProjectEnum.Itx:\r\n for (const [key, value] of Object.entries(ItxEventTypesLabel)) {\r\n this._alertTypeOptions.push({ label: value, value: Number(key) });\r\n }\r\n break;\r\n }\r\n }\r\n\r\n private initialNode(locationNodes: TreeNode[]) {\r\n const { SELECT_ALL } = ExportNotificationPopupComponent;\r\n\r\n const selectAllNodes: TreeNode = {\r\n label: SELECT_ALL,\r\n data: SELECT_ALL,\r\n key: SELECT_ALL,\r\n };\r\n\r\n this._locationNodes = [];\r\n this._locationNodes = [selectAllNodes, ...locationNodes];\r\n this.selectedAllNodes();\r\n }\r\n\r\n onNodeSelect(event: any) {\r\n if (this.isSelectAllNode(event.node)) {\r\n this.selectedAllNodes();\r\n }\r\n }\r\n\r\n onNodeUnselect(event: any) {\r\n if (this.isSelectAllNode(event.node)) {\r\n this.unselectedAllNodes();\r\n return;\r\n }\r\n\r\n this._locationNodesSelected = this._locationNodesSelected.filter(n => !this.isSelectAllNode(n))\r\n }\r\n\r\n private selectedAllNodes() {\r\n const parentsNodes: TreeNode[] = [...this._locationNodes];\r\n let childrenNodes: TreeNode[] = [];\r\n\r\n this._locationNodes.forEach(x => {\r\n if (x.children && x.children.length > 0) {\r\n this.collectChildrenNodes(childrenNodes, x.children);\r\n }\r\n });\r\n\r\n this._locationNodesSelected = [...parentsNodes, ...childrenNodes];\r\n }\r\n\r\n private collectChildrenNodes(collector: TreeNode[], childrenNode: TreeNode[]) {\r\n childrenNode.forEach(x => {\r\n collector.push(x);\r\n if (x.children && x.children.length > 0) {\r\n this.collectChildrenNodes(collector, x.children);\r\n }\r\n });\r\n }\r\n\r\n\r\n private unselectedAllNodes() {\r\n this._locationNodesSelected = [];\r\n }\r\n\r\n private isSelectAllNode(node: TreeNode) {\r\n const { label, data, key } = node;\r\n const { SELECT_ALL } = ExportNotificationPopupComponent;\r\n\r\n return label === SELECT_ALL && data === SELECT_ALL && key === SELECT_ALL;\r\n }\r\n\r\n private getLocationId(locationIds: number[], node: TreeNode, locationNum: number) {\r\n let parent = node.parent;\r\n if (parent && parent.data.nodeType == locationNum) {\r\n locationIds.push(parent.data.id);\r\n return;\r\n } else if (!parent) return;\r\n this.getLocationId(locationIds, parent, locationNum);\r\n }\r\n}\r\n","export * from './export-notification-popup.component';","import { Component, OnDestroy, OnInit, ViewChild } from '@angular/core';\r\nimport { ProjectFirmwareViewModel } from '@models';\r\nimport { UpdaterDeviceDatasourceService } from '@services';\r\nimport { Subscription } from 'rxjs';\r\nimport { ColumnTypeEnum, ConfirmationDialogEnum, ProjectEnum } from '../../../enums';\r\n\r\nimport { BasePopupBehavior } from '../common';\r\nimport { UploadFirmwarePopupComponent } from '../upload-firmware-popup';\r\nimport { FirmwareFileFolder } from '../../../constants/device-update.constants';\r\nimport { ConfirmationPopupComponent } from '../confirmation-popup';\r\n\r\n@Component({\r\n selector: 'greensleeves-firmware-management-popup',\r\n templateUrl: './firmware-management-popup.component.html',\r\n styleUrls: []\r\n})\r\nexport class FirmwareManagementPopupComponent extends BasePopupBehavior implements OnInit, OnDestroy {\r\n @ViewChild(UploadFirmwarePopupComponent, { read: false, static: false })\r\n private uploadComponent: UploadFirmwarePopupComponent;\r\n\r\n @ViewChild(ConfirmationPopupComponent, { read: false, static: false })\r\n private confirmationPopup: ConfirmationPopupComponent;\r\n\r\n static LAST_MODIFIED_DATE_KEY = 'lastModified';\r\n static SORT_ORDER_DEFAULT = -1;\r\n\r\n _columnTypeEnum = ColumnTypeEnum;\r\n _sortOrder = FirmwareManagementPopupComponent.SORT_ORDER_DEFAULT;\r\n _sortField = FirmwareManagementPopupComponent.LAST_MODIFIED_DATE_KEY;\r\n _isHidden = true;\r\n _locationName: string = '';\r\n _gridData: ProjectFirmwareViewModel[];\r\n _selectedFiles: ProjectFirmwareViewModel[] = [];\r\n _loading = true;\r\n _isDeleteDownloadArchive = false;\r\n _isDownloadFile = 'isDownload';\r\n _dropdownOptions: { label: string, value: string }[] = [\r\n { label: ProjectEnum[ProjectEnum.Btx], value: FirmwareFileFolder[ProjectEnum.Btx] },\r\n { label: ProjectEnum[ProjectEnum.Ktx], value: FirmwareFileFolder[ProjectEnum.Ktx] },\r\n { label: ProjectEnum[ProjectEnum.Itx], value: FirmwareFileFolder[ProjectEnum.Itx] }];\r\n _selectedProject: string;\r\n\r\n _columnsView = [\r\n { header: 'Selected', columnType: ColumnTypeEnum.QuoteSelected, dataField: 'isSelected', width: 100 },\r\n { header: 'File', columnType: ColumnTypeEnum.FileName, dataField: 'name', width: 200 },\r\n { header: 'Last modified', columnType: ColumnTypeEnum.Date, dataField: 'lastModified', width: 150 },\r\n { header: 'Creation date', columnType: ColumnTypeEnum.Date, dataField: 'createdOn', width: 150 },\r\n { header: 'Size', columnType: ColumnTypeEnum.Details, dataField: 'size', width: 100 },\r\n { header: '', columnType: ColumnTypeEnum.DownloadConnectionFile, width: 135 },\r\n ];\r\n\r\n private _subscriptions: Subscription[] = [];\r\n\r\n constructor(\r\n private _updaterDeviceDatasourceService: UpdaterDeviceDatasourceService,\r\n ) {\r\n super();\r\n }\r\n\r\n async ngOnInit() {\r\n let firmwareSub = this._updaterDeviceDatasourceService.firmwares$.subscribe(items => {\r\n this._gridData = items;\r\n this._loading = false;\r\n });\r\n this._subscriptions.push(firmwareSub);\r\n this._selectedProject = this._dropdownOptions[0].value;\r\n }\r\n\r\n ngOnDestroy() {\r\n this._subscriptions && this._subscriptions.forEach(sub => sub.unsubscribe());\r\n }\r\n\r\n async onShow() {\r\n this._selectedProject = this._dropdownOptions[0].value;\r\n this._isHidden = false;\r\n this._loading = true;\r\n this._updaterDeviceDatasourceService.getBlobFirmwareFiles(this._selectedProject);\r\n }\r\n\r\n onSelectFirmware(file: ProjectFirmwareViewModel) {\r\n if (this._selectedFiles.includes(file)) {\r\n this._selectedFiles = this._selectedFiles.filter(x => x != file);\r\n }\r\n else {\r\n this._selectedFiles.push(file);\r\n }\r\n }\r\n\r\n async onProjectChange() {\r\n this._loading = true;\r\n this._gridData = [];\r\n this._updaterDeviceDatasourceService.getBlobFirmwareFiles(this._selectedProject);\r\n }\r\n\r\n onClearSelected() {\r\n this._gridData.forEach(item => {\r\n item['isSelected'] = false;\r\n });\r\n this._selectedFiles = [];\r\n }\r\n\r\n onCancel() {\r\n this._isHidden = true;\r\n this._selectedFiles = [];\r\n this._gridData = [];\r\n this._locationName = '';\r\n this._loading = false;\r\n }\r\n\r\n async onDownloadFirmwareFile(fileInfo: ProjectFirmwareViewModel) {\r\n fileInfo[this._isDownloadFile] = true;\r\n let result = await this._updaterDeviceDatasourceService.downloadFirmwareFile({ directoryName: this._selectedProject, fileName: fileInfo.name });\r\n if (result instanceof Blob) {\r\n const url = URL.createObjectURL(result as Blob);\r\n let downloadLink = document.createElement('a');\r\n downloadLink.href = url;\r\n downloadLink.download = fileInfo.name;\r\n downloadLink.click();\r\n }\r\n fileInfo[this._isDownloadFile] = false;\r\n }\r\n\r\n async onDownloadSelectedFileLogs() {\r\n if (this._selectedFiles.length > 0) {\r\n this._isDeleteDownloadArchive = true;\r\n let files = this._selectedFiles.sort((a, b) => new Date(a.createdOn).getTime() - new Date(b.createdOn).getTime());\r\n let fileList = files.map(x => x.name);\r\n this.onClearSelected();\r\n let result = await this._updaterDeviceDatasourceService.downloadFirmwareFiles({ directoryName: this._selectedProject, fileNames: fileList });\r\n if (result instanceof Blob) {\r\n let fileName: string = `${this._selectedProject}_${new Date(files[0].createdOn).getDate()}-${new Date(files[0].createdOn).getMonth() + 1}-${new Date(files[0].createdOn).getFullYear()}`;\r\n if (files.length > 1) {\r\n let lastIndex = files.length - 1;\r\n fileName = fileName + `_${new Date(files[lastIndex].createdOn).getDate()}-${new Date(files[lastIndex].createdOn).getMonth() + 1}-${new Date(files[lastIndex].createdOn).getFullYear()}`\r\n }\r\n fileName = fileName + '.zip';\r\n const url = URL.createObjectURL(result as Blob);\r\n let downloadLink = document.createElement('a');\r\n downloadLink.href = url;\r\n downloadLink.download = fileName;\r\n downloadLink.click();\r\n }\r\n this._isDeleteDownloadArchive = false;\r\n }\r\n }\r\n\r\n async onDeleteFirmwares() {\r\n if (this._selectedFiles.length > 0) {\r\n let fileList = 'Files: ' + this._selectedFiles.map(x => x.name).join(',') + '.';\r\n this.confirmationPopup.show('Do you really want to delete selected firmware files?', fileList);\r\n }\r\n }\r\n\r\n async deleteFirmware(confirmationResult: ConfirmationDialogEnum) {\r\n if (confirmationResult == ConfirmationDialogEnum.Confirmation) {\r\n if (this._selectedFiles.length > 0) {\r\n this._isDeleteDownloadArchive = true;\r\n let fileList = this._selectedFiles.map(x => x.name);\r\n\r\n const result = await this._updaterDeviceDatasourceService.deleteSelectedFirmwares({ directoryName: this._selectedProject, fileNames: fileList });\r\n if (result) {\r\n for (let i = this._gridData.length - 1; i >= 0; i--) {\r\n if (this._selectedFiles.includes(this._gridData[i])) {\r\n this._gridData.splice(i, 1);\r\n }\r\n }\r\n this.onClearSelected();\r\n }\r\n this._isDeleteDownloadArchive = false;\r\n }\r\n }\r\n }\r\n\r\n async onUpdateFirmware() {\r\n this.onClearSelected();\r\n this.uploadComponent.show(this._selectedProject, this._gridData);\r\n }\r\n}\r\n","export * from './firmware-management-popup.component'","export * from './common';\r\nexport * from './location-edit-popup';\r\nexport * from './btx-location-edit-popup';\r\nexport * from './company-admin-add-popup';\r\nexport * from './company-admin-edit-popup';\r\nexport * from './equipment-popup';\r\nexport * from './add-edit-equipment-popup';\r\nexport * from './upload-equipment-popup/upload-add-edit-equipment-popup';\r\nexport * from './company-admin-delete-popup';\r\nexport * from './company-user-add-popup';\r\nexport * from './company-user-edit-popup';\r\nexport * from './company-user-delete-popup';\r\nexport * from './service-user-add-popup';\r\nexport * from './location-delete-popup';\r\nexport * from './location-btx-ktx-delete-popup';\r\nexport * from './service-user-edit-popup';\r\nexport * from './service-user-delete-popup';\r\nexport * from './companies-add-edit-popup';\r\nexport * from './companies-delete-popup';\r\nexport * from './location-changed-popup';\r\nexport * from './ktx-add-edit-popup';\r\nexport * from './ktx-bin-details-popup';\r\nexport * from './ktx-location-bins-popup';\r\nexport * from './ktx-list-cables-popup';\r\nexport * from './ktx-temperature-ranges-popup';\r\nexport * from './upload-configuration-file-popup';\r\nexport * from './upload-btx-location-configuration-file-popup';\r\nexport * from './success-operation-popup';\r\nexport * from './ktx-unit-details-popup';\r\nexport * from './vendor-delete-popup';\r\nexport * from './itx-add-edit-popup';\r\nexport * from './itx-add-edit-popup';\r\nexport * from './vendor-delete-popup';\r\nexport * from './vendor-add-popup';\r\nexport * from './vendor-edit-popup';\r\nexport * from './itx-manage-color-popup';\r\nexport * from './itx-bin-add-edit-popup';\r\nexport * from './itx-bin-delete-popup';\r\nexport * from './itx-list-add-radar-popup';\r\nexport * from './itx-delete-radar-popup';\r\nexport * from './itx-edit-radar-popup';\r\nexport * from './itx-export-report-popup';\r\nexport * from './itx-live-data-setting-popup';\r\nexport * from './itx-storage-radars-popup';\r\nexport * from './user-profile-popup';\r\nexport * from './itx-quick-edit-popup';\r\nexport * from './aqs-confirm-popup';\r\nexport * from './computation-sheet-report-popup';\r\nexport * from './computation-sheet-share-report-popup';\r\nexport * from './aqs-computation-sheet-confirm-popup';\r\nexport * from './aqs-computation-sheet-resave-popup';\r\nexport * from './aqs-new-quote-popup';\r\nexport * from './ktx-connection-popup';\r\nexport * from './device-communication-popup';\r\nexport * from './ktx-unit-fullscreen-popup';\r\nexport * from './ktx-current-data-export-report-popup';\r\nexport * from './email-service-add-edit-popup';\r\nexport * from './email-service-delete-popup';\r\nexport * from './btx-live-data-export-report-popup';\r\nexport * from './tutorial-popup';\r\nexport * from './upload-equipment-popup';\r\nexport * from './export-notification-popup';\r\nexport * from './btx-equipment-details-popup';\r\nexport * from './confirmation-popup';\r\nexport * from './upload-firmware-popup';\r\nexport * from './upload-firmware-rebase-popup'\r\nexport * from './updater-add-edit-popup';\r\nexport * from './updater-delete-popup';\r\nexport * from './firmware-management-popup';\r\nexport * from './update-firmware-popup';\r\nexport * from './update-versions-management-popup';\r\nexport * from './upload-firmware-install-popup';\r\n","export * from './itx-add-edit-popup.component';","import { Component, OnInit, OnDestroy } from '@angular/core';\r\nimport { Subscription } from 'rxjs';\r\nimport { FormBuilder, FormGroup, Validators, FormControl } from '@angular/forms';\r\n\r\nimport { LocationsDataSourceService, LocationsItxDatasourceService } from '@services';\r\nimport { LocationItxViewModel } from '@models';\r\nimport { BasePopupBehavior } from '../common';\r\nimport { digitsValidator, ErrorCodeEnum, ErrorModel } from '../../../../common';\r\nimport { TemplateFunctions } from '../../common';\r\n\r\n@Component({\r\n selector: 'greensleeves-itx-add-edit-popup',\r\n templateUrl: './itx-add-edit-popup.component.html',\r\n styles: []\r\n})\r\nexport class ItxAddEditPopupComponent extends BasePopupBehavior implements OnInit, OnDestroy {\r\n _isAddPopup = true;\r\n _submitted = false;\r\n _isHidden = true;\r\n _isUniqueDeviceError = false;\r\n _locationForm: FormGroup;\r\n _ipAddress: string = '';\r\n _acquisitionRate: number;\r\n _port: number;\r\n _location: LocationItxViewModel = new LocationItxViewModel();\r\n _locations: { label: string, value: number }[];\r\n\r\n private subscription: Subscription;\r\n\r\n\r\n get locationForm(): FormGroup {\r\n\r\n return this._locationForm;\r\n }\r\n\r\n constructor(\r\n private _formBuilder: FormBuilder,\r\n private _locationsService: LocationsDataSourceService,\r\n private _locationsItxService: LocationsItxDatasourceService,\r\n ) {\r\n super();\r\n }\r\n\r\n ngOnInit() {\r\n this._location = new LocationItxViewModel();\r\n this.subscription = this._locationsService.locations$.subscribe((data) => {\r\n if (data) {\r\n this._locations = data.map((x) => ({ label: x.name, value: x.id }));\r\n }\r\n });\r\n }\r\n\r\n public showAdd() {\r\n this._submitted = false;\r\n this._isAddPopup = true;\r\n this._isHidden = false;\r\n this.initForm();\r\n }\r\n\r\n public showEdit(location: LocationItxViewModel) {\r\n this._submitted = false;\r\n this._isAddPopup = false;\r\n this._isHidden = false;\r\n this._location = Object.create(location);\r\n this._acquisitionRate = location.acquisitionRate;\r\n this._ipAddress = location.ipAddress;\r\n this._port = location.port;\r\n this.initForm();\r\n }\r\n\r\n async onClose() {\r\n this._isHidden = true;\r\n this._isUniqueDeviceError = false;\r\n this._ipAddress = '';\r\n this._acquisitionRate = null;\r\n this._port = null;\r\n if (!this._isAddPopup) {\r\n await this._locationsItxService.markLocationItxForOthersAsUpdated(this._location, false);\r\n }\r\n this._location = new LocationItxViewModel();\r\n this._locationForm.reset();\r\n }\r\n\r\n\r\n async onFocusControl(control: FormControl) {\r\n control.markAsTouched();\r\n }\r\n\r\n async onBlurControl(control: FormControl) {\r\n control.markAsUntouched();\r\n }\r\n\r\n async onSubmit() {\r\n this._submitted = true;\r\n\r\n if (this._locationForm.invalid) {\r\n return;\r\n }\r\n\r\n const value = {\r\n ...this._location,\r\n ...this._locationForm.value,\r\n } as LocationItxViewModel;\r\n\r\n const result = !!this._isAddPopup\r\n ? await this._locationsItxService.add(value)\r\n : await this._locationsItxService.edit(value);\r\n\r\n if (result instanceof ErrorModel) {\r\n if (result.code === ErrorCodeEnum.ItxDeviceAlreadyAssigned) {\r\n this._isUniqueDeviceError = true;\r\n }\r\n } else if (result) {\r\n if (!this._isAddPopup) {\r\n await this._locationsItxService.markLocationItxForOthersAsUpdated(result, true);\r\n }\r\n this._isHidden = true;\r\n this._submitted = false;\r\n this._isUniqueDeviceError = false;\r\n this._locationForm.reset();\r\n }\r\n }\r\n\r\n ngOnDestroy() {\r\n this.subscription.unsubscribe();\r\n }\r\n\r\n private initForm() {\r\n this._locationForm = this._formBuilder.group({\r\n locationId: [this._location.id, Validators.compose([\r\n Validators.required,\r\n ])],\r\n ipAddress: [this._location.ipAddress, Validators.compose([\r\n Validators.required,\r\n TemplateFunctions.ipValidator,\r\n ])\r\n ],\r\n acquisitionRate: [this._location.acquisitionRate, Validators.compose([\r\n Validators.required,\r\n Validators.min(1),\r\n Validators.max(60),\r\n digitsValidator\r\n ])\r\n ],\r\n port: [this._location.port, Validators.compose([\r\n Validators.required,\r\n Validators.min(0),\r\n Validators.max(65535),\r\n digitsValidator\r\n ])],\r\n });\r\n }\r\n}\r\n","export * from './itx-bin-add-edit-popup.component';","import { AfterViewChecked, Component, OnInit } from '@angular/core';\r\nimport { FormBuilder, FormGroup, Validators, FormControl } from '@angular/forms';\r\n\r\nimport { ItxBinDataSourceService } from '../../../services';\r\nimport { AddItxBinModel, ItxBinViewModel, EditItxBinModel } from '../../../models';\r\nimport { CapacityUnitEnum, ItxBinTypeEnum, SizeMeasureEnum } from '../../../enums';\r\nimport { ConvertDataFunctions, digitsFractionalValidator } from '../../../../common';\r\nimport { BasePopupBehavior, } from '../common';\r\nimport {\r\n CapacityUnitLiquidLabel, CapacityUnitLoosLabel, ItxBinIconClass, ItxBinTypeLabel, SizeMeasureLabel,\r\n LiquidStorageTypes, FlatStorageTypes, LiquidCapacityUnit\r\n} from '../../../constants';\r\n\r\n@Component({\r\n selector: 'greensleeves-itx-bin-add-edit-popup',\r\n templateUrl: './itx-bin-add-edit-popup.component.html',\r\n styles: []\r\n})\r\nexport class ItxBinAddEditPopupComponent extends BasePopupBehavior implements OnInit, AfterViewChecked {\r\n _isHidden = true;\r\n _isAddPopup = true;\r\n _storageForm: FormGroup;\r\n _location: { id: number, name: string };\r\n _selectedItxBinType: ItxBinTypeEnum;\r\n _itxBinTypes: { label: string, value: ItxBinTypeEnum }[] = [];\r\n _capacityUnit: any;\r\n _selectedCapacityUnit: CapacityUnitEnum;\r\n capacityUnitLiquid: { label: string, value: CapacityUnitEnum }[] = [];\r\n capacityUnitLoos: { label: string, value: CapacityUnitEnum }[] = [];\r\n _sizeMeasure: { label: string, value: SizeMeasureEnum }[] = [];\r\n _selectedSizeMeasure: SizeMeasureEnum;\r\n _submitted = false;\r\n itxBin: ItxBinViewModel;\r\n _disableSubmit = false;\r\n\r\n get _isSelectedBinType() {\r\n return this._selectedItxBinType != undefined;\r\n }\r\n\r\n get _isSelectedFlatStorage() {\r\n return FlatStorageTypes.includes(this._selectedItxBinType);\r\n }\r\n\r\n get _isSelectedCapacityUnit() {\r\n return this._selectedCapacityUnit != undefined;\r\n }\r\n\r\n get _isBinOrSiloStorage(): boolean {\r\n if (this._selectedItxBinType != null && this._selectedItxBinType != undefined) {\r\n return this._selectedItxBinType == ItxBinTypeEnum.BinConical || this._selectedItxBinType == ItxBinTypeEnum.BinFlat || this._selectedItxBinType == ItxBinTypeEnum.BinSloped ||\r\n this._selectedItxBinType == ItxBinTypeEnum.SiloConical || this._selectedItxBinType == ItxBinTypeEnum.SiloFlat || this._selectedItxBinType == ItxBinTypeEnum.SiloSloped;\r\n }\r\n return false\r\n }\r\n\r\n constructor(private _formBuilder: FormBuilder,\r\n private _itxBinDataService: ItxBinDataSourceService\r\n ) {\r\n super();\r\n }\r\n\r\n ngOnInit() {\r\n for (const [key, value] of Object.entries(ItxBinTypeLabel)) {\r\n this._itxBinTypes.push({ label: value, value: Number(key) });\r\n }\r\n\r\n for (const [key, value] of Object.entries(SizeMeasureLabel)) {\r\n this._sizeMeasure.push({ label: value, value: Number(key) });\r\n }\r\n\r\n for (const [key, value] of Object.entries(CapacityUnitLiquidLabel)) {\r\n this.capacityUnitLiquid.push({ label: value, value: Number(key) });\r\n }\r\n\r\n for (const [key, value] of Object.entries(CapacityUnitLoosLabel)) {\r\n this.capacityUnitLoos.push({ label: value, value: Number(key) });\r\n }\r\n }\r\n\r\n ngAfterViewChecked() {\r\n super.ngAfterViewChecked();\r\n }\r\n\r\n public showAdd(location: any) {\r\n this._isAddPopup = true;\r\n this._location = location;\r\n this.initFrom();\r\n this._isHidden = false;\r\n }\r\n\r\n public showEdit(itxBin: ItxBinViewModel) {\r\n this._isAddPopup = false;\r\n this.itxBin = itxBin;\r\n this._itxBinDataService.markItxBinForOthersAsInUpdate(this.itxBin ? this.itxBin.id : 0);\r\n this.initFrom();\r\n this._isHidden = false;\r\n }\r\n\r\n onChangeBinType() {\r\n this.manageDepthControl();\r\n this.manageCapacityUnitControl();\r\n }\r\n\r\n async onFocusControl(control: FormControl) {\r\n control.markAsTouched();\r\n }\r\n\r\n async onBlurControl(control: FormControl) {\r\n control.markAsUntouched();\r\n }\r\n\r\n onCancel() {\r\n this._isHidden = true;\r\n this._submitted = false;\r\n this.resetForm();\r\n if (!this._isAddPopup) {\r\n this._itxBinDataService.markItxBinForOthersAsUpdated(this.itxBin, false);\r\n this.itxBin = null;\r\n }\r\n }\r\n\r\n async onSubmit() {\r\n this._submitted = true;\r\n if (this._storageForm.invalid) {\r\n return;\r\n }\r\n\r\n if (!this._isSelectedBinType || !this._isSelectedCapacityUnit) {\r\n return;\r\n }\r\n\r\n if (this._isBinOrSiloStorage && this.checkErrorRoofAngleAndCap()) {\r\n return;\r\n }\r\n\r\n let itxBin = this._isAddPopup ? new AddItxBinModel({\r\n locationId: this._location.id,\r\n ...this._storageForm.value,\r\n } as AddItxBinModel) :\r\n new EditItxBinModel({\r\n id: this.itxBin.id,\r\n ...this._storageForm.value,\r\n } as EditItxBinModel);\r\n itxBin.depth = this.convertSizeValueToFt(itxBin.depth, itxBin.sizeMeasure);\r\n itxBin.width = this.convertSizeValueToFt(itxBin.width, itxBin.sizeMeasure);\r\n itxBin.height = this.convertSizeValueToFt(itxBin.height, itxBin.sizeMeasure);\r\n itxBin.totalCapacity = this.convertCapacityValueToDefaultUnit(itxBin.totalCapacity, itxBin.capacityUnit, itxBin.binType);\r\n if (itxBin.roofCap != null) {\r\n itxBin.roofCap = this.convertSizeValueToFt(itxBin.roofCap, itxBin.sizeMeasure);\r\n }\r\n\r\n this._disableSubmit = true;\r\n const result = this._isAddPopup ? await this._itxBinDataService.add(itxBin as AddItxBinModel)\r\n : await this._itxBinDataService.edit(itxBin as EditItxBinModel);\r\n if (result) {\r\n if (!this._isAddPopup) {\r\n await this._itxBinDataService.markItxBinForOthersAsUpdated(result as ItxBinViewModel, true);\r\n this.itxBin = null;\r\n }\r\n this._isHidden = true;\r\n this._submitted = false;\r\n this.resetForm();\r\n }\r\n\r\n this._disableSubmit = false;\r\n }\r\n\r\n private convertSizeValueToFt(value: number, sizeUnit: SizeMeasureEnum): number {\r\n let result = ConvertDataFunctions.convertSizeToFt(value, sizeUnit);\r\n return result;\r\n }\r\n\r\n private convertCapacityValueToDefaultUnit(value: number, capacityUnit: CapacityUnitEnum, binType: ItxBinTypeEnum): number {\r\n let result: number;\r\n switch (binType) {\r\n case ItxBinTypeEnum.LiquidStorageConical:\r\n case ItxBinTypeEnum.LiquidStorageFlat:\r\n case ItxBinTypeEnum.LiquidStorageSloped:\r\n result = ConvertDataFunctions.convertToGal(value, capacityUnit);\r\n break;\r\n default:\r\n result = ConvertDataFunctions.convertToFt3(value, capacityUnit);\r\n }\r\n return result;\r\n }\r\n\r\n getBinClass(binType: ItxBinTypeEnum = this.itxBin ? this.itxBin.binType : null): string {\r\n return ItxBinIconClass.getIconClass(binType);\r\n }\r\n\r\n private manageDepthControl() {\r\n if (this._isSelectedFlatStorage) {\r\n this._storageForm.controls.depth.setValidators(Validators.compose([\r\n Validators.required,\r\n digitsFractionalValidator,\r\n Validators.min(1)\r\n ]));\r\n this._storageForm.controls.depth.enable();\r\n } else {\r\n this._storageForm.controls.depth.reset();\r\n this._storageForm.controls.depth.clearValidators();\r\n this._storageForm.controls.depth.disable();\r\n }\r\n }\r\n\r\n private manageCapacityUnitControl() {\r\n if (LiquidStorageTypes.includes(this._selectedItxBinType)) {\r\n if (!LiquidCapacityUnit.includes(this._selectedCapacityUnit)) {\r\n this._capacityUnit = this.capacityUnitLiquid;\r\n this._storageForm.controls.capacityUnit.reset();\r\n this._storageForm.controls.roofAngle.setValue(null);\r\n this._storageForm.controls.roofCap.setValue(null);\r\n }\r\n }\r\n else {\r\n if (LiquidCapacityUnit.includes(this._selectedCapacityUnit)) {\r\n this._capacityUnit = this.capacityUnitLoos;\r\n this._storageForm.controls.capacityUnit.reset();\r\n }\r\n }\r\n }\r\n\r\n private initFrom() {\r\n this._selectedItxBinType = this.itxBin ? this.itxBin.binType : null;\r\n this._selectedSizeMeasure = this.itxBin ? this.itxBin.sizeMeasure : SizeMeasureEnum.Ft;\r\n this._selectedCapacityUnit = this.itxBin ? this.itxBin.capacityUnit : null;\r\n this._capacityUnit = LiquidStorageTypes.includes(this._selectedItxBinType) ? this.capacityUnitLiquid : this.capacityUnitLoos;\r\n this._storageForm = this._formBuilder.group({\r\n name: [this.itxBin ? this.itxBin.name : null, Validators.compose([\r\n Validators.required,\r\n Validators.minLength(3),\r\n Validators.maxLength(50),\r\n ])],\r\n totalCapacity: [this.itxBin ? this.itxBin.totalCapacity : null, Validators.compose([\r\n Validators.required,\r\n digitsFractionalValidator,\r\n Validators.min(1)\r\n ])],\r\n material: [this.itxBin ? this.itxBin.material : null, Validators.compose([\r\n Validators.required,\r\n Validators.minLength(3),\r\n Validators.maxLength(50),\r\n ])],\r\n binType: [this._selectedItxBinType, Validators.compose([])],\r\n tiltAngle: [this.itxBin ? this.itxBin.tiltAngle : null, Validators.compose([\r\n Validators.required,\r\n digitsFractionalValidator,\r\n Validators.min(0),\r\n Validators.max(90)\r\n ])],\r\n height: [this.itxBin ? this.itxBin.height : null, Validators.compose([\r\n Validators.required,\r\n digitsFractionalValidator,\r\n Validators.min(0)\r\n ])],\r\n width: [this.itxBin ? this.itxBin.width : null, Validators.compose([\r\n Validators.required,\r\n digitsFractionalValidator,\r\n Validators.min(0)\r\n ])],\r\n depth: [{ value: this.itxBin ? this.itxBin.depth : null, disabled: !this._isSelectedFlatStorage }],\r\n sizeMeasure: [this._selectedSizeMeasure, Validators.compose([])],\r\n capacityUnit: [this._selectedCapacityUnit, Validators.compose([])],\r\n roofAngle: [this.itxBin ? this.itxBin.roofAngle : null],\r\n roofCap: [this.itxBin ? this.itxBin.roofCap : null],\r\n });\r\n }\r\n\r\n private resetForm() {\r\n this._storageForm.reset();\r\n this._selectedSizeMeasure = SizeMeasureEnum.Ft;\r\n this._capacityUnit = this.capacityUnitLoos;\r\n this._disableSubmit = false;\r\n }\r\n\r\n private checkErrorRoofAngleAndCap(): boolean {\r\n if ((this._storageForm.controls.roofAngle.value == null || this._storageForm.controls.roofAngle.value == '') && (this._storageForm.controls.roofCap.value == null || this._storageForm.controls.roofCap.value == '')) {\r\n return false;\r\n }\r\n\r\n if (this._storageForm.controls.roofAngle.value != null && isNaN(parseInt(this._storageForm.controls.roofAngle.value))) {\r\n this._storageForm.controls.roofAngle.setErrors({ min: true });\r\n return true;\r\n }\r\n\r\n if (this._storageForm.controls.roofAngle.value != null && isNaN(parseInt(this._storageForm.controls.roofCap.value))) {\r\n this._storageForm.controls.roofCap.setErrors({ min: true });\r\n return true;\r\n }\r\n\r\n if (this._storageForm.controls.roofAngle.value != null && (this._storageForm.controls.roofCap.value == null || this._storageForm.controls.roofCap.value == '')) {\r\n this._storageForm.controls.roofCap.setErrors({ required: true });\r\n return true;\r\n }\r\n if (this._storageForm.controls.roofCap.value != null && (this._storageForm.controls.roofAngle.value == null || this._storageForm.controls.roofAngle.value == '')) {\r\n this._storageForm.controls.roofAngle.setErrors({ required: true });\r\n return true;\r\n }\r\n if (this._storageForm.controls.roofCap.value != null && parseInt(this._storageForm.controls.roofCap.value) > parseInt(this._storageForm.controls.width.value)) {\r\n this._storageForm.controls.roofCap.setErrors({ max: true });\r\n return true;\r\n }\r\n\r\n\r\n return false;\r\n }\r\n}\r\n","export * from './itx-bin-delete-popup.component';","import { Component } from '@angular/core';\r\n\r\nimport { ItxBinDataSourceService } from '../../../services';\r\nimport { ItxBinViewModel } from './../../../models';\r\n\r\n@Component({\r\n selector: 'greensleeves-itx-bin-delete-popup',\r\n templateUrl: './itx-bin-delete-popup.component.html',\r\n styles: []\r\n})\r\nexport class ItxBinDeletePopupComponent {\r\n _isHidden = true;\r\n private itxBin: ItxBinViewModel;\r\n constructor(\r\n private _itxBinDataService: ItxBinDataSourceService\r\n ) { }\r\n\r\n public show(itxBin: ItxBinViewModel) {\r\n this._isHidden = false;\r\n this.itxBin = itxBin;\r\n }\r\n\r\n async onSubmit() {\r\n const result = await this._itxBinDataService.delete(this.itxBin);\r\n if (result) {\r\n this._isHidden = true;\r\n this.itxBin = undefined;\r\n }\r\n }\r\n\r\n onCancel() {\r\n this.itxBin = undefined;\r\n this._isHidden = true;\r\n }\r\n\r\n}\r\n","export * from './itx-delete-radar-popup.component';","import { Component, EventEmitter, OnInit } from '@angular/core';\r\n\r\nimport { ItxBinDataSourceService } from '../../../services';\r\nimport { ErrorModel } from '../../../../common';\r\nimport { RadarViewModel } from '@models';\r\n\r\n@Component({\r\n selector: 'greensleeves-itx-delete-radar-popup',\r\n templateUrl: './itx-delete-radar-popup.component.html',\r\n styles: []\r\n})\r\nexport class ItxDeleteRadarPopupComponent implements OnInit {\r\n _isHidden = true;\r\n radar: RadarViewModel;\r\n _error: string;\r\n _submitted: boolean;\r\n onDeletedRadar = new EventEmitter();\r\n\r\n constructor(\r\n private _itxBinDataSourceService: ItxBinDataSourceService\r\n ) { }\r\n\r\n ngOnInit() {\r\n }\r\n\r\n public show(radar: RadarViewModel) {\r\n this._isHidden = false;\r\n this.radar = radar;\r\n }\r\n\r\n onCancel() {\r\n this._isHidden = true;\r\n this._error = null;\r\n this.radar = null;\r\n this._submitted = false;\r\n }\r\n\r\n async onSubmit() {\r\n if (!this._submitted)\r\n this._submitted = true;\r\n let result: boolean | ErrorModel;\r\n result = await this._itxBinDataSourceService.deleteRadar(this.radar);\r\n\r\n if (result === true) {\r\n this.onDeletedRadar.emit(this.radar.id);\r\n this.onCancel();\r\n } else if (result === false) {\r\n this._error = 'Unknown error occured';\r\n } else {\r\n const errorModel = result as ErrorModel;\r\n if (errorModel) {\r\n this._error = errorModel.message;\r\n }\r\n }\r\n this._submitted = false;\r\n }\r\n}\r\n","export * from './itx-edit-radar-popup.component';","import { FormBuilder, FormGroup, Validators } from '@angular/forms';\r\nimport { RadarPostModel, RadarViewModel } from '@models';\r\nimport { Component, EventEmitter, OnInit } from '@angular/core';\r\n\r\nimport { ItxBinDataSourceService } from '../../../services';\r\nimport { digitsValidator, ErrorCodeEnum, ErrorModel, ConvertDataFunctions } from '../../../../common';\r\nimport { ItxBinViewModel } from './../../../models';\r\nimport { ItxRadarLocationEnum, SizeMeasureEnum } from '../../../enums';\r\nimport { ItxRadarLocationLabel, SizeMeasureLabel } from './../../../constants';\r\n\r\n@Component({\r\n selector: 'greensleeves-itx-edit-radar-popup',\r\n templateUrl: './itx-edit-radar-popup.component.html',\r\n styles: []\r\n})\r\nexport class ItxEditRadarPopupComponent implements OnInit {\r\n _isHidden = true;\r\n _itxRadarForm: FormGroup;\r\n _radarIdAddressNotUnique: boolean;\r\n _radarIdNotUnique: boolean;\r\n _hasDistanceError: boolean;\r\n _hasRadarLocationError: boolean;\r\n _allRadars: RadarViewModel[];\r\n _submitted: boolean;\r\n _hasIdErrors: boolean;\r\n _hasIdAddressErrors: boolean;\r\n _itxBinViewModel: ItxBinViewModel;\r\n _radarLocation: ItxRadarLocationEnum;\r\n _distanceFromBinCenter: number;\r\n _sizeMeasureLabel = SizeMeasureLabel;\r\n _radarLocations: { label: string, value: ItxRadarLocationEnum }[];\r\n _radarIdAddresses: { label: string, value: number }[];\r\n\r\n needToUpdateItxDeviceEnrollment = new EventEmitter();\r\n\r\n private isNeedRadarPosittion: boolean;\r\n private radar: RadarPostModel;\r\n\r\n get _isSiloOrBinTypes(): boolean {\r\n return this.isNeedRadarPosittion;\r\n }\r\n\r\n constructor(\r\n private _formBuilder: FormBuilder,\r\n private _itxBinDataSouceService: ItxBinDataSourceService) { }\r\n\r\n ngOnInit() {\r\n this._radarLocations = [];\r\n for (const [key, value] of Object.entries(ItxRadarLocationLabel)) {\r\n this._radarLocations.push({ label: value, value: Number(key) });\r\n }\r\n\r\n }\r\n\r\n async onSubmit() {\r\n this._submitted = true;\r\n if (this._itxRadarForm.invalid) {\r\n if (this._itxRadarForm.controls.radarId.invalid)\r\n this._hasIdErrors = true;\r\n if (this._itxRadarForm.controls.radarIdAddress.invalid)\r\n this._hasIdAddressErrors = true;\r\n if (this._itxRadarForm.controls.radarLocation.invalid)\r\n this._hasRadarLocationError = true;\r\n if (this._itxRadarForm.controls.distanceFromBinCenter.invalid)\r\n this._hasDistanceError = true;\r\n return;\r\n }\r\n\r\n let distance: number = null;\r\n if (this._itxBinViewModel.radars.some(r => r.radarLocation != null) || this._itxRadarForm.controls.radarLocation.value != null) {\r\n distance = parseFloat(this._itxRadarForm.controls.distanceFromBinCenter.value);\r\n if (isNaN(distance) || (distance < 0 || distance > this._itxBinViewModel.width / 2)) {\r\n this._hasDistanceError = true;\r\n this._itxRadarForm.controls.distanceFromBinCenter.setErrors({ digitsValidator: true });\r\n return;\r\n }\r\n }\r\n\r\n const value = { ...this._itxRadarForm.value, distanceFromBinCenter: distance, itxBinId: this._itxBinViewModel.id, id: this.radar.id, locationId: this._itxBinViewModel.locationId } as RadarPostModel\r\n if (!this.checkRadarUniquenessPerLocation(value)) {\r\n return;\r\n }\r\n if (value.distanceFromBinCenter != null) {\r\n value.distanceFromBinCenter = ConvertDataFunctions.convertSizeToFt(value.distanceFromBinCenter, this._itxBinViewModel.sizeMeasure);\r\n }\r\n\r\n await this._itxBinDataSouceService.editRadar(value).then((response: RadarViewModel) => {\r\n if (response instanceof ErrorModel && response.code === ErrorCodeEnum.ItxRadarAlreadyExixtsInThisLocation) {\r\n this._radarIdAddressNotUnique = true;\r\n this._radarIdNotUnique = true;\r\n } else {\r\n this.needToUpdateItxDeviceEnrollment.emit();\r\n }\r\n });\r\n\r\n this.onCancel();\r\n }\r\n\r\n public show(radar: RadarPostModel, itxBinViewModel: ItxBinViewModel, radarIdAddresses: { label: string, value: number }[], isNeedPosition: boolean) {\r\n this._isHidden = false;\r\n this.radar = radar;\r\n this._radarIdAddresses = radarIdAddresses;\r\n this._radarIdAddresses.pop();\r\n this._radarIdAddresses.push({ label: radar.radarIdAddress.toString(), value: radar.radarIdAddress });\r\n this._radarIdAddresses = this._radarIdAddresses.sort((x, y) => x.value - y.value);\r\n this._itxBinViewModel = itxBinViewModel;\r\n this.isNeedRadarPosittion = isNeedPosition;\r\n if (this.radar.distanceFromBinCenter != null) {\r\n this.radar.distanceFromBinCenter = ConvertDataFunctions.convertSizeFromFt(this.radar.distanceFromBinCenter, this._itxBinViewModel.sizeMeasure);\r\n }\r\n this.initForm();\r\n }\r\n\r\n onChangeRadarLocationValues() {\r\n this._itxRadarForm.controls.distanceFromBinCenter.clearValidators();\r\n this._itxRadarForm.controls.distanceFromBinCenter.setValidators(Validators.compose([\r\n Validators.required,\r\n ]));\r\n this._itxRadarForm.controls.distanceFromBinCenter.updateValueAndValidity();\r\n\r\n this._itxRadarForm.controls.radarLocation.clearValidators();\r\n this._itxRadarForm.controls.radarLocation.setValidators(Validators.compose([Validators.required]));\r\n this._itxRadarForm.controls.radarLocation.updateValueAndValidity();\r\n\r\n if (this._itxRadarForm.controls.distanceFromBinCenter.value == '') {\r\n this._itxRadarForm.controls.distanceFromBinCenter.setValue(null)\r\n };\r\n\r\n if (this._itxRadarForm.controls.radarLocation.value == null && this._itxRadarForm.controls.distanceFromBinCenter.value == null) {\r\n this._itxRadarForm.controls.radarLocation.clearValidators();\r\n this._itxRadarForm.controls.radarLocation.updateValueAndValidity();\r\n this._itxRadarForm.controls.distanceFromBinCenter.clearValidators();\r\n this._itxRadarForm.controls.distanceFromBinCenter.updateValueAndValidity();\r\n }\r\n }\r\n\r\n private checkRadarUniquenessPerLocation(radar: RadarViewModel): boolean {\r\n let _allBins = this._itxBinDataSouceService.itxBin$.getValue();\r\n this._allRadars = _allBins.map(b => b.radars).reduce((a, b) => a.concat(b));\r\n if (this._allRadars.findIndex(r => r.radarId == radar.radarId && r.id != radar.id) > -1) {\r\n this._hasIdErrors = true;\r\n this._radarIdNotUnique = true;\r\n }\r\n if (this._allRadars.findIndex(r => r.radarIdAddress == radar.radarIdAddress && r.id != radar.id) > -1) {\r\n this._hasIdAddressErrors = true;\r\n this._radarIdAddressNotUnique = true;\r\n }\r\n if (this._radarIdNotUnique || this._radarIdAddressNotUnique) {\r\n return false;\r\n }\r\n return true;\r\n }\r\n\r\n onCancel() {\r\n this._isHidden = true;\r\n this._submitted = false;\r\n this.clearErrors();\r\n this._itxRadarForm.reset();\r\n }\r\n\r\n private initForm() {\r\n this._itxRadarForm = this._formBuilder.group({\r\n radarIdAddress: [this.radar.radarIdAddress, Validators.compose([\r\n Validators.required,\r\n Validators.min(1),\r\n Validators.max(65535),\r\n digitsValidator\r\n ])],\r\n radarId: [this.radar.radarId, Validators.compose([\r\n Validators.required,\r\n Validators.min(0),\r\n Validators.max(65535),\r\n digitsValidator\r\n ])],\r\n radarLocation: [this.radar.radarLocation],\r\n distanceFromBinCenter: [this.radar.distanceFromBinCenter],\r\n });\r\n this._itxRadarForm.controls.radarId.valueChanges.subscribe(() => {\r\n this._hasIdErrors = false;\r\n this._radarIdNotUnique = false;\r\n })\r\n this._itxRadarForm.controls.radarIdAddress.valueChanges.subscribe(() => {\r\n this._hasIdAddressErrors = false;\r\n this._radarIdAddressNotUnique = false;\r\n });\r\n this._itxRadarForm.controls.distanceFromBinCenter.valueChanges.subscribe(() => {\r\n this._hasDistanceError = false;\r\n });\r\n this._itxRadarForm.controls.radarLocation.valueChanges.subscribe(() => {\r\n this._hasRadarLocationError = false;\r\n });\r\n\r\n if (this._itxBinViewModel.radars.some(r => r.radarLocation != null)) {\r\n this._itxRadarForm.controls.radarLocation.setValidators(Validators.compose([Validators.required]));\r\n this._itxRadarForm.controls.distanceFromBinCenter.setValidators(Validators.compose([Validators.required,\r\n ]));\r\n }\r\n }\r\n\r\n private clearErrors() {\r\n this._hasIdErrors = false;\r\n this._hasIdAddressErrors = false;\r\n this._hasRadarLocationError = false;\r\n this._hasDistanceError = false;\r\n }\r\n}\r\n","export * from './itx-export-report-popup.component';","import { Component, OnInit } from '@angular/core';\r\n\r\nimport { ReportDataFileFilterPost, ReportDataFilterPost, ReportLiveDataFilterPost } from '@models';\r\nimport { ReportDatasourceService } from '@services';\r\nimport { CalendarDefaultValues, ReportFileFormatLabel } from '../../../constants';\r\nimport { ReportFormatEnum, ItxStorageSortingEnum } from './../../../enums';\r\nimport { ErrorModel } from '../../../../common';\r\n\r\n@Component({\r\n selector: 'greensleeves-itx-export-report-popup',\r\n templateUrl: './itx-export-report-popup.component.html',\r\n styles: []\r\n})\r\nexport class ItxExportReportPopupComponent implements OnInit {\r\n _isHidden = true;\r\n _formateReport: { label: string, value: number }[] = [];\r\n _selectedFormat: ReportFormatEnum;\r\n _isReportRun = false;\r\n private storageName: string;\r\n private reportHistorivalFileFilter: ReportDataFileFilterPost;\r\n private isLiveDataReport: boolean;\r\n private reportLiveDataFileFilter: ReportLiveDataFilterPost = new ReportLiveDataFilterPost();\r\n\r\n constructor(\r\n private _reportDatasource: ReportDatasourceService,\r\n ) { }\r\n\r\n ngOnInit() {\r\n }\r\n\r\n public showDownloadHistoricalReport(dataFilter: ReportDataFilterPost, storageName: string) {\r\n this._isReportRun = false;\r\n this.reportHistorivalFileFilter = dataFilter as ReportDataFileFilterPost;\r\n this.storageName = storageName;\r\n this.initFormatLabels(false);\r\n this._isHidden = false;\r\n }\r\n\r\n public showDownloadLiveDataReport(binIds: number[], itxBinSortParameter: ItxStorageSortingEnum) {\r\n this.initFormatLabels(true);\r\n this.reportLiveDataFileFilter.itxBinIds = binIds;\r\n this.reportLiveDataFileFilter.itxBinSortParameter = itxBinSortParameter;\r\n this._isHidden = false;\r\n }\r\n\r\n onCancel() {\r\n this._isHidden = true;\r\n }\r\n\r\n public async download() {\r\n this._isReportRun = true;\r\n let result: any;\r\n if (this.isLiveDataReport) {\r\n this.reportLiveDataFileFilter.reportFormat = this._selectedFormat;\r\n this.reportLiveDataFileFilter.timeZone = Intl.DateTimeFormat().resolvedOptions().timeZone;\r\n }\r\n else {\r\n this.reportHistorivalFileFilter.reportFormat = this._selectedFormat;\r\n this.reportHistorivalFileFilter.timeZone = Intl.DateTimeFormat().resolvedOptions().timeZone;\r\n }\r\n\r\n result = this.isLiveDataReport ? await this._reportDatasource.downloadItxLiveDataReportFile(this.reportLiveDataFileFilter)\r\n : await this._reportDatasource.downloadItxHistoricalReportFile(this.reportHistorivalFileFilter);\r\n if (!(result instanceof ErrorModel)) {\r\n let fileName = this.isLiveDataReport ? this.generateLiveDataFileName() : this.generateHistoricalFileName();\r\n const url = URL.createObjectURL(result);\r\n let downloadLink = document.createElement('a');\r\n downloadLink.href = url;\r\n downloadLink.download = fileName;\r\n downloadLink.click();\r\n this.onCancel();\r\n }\r\n this._isReportRun = false;\r\n }\r\n\r\n private generateHistoricalFileName(): string {\r\n let from = new Date(this.reportHistorivalFileFilter.dateFrom * CalendarDefaultValues.defaultOneSecondMilliseconds);\r\n let to = new Date(this.reportHistorivalFileFilter.dateTo * CalendarDefaultValues.defaultOneSecondMilliseconds);\r\n let fileExtension = ReportFileFormatLabel[this.reportHistorivalFileFilter.reportFormat];\r\n return `${this.storageName.replace(/ /g,'_')}_${from.toLocaleDateString('en-US')}-${to.toLocaleDateString('en-US')}.${fileExtension}`;\r\n }\r\n\r\n private generateLiveDataFileName(): string {\r\n let date = new Date();\r\n let fileName = this.reportLiveDataFileFilter.reportFormat == ReportFormatEnum.png ? `LiveDataReport-${date.toLocaleDateString()}.zip`\r\n : `LiveDataReport-${date.toLocaleDateString()}.${ReportFileFormatLabel[this.reportLiveDataFileFilter.reportFormat]}`\r\n return fileName;\r\n }\r\n\r\n private initFormatLabels(isLiveData: boolean) {\r\n this.isLiveDataReport = isLiveData;\r\n this._formateReport = [];\r\n for (const [key, value] of Object.entries(ReportFileFormatLabel)) {\r\n let label=value as string;\r\n if (Number(key) == ReportFormatEnum.png && this.isLiveDataReport) {\r\n label += ' (zip)';\r\n }\r\n this._formateReport.push({ label: label, value: Number(key) })\r\n }\r\n this._selectedFormat = this._formateReport[0].value;\r\n }\r\n}\r\n","export * from './itx-list-add-radar-popup.component'","import { Subscription } from 'rxjs';\r\nimport { Component, OnInit, ViewChild, AfterViewInit, OnDestroy, EventEmitter } from '@angular/core';\r\nimport { FormBuilder, FormGroup, Validators } from '@angular/forms';\r\n\r\nimport { digitsValidator, ErrorCodeEnum, ErrorModel } from '../../../../common';\r\nimport { ItxEditRadarPopupComponent } from './../itx-edit-radar-popup';\r\nimport { ItxDeleteRadarPopupComponent } from './../itx-delete-radar-popup';\r\nimport { RadarViewModel, ItxBinViewModel, RadarPostModel } from '@models';\r\nimport { ItxBinDataSourceService, LocationsItxDatasourceService } from '../../../services';\r\nimport { ItxBinTypeEnum, ItxRadarLocationEnum, ColumnTypeEnum } from '../../../enums';\r\nimport { ItxRadarLocationLabel, SizeMeasureLabel } from './../../../constants';\r\nimport { ConvertDataFunctions } from '../../../../common';\r\n\r\n@Component({\r\n selector: 'greensleeves-itx-add-radars-popup',\r\n templateUrl: './itx-list-add-radar-popup.component.html',\r\n styles: []\r\n})\r\nexport class ItxListAddRadarPopupComponent implements OnInit, AfterViewInit, OnDestroy {\r\n _isHidden = true;\r\n _itxAddRadarForm: FormGroup;\r\n _radarIdAddresses: { label: string, value: number }[];\r\n _radarLocations: { label: string, value: ItxRadarLocationEnum }[];\r\n _submitted: boolean;\r\n _hasIdErrors: boolean;\r\n _hasDistanceError: boolean;\r\n _hasRadarLocationError: boolean;\r\n _hasIdAddressErrors: boolean;\r\n _radarIdNotUnique: boolean;\r\n _radarIdAddressNotUnique: boolean;\r\n _columnTypeEnum = ColumnTypeEnum;\r\n _itxBinViewModel: ItxBinViewModel;\r\n allRadars: RadarViewModel[];\r\n _sizeMeasureLabel = SizeMeasureLabel;\r\n onNeedToUpdateItxDeviceEnrollment = new EventEmitter();\r\n\r\n private isNeedToUpdateLocationEnrollment: boolean = false;\r\n private subscriptions: Subscription[] = [];\r\n private radarLocationLabel = ItxRadarLocationLabel;\r\n\r\n @ViewChild(ItxEditRadarPopupComponent, { read: false, static: false })\r\n private editRadarModal: ItxEditRadarPopupComponent;\r\n\r\n @ViewChild(ItxDeleteRadarPopupComponent, { read: false, static: false })\r\n private deleteRadarModal: ItxDeleteRadarPopupComponent;\r\n\r\n _gridData: RadarViewModel[];\r\n _columnsView = [\r\n { header: 'Radar number:', columnType: ColumnTypeEnum.Counter },\r\n { header: 'Radar ID:', dataField: 'radarId', columnType: ColumnTypeEnum.Number },\r\n { header: 'Radar ID address:', dataField: 'radarIdAddress', columnType: ColumnTypeEnum.Number },\r\n { header: 'Radar location:', dataField: 'radarLocation', columnType: ColumnTypeEnum.RadarLocation },\r\n { header: 'Distance:', dataField: 'distanceFromBinCenter', columnType: ColumnTypeEnum.RadarDistance },\r\n ]\r\n get _isSiloOrBinTypes(): boolean {\r\n return this.getRequireRadarLocation();\r\n }\r\n\r\n constructor(\r\n private _formBuilder: FormBuilder,\r\n private _itxBinDataSouceService: ItxBinDataSourceService,\r\n private _itxLocationService: LocationsItxDatasourceService\r\n ) { }\r\n\r\n ngOnInit() {\r\n\r\n this._radarLocations = [];\r\n for (const [key, value] of Object.entries(ItxRadarLocationLabel)) {\r\n this._radarLocations.push({ label: value, value: Number(key) });\r\n }\r\n }\r\n\r\n ngAfterViewInit() {\r\n let subDelete = this.deleteRadarModal.onDeletedRadar.subscribe((id: number) => {\r\n this.isNeedToUpdateLocationEnrollment = true;\r\n });\r\n\r\n let subNeedUpdate = this.editRadarModal.needToUpdateItxDeviceEnrollment.subscribe(() => {\r\n this.isNeedToUpdateLocationEnrollment = true;\r\n });\r\n\r\n let itxBins = this._itxBinDataSouceService.itxBin$.subscribe(item => {\r\n let radarIDAddressesBusy: number[] = [];\r\n item.forEach(bin => {\r\n radarIDAddressesBusy.push(...bin.radars.map(r => r.radarIdAddress));\r\n if (this._itxBinViewModel && bin.id == this._itxBinViewModel.id) {\r\n this._gridData = bin.radars;\r\n this._itxBinViewModel = bin;\r\n this.initForm();\r\n }\r\n })\r\n this._radarIdAddresses = this.getRadarIdAddressesToSelect(radarIDAddressesBusy);\r\n });\r\n\r\n this.subscriptions.push(subDelete);\r\n this.subscriptions.push(subNeedUpdate);\r\n this.subscriptions.push(itxBins);\r\n }\r\n\r\n ngOnDestroy() {\r\n this.subscriptions && this.subscriptions.forEach(subs => subs.unsubscribe());\r\n }\r\n\r\n onClickEdit(radar: RadarViewModel) {\r\n let postRadar = RadarViewModel.ToPostModel(radar);\r\n postRadar.locationId = this._itxBinViewModel.locationId;\r\n this.editRadarModal.show(postRadar, this._itxBinViewModel, this._radarIdAddresses, this._isSiloOrBinTypes);\r\n }\r\n\r\n onClickDelete(radar: RadarViewModel) {\r\n this.deleteRadarModal.show(radar);\r\n }\r\n\r\n async onSubmit() {\r\n this._submitted = true;\r\n if (this._itxAddRadarForm.invalid) {\r\n if (this._itxAddRadarForm.controls.radarId.invalid)\r\n this._hasIdErrors = true;\r\n if (this._itxAddRadarForm.controls.radarIdAddress.invalid)\r\n this._hasIdAddressErrors = true;\r\n if (this._itxAddRadarForm.controls.radarLocation.invalid)\r\n this._hasRadarLocationError = true;\r\n if (this._itxAddRadarForm.controls.distanceFromBinCenter.invalid)\r\n this._hasDistanceError = true;\r\n return;\r\n }\r\n\r\n let distance: number = null;\r\n if (this._itxBinViewModel.radars.some(r => r.radarLocation != null) || this._itxAddRadarForm.controls.radarLocation.value != null) {\r\n distance = parseFloat(this._itxAddRadarForm.controls.distanceFromBinCenter.value);\r\n if (isNaN(distance) || (distance < 0 || distance > this._itxBinViewModel.width / 2)) {\r\n this._hasDistanceError = true;\r\n this._itxAddRadarForm.controls.distanceFromBinCenter.setErrors({ digitsValidator: true });\r\n return;\r\n }\r\n }\r\n\r\n const value = { ...this._itxAddRadarForm.value, distanceFromBinCenter: distance, itxBinId: this._itxBinViewModel.id, locationId: this._itxBinViewModel.locationId, id: 0 } as RadarPostModel\r\n\r\n if (!this.checkRadarUniquenessPerLocation(value)) {\r\n return;\r\n }\r\n\r\n if (value.distanceFromBinCenter != null) {\r\n value.distanceFromBinCenter = ConvertDataFunctions.convertSizeToFt(value.distanceFromBinCenter, this._itxBinViewModel.sizeMeasure);\r\n }\r\n\r\n await this._itxBinDataSouceService.addRadar(value).then((response: RadarViewModel) => {\r\n if (response instanceof ErrorModel && response.code === ErrorCodeEnum.ItxRadarAlreadyExixtsInThisLocation) {\r\n this._radarIdAddressNotUnique = true;\r\n this._radarIdNotUnique = true;\r\n }\r\n else {\r\n this._submitted = false;\r\n this.isNeedToUpdateLocationEnrollment = true;\r\n this._itxAddRadarForm.reset();\r\n }\r\n });\r\n }\r\n\r\n public show(itxBinViewModel: ItxBinViewModel) {\r\n this._isHidden = false;\r\n this._itxBinViewModel = itxBinViewModel;\r\n this._gridData = itxBinViewModel.radars;\r\n this.isNeedToUpdateLocationEnrollment = false;\r\n this.initForm();\r\n }\r\n\r\n onCancel() {\r\n this._itxBinDataSouceService.markItxBinRadarForOthersAsInUpdate(this._itxBinViewModel.id, false);\r\n this._isHidden = true;\r\n this._submitted = false;\r\n this.clearErrors();\r\n this._itxAddRadarForm.reset();\r\n if (this.isNeedToUpdateLocationEnrollment) {\r\n let location = this._itxLocationService.locationsItx$.getValue().find(l => l.id == this._itxBinViewModel.locationId);\r\n if (location && location.isInitialized) {\r\n this._itxLocationService.initializeDeviceConfiguration(this._itxBinViewModel.locationId);\r\n }\r\n }\r\n }\r\n\r\n getRadarDistanceByBinSizeWithMeasureLabel(distance: number): string {\r\n if (distance != null) {\r\n return `${ConvertDataFunctions.convertSizeFromFt(distance, this._itxBinViewModel.sizeMeasure)} ${this._sizeMeasureLabel[this._itxBinViewModel.sizeMeasure]}`;\r\n }\r\n return '-';\r\n }\r\n\r\n getRadarLocationLabel(radarLocation: ItxRadarLocationEnum): string {\r\n if (radarLocation != null) {\r\n return this.radarLocationLabel[radarLocation];\r\n }\r\n return '-';\r\n }\r\n\r\n onChangeRadarLocationValues() {\r\n this._itxAddRadarForm.controls.distanceFromBinCenter.clearValidators();\r\n this._itxAddRadarForm.controls.distanceFromBinCenter.setValidators(Validators.compose([\r\n Validators.required,]));\r\n this._itxAddRadarForm.controls.distanceFromBinCenter.updateValueAndValidity();\r\n\r\n this._itxAddRadarForm.controls.radarLocation.clearValidators();\r\n this._itxAddRadarForm.controls.radarLocation.setValidators(Validators.compose([Validators.required]));\r\n this._itxAddRadarForm.controls.radarLocation.updateValueAndValidity();\r\n\r\n if (this._itxAddRadarForm.controls.distanceFromBinCenter.value == '') {\r\n this._itxAddRadarForm.controls.distanceFromBinCenter.setValue(null)\r\n };\r\n\r\n if (this._itxAddRadarForm.controls.radarLocation.value == null && this._itxAddRadarForm.controls.distanceFromBinCenter.value == null) {\r\n this._itxAddRadarForm.controls.radarLocation.clearValidators();\r\n this._itxAddRadarForm.controls.radarLocation.updateValueAndValidity();\r\n this._itxAddRadarForm.controls.distanceFromBinCenter.clearValidators();\r\n this._itxAddRadarForm.controls.distanceFromBinCenter.updateValueAndValidity();\r\n }\r\n }\r\n\r\n private checkRadarUniquenessPerLocation(radar: RadarPostModel): boolean {\r\n let _allBins = this._itxBinDataSouceService.itxBin$.getValue();\r\n this.allRadars = _allBins.map(b => b.radars).reduce((a, b) => a.concat(b));\r\n if (this.allRadars.findIndex(r => r.radarId == radar.radarId) > -1) {\r\n this._hasIdErrors = true;\r\n this._radarIdNotUnique = true;\r\n }\r\n if (this.allRadars.findIndex(r => r.radarIdAddress == radar.radarIdAddress) > -1) {\r\n this._hasIdAddressErrors = true;\r\n this._radarIdAddressNotUnique = true;\r\n }\r\n if (this._radarIdNotUnique || this._radarIdAddressNotUnique) {\r\n return false;\r\n }\r\n return true;\r\n }\r\n\r\n private getRadarIdAddressesToSelect(busyAddresses: number[]): { label: string, value: number }[] {\r\n let radarIDAddresses: { label: string, value: number }[] = [];\r\n let currentRadarIDAddress: number = 50;\r\n while (radarIDAddresses.length < 5) {\r\n if (busyAddresses.indexOf(currentRadarIDAddress) == -1) {\r\n radarIDAddresses.push({ label: currentRadarIDAddress.toString(), value: currentRadarIDAddress });\r\n }\r\n currentRadarIDAddress += 100;\r\n }\r\n return radarIDAddresses;\r\n }\r\n\r\n private getRequireRadarLocation(): boolean {\r\n if (this._itxBinViewModel) {\r\n let binType = this._itxBinViewModel.binType;\r\n return binType == ItxBinTypeEnum.BinConical || binType == ItxBinTypeEnum.BinFlat || binType == ItxBinTypeEnum.BinSloped ||\r\n binType == ItxBinTypeEnum.SiloConical || binType == ItxBinTypeEnum.SiloFlat || binType == ItxBinTypeEnum.SiloSloped;\r\n }\r\n return false\r\n }\r\n\r\n private initForm() {\r\n this._itxAddRadarForm = this._formBuilder.group({\r\n radarIdAddress: [null, Validators.compose([\r\n Validators.required,\r\n Validators.min(1),\r\n Validators.max(65535),\r\n digitsValidator\r\n ])],\r\n radarId: [null, Validators.compose([\r\n Validators.required,\r\n Validators.min(0),\r\n Validators.max(65535),\r\n digitsValidator\r\n ])],\r\n radarLocation: [null],\r\n distanceFromBinCenter: [null],\r\n });\r\n this._itxAddRadarForm.controls.radarId.valueChanges.subscribe(() => {\r\n this._hasIdErrors = false;\r\n this._radarIdNotUnique = false;\r\n })\r\n this._itxAddRadarForm.controls.radarIdAddress.valueChanges.subscribe(() => {\r\n this._hasIdAddressErrors = false;\r\n this._radarIdAddressNotUnique = false;\r\n });\r\n this._itxAddRadarForm.controls.distanceFromBinCenter.valueChanges.subscribe(() => {\r\n this._hasDistanceError = false;\r\n });\r\n this._itxAddRadarForm.controls.radarLocation.valueChanges.subscribe(() => {\r\n this._hasRadarLocationError = false;\r\n });\r\n if (this._itxBinViewModel.radars.some(r => r.radarLocation != null)) {\r\n this._itxAddRadarForm.controls.radarLocation.setValidators(Validators.compose([Validators.required]));\r\n this._itxAddRadarForm.controls.distanceFromBinCenter.setValidators(Validators.compose([Validators.required,]));\r\n }\r\n }\r\n\r\n private clearErrors() {\r\n this._hasIdErrors = false;\r\n this._hasIdAddressErrors = false;\r\n this._hasRadarLocationError = false;\r\n this._hasDistanceError = false;\r\n }\r\n}\r\n","export * from './itx-live-data-setting-popup.component';","import { Component, OnInit } from '@angular/core';\r\nimport { FormBuilder, FormGroup, Validators } from '@angular/forms';\r\nimport { Subscription } from 'rxjs';\r\n\r\nimport { ItxBinDataSourceService } from '@services';\r\nimport { UserPreferences, UserPreferencesPost } from './../../../models';\r\nimport { CapacityUnitEnum, SizeMeasureEnum, TemperatureMeasureEnum } from './../../../enums';\r\nimport { CapacityUnitLiquidLabel, SizeMeasureLabel, TemperatureMeasureLabel,CapacityUnitLoosLabel } from 'src/app/main/constants';\r\n\r\n@Component({\r\n selector: 'greensleeves-itx-live-data-setting-popup',\r\n templateUrl: './itx-live-data-setting-popup.component.html',\r\n styles: []\r\n})\r\nexport class ItxLiveDataSettingPopupComponent implements OnInit{\r\n _isHidden = true;\r\n _itxUserPreferencesForm: FormGroup;\r\n _submitted: boolean;\r\n \r\n subscriptions: Subscription[] = [];\r\n\r\n _headSpace: { label: string, value: SizeMeasureEnum }[] = [];\r\n _selectedHeadSpace: SizeMeasureEnum;\r\n\r\n _liquidCapacity: { label: string, value: CapacityUnitEnum }[] = [];\r\n _selectedLiquidCapacity: CapacityUnitEnum;\r\n\r\n _bulkCapacity: { label: string, value: CapacityUnitEnum }[] = [];\r\n _selectedBulkCapacity: CapacityUnitEnum;\r\n\r\n _ambientTemperature: { label: string, value: TemperatureMeasureEnum }[] = [];\r\n _selectedAmbientTemperature: TemperatureMeasureEnum;\r\n\r\n constructor(private _itxBinDataSerivece: ItxBinDataSourceService,\r\n private formBuilder: FormBuilder,) { }\r\n ngOnInit(): void {\r\n this.setUnitLabels();\r\n this.initForm();\r\n }\r\n\r\n private setUnitLabels(){\r\n for (const [key, value] of Object.entries(CapacityUnitLiquidLabel)) {\r\n this._liquidCapacity.push({ label: value, value: Number(key) });\r\n }\r\n for (const [key, value] of Object.entries(CapacityUnitLoosLabel)) {\r\n this._bulkCapacity.push({ label: value, value: Number(key) });\r\n }\r\n for (const [key, value] of Object.entries(TemperatureMeasureLabel)) {\r\n this._ambientTemperature.push({ label: value, value: Number(key) });\r\n }\r\n for (const [key, value] of Object.entries(SizeMeasureLabel)) {\r\n this._headSpace.push({ label: value, value: Number(key) });\r\n }\r\n }\r\n \r\n public show(userPreferences: UserPreferences) {\r\n this._selectedAmbientTemperature = userPreferences.temperatureMeasure;\r\n this._selectedBulkCapacity = userPreferences.capacityLoosUnit;\r\n this._selectedLiquidCapacity = userPreferences.capacityLiquidUnit;\r\n this._selectedHeadSpace = userPreferences.sizeMeasure;\r\n this.initForm();\r\n this._isHidden = false;\r\n }\r\n\r\n onClickCancel() {\r\n this._isHidden = true;\r\n this.resetForm();\r\n this._submitted = false;\r\n }\r\n async onSubmit() {\r\n this._submitted = true;\r\n if (this._itxUserPreferencesForm.invalid) {\r\n return;\r\n }\r\n\r\n let userPref = new UserPreferencesPost();\r\n userPref.temperatureMeasure = this._selectedAmbientTemperature;\r\n userPref.sizeMeasure = this._selectedHeadSpace;\r\n userPref.capacityLoosUnit = this._selectedBulkCapacity;\r\n userPref.capacityLiquidUnit = this._selectedLiquidCapacity;\r\n await this._itxBinDataSerivece.setUserPreferences(userPref);\r\n\r\n this._isHidden = true;\r\n this._submitted = false;\r\n this.resetForm();\r\n }\r\n\r\n initForm(){\r\n this._itxUserPreferencesForm = this.formBuilder.group({\r\n headSpace: [this._selectedHeadSpace, Validators.compose([])],\r\n bulkCapacity: [this._selectedBulkCapacity, Validators.compose([])],\r\n liquidCapacity: [this._selectedLiquidCapacity, Validators.compose([])],\r\n ambientTemperature: [this._selectedAmbientTemperature, Validators.compose([])],\r\n });\r\n }\r\n\r\n private resetForm() {\r\n this._itxUserPreferencesForm.reset();\r\n }\r\n}\r\n","export * from './itx-manage-color-popup.component';\r\nexport * from './itx-range-delete-popup';","import { Subscription } from 'rxjs';\r\nimport { FormBuilder, FormGroup, Validators } from '@angular/forms';\r\nimport { AfterViewInit, Component, ElementRef, EventEmitter, OnDestroy, OnInit, ViewChild } from '@angular/core';\r\n\r\nimport {\r\n AlarmViewModel,\r\n FullnessRangeViewModel,\r\n LocationItxViewModel,\r\n FullnessRangePostModel\r\n} from '../../../models';\r\n\r\nimport { ColumnTypeEnum } from '../../../enums';\r\nimport { BasePopupBehavior } from '../common';\r\nimport {\r\n LocationsItxDatasourceService,\r\n LocationsKtxDataSourceService\r\n} from '../../../services';\r\nimport { ConvertDataFunctions, digitsValidator, ErrorModel } from '../../../../common';\r\n\r\nimport { ItxRangeDeletePopupComponent } from './itx-range-delete-popup';\r\n\r\n@Component({\r\n selector: 'greensleeves-itx-manage-color-popup',\r\n templateUrl: './itx-manage-color-popup.component.html'\r\n})\r\nexport class ItxManageColorPopupComponent extends BasePopupBehavior implements OnInit, OnDestroy, AfterViewInit {\r\n static FROM_FIELD = 'from';\r\n static DEFAULT_COLOR = '#FF0000';\r\n static TO_FIELD = 'to';\r\n static COLOR_HEX_FIELD = 'colorHex';\r\n static PERCENTAGES = 100;\r\n public customPatterns = { '9': { pattern: new RegExp('\\\\d') } };\r\n\r\n _isHidden: boolean = true;\r\n _columnTypes = ColumnTypeEnum;\r\n _rangeForm: FormGroup;\r\n _rangeSubmitted: boolean;\r\n _onSubmit: boolean;\r\n _subscriptions: Subscription[] = [];\r\n _gridData: FullnessRangeViewModel[];\r\n _uniqueRangeError: boolean;\r\n _percentageGapsError: boolean;\r\n _isSubsequentError: boolean;\r\n _locationId: number;\r\n _rangeToAdd: FullnessRangeViewModel;\r\n _isLoading: boolean;\r\n _sortField: string = 'from';\r\n _fullnessRangeDelta: number = -1;\r\n onRangeDeleteClicked = new EventEmitter();\r\n\r\n _columnsView = [\r\n { header: '#', columnType: ColumnTypeEnum.Number },\r\n { header: 'From', columnType: ColumnTypeEnum.From, dataField: ItxManageColorPopupComponent.FROM_FIELD },\r\n { header: 'To', columnType: ColumnTypeEnum.To, dataField: ItxManageColorPopupComponent.TO_FIELD },\r\n { header: 'Color', columnType: ColumnTypeEnum.Color, dataField: ItxManageColorPopupComponent.COLOR_HEX_FIELD },\r\n { header: '', columnType: ColumnTypeEnum.Delete },\r\n ];\r\n\r\n constructor(\r\n private _formBuilder: FormBuilder,\r\n private _el: ElementRef,\r\n private _locationItxDataSourceService: LocationsItxDatasourceService) {\r\n super();\r\n }\r\n\r\n ngOnInit() {\r\n this._rangeToAdd = new FullnessRangeViewModel();\r\n\r\n this._rangeForm = this._formBuilder.group({\r\n from: [null, Validators.compose([\r\n Validators.required,\r\n Validators.min(1),\r\n Validators.max(100),\r\n digitsValidator\r\n ])],\r\n to: [null, Validators.compose([\r\n Validators.required,\r\n Validators.min(1),\r\n Validators.max(100),\r\n digitsValidator\r\n ])],\r\n colorHex: ['', Validators.required]\r\n });\r\n }\r\n\r\n ngAfterViewInit() {\r\n this.reInitScrollBar(0);\r\n }\r\n\r\n onClose() {\r\n this._gridData = [];\r\n this._rangeSubmitted = false;\r\n this._percentageGapsError = false;\r\n this._onSubmit = false;\r\n this._isSubsequentError = false;\r\n this._uniqueRangeError = false;\r\n this._rangeToAdd = new FullnessRangeViewModel();\r\n }\r\n\r\n show(location: LocationItxViewModel) {\r\n this._isHidden = false;\r\n this._locationId = location.id;\r\n this._isLoading = true;\r\n this._rangeToAdd.colorHex = ItxManageColorPopupComponent.DEFAULT_COLOR;\r\n this._locationItxDataSourceService.getFullnessRanges(location.id).then(() => {\r\n this._isLoading = false;\r\n\r\n this._gridData = location.fullnessRanges ? JSON.parse(JSON.stringify(location.fullnessRanges)) : [];\r\n });\r\n }\r\n\r\n onFocusRange() {\r\n if (this._uniqueRangeError) {\r\n this._uniqueRangeError = false;\r\n }\r\n if (this._isSubsequentError) {\r\n this._isSubsequentError = false;\r\n }\r\n }\r\n\r\n ngOnDestroy() {\r\n this.destroyMainScrollBar();\r\n this._subscriptions && this._subscriptions.forEach(x => x.unsubscribe());\r\n super.ngOnDestroy();\r\n }\r\n\r\n onClickDelete(range: FullnessRangeViewModel) {\r\n this.onRangeDeleteClicked.emit(range);\r\n }\r\n\r\n removeRange(range: FullnessRangeViewModel) {\r\n this._gridData.splice(this._gridData.indexOf(range), 1);\r\n }\r\n\r\n reInitScrollBar(timeout: number) {\r\n const el = this._el.nativeElement.querySelector('.ui-table-scrollable-view .ui-table-scrollable-body');\r\n this.reInitMainScrollBar(el, timeout);\r\n }\r\n\r\n onRangeSubmit() {\r\n this._rangeSubmitted = true;\r\n this._percentageGapsError = false;\r\n if (this._rangeForm.invalid) {\r\n return;\r\n }\r\n\r\n this._rangeToAdd.from = +this._rangeToAdd.from;\r\n this._rangeToAdd.to = +this._rangeToAdd.to;\r\n\r\n if (this._rangeToAdd.from >= this._rangeToAdd.to) {\r\n this._isSubsequentError = true;\r\n return;\r\n }\r\n\r\n if (this._gridData.some(x => x.from === this._rangeToAdd.from && x.to === this._rangeToAdd.to)) {\r\n this._uniqueRangeError = true;\r\n return;\r\n }\r\n\r\n if (this._gridData.some(x => (\r\n (this._rangeToAdd.from >= x.from && this._rangeToAdd.from <= x.to)\r\n || (this._rangeToAdd.to >= x.from && this._rangeToAdd.to <= x.to)\r\n || (x.from > this._rangeToAdd.from && x.to < this._rangeToAdd.to)))) {\r\n\r\n this._isSubsequentError = true;\r\n return;\r\n }\r\n\r\n this._rangeSubmitted = false;\r\n this._gridData.push(this._rangeToAdd);\r\n var tempColor = this._rangeToAdd.colorHex;\r\n this._rangeToAdd = new FullnessRangeViewModel();\r\n this._rangeToAdd.colorHex = tempColor;\r\n tempColor = null;\r\n }\r\n\r\n onSubmit() {\r\n this._onSubmit = true;\r\n const editModel = {\r\n locationId: this._locationId,\r\n ranges: JSON.parse(JSON.stringify(this._gridData)),\r\n } as FullnessRangePostModel;\r\n if (!this.checkForGaps(editModel)) {\r\n this._percentageGapsError = true;\r\n return;\r\n }\r\n\r\n this._locationItxDataSourceService.editFullnessRange(editModel).then((result) => {\r\n if (result instanceof ErrorModel) {\r\n console.error(result);\r\n } else {\r\n this.onClose();\r\n this._isHidden = true;\r\n }\r\n })\r\n }\r\n\r\n private checkForGaps(model: FullnessRangePostModel): boolean {\r\n this._fullnessRangeDelta = 0;\r\n model.ranges.forEach(x => {\r\n this._fullnessRangeDelta += x.to + 1;\r\n this._fullnessRangeDelta -= x.from;\r\n })\r\n if (this._fullnessRangeDelta != ItxManageColorPopupComponent.PERCENTAGES)\r\n return false;\r\n return true;\r\n }\r\n\r\n\r\n\r\n showAdd() {\r\n this._isHidden = false;\r\n }\r\n\r\n onCancel() {\r\n this._isHidden = true;\r\n }\r\n\r\n}\r\n","export * from './itx-range-delete-popup.component';\r\n","\r\nimport { Component, EventEmitter, OnInit } from '@angular/core';\r\n\r\nimport { FullnessRangeViewModel, TemperatureRangeViewModel } from '../../../../models';\r\nimport { BasePopupBehavior } from '../../common';\r\n\r\n@Component({\r\n selector: 'greensleeves-itx-range-delete-popup',\r\n templateUrl: './itx-range-delete-popup.component.html'\r\n})\r\nexport class ItxRangeDeletePopupComponent extends BasePopupBehavior implements OnInit {\r\n _isHidden = true;\r\n range: TemperatureRangeViewModel;\r\n onSubmit$ = new EventEmitter();\r\n\r\n constructor() { \r\n super();\r\n }\r\n ngOnInit() {\r\n }\r\n\r\n onCancel() {\r\n this._isHidden = true;\r\n this.range = null;\r\n }\r\n\r\n onSubmit() {\r\n this.onSubmit$.emit(this.range);\r\n this._isHidden = true;\r\n }\r\n\r\n show(range: FullnessRangeViewModel) {\r\n this._isHidden = false;\r\n this.range = range;\r\n }\r\n}\r\n","export * from './itx-quick-edit-popup.component';","import { Component, EventEmitter, OnInit } from '@angular/core';\r\nimport { FormBuilder, FormGroup, Validators } from '@angular/forms';\r\n\r\nimport { ItxBinQuickEditPostModel } from '@models';\r\nimport { ItxBinDataSourceService } from './../../../services';\r\n\r\n@Component({\r\n selector: 'greensleeves-itx-quick-edit-popup',\r\n templateUrl: './itx-quick-edit-popup.component.html',\r\n styles: []\r\n})\r\nexport class ItxQuickEditPopupComponent implements OnInit {\r\n\r\n _isHidden: boolean = true;\r\n _itxBinName: string;\r\n _editStorageForm: FormGroup;\r\n _submitted = false;\r\n _material: string;\r\n _editBin: ItxBinQuickEditPostModel;\r\n _isRun=false;\r\n needToUpdateLiveData = new EventEmitter();\r\n constructor(private _formBuilder: FormBuilder,\r\n private itxBinDataSource: ItxBinDataSourceService) { }\r\n\r\n ngOnInit() {\r\n }\r\n\r\n public async show(editBin: ItxBinQuickEditPostModel) {\r\n this._itxBinName = editBin.name;\r\n this._editBin = editBin;\r\n this.initForm();\r\n this._isHidden = false;\r\n this._submitted = false;\r\n }\r\n\r\n public async onCancel() {\r\n this._isHidden = true;\r\n this._editBin = null;\r\n this._submitted = false;\r\n this._editStorageForm.reset();\r\n this._isRun=false;\r\n }\r\n\r\n public async onSubmit() {\r\n this._submitted = true;\r\n if (this._editStorageForm.invalid) {\r\n return;\r\n }\r\n let itxBin = this._editStorageForm.value as ItxBinQuickEditPostModel;\r\n this._isRun=true;\r\n let result = await this.itxBinDataSource.quickEdit(itxBin);\r\n if (result) {\r\n this.needToUpdateLiveData.emit(itxBin);\r\n }\r\n this.onCancel();\r\n }\r\n\r\n private initForm() {\r\n this._editStorageForm = this._formBuilder.group({\r\n material: [\r\n this._editBin.material,\r\n Validators.compose([\r\n Validators.required,\r\n Validators.minLength(3),\r\n Validators.maxLength(50),\r\n ])\r\n ],\r\n id: [this._editBin.id],\r\n name: [\r\n this._editBin.name,\r\n Validators.compose([\r\n Validators.required,\r\n Validators.minLength(3),\r\n Validators.maxLength(50),\r\n ])\r\n ],\r\n });\r\n }\r\n}\r\n","export * from './itx-storage-radars-popup.component'","import { Component, ElementRef, NgZone, OnDestroy, OnInit } from '@angular/core';\r\nimport { Subscription } from 'rxjs';\r\n\r\nimport { ConvertDataFunctions, ErrorModel } from '../../../../common';\r\nimport { CapacityUnitEnum, ColumnTypeEnum, ItxBinTypeEnum, ItxRadarLocationEnum, SizeMeasureEnum } from '../../../enums';\r\nimport { ItxBinDataSourceService } from '../../../services';\r\nimport { PileShapeLabel } from './../../../constants';\r\nimport { CapacityUnitLabel, ItxRadarLocationLabel, SizeMeasureLabel } from './../../../constants';\r\nimport { PileShale } from './../../../enums';\r\nimport { ItxBinLiveDataModel, ItxBinLiveDataViewModel, RadarLiveDataModel } from './../../../models';\r\nimport PerfectScrollbar from 'perfect-scrollbar';\r\n\r\n@Component({\r\n selector: 'greensleeves-itx-storage-radars-popup',\r\n templateUrl: './itx-storage-radars-popup.component.html',\r\n styles: []\r\n})\r\nexport class ItxStorageRadarsPopupComponent implements OnInit, OnDestroy {\r\n _isHidden = true;\r\n _binName: string;\r\n _binId: number = 0;\r\n _hasRadarError: boolean = false;\r\n allRadars: RadarLiveDataModel[];\r\n _gridData: RadarLiveDataModel[];\r\n _columnTypeEnum = ColumnTypeEnum;\r\n _columnsView = [];\r\n _calculatedAvailableCapacity: number;\r\n _calculatedUsedCapacity: number;\r\n _ps: PerfectScrollbar;\r\n private calculatedErrorBound: number;\r\n private sizeUnit: SizeMeasureEnum;\r\n private capacityUnit: CapacityUnitEnum;\r\n private binType: ItxBinTypeEnum;\r\n private radarLocationLabel = ItxRadarLocationLabel;\r\n private capacityUnitLabel = CapacityUnitLabel;\r\n private subscriptions: Subscription[] = [];\r\n private sizeMeasureLabel = SizeMeasureLabel;\r\n private pileShapeLabel = PileShapeLabel;\r\n _lastUpdate: string;\r\n _pileShape: string = null;\r\n _loading: boolean = false;\r\n _errorLoading: boolean = false;\r\n\r\n constructor(\r\n private _itxBinDataSouceService: ItxBinDataSourceService,\r\n private _el: ElementRef,\r\n private _zone: NgZone,\r\n ) { }\r\n\r\n calculateRadarCapacityValue(value: number, capacityUnit: CapacityUnitEnum, binType: ItxBinTypeEnum): number {\r\n let result: number;\r\n switch (binType) {\r\n case ItxBinTypeEnum.LiquidStorageConical:\r\n case ItxBinTypeEnum.LiquidStorageFlat:\r\n case ItxBinTypeEnum.LiquidStorageSloped:\r\n result = ConvertDataFunctions.convertFromGal(value, capacityUnit);\r\n break;\r\n default:\r\n result = ConvertDataFunctions.convertFromFt3(value, capacityUnit);\r\n }\r\n return result;\r\n }\r\n\r\n ngOnInit() {\r\n let itxSub = this._itxBinDataSouceService.itxBinLiveData$.subscribe(items => {\r\n let currentStorage = items.find(bin => bin.id == this._binId);\r\n if (currentStorage) {\r\n let radars = currentStorage.radars.map(r => {\r\n return this.fillRadarValues(r);\r\n });\r\n\r\n this._gridData = radars as RadarLiveDataModel[];\r\n this._hasRadarError = this._gridData.some(r => r.isRadarTelemetryError);\r\n this._lastUpdate = currentStorage.timestamp;\r\n if (this._gridData.length > 0 && !this._hasRadarError) {\r\n let radar = this._gridData.find(e => !e.isRadarTelemetryError);\r\n if (radar.pileShape != null) {\r\n this._pileShape = this.getPileShapeLabel(radar.pileShape);\r\n this._pileShape += radar.fillingStatus ? ' ↑' : ' ↓';\r\n }\r\n }\r\n\r\n this._calculatedAvailableCapacity = currentStorage.calculatedAvailableCapacity;\r\n this.calculatedErrorBound = currentStorage.calculatedErrorBound;\r\n this._calculatedUsedCapacity = currentStorage.calculatedUsedCapacity;\r\n }\r\n });\r\n\r\n this.subscriptions.push(itxSub);\r\n }\r\n\r\n ngOnDestroy() {\r\n this.subscriptions &&\r\n this.subscriptions.forEach((sub) => sub.unsubscribe());\r\n }\r\n\r\n public show(storage: ItxBinLiveDataViewModel) {\r\n this.sizeUnit = storage.sizeUnit;\r\n this.capacityUnit = storage.capacityUnit;\r\n this.binType = storage.binType;\r\n this._binName = storage.name;\r\n this._binId = storage.id;\r\n this._calculatedAvailableCapacity = storage.calculatedAvailableCapacity;\r\n this.calculatedErrorBound = storage.calculatedErrorBound;\r\n this._calculatedUsedCapacity = storage.calculatedUsedCapacity;\r\n let radars = storage.radars.map(r => {\r\n return this.fillRadarValues(r);\r\n });\r\n this._lastUpdate = storage.timestamp;\r\n this._gridData = radars as RadarLiveDataModel[];\r\n this._isHidden = false;\r\n this._hasRadarError = this._gridData.some(r => r.isRadarTelemetryError);\r\n if (this._gridData.length > 0 && !this._hasRadarError) {\r\n let radar = this._gridData.find(e => !e.isRadarTelemetryError);\r\n if (radar.pileShape != null) {\r\n this._pileShape = this.getPileShapeLabel(radar.pileShape);\r\n this._pileShape += radar.fillingStatus ? ' ↑' : ' ↓';\r\n }\r\n }\r\n\r\n this.initColumView();\r\n this._loading = false;\r\n }\r\n\r\n public async showWithLoadTelemetry(binId: number) {\r\n this._loading = true;\r\n this._isHidden = false;\r\n this._binName = 'Loading...';\r\n this._itxBinDataSouceService.getRadarTelemetryWithReferences(binId).then(value => {\r\n if (value instanceof ItxBinLiveDataViewModel) {\r\n this.show(value);\r\n }\r\n else if (value instanceof ErrorModel) {\r\n this._errorLoading = true;\r\n }\r\n this._loading = false;\r\n });\r\n }\r\n\r\n onCancel() {\r\n this._pileShape = null;\r\n this._isHidden = true;\r\n this._columnsView = [];\r\n this._lastUpdate = null;\r\n this._errorLoading = false;\r\n }\r\n\r\n getRadarDistanceWithLabel(distance: number) {\r\n if (distance != null) {\r\n return `${ConvertDataFunctions.roundAndUsString(distance, 2)} ${this.sizeMeasureLabel[this.sizeUnit]}`;\r\n }\r\n return '-';\r\n }\r\n\r\n getRadarLocationLabel(radarLocation: ItxRadarLocationEnum): string {\r\n if (radarLocation != null) {\r\n return this.radarLocationLabel[radarLocation];\r\n }\r\n return '-';\r\n }\r\n\r\n getRequireRadarLocation(): boolean {\r\n if (this.binType != null && this.binType != undefined) {\r\n return this.binType == ItxBinTypeEnum.BinConical || this.binType == ItxBinTypeEnum.BinFlat || this.binType == ItxBinTypeEnum.BinSloped ||\r\n this.binType == ItxBinTypeEnum.SiloConical || this.binType == ItxBinTypeEnum.SiloFlat || this.binType == ItxBinTypeEnum.SiloSloped;\r\n }\r\n return false\r\n }\r\n\r\n getCapacityWithLabel(capacity: number): string {\r\n let capacityString = (Math.round(capacity * 100) / 100).toLocaleString('en-Us');\r\n return `${capacityString} ${this.capacityUnitLabel[this.capacityUnit]}`;\r\n }\r\n\r\n getPileShapeLabel(pileShape: PileShale): string {\r\n if (pileShape != null) {\r\n return this.pileShapeLabel[pileShape];\r\n }\r\n return '-';\r\n }\r\n\r\n getCalculatedCapasityString(calculatedAvailableCapacity: number, calculatedUsedCapacity: number, isUsedCapacity: boolean): string {\r\n if (this.getRequireCalculationValue() && calculatedAvailableCapacity != 0 && calculatedUsedCapacity != 0) {\r\n let cap = this.calculateRadarCapacityValue(isUsedCapacity ? calculatedUsedCapacity : calculatedAvailableCapacity, this.capacityUnit, this.binType);\r\n let capStr = `${(Math.round(cap * 100) / 100).toLocaleString('en-Us')} ${CapacityUnitLabel[this.capacityUnit]}`;\r\n if (isUsedCapacity) {\r\n capStr += this.getErrorBoundString(this.calculatedErrorBound);\r\n }\r\n return capStr;\r\n }\r\n return '-';\r\n }\r\n\r\n reInitScrollBar(timeout?: number, withCheck = false) {\r\n if (withCheck) {\r\n return;\r\n }\r\n\r\n if (this._ps) {\r\n this._ps.destroy();\r\n }\r\n\r\n const createScrollbarFunc = () => {\r\n this._zone.runOutsideAngular(() => {\r\n try {\r\n const el = this._el.nativeElement.querySelector(\r\n '.ui-table-scrollable-view.ui-table-unfrozen-view .ui-table-scrollable-body'\r\n );\r\n if (!el) {\r\n return;\r\n }\r\n\r\n this._ps = new PerfectScrollbar(el, {\r\n wheelSpeed: 2,\r\n wheelPropagation: true,\r\n minScrollbarLength: 20,\r\n });\r\n } catch (error) { }\r\n });\r\n };\r\n\r\n if (timeout) {\r\n setTimeout(() => {\r\n createScrollbarFunc();\r\n }, timeout);\r\n } else {\r\n createScrollbarFunc();\r\n }\r\n }\r\n\r\n private getRequireCalculationValue(): boolean {\r\n return this.getRequireRadarLocation() && this._gridData && this._gridData.length >= 3;\r\n }\r\n\r\n private getErrorBoundString(errorBound: number): string {\r\n if (errorBound != null) {\r\n let errorString = (Math.round(errorBound * 10) / 10).toString();\r\n return ` ±${errorString}%`;\r\n }\r\n return '';\r\n }\r\n\r\n private fillRadarValues(radar: RadarLiveDataModel): RadarLiveDataModel {\r\n let r = new RadarLiveDataModel();\r\n r.radarId = radar.radarId;\r\n r.headSpace = this.calculateRadarSizeValue(radar.headSpace, this.sizeUnit);\r\n r.percentFull = radar.percentFull;\r\n r.isRadarTelemetryError = radar.isRadarTelemetryError;\r\n r.capacity = this.calculateRadarCapacityValue(radar.capacity, this.capacityUnit, this.binType);\r\n radar.distanceFromBinCenter != null ? r.distanceFromBinCenter = this.calculateRadarSizeValue(radar.distanceFromBinCenter, this.sizeUnit) : r.distanceFromBinCenter = radar.distanceFromBinCenter;\r\n r.radarLocation = radar.radarLocation;\r\n r.pileShape = radar.pileShape;\r\n r.fillingStatus = radar.fillingStatus;\r\n return r;\r\n }\r\n\r\n private calculateRadarSizeValue(value: number, sizeUnit: SizeMeasureEnum): number {\r\n let result = ConvertDataFunctions.convertSizeFromFt(value, sizeUnit);\r\n return result;\r\n }\r\n\r\n private initColumView() {\r\n this._columnsView.push({ header: 'Radar ID:', dataField: 'radarId', columnType: ColumnTypeEnum.Number });\r\n if (this.getRequireRadarLocation()) {\r\n this._columnsView.push({ header: 'Radar location:', dataField: 'radarLocation', columnType: ColumnTypeEnum.RadarLocation });\r\n this._columnsView.push({ header: 'Distance:', dataField: 'distanceFromBinCenter', columnType: ColumnTypeEnum.RadarDistance });\r\n }\r\n\r\n this._columnsView.push({ header: 'Percent full:', dataField: 'percentFull', columnType: ColumnTypeEnum.Number });\r\n this._columnsView.push({ header: 'Head space:', dataField: 'headSpace', columnType: ColumnTypeEnum.HeadSpace });\r\n this._columnsView.push({ header: 'Used capacity:', dataField: 'capacity', columnType: ColumnTypeEnum.CapacityUnit });\r\n }\r\n}\r\n","export * from './ktx-add-edit-popup.component';\r\n","import { Component, OnInit, OnDestroy, ChangeDetectorRef } from '@angular/core';\r\nimport { FormBuilder, FormGroup, Validators, FormControl } from '@angular/forms';\r\nimport { Subscription } from 'rxjs';\r\n\r\nimport { ReadingScheduleType } from './../../../enums/';\r\nimport { LocationKtxViewModel } from './../../../models/';\r\nimport { LocationsKtxDataSourceService, RoleService } from './../../../services/';\r\nimport { LocationsDataSourceService } from '../../../services';\r\nimport { ErrorModel, ErrorCodeEnum, checkboxValidator, ConvertDataFunctions, UserRoleEnum, } from '../../../../common';\r\nimport { BasePopupBehavior } from '../common';\r\n\r\n@Component({\r\n selector: 'greensleeves-ktx-add-edit-popup',\r\n templateUrl: './ktx-add-edit-popup.component.html',\r\n styles: []\r\n})\r\nexport class KtxLocationAddEditPopupComponent extends BasePopupBehavior implements OnInit, OnDestroy {\r\n private static SECONDS_IN_DAY = 86400;\r\n _isAddPopup = true;\r\n _isHidden = true;\r\n _submitted = false;\r\n _isCycleSchedule = true;\r\n _isUniqueDeviceError = false;\r\n _location: LocationKtxViewModel;\r\n _locationForm: FormGroup;\r\n _cycleDate: string = '';\r\n _scheduleDate: string = '';\r\n _selectedDays: ReadingScheduleType[] = [];\r\n _locations: { label: string, value: number }[];\r\n _daysControlName = 'days';\r\n _cycleControlName = 'cycleDate';\r\n _scheduleControlName = 'scheduleDate';\r\n _isLoading = false;\r\n\r\n private _subscriptions: Subscription[] = [];\r\n\r\n get locationForm(): FormGroup {\r\n if (this._isCycleSchedule) {\r\n this._locationForm.controls[this._daysControlName].disable();\r\n this._locationForm.controls[this._scheduleControlName].disable();\r\n this._locationForm.controls[this._cycleControlName].enable();\r\n } else {\r\n this._locationForm.controls[this._cycleControlName].disable();\r\n this._locationForm.controls[this._scheduleControlName].enable();\r\n this._locationForm.controls[this._daysControlName].enable();\r\n }\r\n return this._locationForm;\r\n }\r\n\r\n get isServiceUser(): boolean {\r\n return this._roleService.userHasRole(UserRoleEnum.ServiceUser);\r\n }\r\n \r\n constructor(\r\n private _formBuilder: FormBuilder,\r\n private _locationsService: LocationsDataSourceService,\r\n private _locationKtxService: LocationsKtxDataSourceService,\r\n private _cdr: ChangeDetectorRef,\r\n private _roleService: RoleService,\r\n ) {\r\n super();\r\n }\r\n\r\n ngOnInit() {\r\n this._location = new LocationKtxViewModel();\r\n\r\n this._locationForm = this._formBuilder.group({\r\n isCycle: [this._isCycleSchedule, Validators.required],\r\n locationId: [this._location.id, Validators.required],\r\n days: [this._selectedDays, checkboxValidator],\r\n cycleDate: [this._cycleDate, Validators.required],\r\n scheduleDate: [this._scheduleDate, Validators.required],\r\n });\r\n\r\n let subscription = this._locationsService.locations$.subscribe((data) => {\r\n if (data) {\r\n this._locations = data.map((x) => ({ label: x.name, value: x.id }));\r\n }\r\n });\r\n\r\n let cycleDateSub = this._locationForm.controls['cycleDate'].valueChanges.subscribe((newValue: string) => {\r\n if(newValue) {\r\n const values = newValue.split(':');\r\n if(values[0] === '0000') {\r\n const splittedString = this._cycleDate.split(':');\r\n splittedString[0] = '0001';\r\n this._cycleDate = splittedString.join(':');\r\n } else if(+values[0] > 8760) {\r\n const splittedString = this._cycleDate.split(':');\r\n splittedString[0] = '8760';\r\n this._cycleDate = splittedString.join(':');\r\n }\r\n }\r\n });\r\n this._subscriptions.push(subscription, cycleDateSub);\r\n }\r\n\r\n ngOnDestroy() {\r\n this._subscriptions &&\r\n this._subscriptions.forEach((sub) => sub.unsubscribe());\r\n }\r\n \r\n async onSubmit() {\r\n this._submitted = true;\r\n\r\n if (this._locationForm.invalid) {\r\n return;\r\n }\r\n\r\n this._isLoading = true;\r\n\r\n const value = {\r\n ...this._location,\r\n ...this._locationForm.value,\r\n } as LocationKtxViewModel;\r\n\r\n let utcSecondsInDay;\r\n let selectedDaysToAdd: ReadingScheduleType[];\r\n if(!this._isCycleSchedule) {\r\n utcSecondsInDay = this.getUtcTimeSecondsWithExcess(this._scheduleDate);\r\n selectedDaysToAdd = this.convertSelectedDaysToUtc(utcSecondsInDay, this._selectedDays);\r\n utcSecondsInDay = this.removeExcessSeconds(utcSecondsInDay);\r\n }\r\n\r\n value.readingScheduleType = this._isCycleSchedule\r\n ? 0\r\n : selectedDaysToAdd.reduce((a, b) => a | b, 0);\r\n\r\n value.scheduleTime = this._isCycleSchedule\r\n ? this._cycleDate\r\n : ConvertDataFunctions.secondsToString(utcSecondsInDay);\r\n\r\n const result = !!this._isAddPopup\r\n ? await this._locationKtxService.add(value)\r\n : await this._locationKtxService.edit(value);\r\n\r\n if (result instanceof ErrorModel) {\r\n if (result.code === ErrorCodeEnum.RaspberryDeviceAlreadyAssigned) {\r\n this._isUniqueDeviceError = true;\r\n }\r\n } else if (result) {\r\n if (!this._isAddPopup) {\r\n await this._locationKtxService.markLocationKtxForOthersAsUpdated(this._location, true);\r\n }\r\n this._location = new LocationKtxViewModel();\r\n this._isHidden = true;\r\n this._submitted = false;\r\n this._isUniqueDeviceError = false;\r\n this._locationForm.reset();\r\n this._selectedDays = [];\r\n this._isLoading = false;\r\n }\r\n }\r\n\r\n async onFocusControl(control: FormControl) {\r\n control.markAsTouched();\r\n }\r\n\r\n async onBlurControl(control: FormControl) {\r\n control.markAsUntouched();\r\n }\r\n\r\n onLocationTouch() {\r\n if(this._isUniqueDeviceError) {\r\n this._isUniqueDeviceError = false;\r\n }\r\n }\r\n\r\n async onClose() {\r\n this._isHidden = true;\r\n this._selectedDays = [];\r\n this._cycleDate = '';\r\n this._scheduleDate = '';\r\n if(!this._isAddPopup) {\r\n await this._locationKtxService.markLocationKtxForOthersAsUpdated(this._location, false);\r\n }\r\n this._location = new LocationKtxViewModel();\r\n }\r\n\r\n public showAdd() {\r\n this._isAddPopup = true;\r\n this._isHidden = false;\r\n }\r\n\r\n public showEdit(location: LocationKtxViewModel) {\r\n this._isHidden = false;\r\n this._isAddPopup = false;\r\n\r\n this._location = Object.create(location);\r\n this._selectedDays = this.getSelectedDays(location.readingScheduleType);\r\n this._isCycleSchedule = location.readingScheduleType === 0;\r\n\r\n if (this._isCycleSchedule) {\r\n this._cycleDate = location.scheduleTime;\r\n } else {\r\n let localTimeSeconds = this.getLocalTimeSecondsWithExcess(location.scheduleTime);\r\n this._selectedDays = this.convertSelectedDaysToUtc(localTimeSeconds, this._selectedDays);\r\n\r\n localTimeSeconds = this.removeExcessSeconds(localTimeSeconds);\r\n this._scheduleDate = ConvertDataFunctions.secondsToString(localTimeSeconds);\r\n }\r\n this._cdr.detectChanges();\r\n }\r\n\r\n getEnumValue(index: string): number {\r\n return ReadingScheduleType[index];\r\n }\r\n\r\n // Get Selected days from a number;\r\n private getSelectedDays(days: number): ReadingScheduleType[] {\r\n const result = [];\r\n\r\n if ((days & ReadingScheduleType.Mon) === ReadingScheduleType.Mon) {\r\n result.push(ReadingScheduleType.Mon);\r\n }\r\n if ((days & ReadingScheduleType.Tue) === ReadingScheduleType.Tue) {\r\n result.push(ReadingScheduleType.Tue);\r\n }\r\n if ((days & ReadingScheduleType.Wed) === ReadingScheduleType.Wed) {\r\n result.push(ReadingScheduleType.Wed);\r\n }\r\n if ((days & ReadingScheduleType.Thu) === ReadingScheduleType.Thu) {\r\n result.push(ReadingScheduleType.Thu);\r\n }\r\n if ((days & ReadingScheduleType.Fri) === ReadingScheduleType.Fri) {\r\n result.push(ReadingScheduleType.Fri);\r\n }\r\n if ((days & ReadingScheduleType.Sat) === ReadingScheduleType.Sat) {\r\n result.push(ReadingScheduleType.Sat);\r\n }\r\n if ((days & ReadingScheduleType.Sun) === ReadingScheduleType.Sun) {\r\n result.push(ReadingScheduleType.Sun);\r\n }\r\n \r\n return result;\r\n }\r\n\r\n private getUtcTimeSecondsWithExcess(localTime: string): number {\r\n const date = new Date();\r\n const localOffsetSeconds = date.getTimezoneOffset() * 60;\r\n const utcTime = ConvertDataFunctions.stringToSeconds(localTime) + localOffsetSeconds;\r\n\r\n return utcTime;\r\n }\r\n\r\n private getLocalTimeSecondsWithExcess(utcTime: string): number {\r\n const date = new Date();\r\n const localOffsetSeconds = date.getTimezoneOffset() * 60;\r\n const localTime = ConvertDataFunctions.stringToSeconds(utcTime) - localOffsetSeconds;\r\n\r\n return localTime;\r\n }\r\n\r\n // Remove excess from seconds if exists (more than 86400 or less than 0)\r\n private removeExcessSeconds(seconds: number): number {\r\n const secondsInDay = KtxLocationAddEditPopupComponent.SECONDS_IN_DAY;\r\n const secondsWithoutOffset = (seconds < 0 && secondsInDay + seconds) || (seconds > secondsInDay && seconds - secondsInDay) || seconds;\r\n\r\n return secondsWithoutOffset;\r\n }\r\n\r\n private convertSelectedDaysToUtc(seconds: number, selectedDays: ReadingScheduleType[]): ReadingScheduleType[] {\r\n const result = Object.assign(selectedDays);\r\n\r\n if(seconds < 0) {\r\n for(let i = 0; i < result.length; i++) {\r\n\r\n if(result[i] === ReadingScheduleType.Mon) {\r\n result[i] = ReadingScheduleType.Sun;\r\n continue;\r\n }\r\n\r\n result[i] = result[i] / 2;\r\n }\r\n } else if (seconds > KtxLocationAddEditPopupComponent.SECONDS_IN_DAY) {\r\n for(let i = 0; i < result.length; i++) {\r\n\r\n if(result[i] === ReadingScheduleType.Sun) {\r\n result[i] = ReadingScheduleType.Mon;\r\n continue;\r\n }\r\n\r\n result[i] = result[i] * 2;\r\n }\r\n }\r\n return result;\r\n }\r\n}\r\n","export * from './ktx-bin-details-popup.component';","import { AfterViewInit, ChangeDetectorRef, Component, ElementRef, EventEmitter, OnDestroy, OnInit, ViewChild } from '@angular/core';\r\nimport { BehaviorSubject, Subscription } from 'rxjs';\r\n\r\nimport {\r\n AlarmViewModel,\r\n BinSchemeViewModel,\r\n CableSchemeViewModel,\r\n LocationKtxTemperatureRangeUpdatedHubMessage,\r\n SensorKtxSchemeViewModel,\r\n TelemetrySnapshotViewModel,\r\n TemperatureRangeViewModel\r\n} from '../../../models';\r\nimport { BinTypeEnum, ColumnTypeEnum, MeasureEnum, SensorStatusEnum } from '../../../enums';\r\nimport { BasePopupBehavior } from '../common';\r\nimport { HubService, LocationsKtxDataSourceService } from '../../../services';\r\nimport { ConvertDataFunctions } from '../../../../common';\r\n\r\n@Component({\r\n selector: 'greensleeves-ktx-bin-details-popup',\r\n templateUrl: './ktx-bin-details-popup.component.html',\r\n})\r\nexport class KtxBinDetailsPopupComponent extends BasePopupBehavior implements OnInit, OnDestroy, AfterViewInit {\r\n private static WINDOW_FUNCTION_GET_SCHEME_NAME = 'getScheme';\r\n private static WINDOW_FUNCTION_GET_TELEMETRY_NAME = 'getTelemetry';\r\n private static WINDOW_FIELD_IS_WEB_NAME = 'isWeb';\r\n private static WINDOW_FUNCTION_DISPLAY_SCHEME_NAME = 'displayScheme';\r\n @ViewChild('model2d', { static: false }) iframe2d: ElementRef;\r\n @ViewChild('model3d', { static: false }) iframe3d: ElementRef;\r\n @ViewChild('fullScreenContainer', { static: false }) fullScreenContainer: ElementRef;\r\n _isHidden = true;\r\n _isSchemeHidden = true;\r\n _isSchemeLoading = true;\r\n _gridData: CableSchemeViewModel[] = [];\r\n _resistanceGridData: CableSchemeViewModel[] = [];\r\n _is2dDisplayMode = true;\r\n _currentBin: BinSchemeViewModel;\r\n _columnType = ColumnTypeEnum;\r\n _binTypeEnum = BinTypeEnum;\r\n _isShowScheme: boolean = false;\r\n _isLoading: boolean;\r\n onViewCableDetailsClick = new EventEmitter();\r\n _columnsView = [];\r\n _sortField = 'name';\r\n temperatureTelemetry: TelemetrySnapshotViewModel;\r\n resistanceTelemetry: TelemetrySnapshotViewModel;\r\n\r\n _frozenColumns = [{ header: 'Cable', columnType: ColumnTypeEnum.CableName, dataField: 'name', width: 100 }];\r\n private subscriptions: Subscription[] = [];\r\n private schemeData = new BehaviorSubject<{\r\n binScheme: BinSchemeViewModel,\r\n alarm: AlarmViewModel,\r\n temperatureRanges: TemperatureRangeViewModel[]\r\n }>(null);\r\n private telemetry = new BehaviorSubject(null);\r\n private displayScheme = new BehaviorSubject(false);\r\n private isFahrenheitMeasureMode: boolean;\r\n private isTemperatureMeasureMode: boolean = true;\r\n private receivingTimestamp: string;\r\n _isNotifcationCurrentData: boolean = false;\r\n\r\n get _isFahrenheitMeasureMode() {\r\n return this.isFahrenheitMeasureMode;\r\n }\r\n set _isFahrenheitMeasureMode(value: boolean) {\r\n this.isFahrenheitMeasureMode = value;\r\n }\r\n get _isTemperatureMeasureMode() {\r\n return this.isTemperatureMeasureMode;\r\n }\r\n set _isTemperatureMeasureMode(value: boolean) {\r\n this.isTemperatureMeasureMode = value;\r\n\r\n if (this._currentBin.displaySchemes) {\r\n if (value === true) {\r\n this.telemetry.next(this.temperatureTelemetry);\r\n } else {\r\n this.telemetry.next(this.resistanceTelemetry);\r\n }\r\n }\r\n }\r\n get _frozenWidth() {\r\n return `${this._frozenColumns.reduce((a, v) => a + v.width, 0)}px`;\r\n }\r\n get _lastUpdatingStatus() {\r\n let statusText = \"Last updating: \";\r\n if (this._isLoading) {\r\n statusText = statusText + \"Receiving data\";\r\n } else if (this.receivingTimestamp && !this._isLoading) {\r\n statusText = statusText + this.receivingTimestamp;\r\n } else {\r\n return '';\r\n }\r\n\r\n return statusText;\r\n }\r\n\r\n constructor(\r\n private _el: ElementRef,\r\n private _locationKtxDataSourceService: LocationsKtxDataSourceService,\r\n private _hubService: HubService,\r\n private _cdr: ChangeDetectorRef\r\n ) {\r\n super();\r\n }\r\n\r\n ngOnInit() {\r\n this._currentBin = new BinSchemeViewModel();\r\n this.temperatureTelemetry = new TelemetrySnapshotViewModel();\r\n this.resistanceTelemetry = new TelemetrySnapshotViewModel();\r\n\r\n window[KtxBinDetailsPopupComponent.WINDOW_FUNCTION_GET_SCHEME_NAME] = () => {\r\n return this.schemeData;\r\n };\r\n window[KtxBinDetailsPopupComponent.WINDOW_FUNCTION_GET_TELEMETRY_NAME] = () => {\r\n return this.telemetry;\r\n };\r\n window[KtxBinDetailsPopupComponent.WINDOW_FIELD_IS_WEB_NAME] = true;\r\n window[KtxBinDetailsPopupComponent.WINDOW_FUNCTION_DISPLAY_SCHEME_NAME] = () => {\r\n return this.displayScheme;\r\n }\r\n\r\n let telemetrySub = this._locationKtxDataSourceService.telemetry$.subscribe((telemetry) => {\r\n if (telemetry) {\r\n if (this._currentBin.displaySchemes) {\r\n this.telemetry.next(telemetry);\r\n }\r\n\r\n if (this.isTemperatureMeasureMode) {\r\n this.temperatureTelemetry = telemetry;\r\n this.mapTelemetryToGridData(this._gridData, telemetry);\r\n } else {\r\n this.resistanceTelemetry = telemetry;\r\n this.mapTelemetryToGridData(this._resistanceGridData, telemetry);\r\n }\r\n }\r\n });\r\n\r\n let hubSub = this._hubService.temperatureRangeUpdated.subscribe((message: LocationKtxTemperatureRangeUpdatedHubMessage) => {\r\n if (message.updatedRanges.locationId === this._currentBin.locationId) {\r\n this._currentBin.temperatureRanges = message.updatedRanges.ranges;\r\n this._currentBin.alarm = message.updatedRanges.alarm;\r\n\r\n this.schemeData.next({\r\n binScheme: this._currentBin,\r\n alarm: this._currentBin.alarm,\r\n temperatureRanges: this._currentBin.temperatureRanges\r\n });\r\n };\r\n });\r\n\r\n let lastTelemetrySub = this._locationKtxDataSourceService.lastTelemetry$.subscribe((telemetry: TelemetrySnapshotViewModel) => {\r\n if (telemetry) {\r\n const highLimitValue: number = this._currentBin.alarm && this._currentBin.alarm.highTemperatureValue;\r\n\r\n if (highLimitValue && telemetry.snapshot) {\r\n telemetry.snapshot.forEach(x => {\r\n if (x.sensors) {\r\n x.sensors.forEach(y => {\r\n y.status = y.value >= highLimitValue ? SensorStatusEnum.HighLimit : y.status;\r\n })\r\n }\r\n })\r\n }\r\n this.mapTelemetryToGridData(this._gridData, telemetry);\r\n\r\n if (this._currentBin.displaySchemes) {\r\n this.telemetry.next(telemetry);\r\n }\r\n }\r\n })\r\n this.subscriptions.push(telemetrySub, hubSub, lastTelemetrySub);\r\n }\r\n\r\n ngOnDestroy() {\r\n this.destroyMainScrollBar();\r\n this.destroyTableScrollBar();\r\n this.subscriptions && this.subscriptions.forEach(sub => sub.unsubscribe());\r\n super.ngOnDestroy();\r\n }\r\n\r\n ngAfterViewInit() {\r\n this.reInitScrollBarTable(0);\r\n this.reInitScrollBar(0);\r\n }\r\n\r\n onIframeLoad() {\r\n this._isSchemeLoading = false;\r\n }\r\n\r\n splitStringBySpace(input: string): string[] {\r\n return input.split(' ');\r\n }\r\n\r\n async onClose() {\r\n this._isHidden = true;\r\n this._columnsView = [];\r\n this._gridData = [];\r\n this._resistanceGridData = [];\r\n this.temperatureTelemetry = new TelemetrySnapshotViewModel();\r\n this.resistanceTelemetry = new TelemetrySnapshotViewModel();\r\n this.isTemperatureMeasureMode = true;\r\n this._currentBin = new BinSchemeViewModel();\r\n this.displayScheme.next(false);\r\n this.receivingTimestamp = null;\r\n this._isLoading = false;\r\n this._isNotifcationCurrentData = false;\r\n }\r\n\r\n onFullScreenClose() {\r\n this._isSchemeHidden = true;\r\n const modelHolder = this._el.nativeElement.querySelector('.popup-iframe');\r\n\r\n if (this._is2dDisplayMode) {\r\n modelHolder.appendChild(this.iframe2d.nativeElement);\r\n this.iframe2d.nativeElement.setAttribute('height', '300');\r\n this.iframe2d.nativeElement.setAttribute('width', '300');\r\n } else {\r\n this.iframe3d.nativeElement.setAttribute('height', '300');\r\n this.iframe3d.nativeElement.setAttribute('width', '300');\r\n modelHolder.appendChild(this.iframe3d.nativeElement);\r\n }\r\n }\r\n\r\n public showFullScreen() {\r\n this._isSchemeHidden = false;\r\n this._isSchemeLoading = true;\r\n if (this._is2dDisplayMode) {\r\n this.fullScreenContainer.nativeElement.appendChild(this.iframe2d.nativeElement);\r\n this.iframe2d.nativeElement.setAttribute('height', '600');\r\n this.iframe2d.nativeElement.setAttribute('width', '600');\r\n } else {\r\n this.fullScreenContainer.nativeElement.appendChild(this.iframe3d.nativeElement);\r\n this.iframe3d.nativeElement.setAttribute('height', '600');\r\n this.iframe3d.nativeElement.setAttribute('width', '600');\r\n }\r\n }\r\n\r\n public async show(bin: BinSchemeViewModel) {\r\n this._isHidden = false;\r\n this._currentBin = bin;\r\n this._isShowScheme = bin.displaySchemes;\r\n this.isFahrenheitMeasureMode = true;\r\n\r\n if (bin.cables) {\r\n this._resistanceGridData = JSON.parse(JSON.stringify(bin.cables));\r\n this._gridData = JSON.parse(JSON.stringify(bin.cables));\r\n\r\n const maxTcCount = Math.max.apply(Math, bin.cables.map((o) => o.thermocoupleCount));\r\n for (let i = 1; i <= maxTcCount; i++) {\r\n this._columnsView.push({ header: 'TC ' + i, columnType: ColumnTypeEnum.TC, dataField: 'sensors' })\r\n }\r\n\r\n this.reInitScrollBarTable(0);\r\n }\r\n\r\n this._isLoading = true;\r\n const listOfCableIds = bin.cables ? bin.cables.map(x => { return x.id }) : [];\r\n await this._locationKtxDataSourceService.getTelemetry(bin.id, listOfCableIds);\r\n\r\n this.schemeData.next({\r\n binScheme: this._currentBin,\r\n alarm: this._currentBin.alarm,\r\n temperatureRanges: bin.temperatureRanges\r\n });\r\n\r\n if (bin.displaySchemes) {\r\n this.displayScheme.next(bin.displaySchemes);\r\n }\r\n this._isLoading = false;\r\n\r\n this._cdr.detectChanges();\r\n }\r\n\r\n async showWithLoading(locationId: number, binId: number) {\r\n this._isHidden = false;\r\n this._isLoading = true;\r\n this._isNotifcationCurrentData = true;\r\n this._currentBin.name = 'Loading...'\r\n this.loadBinSchema(locationId, binId);\r\n\r\n }\r\n\r\n private loadBinSchema(locationId: number, binId: number) {\r\n this._locationKtxDataSourceService.getBinSchema(locationId, binId).then((value) => {\r\n if (value instanceof BinSchemeViewModel) {\r\n this.show(value);\r\n }\r\n });\r\n }\r\n\r\n private reInitScrollBar(timeout?: number) {\r\n const el = this._el.nativeElement.querySelector('.popup-container');\r\n this.reInitMainScrollBar(el, timeout);\r\n }\r\n\r\n reInitScrollBarTable(timeout?: number, withCheck = false) {\r\n const el = this._el.nativeElement.querySelector('.ui-table-scrollable-view.ui-table-unfrozen-view .ui-table-scrollable-body');\r\n if (el) {\r\n this.reInitTableScrollBar(el, timeout);\r\n }\r\n }\r\n\r\n onClickViewCables() {\r\n this.onViewCableDetailsClick.emit(this._currentBin);\r\n }\r\n\r\n onClickReadSiloData() {\r\n this.receivingTimestamp = null;\r\n this._isLoading = true;\r\n this._locationKtxDataSourceService.ReadSiloData(this._currentBin.id, this.isTemperatureMeasureMode ? MeasureEnum.Temperature : MeasureEnum.Resistance).then(() => {\r\n this._isLoading = false;\r\n this.reInitScrollBarTable(0);\r\n })\r\n }\r\n\r\n _getSensorColor(cable: CableSchemeViewModel, sensorIndex: number): string {\r\n const sensor = cable && cable.sensors ? cable.sensors[sensorIndex] as SensorKtxSchemeViewModel : null;\r\n\r\n if (sensor) {\r\n if (sensor.status === SensorStatusEnum.OpenTC) {\r\n return this._currentBin.alarm.openTcColorHex;\r\n }\r\n\r\n else if (sensor.status === SensorStatusEnum.NoResponse) {\r\n return this._currentBin.alarm.noResponseColorHex;\r\n }\r\n\r\n else if (this.isTemperatureMeasureMode) {\r\n if (sensor.status === SensorStatusEnum.HighLimit) {\r\n return this._currentBin.alarm.highTemperatureColorHex;\r\n }\r\n\r\n else if (sensor.status === SensorStatusEnum.MaxRise) {\r\n return this._currentBin.alarm.maxRiseColorHex;\r\n }\r\n\r\n else if (this._currentBin.temperatureRanges) {\r\n const temperatureRange = this._currentBin.temperatureRanges.find(x => sensor.value >= x.from && sensor.value <= x.to);\r\n return temperatureRange == undefined ? '' : temperatureRange.colorHex;\r\n }\r\n\r\n return '-';\r\n }\r\n else {\r\n if (sensor.status === SensorStatusEnum.HighLimit) {\r\n return this._currentBin.alarm.highResistanceColorHex;\r\n }\r\n\r\n return this._currentBin.alarm.normalResistanceColorHex;\r\n }\r\n }\r\n return '-';\r\n }\r\n\r\n _getSensorValue(cable: CableSchemeViewModel, sensorIndex: number): string | number {\r\n const sensor = cable && cable.sensors ? cable.sensors[sensorIndex] as SensorKtxSchemeViewModel : null;\r\n\r\n if (sensor) {\r\n if (sensor.status === SensorStatusEnum.OpenTC) {\r\n return 'OT';\r\n }\r\n\r\n if (sensor.status === SensorStatusEnum.NoResponse) {\r\n return '-';\r\n }\r\n\r\n if (this.isFahrenheitMeasureMode && this.isTemperatureMeasureMode) {\r\n const FahrenheitValue = this.onCelsiusToFahrenheit(sensor.value);\r\n return FahrenheitValue;\r\n }\r\n\r\n return sensor.value;\r\n }\r\n return '';\r\n }\r\n\r\n onCelsiusToFahrenheit(value: number): string {\r\n if (value || value === 0) {\r\n const convertedValue = ConvertDataFunctions.celsiusToFahrenheit(value);\r\n return convertedValue.toString();\r\n } else {\r\n return '-';\r\n }\r\n }\r\n\r\n getBackGroundTextColor(cable: CableSchemeViewModel, sensorIndex: number): string {\r\n const sensor = cable ? cable[sensorIndex] as SensorKtxSchemeViewModel : null;\r\n\r\n if (sensor) {\r\n if (sensor.status === SensorStatusEnum.OpenTC) {\r\n return '#FFFFFF';\r\n }\r\n }\r\n\r\n return '';\r\n }\r\n\r\n private mapTelemetryToGridData(gridData: CableSchemeViewModel[], telemetry: TelemetrySnapshotViewModel) {\r\n if (gridData) {\r\n gridData.map(cable => {\r\n if (telemetry.snapshot) {\r\n if (telemetry.recievingTimestamp) {\r\n const date = new Date(telemetry.recievingTimestamp * 1000);\r\n this.receivingTimestamp = date.toLocaleString(\"en-US\");\r\n }\r\n\r\n var sensor = telemetry.snapshot.find(x => x.cableId == cable.id);\r\n if (sensor) {\r\n cable.sensors = sensor.sensors;\r\n }\r\n }\r\n });\r\n }\r\n }\r\n}","export * from './ktx-connection-popup.component';","import { ErrorModel } from 'src/app/common';\r\nimport { Component, OnDestroy, OnInit } from '@angular/core';\r\nimport { FormGroup, Validators, FormControl } from '@angular/forms';\r\nimport { Subscription } from 'rxjs';\r\n\r\nimport { TemplateFunctions } from '../../common';\r\nimport { BinConnectionViewModel } from './../../../models';\r\nimport { LocationsKtxDataSourceService } from './../../../services';\r\n\r\n@Component({\r\n selector: 'greensleeves-ktx-connection-popup',\r\n templateUrl: './ktx-connection-popup.component.html',\r\n styles: []\r\n})\r\nexport class KtxConnectionPopupComponent implements OnInit, OnDestroy {\r\n _isHidden: boolean = true;\r\n _location: { locationName: string, locationId: number };\r\n _formGroup: FormGroup = new FormGroup({});\r\n _binsConnections: BinConnectionViewModel[];\r\n _submitted: boolean = false;\r\n _isLoad: boolean = true;\r\n _isSend: boolean = true;\r\n private _subscriptions: Subscription;\r\n\r\n constructor(\r\n private _locationKtxDataSourceService: LocationsKtxDataSourceService\r\n ) { }\r\n\r\n ngOnInit() {\r\n this._subscriptions = this._locationKtxDataSourceService.binsConnections$.subscribe(items => {\r\n if (items) {\r\n this._binsConnections = items;\r\n this.reInitForm(items);\r\n }\r\n this._isLoad = false;\r\n this._isSend = false;\r\n });\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this._subscriptions && this._subscriptions.unsubscribe();\r\n }\r\n\r\n show(location: { locationName: string, locationId: number }) {\r\n this._location = location;\r\n this._isLoad = true;\r\n this._isSend = true;\r\n this._locationKtxDataSourceService.getBinsForEditConnection(this._location.locationId);\r\n this._isHidden = false;\r\n }\r\n\r\n onClose() {\r\n this._location = null;\r\n this._isHidden = true;\r\n this._submitted = false;\r\n this._binsConnections = null;\r\n this._formGroup.reset();\r\n this._isLoad = false;\r\n }\r\n\r\n async onSubmit() {\r\n this._submitted = true;\r\n if (this._formGroup.invalid) {\r\n return;\r\n }\r\n let editedConnections: BinConnectionViewModel[] = [];\r\n this._binsConnections.forEach(item => {\r\n if (item.ipAddress != this._formGroup.controls[`ipAddress_Sys${item.sysId}`].value\r\n || (item.withRemotePort && item.portRemote != this._formGroup.controls[`portRemote_Sys${item.sysId}`].value)\r\n || item.port != this._formGroup.controls[`port_Sys${item.sysId}`].value) {\r\n\r\n item.ipAddress = this._formGroup.controls[`ipAddress_Sys${item.sysId}`].value;\r\n item.port = this._formGroup.controls[`port_Sys${item.sysId}`].value;\r\n item.portRemote = item.withRemotePort ? this._formGroup.controls[`portRemote_Sys${item.sysId}`].value : 0;\r\n editedConnections.push(item);\r\n }\r\n });\r\n\r\n if (editedConnections.length == 0) {\r\n this.onClose();\r\n return;\r\n }\r\n\r\n this._isSend = true;\r\n let result = await this._locationKtxDataSourceService.editConnections(this._location.locationId, editedConnections);\r\n this._isSend = false;\r\n if (!(result instanceof ErrorModel)) {\r\n this.onClose();\r\n }\r\n }\r\n\r\n private reInitForm(binsListsView: BinConnectionViewModel[]) {\r\n this._formGroup = new FormGroup({});\r\n binsListsView.forEach(sysGroup => {\r\n this._formGroup.addControl(`port_Sys${sysGroup.sysId}`, new FormControl(\r\n sysGroup.port,\r\n Validators.compose([\r\n Validators.required,\r\n Validators.min(0),\r\n Validators.max(65535)\r\n ])\r\n ));\r\n\r\n this._formGroup.addControl(`ipAddress_Sys${sysGroup.sysId}`, new FormControl(\r\n sysGroup.ipAddress,\r\n Validators.compose([\r\n Validators.required,\r\n TemplateFunctions.ipValidator,\r\n ])\r\n ));\r\n\r\n if (sysGroup.withRemotePort) {\r\n this._formGroup.addControl(`portRemote_Sys${sysGroup.sysId}`, new FormControl(\r\n sysGroup.portRemote,\r\n Validators.compose([\r\n sysGroup.withRemotePort ? Validators.required : null,\r\n Validators.min(0),\r\n Validators.max(65535)\r\n ])\r\n ));\r\n }\r\n });\r\n }\r\n\r\n}\r\n","export * from './ktx-current-data-export-report-popup.component';\r\n","import { Component, OnInit } from '@angular/core';\r\nimport { TreeNode } from 'primeng';\r\nimport { isNumber } from 'util';\r\n\r\nimport { ErrorModel } from '../../../../common';\r\nimport { KtxReportCurrentDataFilter, LocationKtxSchemeViewModel } from '@models';\r\nimport { ReportDatasourceService } from '@services';\r\n\r\n@Component({\r\n selector: 'greensleeves-ktx-current-data-export-report-popup',\r\n templateUrl: './ktx-current-data-export-report-popup.component.html',\r\n})\r\nexport class KtxCurrentDataExportReportPopupComponent implements OnInit {\r\n static SELECT_ALL = 'Select All';\r\n\r\n _isHidden = true;\r\n _isReportRun = false;\r\n _locationBinsNodes: TreeNode[] = [];\r\n _selectedBinNodes: TreeNode[] = [];\r\n _locationScheme: LocationKtxSchemeViewModel;\r\n _selectedTemperatureMeasureType: number;\r\n\r\n constructor(\r\n private _reportDatasource: ReportDatasourceService\r\n ) { }\r\n\r\n ngOnInit() {\r\n }\r\n\r\n public show(locationScheme: LocationKtxSchemeViewModel, temperatureMeasureType: number) {\r\n this._isHidden = false;\r\n this._locationScheme = locationScheme;\r\n this._selectedTemperatureMeasureType = temperatureMeasureType;\r\n this.initLocationBinNodes(locationScheme);\r\n }\r\n\r\n onCancel() {\r\n this._isHidden = true;\r\n }\r\n\r\n async download() {\r\n this._isReportRun = true;\r\n\r\n let filter: KtxReportCurrentDataFilter = new KtxReportCurrentDataFilter();\r\n filter.locationId = this._locationScheme.locationId;\r\n filter.temperatureMeasureType = this._selectedTemperatureMeasureType;\r\n filter.timeZone = Intl.DateTimeFormat().resolvedOptions().timeZone;\r\n filter.binIds = this._selectedBinNodes.map(x => {\r\n return x.data\r\n }).filter(x => isNumber(x));\r\n\r\n let result = await this._reportDatasource.downloadKtxCurrentDataReportFile(filter);\r\n if (!(result instanceof ErrorModel)) {\r\n let fileName = this._locationScheme.locationName + ' ' + new Date().toLocaleString();\r\n const url = URL.createObjectURL(result as Blob);\r\n let downloadLink = document.createElement('a');\r\n downloadLink.href = url;\r\n downloadLink.download = fileName;\r\n downloadLink.click();\r\n }\r\n this._isReportRun = false;\r\n }\r\n\r\n onNodeSelect(event: any) {\r\n if (this.isSelectAllNode(event.node)) {\r\n this.selectAllNodes();\r\n }\r\n }\r\n\r\n onNodeUnselect(event: any) {\r\n if (this.isSelectAllNode(event.node)) {\r\n this.unselectAllNodes();\r\n return;\r\n }\r\n\r\n this._selectedBinNodes = this._selectedBinNodes.filter(n => !this.isSelectAllNode(n))\r\n }\r\n\r\n private initLocationBinNodes(locationScheme: LocationKtxSchemeViewModel) {\r\n const { SELECT_ALL } = KtxCurrentDataExportReportPopupComponent;\r\n\r\n const selectAllNodes: TreeNode = {\r\n label: SELECT_ALL,\r\n data: SELECT_ALL,\r\n key: SELECT_ALL,\r\n };\r\n\r\n this._locationBinsNodes = [\r\n selectAllNodes,\r\n ...LocationKtxSchemeViewModel.toReportsBinsTreeNode(locationScheme),\r\n ];\r\n }\r\n\r\n private selectAllNodes() {\r\n const parentsNodes: TreeNode[] = [...this._locationBinsNodes];\r\n const childrenNodes: TreeNode[] = this._locationBinsNodes\r\n .reduce((result, companyNode) => result.concat(companyNode.children), [])\r\n .filter((n) => n);\r\n\r\n this._selectedBinNodes = [...parentsNodes, ...childrenNodes];\r\n }\r\n\r\n private unselectAllNodes() {\r\n this._selectedBinNodes = [];\r\n }\r\n\r\n private isSelectAllNode(node: TreeNode) {\r\n const { label, data, key } = node;\r\n const { SELECT_ALL } = KtxCurrentDataExportReportPopupComponent;\r\n\r\n return label === SELECT_ALL && data === SELECT_ALL && key === SELECT_ALL;\r\n }\r\n}\r\n","export * from './ktx-list-cables-popup.component';","import { Component, OnDestroy, OnInit, ViewChild } from '@angular/core';\r\nimport { Table } from 'primeng/table';\r\n\r\nimport { BinSchemeViewModel, CableSchemeViewModel } from '../../../models';\r\nimport { BinTypeEnum, ColumnTypeEnum, SwitchTypeEnum } from '../../../enums';\r\nimport { BasePopupBehavior } from '../common';\r\n\r\n@Component({\r\n selector: 'greensleeves-ktx-list-cables-popup',\r\n templateUrl: './ktx-list-cables-popup.component.html'\r\n})\r\nexport class KtxListCablesPopupComponent extends BasePopupBehavior implements OnInit, OnDestroy {\r\n @ViewChild('cableTable', { static: false }) table: Table;\r\n static NAME_FIELD = 'name';\r\n static ID_FIELD = 'connectionId';\r\n static ANGLE_FIELD = 'angle';\r\n static RADIUS_FIELD = 'radius';\r\n static SENSORS_AMOUNT_FIELD = 'thermocoupleCount';\r\n static MUX_OR_DEVICE_FIELD = 'multiplexerId';\r\n static X_POSITION_FIELD = 'xPosition';\r\n static Y_POSITION_FIELD = 'yPosition';\r\n\r\n _isHidden: boolean = true;\r\n _gridData: CableSchemeViewModel[] = [];\r\n _columnTypeEnum = ColumnTypeEnum;\r\n _switchTypeEnum = SwitchTypeEnum;\r\n _binTypeEnum = BinTypeEnum;\r\n _binType: BinTypeEnum;\r\n _displayScheme: boolean;\r\n _sortField = KtxListCablesPopupComponent.NAME_FIELD;\r\n\r\n private muxOrDeviceHeaderName: string;\r\n\r\n get _columnsView() {\r\n if (this._binType === BinTypeEnum.Circular) {\r\n return [\r\n { header: 'Cable name', columnType: ColumnTypeEnum.CableName, dataField: KtxListCablesPopupComponent.NAME_FIELD },\r\n { header: 'Cable ID', columnType: ColumnTypeEnum.CableID, dataField: KtxListCablesPopupComponent.ID_FIELD },\r\n { header: 'Angle', columnType: ColumnTypeEnum.Angle, dataField: KtxListCablesPopupComponent.ANGLE_FIELD },\r\n { header: 'Radius', columnType: ColumnTypeEnum.Radius, dataField: KtxListCablesPopupComponent.RADIUS_FIELD },\r\n { header: 'Number of sensors', columnType: ColumnTypeEnum.SensorsAmount, dataField: KtxListCablesPopupComponent.SENSORS_AMOUNT_FIELD },\r\n { header: this.muxOrDeviceHeaderName, columnType: ColumnTypeEnum.MUXOrDevice, dataField: KtxListCablesPopupComponent.MUX_OR_DEVICE_FIELD },\r\n ];\r\n } else if (this._binType === BinTypeEnum.Rectangular) {\r\n return [\r\n { header: 'Cable name', columnType: ColumnTypeEnum.CableName, dataField: KtxListCablesPopupComponent.NAME_FIELD },\r\n { header: 'Cable ID', columnType: ColumnTypeEnum.CableID, dataField: KtxListCablesPopupComponent.ID_FIELD },\r\n { header: 'X Position', columnType: ColumnTypeEnum.Angle, dataField: KtxListCablesPopupComponent.X_POSITION_FIELD },\r\n { header: 'Y Position', columnType: ColumnTypeEnum.Radius, dataField: KtxListCablesPopupComponent.Y_POSITION_FIELD },\r\n { header: 'Number of sensors', columnType: ColumnTypeEnum.SensorsAmount, dataField: KtxListCablesPopupComponent.SENSORS_AMOUNT_FIELD },\r\n { header: this.muxOrDeviceHeaderName, columnType: ColumnTypeEnum.MUXOrDevice, dataField: KtxListCablesPopupComponent.MUX_OR_DEVICE_FIELD },\r\n ];\r\n }\r\n\r\n }\r\n\r\n ngOnDestroy() {\r\n super.ngOnDestroy();\r\n }\r\n\r\n constructor() {\r\n super();\r\n }\r\n\r\n ngOnInit() {\r\n\r\n }\r\n\r\n onClose() {\r\n this._gridData = [];\r\n this._displayScheme = false;\r\n this._isHidden = true;\r\n this.table.first = 0;\r\n }\r\n\r\n public show(bin: BinSchemeViewModel) {\r\n this._isHidden = false;\r\n this._displayScheme = bin.displaySchemes;\r\n this._binType = bin.binType;\r\n this._columnsView;\r\n\r\n if (bin.switchType === SwitchTypeEnum.MUX) {\r\n this.muxOrDeviceHeaderName = 'Device';\r\n } else {\r\n this.muxOrDeviceHeaderName = 'MUX';\r\n }\r\n\r\n this._gridData = bin.cables;\r\n }\r\n}\r\n","export * from './ktx-location-bins-popup.component';","import { FormBuilder, FormGroup } from '@angular/forms';\r\nimport { Component, OnInit, OnDestroy, ElementRef, AfterViewInit, EventEmitter } from '@angular/core';\r\nimport { Subscription } from 'rxjs';\r\n\r\nimport { BasePopupBehavior } from '../common';\r\nimport { BinSchemeViewModel, BinViewModel, LocationKtxSchemeViewModel, LocationKtxViewModel } from '../../../models';\r\nimport { BinTypeEnum, ColumnTypeEnum } from '../../../enums';\r\nimport { LocationsKtxDataSourceService } from '../../../services';\r\n\r\n@Component({\r\n selector: 'greensleeves-ktx-location-bins-popup',\r\n templateUrl: './ktx-location-bins-popup.component.html',\r\n})\r\nexport class KtxLocationBinsPopupComponent extends BasePopupBehavior implements OnInit, OnDestroy, AfterViewInit {\r\n static NAME_FIELD = 'name';\r\n static HEIGHT_FIELD = 'height';\r\n static DEPTH_FIELD = 'depth';\r\n static WIDTH_FIELD = 'width';\r\n static TYPE_FIELD = 'binType';\r\n _displayScheme = 'displaySchemes';\r\n\r\n _sortField = KtxLocationBinsPopupComponent.NAME_FIELD;\r\n _isHidden = true;\r\n _isLoading = false;\r\n _searchForm: FormGroup;\r\n _location: LocationKtxViewModel;\r\n _gridData: BinSchemeViewModel[] = [];\r\n _sortOrder = 1;\r\n _columnTypeEnum = ColumnTypeEnum;\r\n _lastSearchPhrase: string;\r\n _binTypes = BinTypeEnum;\r\n scheme: LocationKtxSchemeViewModel;\r\n subscriptions: Subscription[] = [];\r\n\r\n onDetailsClick = new EventEmitter();\r\n onUnitDetailsClick = new EventEmitter();\r\n\r\n _columnsView = [\r\n { header: 'Bin name', columnType: ColumnTypeEnum.BinName, dataField: KtxLocationBinsPopupComponent.NAME_FIELD },\r\n { header: 'Height', columnType: ColumnTypeEnum.Height, dataField: KtxLocationBinsPopupComponent.HEIGHT_FIELD },\r\n { header: 'Depth', columnType: ColumnTypeEnum.Depth, dataField: KtxLocationBinsPopupComponent.DEPTH_FIELD },\r\n { header: 'Width', columnType: ColumnTypeEnum.Width, dataField: KtxLocationBinsPopupComponent.WIDTH_FIELD },\r\n { header: 'Type', columnType: ColumnTypeEnum.Type, dataField: KtxLocationBinsPopupComponent.TYPE_FIELD },\r\n ];\r\n _frozenColumns = [\r\n { header: 'Details', columnType: ColumnTypeEnum.Details, width: 46 },\r\n ];\r\n\r\n get _frozenWidth() {\r\n return `${this._frozenColumns.reduce((a, v) => a + v.width, 0)}px`;\r\n }\r\n\r\n constructor(\r\n private _el: ElementRef,\r\n private _formBuilder: FormBuilder,\r\n private _locationKtxDataSourceService: LocationsKtxDataSourceService) {\r\n super();\r\n this._searchForm = this._formBuilder.group({\r\n searchPhrase: [''],\r\n });\r\n }\r\n\r\n ngOnInit() {\r\n this.scheme = new LocationKtxSchemeViewModel();\r\n this._location = new LocationKtxViewModel();\r\n }\r\n\r\n ngAfterViewInit() {\r\n this.reInitScrollBar(0);\r\n }\r\n\r\n ngOnDestroy() {\r\n super.ngOnDestroy();\r\n this.subscriptions &&\r\n this.subscriptions.forEach((sub) => sub.unsubscribe());\r\n }\r\n\r\n public async show(locationId: number) {\r\n this._location = this._locationKtxDataSourceService.locationsKtx$.getValue().find(x => x.id === locationId);\r\n this._isHidden = false;\r\n this._isLoading = true;\r\n const scheme = await this._locationKtxDataSourceService.getScheme(locationId);\r\n if (scheme && this._location && scheme.locationId === this._location.id) {\r\n this._gridData = scheme.binSchemes;\r\n this.scheme = scheme;\r\n }\r\n this._isLoading = false;\r\n }\r\n\r\n async onClose() {\r\n this._isHidden = true;\r\n this._gridData = [];\r\n }\r\n\r\n onUpdateLastSearch() {\r\n this._lastSearchPhrase = this._searchForm.controls.searchPhrase.value;\r\n }\r\n\r\n onClickDetails(bin: BinViewModel) {\r\n const binScheme = BinViewModel.toSchemeViewModel(bin);\r\n\r\n if (this._location.temperatureRanges && this._location.alarm) {\r\n binScheme.temperatureRanges = this._location.temperatureRanges;\r\n binScheme.alarm = this._location.alarm;\r\n } else {\r\n this._locationKtxDataSourceService.getTemperatureRanges(this._location.id).then(() => {\r\n binScheme.temperatureRanges = this._location.temperatureRanges;\r\n binScheme.alarm = this._location.alarm;\r\n });\r\n }\r\n\r\n binScheme.locationId = this.scheme.locationId;\r\n binScheme.displaySchemes = this._location.displaySchemes;\r\n binScheme.wasDeviceInitialized = this.scheme.wasDeviceInitialized;\r\n binScheme.isDeviceInitialized = this._location.isInitialized;\r\n\r\n if (binScheme.binType === BinTypeEnum.Unit) {\r\n this.onUnitDetailsClick.emit(binScheme);\r\n } else {\r\n this.onDetailsClick.emit(binScheme);\r\n }\r\n }\r\n\r\n private reInitScrollBar(timeout?: number) {\r\n const el = this._el.nativeElement.querySelector('.ui-table-scrollable-view.ui-table-unfrozen-view .ui-table-scrollable-body');\r\n this.reInitMainScrollBar(el, timeout);\r\n }\r\n}\r\n","export * from './ktx-temperature-ranges-popup.component';\r\nexport * from './ktx-range-delete-popup';","export * from './ktx-range-delete-popup.component';\r\n","import { Component, EventEmitter, OnInit } from '@angular/core';\r\n\r\nimport { TemperatureRangeViewModel } from '../../../../models';\r\nimport { BasePopupBehavior } from '../../common';\r\n\r\n@Component({\r\n selector: 'greensleeves-ktx-range-delete-popup',\r\n templateUrl: './ktx-range-delete-popup.component.html'\r\n})\r\nexport class KtxRangeDeletePopupComponent extends BasePopupBehavior implements OnInit {\r\n _isHidden = true;\r\n range: TemperatureRangeViewModel;\r\n onSubmit$ = new EventEmitter();\r\n\r\n constructor() { \r\n super();\r\n }\r\n ngOnInit() {\r\n }\r\n\r\n onCancel() {\r\n this._isHidden = true;\r\n this.range = null;\r\n }\r\n\r\n onSubmit() {\r\n this.onSubmit$.emit(this.range);\r\n this._isHidden = true;\r\n }\r\n\r\n public show(range: TemperatureRangeViewModel) {\r\n this._isHidden = false;\r\n this.range = range;\r\n }\r\n}\r\n","import { Subscription } from 'rxjs';\r\nimport { FormBuilder, FormGroup, Validators } from '@angular/forms';\r\nimport { AfterViewInit, Component, ElementRef, EventEmitter, OnDestroy, OnInit, ViewChild, Output } from '@angular/core';\r\n\r\nimport { AlarmViewModel, LocationKtxViewModel, TemperatureRangePostModel, TemperatureRangeViewModel } from '../../../models';\r\nimport { ColumnTypeEnum } from '../../../enums';\r\nimport { BasePopupBehavior } from '../common';\r\nimport { LocationsKtxDataSourceService } from '../../../services';\r\nimport { ConvertDataFunctions, ErrorModel } from '../../../../common';\r\n\r\n@Component({\r\n selector: 'greensleeves-ktx-temperature-ranges-popup',\r\n templateUrl: './ktx-temperature-ranges-popup.component.html'\r\n})\r\nexport class KtxTemperatureRangesPopupComponent extends BasePopupBehavior implements OnInit, OnDestroy, AfterViewInit {\r\n static FROM_FIELD = 'from';\r\n static TO_FIELD = 'to';\r\n static COLOR_HEX_FIELD = 'colorHex';\r\n static CELSIUS_DELTA_VALUE = 0.54;\r\n public customPatterns = { '9': { pattern: new RegExp('\\\\d') } };\r\n\r\n @Output() onClosePopup = new EventEmitter();\r\n _isHidden: boolean = true;\r\n _columnTypes = ColumnTypeEnum;\r\n _rangeForm: FormGroup;\r\n _alarmForm: FormGroup;\r\n _alarmSubmitted: boolean;\r\n _rangeSubmitted: boolean;\r\n _subscriptions: Subscription[] = [];\r\n _gridData: TemperatureRangeViewModel[];\r\n _alarm: AlarmViewModel;\r\n _uniqueRangeError: boolean;\r\n _isSubsequentError: boolean;\r\n _locationId: number;\r\n _rangeToAdd: TemperatureRangeViewModel;\r\n _isLoading: boolean;\r\n _sortField: string = 'from';\r\n onClickRangeDelete = new EventEmitter();\r\n\r\n _columnsView = [\r\n { header: '#', columnType: ColumnTypeEnum.Number },\r\n { header: 'From', columnType: ColumnTypeEnum.From, dataField: KtxTemperatureRangesPopupComponent.FROM_FIELD },\r\n { header: 'To', columnType: ColumnTypeEnum.To, dataField: KtxTemperatureRangesPopupComponent.TO_FIELD },\r\n { header: 'Color', columnType: ColumnTypeEnum.Color, dataField: KtxTemperatureRangesPopupComponent.COLOR_HEX_FIELD },\r\n { header: '', columnType: ColumnTypeEnum.Delete },\r\n ];\r\n\r\n constructor(\r\n private _formBuilder: FormBuilder,\r\n private _el: ElementRef,\r\n private _locationKtxDataSourceService: LocationsKtxDataSourceService) {\r\n super();\r\n }\r\n\r\n\r\n ngOnInit() {\r\n this._alarm = new AlarmViewModel();\r\n this._rangeToAdd = new TemperatureRangeViewModel();\r\n this.setAlarmValue(this._alarm);\r\n\r\n this._rangeForm = this._formBuilder.group({\r\n from: [0, Validators.required],\r\n to: [0, Validators.required],\r\n colorHex: ['', Validators.required]\r\n });\r\n\r\n this._alarmForm = this._formBuilder.group({\r\n highTemperature: [0, [Validators.required, Validators.min(1), Validators.max(250)]],\r\n highResistance: [0, [Validators.required, Validators.min(1), Validators.max(10000)]],\r\n maxRise: [0, [Validators.required, Validators.min(1), Validators.max(200)]],\r\n normalResistanceColor: ['', Validators.required],\r\n highTemperatureColor: ['', Validators.required],\r\n maxRiseColor: ['', Validators.required]\r\n });\r\n }\r\n\r\n ngAfterViewInit() {\r\n this.reInitScrollBar(0);\r\n }\r\n\r\n onClose() {\r\n this._gridData = [];\r\n this._rangeSubmitted = false;\r\n this._alarmSubmitted = false;\r\n this._isSubsequentError = false;\r\n this._uniqueRangeError = false;\r\n this._alarm = new AlarmViewModel();\r\n this._rangeToAdd = new TemperatureRangeViewModel();\r\n this.onClosePopup.emit();\r\n }\r\n\r\n show(location: LocationKtxViewModel) {\r\n this._isHidden = false;\r\n this._locationId = location.id;\r\n this._isLoading = true;\r\n\r\n this._locationKtxDataSourceService.getTemperatureRanges(location.id).then(() => {\r\n this._isLoading = false;\r\n\r\n this._gridData = location.temperatureRanges ? JSON.parse(JSON.stringify(location.temperatureRanges)) : [];\r\n this._alarm = JSON.parse(JSON.stringify(location.alarm));\r\n this.setAlarmValue(this._alarm);\r\n\r\n this._gridData.forEach(x => {\r\n x.from = ConvertDataFunctions.celsiusToFahrenheit(x.from);\r\n x.to = ConvertDataFunctions.celsiusToFahrenheit(x.to - KtxTemperatureRangesPopupComponent.CELSIUS_DELTA_VALUE);\r\n });\r\n })\r\n }\r\n\r\n onFocusRange() {\r\n if (this._uniqueRangeError) {\r\n this._uniqueRangeError = false;\r\n }\r\n if (this._isSubsequentError) {\r\n this._isSubsequentError = false;\r\n }\r\n }\r\n\r\n ngOnDestroy() {\r\n this.destroyMainScrollBar();\r\n this._subscriptions && this._subscriptions.forEach(x => x.unsubscribe());\r\n super.ngOnDestroy();\r\n }\r\n\r\n onClickDelete(range: TemperatureRangeViewModel) {\r\n this.onClickRangeDelete.emit(range);\r\n }\r\n\r\n removeRange(range: TemperatureRangeViewModel) {\r\n this._gridData.splice(this._gridData.indexOf(range), 1);\r\n }\r\n\r\n reInitScrollBar(timeout: number) {\r\n const el = this._el.nativeElement.querySelector('.ui-table-scrollable-view .ui-table-scrollable-body');\r\n this.reInitMainScrollBar(el, timeout);\r\n }\r\n\r\n onRangeSubmit() {\r\n this._rangeSubmitted = true;\r\n if (this._rangeForm.invalid) {\r\n return;\r\n }\r\n\r\n this._rangeToAdd.from = +this._rangeToAdd.from;\r\n this._rangeToAdd.to = +this._rangeToAdd.to;\r\n\r\n if (this._rangeToAdd.from >= this._rangeToAdd.to) {\r\n this._isSubsequentError = true;\r\n return;\r\n }\r\n\r\n if (this._gridData.some(x => x.from === this._rangeToAdd.from && x.to === this._rangeToAdd.to)) {\r\n this._uniqueRangeError = true;\r\n return;\r\n }\r\n\r\n if (this._gridData.some(x => (\r\n (this._rangeToAdd.from >= x.from && this._rangeToAdd.from <= x.to)\r\n || (this._rangeToAdd.to >= x.from && this._rangeToAdd.to <= x.to)\r\n || (x.from > this._rangeToAdd.from && x.to < this._rangeToAdd.to)))) {\r\n\r\n this._isSubsequentError = true;\r\n return;\r\n }\r\n\r\n this._rangeSubmitted = false;\r\n this._gridData.push({ ...this._rangeToAdd, id: 0 } as TemperatureRangeViewModel);\r\n let tempRange: Array = this._gridData.map(x => x);\r\n this._gridData = [];\r\n this._gridData = tempRange.sort((a, b) => a.from - b.from);\r\n this._rangeToAdd = new TemperatureRangeViewModel();\r\n this._rangeToAdd.colorHex = \"#FF0000\";\r\n }\r\n\r\n onSubmit() {\r\n this._alarmSubmitted = true;\r\n if (this._alarmForm.invalid) {\r\n return;\r\n }\r\n const editModel = {\r\n locationId: this._locationId,\r\n ranges: JSON.parse(JSON.stringify(this._gridData)),\r\n alarm: Object.create(this._alarm)\r\n } as TemperatureRangePostModel;\r\n this.validateEditModel(editModel);\r\n\r\n this._locationKtxDataSourceService.editTemperatureRange(editModel).then((result) => {\r\n if (result instanceof ErrorModel) {\r\n console.error(result);\r\n } else {\r\n this.onClose();\r\n this._isHidden = true;\r\n }\r\n })\r\n }\r\n private validateEditModel(model: TemperatureRangePostModel) {\r\n model.alarm.maxRiseValue = ConvertDataFunctions.deltaFahrenheitToDeltaCelsius(+model.alarm.maxRiseValue);\r\n model.alarm.highTemperatureValue = ConvertDataFunctions.fahrenheitToCelsius(+model.alarm.highTemperatureValue);\r\n model.alarm.highResistanceValue = +model.alarm.highResistanceValue;\r\n\r\n model.alarm.highResistanceColorHex = model.alarm.highResistanceColorHex === null ? '' : model.alarm.highResistanceColorHex;\r\n model.alarm.maxRiseColorHex = model.alarm.maxRiseColorHex === null ? '' : model.alarm.maxRiseColorHex;\r\n model.alarm.highTemperatureColorHex = model.alarm.highTemperatureColorHex === null ? '' : model.alarm.highTemperatureColorHex;\r\n model.alarm.normalResistanceColorHex = model.alarm.normalResistanceColorHex === null ? '' : model.alarm.normalResistanceColorHex;\r\n\r\n model.alarm.highResistanceColorHex = model.alarm.highTemperatureColorHex;\r\n model.ranges.forEach(x => {\r\n x.from = ConvertDataFunctions.fahrenheitToCelsius(x.from);\r\n x.to = ConvertDataFunctions.fahrenheitToCelsius(x.to);\r\n })\r\n }\r\n\r\n private setAlarmValue(alarm: AlarmViewModel) {\r\n this._alarm.highResistanceValue = this._alarm.highResistanceValue\r\n ? alarm.highResistanceValue\r\n : this._alarm.highResistanceValue;\r\n\r\n this._alarm.maxRiseValue = this._alarm.maxRiseValue\r\n ? ConvertDataFunctions.deltaCelsiusToDeltaFahrenheit(alarm.maxRiseValue)\r\n : this._alarm.maxRiseValue;\r\n\r\n this._alarm.highTemperatureValue = this._alarm.highTemperatureValue\r\n ? ConvertDataFunctions.celsiusToFahrenheit(alarm.highTemperatureValue)\r\n : this._alarm.highTemperatureValue;\r\n\r\n this._alarm.highTemperatureColorHex = (alarm.highTemperatureColorHex === '' || typeof alarm.highTemperatureColorHex === undefined || alarm.highTemperatureColorHex == null)\r\n ? \"#FFFF00\"\r\n : alarm.highTemperatureColorHex;\r\n\r\n this._alarm.normalResistanceColorHex = (alarm.normalResistanceColorHex === '' || typeof alarm.normalResistanceColorHex === undefined || alarm.normalResistanceColorHex == null)\r\n ? \"#ffffff\"\r\n : alarm.normalResistanceColorHex;\r\n\r\n this._alarm.maxRiseColorHex = (alarm.maxRiseColorHex === '' || typeof alarm.maxRiseColorHex == undefined || alarm.maxRiseColorHex == null)\r\n ? \"#FF0000\"\r\n : alarm.maxRiseColorHex;\r\n\r\n this._rangeToAdd.colorHex = \"#FF0000\";\r\n }\r\n}\r\n","export * from './ktx-unit-details-popup.component';","import { AfterViewInit, Component, ElementRef, EventEmitter, OnDestroy, OnInit, ViewChild } from '@angular/core';\r\nimport { BehaviorSubject, Subscription } from 'rxjs';\r\nimport { BinTypeEnum, ColumnTypeEnum } from '../../../enums';\r\nimport { BinSchemeViewModel } from '../../../models';\r\nimport { BasePopupBehavior } from '../common';\r\n\r\n@Component({\r\n selector: 'greensleeves-ktx-unit-details-popup',\r\n templateUrl: './ktx-unit-details-popup.component.html',\r\n})\r\nexport class KtxUnitDetailsPopupComponent extends BasePopupBehavior implements OnInit, AfterViewInit, OnDestroy {\r\n static NAME_FIELD = 'name';\r\n static HEIGHT_FIELD = 'height';\r\n static DEPTH_FIELD = 'depth';\r\n static WIDTH_FIELD = 'width';\r\n static TYPE_FIELD = 'binType';\r\n static WINDOW_FUNCTION_GET_UNIT_NAME = 'getUnit';\r\n static WINDOW_FUNCTION_BIN_DETAILS_CLICK_NAME = 'binDetailsClick';\r\n static WINDOW_FUNCTION_SHOW_SCHEME_NAME = 'showScheme';\r\n _isSchemeHidden = true;\r\n _isHidden = true;\r\n _gridData: BinSchemeViewModel[];\r\n subscriptions: Subscription[] = [];\r\n _sortField = 'binWithinUnitName';\r\n _columnTypeEnum = ColumnTypeEnum;\r\n _binTypes = BinTypeEnum;\r\n _currentUnit: BinSchemeViewModel;\r\n onDetailsClick = new EventEmitter();\r\n scheme$ = new BehaviorSubject(null);\r\n onUnitDetailsClick$ = new BehaviorSubject(0);\r\n showScheme$ = new BehaviorSubject(false);\r\n _isSchemeLoading = true;\r\n @ViewChild('unitModel', { static: false }) unit: ElementRef;\r\n @ViewChild('fullScreenContainer', { static: false }) fullScreenContainer: ElementRef;\r\n\r\n _columnsView = [\r\n { header: 'Bin name', columnType: ColumnTypeEnum.binWithinUnitName, dataField: KtxUnitDetailsPopupComponent.NAME_FIELD },\r\n { header: 'Height', columnType: ColumnTypeEnum.Height, dataField: KtxUnitDetailsPopupComponent.HEIGHT_FIELD },\r\n { header: 'Depth', columnType: ColumnTypeEnum.Depth, dataField: KtxUnitDetailsPopupComponent.DEPTH_FIELD },\r\n { header: 'Width', columnType: ColumnTypeEnum.Width, dataField: KtxUnitDetailsPopupComponent.WIDTH_FIELD },\r\n { header: 'Type', columnType: ColumnTypeEnum.Type, dataField: KtxUnitDetailsPopupComponent.TYPE_FIELD }\r\n ];\r\n\r\n _frozenColumns = [\r\n { header: 'Details', columnType: ColumnTypeEnum.Details, width: 46 },\r\n ];\r\n\r\n get _frozenWidth() {\r\n return `${this._frozenColumns.reduce((a, v) => a + v.width, 0)}px`;\r\n }\r\n\r\n constructor(private _el: ElementRef) {\r\n super();\r\n }\r\n\r\n ngOnInit() {\r\n this._currentUnit = new BinSchemeViewModel();\r\n window[KtxUnitDetailsPopupComponent.WINDOW_FUNCTION_GET_UNIT_NAME] = () => {\r\n return this.scheme$;\r\n };\r\n\r\n window[KtxUnitDetailsPopupComponent.WINDOW_FUNCTION_BIN_DETAILS_CLICK_NAME] = () => {\r\n return this.onUnitDetailsClick$;\r\n };\r\n\r\n window[KtxUnitDetailsPopupComponent.WINDOW_FUNCTION_SHOW_SCHEME_NAME] = () => {\r\n return this.showScheme$;\r\n };\r\n\r\n let binDetailsSub = this.onUnitDetailsClick$.subscribe((id: number) => {\r\n if (id) {\r\n const bin = this._currentUnit.bins.find(x => x.id === id);\r\n if (!bin.isDecorBin) {\r\n this.onClickDetails(bin);\r\n }\r\n }\r\n });\r\n\r\n this.subscriptions.push(binDetailsSub);\r\n }\r\n\r\n ngAfterViewInit() {\r\n this.reInitScrollBar(0);\r\n }\r\n\r\n ngOnDestroy() {\r\n this.subscriptions && this.subscriptions.forEach(x => x.unsubscribe());\r\n }\r\n\r\n onClose() {\r\n this._currentUnit = new BinSchemeViewModel();\r\n this._gridData = [];\r\n this.showScheme$.next(false);\r\n this.destroyMainScrollBar();\r\n }\r\n\r\n onClickDetails(scheme: BinSchemeViewModel) {\r\n scheme.locationId = this._currentUnit.locationId;\r\n scheme.displaySchemes = this._currentUnit.displaySchemes;\r\n scheme.temperatureRanges = this._currentUnit.temperatureRanges;\r\n scheme.alarm = this._currentUnit.alarm;\r\n scheme.wasDeviceInitialized = this._currentUnit.wasDeviceInitialized;\r\n scheme.isDeviceInitialized = this._currentUnit.isDeviceInitialized;\r\n\r\n this.onDetailsClick.emit(scheme);\r\n }\r\n\r\n public show(unit: BinSchemeViewModel) {\r\n this._isHidden = false;\r\n this._gridData = JSON.parse(JSON.stringify(unit.bins.filter(b => !b.isDecorBin)));\r\n this._currentUnit = unit;\r\n this.scheme$.next(unit);\r\n this.showScheme$.next(true);\r\n }\r\n\r\n reInitScrollBar(timeout: number) {\r\n const el = this._el.nativeElement.querySelector('.ui-table-scrollable-view.ui-table-unfrozen-view .ui-table-scrollable-body');\r\n this.reInitMainScrollBar(el, timeout);\r\n }\r\n\r\n showFullScreen() {\r\n this._isSchemeHidden = false;\r\n this._isSchemeLoading = true;\r\n this.fullScreenContainer.nativeElement.appendChild(this.unit.nativeElement);\r\n this.unit.nativeElement.setAttribute('height', '600');\r\n this.unit.nativeElement.setAttribute('width', '600');\r\n }\r\n\r\n onFullScreenClose() {\r\n this._isSchemeHidden = true;\r\n this._isSchemeLoading = true;\r\n const modelHolder = this._el.nativeElement.querySelector('.popup-iframe');\r\n modelHolder.appendChild(this.unit.nativeElement);\r\n this.unit.nativeElement.setAttribute('height', '300');\r\n this.unit.nativeElement.setAttribute('width', '300');\r\n }\r\n\r\n onIframeLoad() {\r\n this._isSchemeLoading = false;\r\n }\r\n}\r\n","export * from './ktx-unit-fullscreen-popup.component'","import { Component, EventEmitter, OnInit } from '@angular/core';\r\nimport { BehaviorSubject, Subscription } from 'rxjs';\r\n\r\nimport { BinSchemeViewModel } from '@models';\r\n\r\n@Component({\r\n selector: 'greensleeves-ktx-unit-fullscreen-popup',\r\n templateUrl: './ktx-unit-fullscreen-popup.component.html',\r\n})\r\nexport class KtxUnitFullscreenPopupComponent implements OnInit {\r\n static NAME_FIELD = 'binWithinUnitName';\r\n static HEIGHT_FIELD = 'height';\r\n static DEPTH_FIELD = 'depth';\r\n static WIDTH_FIELD = 'width';\r\n static TYPE_FIELD = 'binType';\r\n static WINDOW_FUNCTION_GET_UNIT_NAME = 'getUnit';\r\n static WINDOW_FUNCTION_BIN_DETAILS_CLICK_NAME = 'binDetailsClick';\r\n static WINDOW_FUNCTION_SHOW_SCHEME_NAME = 'showScheme';\r\n\r\n _isSchemeHidden = true;\r\n _isHidden = true;\r\n _isSchemeLoading = true;\r\n _subscriptions: Subscription[] = [];\r\n _currentUnit: BinSchemeViewModel;\r\n\r\n onDetailsClick = new EventEmitter();\r\n onUnitDetailsClick$ = new BehaviorSubject(0);\r\n scheme$ = new BehaviorSubject(null);\r\n showScheme$ = new BehaviorSubject(false);\r\n\r\n constructor() {}\r\n\r\n ngOnInit() {\r\n this._currentUnit = new BinSchemeViewModel();\r\n window[KtxUnitFullscreenPopupComponent.WINDOW_FUNCTION_GET_UNIT_NAME] =\r\n () => {\r\n return this.scheme$;\r\n };\r\n\r\n window[\r\n KtxUnitFullscreenPopupComponent.WINDOW_FUNCTION_BIN_DETAILS_CLICK_NAME\r\n ] = () => {\r\n return this.onUnitDetailsClick$;\r\n };\r\n\r\n window[KtxUnitFullscreenPopupComponent.WINDOW_FUNCTION_SHOW_SCHEME_NAME] =\r\n () => {\r\n return this.showScheme$;\r\n };\r\n\r\n const binDetailsSubscriptions = this.onUnitDetailsClick$.subscribe(\r\n (id: number) => {\r\n if (id) {\r\n const bin = this._currentUnit.bins.find((x) => x.id === id);\r\n if (!bin.isDecorBin) {\r\n this.onClickDetails(bin);\r\n }\r\n }\r\n }\r\n );\r\n\r\n this._subscriptions.push(binDetailsSubscriptions);\r\n }\r\n\r\n onClose() {\r\n this._currentUnit = new BinSchemeViewModel();\r\n this.showScheme$.next(false);\r\n }\r\n\r\n onClickDetails(scheme: BinSchemeViewModel) {\r\n this.onClose();\r\n this._isHidden = true;\r\n this.onDetailsClick.emit(scheme);\r\n }\r\n\r\n public show(unit: BinSchemeViewModel) {\r\n this._isHidden = false;\r\n unit.bins.forEach((bin) => (bin.binWithinUnitName = +bin.name));\r\n this._currentUnit = unit;\r\n this.scheme$.next(unit);\r\n this.showScheme$.next(true);\r\n }\r\n\r\n onIframeLoad() {\r\n this._isSchemeLoading = false;\r\n }\r\n}\r\n","export * from './location-btx-ktx-delete-popup.component';","import { Component, OnInit } from '@angular/core';\r\nimport { ErrorModel } from 'src/app/common';\r\nimport { LocationBtxViewModel, LocationItxViewModel, LocationKtxViewModel, LocationUpdaterViewModel, LocationViewModel, UpdateDeviceViewModel } from '../../../models';\r\nimport { LocationsBtxDataSourceService, LocationsKtxDataSourceService } from '../../../services';\r\nimport { LocationsItxDatasourceService, UpdaterDeviceDatasourceService } from 'src/app/main/services/data';\r\n\r\n@Component({\r\n selector: 'greensleeves-location-btx-ktx-delete-popup',\r\n templateUrl: './location-btx-ktx-delete-popup.component.html',\r\n styles: []\r\n})\r\nexport class LocationBtxKtxDeletePopupComponent implements OnInit {\r\n _isHidden = true;\r\n _isKtxToDelete: boolean;\r\n _isItxToDelete: boolean;\r\n _submitted = false;\r\n\r\n _location: LocationBtxViewModel;\r\n _locationKtx: LocationKtxViewModel;\r\n _locationItx: LocationItxViewModel;\r\n _error: string;\r\n\r\n constructor(\r\n private _locationBtxDatasourceService: LocationsBtxDataSourceService,\r\n private _locationKtxDatasourceService: LocationsKtxDataSourceService,\r\n private _locationItxDatasourceService: LocationsItxDatasourceService,\r\n ) { }\r\n\r\n ngOnInit() {\r\n }\r\n\r\n public show(location: LocationBtxViewModel | LocationKtxViewModel | LocationItxViewModel) {\r\n if (location instanceof LocationBtxViewModel) {\r\n this._isKtxToDelete = false;\r\n this._location = location;\r\n } else if (location instanceof LocationKtxViewModel) {\r\n this._isKtxToDelete = true;\r\n this._locationKtx = location as LocationKtxViewModel;\r\n }else if (location instanceof LocationItxViewModel) {\r\n this._isItxToDelete = true;\r\n this._locationItx = location as LocationItxViewModel;\r\n }\r\n\r\n this._isHidden = false;\r\n }\r\n \r\n async onSubmit() {\r\n if ((this._location || this._locationKtx || this._locationItx) && !this._submitted) {\r\n this._submitted = true;\r\n\r\n let result: boolean | ErrorModel;\r\n if(this._location) {\r\n result = await this._locationBtxDatasourceService.delete(this._location.id);\r\n } else if(this._locationKtx) {\r\n result = await this._locationKtxDatasourceService.delete(this._locationKtx.id);\r\n }else if(this._locationItx) {\r\n result = await this._locationItxDatasourceService.delete(this._locationItx.id);\r\n }\r\n\r\n this._submitted = false;\r\n if (result === true) {\r\n this.onClickCancel();\r\n } else if (result === false) {\r\n this._error = 'Unknown error occured';\r\n } else {\r\n const errorModel = result as ErrorModel;\r\n if (errorModel) {\r\n this._error = errorModel.message;\r\n }\r\n }\r\n }\r\n }\r\n\r\n onClickCancel() {\r\n this._location = null;\r\n this._locationKtx = null;\r\n this._locationItx = null;\r\n this._error = null;\r\n this._isHidden = true;\r\n }\r\n}\r\n","export * from './location-changed-popup.component';","import { Component, OnInit } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'greensleeves-location-changed-popup',\r\n templateUrl: './location-changed-popup.component.html',\r\n styles: []\r\n})\r\n\r\nexport class LocationChangedPopupComponent implements OnInit {\r\n _isHidden = true;\r\n\r\n constructor(\r\n ) { }\r\n\r\n ngOnInit() {\r\n }\r\n\r\n public show() {\r\n this._isHidden = false;\r\n }\r\n\r\n async onSubmit() {\r\n this._isHidden = true;\r\n }\r\n\r\n onCancel() {\r\n this._isHidden = true;\r\n }\r\n}","export * from './location-delete-popup.component';","import { Component, OnInit } from '@angular/core';\r\nimport { ErrorModel } from 'src/app/common';\r\nimport { LocationsDataSourceService } from 'src/app/main/services';\r\nimport { LocationViewModel } from '../../../models';\r\n\r\n@Component({\r\n selector: 'greensleeves-location-delete-popup',\r\n templateUrl: './location-delete-popup.component.html',\r\n styles: []\r\n})\r\nexport class LocationDeletePopupComponent implements OnInit {\r\n _isHidden = true;\r\n\r\n _submitted = false;\r\n\r\n _location: LocationViewModel;\r\n _error: string;\r\n\r\n constructor(\r\n private _locationDatasourceService: LocationsDataSourceService\r\n ) { }\r\n\r\n ngOnInit() {\r\n }\r\n\r\n public show(location: LocationViewModel) {\r\n this._location = location;\r\n this._isHidden = false;\r\n }\r\n\r\n async onSubmit() {\r\n if (this._location && !this._submitted) {\r\n this._submitted = true;\r\n const result = await this._locationDatasourceService.delete(this._location.id);\r\n this._submitted = false;\r\n if (result === true) {\r\n this.onClickCancel();\r\n } else if (result === false) {\r\n this._error = 'Unknown error occured';\r\n } else {\r\n const errorModel = result as ErrorModel;\r\n if (errorModel) {\r\n this._error = errorModel.message;\r\n }\r\n }\r\n }\r\n }\r\n\r\n onClickCancel() {\r\n this._location = null;\r\n this._error = null;\r\n this._isHidden = true;\r\n }\r\n}\r\n","export * from './location-edit-popup.component';\r\n","import { Component, OnInit, OnDestroy, AfterViewChecked, ViewChild } from '@angular/core';\r\nimport { FormBuilder, FormGroup, Validators, FormControl } from '@angular/forms';\r\nimport { Subscription } from 'rxjs';\r\n\r\nimport { CompaniesDataSourceService, LocationsDataSourceService, RoleService } from '../../../services';\r\nimport { TemplateFunctions } from '../../common';\r\nimport { ErrorModel, ErrorCodeEnum, UserRoleEnum } from '../../../../common';\r\nimport { BasePopupBehavior } from '../common';\r\nimport { emailValidator } from 'src/app/common/validators';\r\nimport { LocationChangedPopupComponent } from '../location-changed-popup';\r\nimport { LocationViewModel } from '../../../models';\r\n\r\n@Component({\r\n selector: 'greensleeves-location-edit-popup',\r\n templateUrl: './location-edit-popup.component.html',\r\n styles: []\r\n})\r\nexport class LocationEditPopupComponent extends BasePopupBehavior implements OnInit, OnDestroy, AfterViewChecked {\r\n @ViewChild(LocationChangedPopupComponent, { read: false, static: false })\r\n _locationChangedPopupComponent: LocationChangedPopupComponent;\r\n\r\n _isHidden = true;\r\n _submitted = false;\r\n\r\n _location: LocationViewModel;\r\n _locationForm: FormGroup;\r\n\r\n _companies: { label: string, value: number }[];\r\n\r\n _nameControlKey = 'name';\r\n _uniquenessErrorKey = 'unique';\r\n\r\n private _subscriptions: Subscription[] = [];\r\n\r\n constructor(\r\n private _formBuilder: FormBuilder,\r\n private _locationsService: LocationsDataSourceService,\r\n private _companiesService: CompaniesDataSourceService,\r\n private _roleService: RoleService,\r\n ) {\r\n super();\r\n }\r\n\r\n get _isServiceUser() {\r\n return this._roleService.userHasRole(UserRoleEnum.ServiceUser);\r\n }\r\n\r\n get _isCompanyAdmin() {\r\n return this._roleService.userHasRole(UserRoleEnum.CompanyAdmin);\r\n }\r\n\r\n ngOnInit() {\r\n super.ngOnInit();\r\n\r\n if (this._isServiceUser) {\r\n this._companiesService.get();\r\n }\r\n\r\n this._location = new LocationViewModel();\r\n\r\n const subscription = this._companiesService.companies$.subscribe(data => {\r\n if (data) {\r\n this._companies = data.map(x => ({ label: x.name, value: x.id }));\r\n }\r\n });\r\n\r\n this._subscriptions.push(subscription);\r\n }\r\n\r\n ngOnDestroy() {\r\n super.ngOnDestroy();\r\n this._subscriptions && this._subscriptions.forEach(sub => sub.unsubscribe());\r\n this._subscriptions = [];\r\n }\r\n\r\n ngAfterViewChecked() {\r\n super.ngAfterViewChecked();\r\n }\r\n\r\n async onSubmit() {\r\n this._submitted = true;\r\n if (this._locationForm.invalid) {\r\n return;\r\n }\r\n\r\n const value = {\r\n ...this._location,\r\n ...this._locationForm.value,\r\n companyName: this._companies ? this._companies.find(x => x.value == this._locationForm.value.companyId).label : ''\r\n } as LocationViewModel;\r\n\r\n const result = value.id\r\n ? await this._locationsService.edit(value)\r\n : await this._locationsService.add(value);\r\n\r\n if (result instanceof ErrorModel) {\r\n if (result.code === ErrorCodeEnum.NotUniqueLocationName) {\r\n this._locationForm.controls[this._nameControlKey].setErrors({ [this._uniquenessErrorKey]: 'Name should be unique' });\r\n }\r\n } else if (result) {\r\n this._location = null;\r\n this._isHidden = true;\r\n this._submitted = false;\r\n this._locationsService.markLocationForOthersAsUpdated(value, false);\r\n }\r\n }\r\n\r\n async onFocusControl(control: FormControl) {\r\n control.markAsTouched();\r\n }\r\n\r\n async onBlurControl(control: FormControl) {\r\n control.markAsUntouched();\r\n }\r\n\r\n async onClose() {\r\n this._locationsService.markLocationForOthersAsUpdated(this._location, false);\r\n }\r\n\r\n public show(location?: LocationViewModel) {\r\n this._submitted = false;\r\n this._location = location ? Object.assign({}, location) : new LocationViewModel();\r\n this.reInitForm();\r\n this._isHidden = false;\r\n }\r\n\r\n private reInitForm() {\r\n this._locationForm = this._formBuilder.group({\r\n [this._nameControlKey]: [\r\n this._location.name,\r\n Validators.compose([\r\n Validators.required,\r\n Validators.minLength(3),\r\n Validators.maxLength(50),\r\n ])\r\n ],\r\n address: [\r\n this._location.address,\r\n Validators.compose([\r\n Validators.required,\r\n Validators.minLength(3),\r\n Validators.maxLength(80),\r\n ])\r\n ],\r\n companyId: [\r\n this._location.companyId,\r\n Validators.compose([\r\n Validators.required,\r\n ])\r\n ],\r\n serviceEmail: [\r\n this._location.serviceEmail,\r\n Validators.compose([\r\n Validators.required,\r\n emailValidator()\r\n ])\r\n ],\r\n servicePhone: [\r\n this._location.servicePhone,\r\n Validators.compose([\r\n Validators.required,\r\n TemplateFunctions.phoneValidator,\r\n ])\r\n ],\r\n emergencyPhone: [\r\n this._location.emergencyPhone,\r\n Validators.compose([\r\n Validators.required,\r\n TemplateFunctions.emergencyPhoneValidator,\r\n ])\r\n ],\r\n sitePhone: [\r\n this._location.sitePhone,\r\n Validators.compose([\r\n Validators.required,\r\n TemplateFunctions.phoneValidator,\r\n ])\r\n ],\r\n siteEmail: [\r\n this._location.siteEmail,\r\n Validators.compose([\r\n Validators.required,\r\n emailValidator()\r\n ])\r\n ]\r\n });\r\n }\r\n}\r\n","export * from './service-user-add-popup.component';","import { Component, OnInit } from '@angular/core';\r\nimport { FormBuilder, FormGroup, Validators } from '@angular/forms';\r\n\r\nimport { ErrorCodeEnum, ErrorModel } from '../../../../common';\r\nimport { emailValidator } from '../../../../common/validators';\r\nimport { SalesUserViewModel, ServiceUserInviteModel, ServiceUserViewModel } from '../../../models';\r\nimport { ServiceUsersDataSourceService, SalesUsersDatasourceService } from '../../../services';\r\n\r\n@Component({\r\n selector: 'greensleeves-service-user-add-popup',\r\n templateUrl: './service-user-add-popup.component.html',\r\n styles: []\r\n})\r\nexport class ServiceUserAddPopupComponent implements OnInit {\r\n _isHidden = true;\r\n _submitted = false;\r\n _isSubmit = false;\r\n _invalidEmail = false;\r\n _serviceAndSalesUserForm: FormGroup;\r\n _isServiceUser: boolean;\r\n _locations: { label: string, value: number }[];\r\n\r\n constructor(\r\n private _formBuilder: FormBuilder,\r\n private _serviceUsersService: ServiceUsersDataSourceService,\r\n private _salesUserSerivece: SalesUsersDatasourceService,\r\n ) {\r\n }\r\n\r\n ngOnInit() {\r\n\r\n this._serviceAndSalesUserForm = this._formBuilder.group({\r\n email: [\r\n '',\r\n Validators.compose([\r\n Validators.required,\r\n Validators.email,\r\n emailValidator(),\r\n Validators.minLength(3),\r\n Validators.maxLength(50),\r\n ])\r\n ]\r\n });\r\n\r\n this._serviceAndSalesUserForm.valueChanges.subscribe(() => this._invalidEmail = false);\r\n }\r\n\r\n public show() {\r\n this.resetValuesBeforeShow();\r\n this._isServiceUser = true;\r\n }\r\n\r\n public showForSalesUser() {\r\n this.resetValuesBeforeShow();\r\n this._isServiceUser = false;\r\n }\r\n\r\n async onSubmit() {\r\n this._isSubmit = true;\r\n this._submitted = true;\r\n if (this._serviceAndSalesUserForm.invalid && !this._invalidEmail) {\r\n this._isSubmit = false;\r\n return;\r\n }\r\n\r\n const value = this._serviceAndSalesUserForm.value as ServiceUserInviteModel;\r\n if (this._isServiceUser) {\r\n this._serviceUsersService.invite(value)\r\n .then((response: ServiceUserViewModel) => {\r\n if (response instanceof ErrorModel && response.code === ErrorCodeEnum.UserAlreadyExist) {\r\n this._isSubmit = false;\r\n this._invalidEmail = true;\r\n } else if (response) {\r\n this.resetForm();\r\n }\r\n })\r\n }else{\r\n this._salesUserSerivece.invite(value)\r\n .then((response: SalesUserViewModel) => {\r\n if (response instanceof ErrorModel && response.code === ErrorCodeEnum.UserAlreadyExist) {\r\n this._isSubmit = false;\r\n this._invalidEmail = true;\r\n } else if (response) {\r\n this.resetForm();\r\n }\r\n })\r\n }\r\n }\r\n\r\n private resetValuesBeforeShow() {\r\n this._submitted = false;\r\n this._serviceAndSalesUserForm.reset();\r\n this._isHidden = false;\r\n this._isSubmit = false;\r\n }\r\n\r\n private resetForm() {\r\n this._submitted = false;\r\n this._isHidden = true;\r\n this._serviceAndSalesUserForm.reset();\r\n this._serviceAndSalesUserForm.markAsUntouched();\r\n Object.keys(this._serviceAndSalesUserForm.controls).forEach((name) => {\r\n const control = this._serviceAndSalesUserForm.controls[name];\r\n control.setErrors(null);\r\n });\r\n }\r\n}\r\n","export * from './service-user-delete-popup.component';","import { Component, OnInit } from '@angular/core';\r\n\r\nimport { ServiceUserDeleteModel } from '../../../models';\r\nimport { SalesUsersDatasourceService, ServiceUsersDataSourceService } from '../../../services';\r\n\r\n@Component({\r\n selector: 'greensleeves-service-user-delete-popup',\r\n templateUrl: './service-user-delete-popup.component.html',\r\n styles: []\r\n})\r\n\r\nexport class ServiceUserDeletePopupComponent implements OnInit {\r\n _isHidden = true;\r\n _submitted = false;\r\n _serviceUser: ServiceUserDeleteModel;\r\n private salesUserId: number;\r\n private isServiceUser: boolean;\r\n\r\n constructor(\r\n private _serviceUserDataSourceService: ServiceUsersDataSourceService,\r\n private _salesUserService: SalesUsersDatasourceService\r\n ) { }\r\n\r\n ngOnInit() {\r\n }\r\n\r\n public show(serviceUser: ServiceUserDeleteModel) {\r\n this._submitted = false;\r\n this._isHidden = false;\r\n this._serviceUser = serviceUser;\r\n this.isServiceUser = true;\r\n }\r\n\r\n public showSalesUser(salesUserId: number) {\r\n this._submitted = false;\r\n this._isHidden = false;\r\n this.isServiceUser = false;\r\n this.salesUserId = salesUserId;\r\n }\r\n\r\n async onSubmit() {\r\n this._submitted = true;\r\n const result = this.isServiceUser ? await this._serviceUserDataSourceService.delete(this._serviceUser.id)\r\n : await this._salesUserService.delete(this.salesUserId);\r\n if (result != null) {\r\n this._isHidden = true;\r\n this._serviceUser = null;\r\n this.salesUserId = 0;\r\n }\r\n }\r\n\r\n onCancel() {\r\n this._isHidden = true;\r\n this._serviceUser = null;\r\n this.salesUserId = 0;\r\n }\r\n}","export * from './service-user-edit-popup.component';","import { Component, OnDestroy, OnInit } from '@angular/core';\r\nimport { FormBuilder, FormGroup, Validators } from '@angular/forms';\r\n\r\nimport { LocalStorageService, UserRoleEnum } from '../../../../common';\r\nimport { UserStatusEnum } from '../../../enums';\r\nimport { SalesUserPostModel, SalesUserViewModel, ServiceUserPostModel, ServiceUserViewModel } from '../../../models';\r\nimport { ServiceUsersDataSourceService, SalesUsersDatasourceService } from '../../../services';\r\n\r\n@Component({\r\n selector: 'greensleeves-service-user-edit-popup',\r\n templateUrl: './service-user-edit-popup.component.html',\r\n styles: []\r\n})\r\nexport class ServiceUserEditPopupComponent implements OnInit, OnDestroy {\r\n _isHidden = true;\r\n _submitted = false;\r\n _serviceUser: ServiceUserViewModel;\r\n _salesUser: SalesUserViewModel;\r\n _serviceAndSalesUserForm: FormGroup;\r\n _isServiceUser: boolean;\r\n _role: UserRoleEnum;\r\n _selectedStatus;\r\n\r\n constructor(\r\n private _formBuilder: FormBuilder,\r\n private _serviceUsersService: ServiceUsersDataSourceService,\r\n private _salesUserService: SalesUsersDatasourceService,\r\n private _localStorageService: LocalStorageService\r\n ) { }\r\n\r\n ngOnInit() {\r\n const loginInfo = this._localStorageService.getLoginInfo();\r\n this._role = loginInfo ? loginInfo.role : null;\r\n }\r\n\r\n ngOnDestroy() {\r\n }\r\n\r\n public show(serviceUser: ServiceUserViewModel) {\r\n this._serviceUsersService.markServiceUserForOthersAsInUpdate(serviceUser.id);\r\n this._submitted = false;\r\n this._isServiceUser = true;\r\n this._serviceUser = serviceUser;\r\n this.initForm();\r\n this._isHidden = false;\r\n }\r\n\r\n public showSalesUserEdit(salesUser: SalesUserViewModel) {\r\n this._salesUserService.markServiceUserForOthersAsInUpdate(salesUser.id);\r\n this._isServiceUser = false;\r\n this._salesUser = salesUser;\r\n this._selectedStatus = UserStatusEnum[salesUser.status];\r\n this._submitted = false;\r\n this.initForm();\r\n this._isHidden = false;\r\n }\r\n\r\n async onSubmit() {\r\n this._submitted = true;\r\n if (this._serviceAndSalesUserForm.invalid) {\r\n return;\r\n }\r\n\r\n try {\r\n let value = {\r\n ...this._serviceAndSalesUserForm.value,\r\n status: UserStatusEnum[this._serviceAndSalesUserForm.value.status],\r\n id: this._isServiceUser ? this._serviceUser.id : this._salesUser.id\r\n };\r\n this._isServiceUser ? value = value as ServiceUserPostModel : value = value as SalesUserPostModel;\r\n const result = this._isServiceUser ? await this._serviceUsersService.edit(value) : await this._salesUserService.edit(value);\r\n if (result) {\r\n this._isHidden = true;\r\n this._submitted = false;\r\n }\r\n } catch (error) {\r\n console.log('ERROR', error)\r\n }\r\n }\r\n\r\n onCancel() {\r\n this._isServiceUser ? this._serviceUsersService.markServiceUserForOthersAsUpdated(this._serviceUser, false)\r\n : this._salesUserService.markServiceUserForOthersAsUpdated(this._salesUser, false);\r\n this._submitted = false;\r\n this._isHidden = true;\r\n this._serviceUser = null;\r\n this._salesUser = null;\r\n this._serviceAndSalesUserForm.reset;\r\n this.ngOnDestroy();\r\n }\r\n\r\n private initForm() {\r\n this._serviceAndSalesUserForm = this._formBuilder.group({\r\n firstName: [\r\n this._isServiceUser ? this._serviceUser.firstName : this._salesUser.firstName,\r\n Validators.compose([\r\n Validators.required,\r\n Validators.minLength(3),\r\n Validators.maxLength(50),\r\n ])\r\n ],\r\n lastName: [\r\n this._isServiceUser ? this._serviceUser.lastName : this._salesUser.lastName,\r\n Validators.compose([\r\n Validators.required,\r\n Validators.minLength(3),\r\n Validators.maxLength(50),\r\n ])\r\n ],\r\n status: [\r\n this._isServiceUser ? 0 : this._salesUser.status,\r\n Validators.compose([\r\n Validators.required\r\n ])\r\n ],\r\n });\r\n }\r\n}\r\n","export * from './success-operation-popup.component';\r\n","import { Component, OnInit, EventEmitter, Input } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'greensleeves-success-operation-popup',\r\n templateUrl: './success-operation-popup.component.html',\r\n styles: []\r\n})\r\nexport class SuccessOperationPopupComponent implements OnInit {\r\n @Input()\r\n primaryButtonText: string\r\n\r\n _isHidden = true;\r\n _infoText: string;\r\n\r\n public onPrimaryClicked = new EventEmitter();\r\n\r\n private entityId: number;\r\n\r\n constructor(\r\n ) { }\r\n\r\n ngOnInit() {\r\n }\r\n\r\n public show(infoText: string, entityId: number = null) {\r\n this._infoText = infoText;\r\n this.entityId = entityId;\r\n this._isHidden = false;\r\n }\r\n\r\n onClickCancel() {\r\n this._isHidden = true;\r\n }\r\n\r\n onClickPrimary() {\r\n this._isHidden = true;\r\n this.onPrimaryClicked.emit(this.entityId);\r\n }\r\n}\r\n","export * from './tutorial/tutorial.component';\r\nexport * from './tutorial-popup.component';","import { Component, OnInit } from '@angular/core';\r\nimport { Router } from '@angular/router';\r\n\r\nimport { RoleService } from '@services';\r\nimport { CommonFunctions, LocalStorageService, UserRoleEnum } from '../../../../common';\r\nimport { BACK_DOOR } from './../../../constants';\r\nimport { ProjectEnum, TutorialMenuEnum, TutorialParagraphEnum } from './../../../enums';\r\n\r\n@Component({\r\n selector: 'greensleeves-tutorial-popup',\r\n templateUrl: './tutorial-popup.component.html',\r\n styles: []\r\n})\r\nexport class TutorialPopupComponent implements OnInit {\r\n _isHidden = true;\r\n _paragraph: TutorialParagraphEnum[];\r\n menuNum: TutorialMenuEnum = TutorialMenuEnum.None;\r\n private role: UserRoleEnum;\r\n private projects: ProjectEnum\r\n constructor(\r\n private _router: Router,\r\n private _localStorageService: LocalStorageService,\r\n private _roleService: RoleService,\r\n ) { }\r\n\r\n ngOnInit() {\r\n const info = this._localStorageService.getLoginInfo();\r\n if (this._router.url.indexOf(BACK_DOOR) !== -1) {\r\n const backDorInfo = this._roleService.getBackDoorUserWithRole(this._router.url);\r\n this.role = backDorInfo.role\r\n this.projects = backDorInfo.projects;\r\n }\r\n else {\r\n this.role = info.role;\r\n this.projects = info.projects;\r\n }\r\n }\r\n\r\n showPopup(menuNum = TutorialMenuEnum.None, paragraph: number = 0) {\r\n this._isHidden = false;\r\n if (menuNum == TutorialMenuEnum.None) {\r\n this.menuNum = this.getDefauleSelectMenu();\r\n }\r\n else {\r\n this.menuNum = menuNum;\r\n }\r\n this._paragraph =[paragraph];\r\n }\r\n\r\n private getDefauleSelectMenu(): TutorialMenuEnum {\r\n let menu: TutorialMenuEnum = TutorialMenuEnum.UserManagement;\r\n switch (this.role) {\r\n case UserRoleEnum.CompanyAdmin:\r\n menu = TutorialMenuEnum.UserManagement;\r\n break;\r\n case UserRoleEnum.CompanyUser:\r\n if (CommonFunctions.containsProject(this.projects, ProjectEnum.Btx)) {\r\n menu = TutorialMenuEnum.BtxLiveData;\r\n } else if (CommonFunctions.containsProject(this.projects, ProjectEnum.Ktx)) {\r\n menu = TutorialMenuEnum.KtxCurrentData;\r\n } else if (CommonFunctions.containsProject(this.projects, ProjectEnum.Itx)) {\r\n menu = TutorialMenuEnum.ItxLiveData;\r\n }\r\n break;\r\n case UserRoleEnum.Vendor:\r\n menu = TutorialMenuEnum.ItxLiveData;\r\n break;\r\n }\r\n return menu;\r\n }\r\n}\r\n","import addNewCompanyAdminButton from '../../../../../../img/tutorial/add-new-company-admin-button.png';\r\nimport addNewCompanyAdminPopup from '../../../../../../img/tutorial/add-new-company-admin-popup.png';\r\nimport addNewCompanyUserButton from '../../../../../../img/tutorial/add-new-company-user-button.png';\r\nimport addNewCompanyUserPopup from '../../../../../../img/tutorial/add-new-company-user-popup.png';\r\nimport addNewVendorButton from '../../../../../../img/tutorial/add-new-Vendor-button.png';\r\nimport addNewVendorPopup from '../../../../../../img/tutorial/add-new-vendor-popup.png';\r\n\r\nimport btxHistoricalDateRangeSetup from '../../../../../../img/tutorial/btx-historical-date-range-setup.png';\r\nimport btxHistoricalEquipmentSetup from '../../../../../../img/tutorial/btx-historical-equipment-setup.png';\r\nimport btxHistoricalExportButton from '../../../../../../img/tutorial/btx-historical-export-button.png';\r\nimport btxHistoricalGenerateReportButton from '../../../../../../img/tutorial/btx-historical-generate-report-button.png';\r\nimport btxHistoricalPlot from '../../../../../../img/tutorial/btx-historical-plot.png';\r\nimport btxLiveDataEquipmentAlerts from '../../../../../../img/tutorial/btx-live-data-equipment-alerts.png';\r\nimport btxLiveDataEquipmentExportButton from '../../../../../../img/tutorial/btx-live-data-equipment-export-button.png';\r\nimport btxLiveDataEquipmentSensorsTable from '../../../../../../img/tutorial/btx-live-data-equipment-sensors-table.png';\r\nimport btxLiveDataEquipmentViewButton from '../../../../../../img/tutorial/btx-live-data-equipment-view-button.png';\r\nimport btxLiveDataEquipmentView from '../../../../../../img/tutorial/btx-live-data-equipment-view.png';\r\nimport btxLiveDataExportPopupEquipmentTree from '../../../../../../img/tutorial/btx-live-data-export-popup-equipments-tree.png';\r\nimport btxLiveDataFilter from '../../../../../../img/tutorial/btx-live-data-filter.png';\r\n\r\nimport btxLiveDataLocationsView from '../../../../../../img/tutorial/btx-live-data-locations-view.png';\r\nimport btxLiveDataSearchControl from '../../../../../../img/tutorial/btx-live-data-search-control.png';\r\nimport btxLiveDataSearchEnter from '../../../../../../img/tutorial/btx-live-data-search-enter.png';\r\nimport btxLiveDataEquipmentDropdown from '../../../../../../img/tutorial/btx-live-equipment-dropdown.png';\r\nimport btxLiveDataEquipmentSchema from '../../../../../../img/tutorial/btx-live-equipment-schema.png';\r\nimport btxNotificationActiveInfoPopup from '../../../../../../img/tutorial/btx-notification-active-alert-info-popup.png';\r\n\r\nimport btxNotificationActiveButton from '../../../../../../img/tutorial/btx-notification-active-button.png';\r\nimport btxNotificationActiveInfoButton from '../../../../../../img/tutorial/btx-notification-active-info-button.png';\r\nimport btxNotificationDateSetup from '../../../../../../img/tutorial/btx-notification-date-setup.png';\r\nimport btxNotificationExportAlertType from '../../../../../../img/tutorial/btx-notification-export-alert-type.png';\r\nimport btxNotificationExportButton from '../../../../../../img/tutorial/btx-notification-export-button.png';\r\nimport btxNotificationExportDate from '../../../../../../img/tutorial/btx-notification-export-date.png';\r\nimport btxNotificationExportEquipment from '../../../../../../img/tutorial/btx-notification-export-equipment.png';\r\nimport btxNotificationFilters from '../../../../../../img/tutorial/btx-notification-filters.png';\r\nimport btxNotificationHistoryAlerts from '../../../../../../img/tutorial/btx-notification-history-alerts.png';\r\nimport emailServiceAddButton from '../../../../../../img/tutorial/email-service-add-button.png';\r\nimport emailServiceAlertTypes from '../../../../../../img/tutorial/email-service-alert-types.png';\r\nimport emailServiceEnterEmails from '../../../../../../img/tutorial/email-service-enter-emails.png';\r\nimport emailServiceOverviewExpand from '../../../../../../img/tutorial/email-service-overview-expand.png';\r\n\r\nimport emailServiceOverview from '../../../../../../img/tutorial/email-service-overview.png';\r\nimport emailServiceSchedule from '../../../../../../img/tutorial/email-service-schedule.png';\r\n\r\nimport itxLiveDataExportButtonAdmin from '../../../../../../img/tutorial/itx-live-data-export-button-admin.png';\r\nimport itxLiveDataExportButtonUser from '../../../../../../img/tutorial/itx-live-data-export-button-user.png';\r\nimport itxLiveDataExportPopupAdmin from '../../../../../../img/tutorial/itx-live-data-export-popup-admin.png';\r\nimport itxLiveDataExportPopupUser from '../../../../../../img/tutorial/itx-live-data-export-popup-user.png';\r\nimport itxLiveDataFilterAdmin from '../../../../../../img/tutorial/itx-live-data-filter-admin.png';\r\nimport itxLiveDataFilterUser from '../../../../../../img/tutorial/itx-live-data-filter-user.png';\r\n\r\nimport itxLiveDataProfileButtonAdmin from '../../../../../../img/tutorial/itx-live-data-profile-button-admin.png';\r\nimport itxLiveDataProfileButtonUser from '../../../../../../img/tutorial/itx-live-data-profile-button-user.png';\r\nimport itxLiveDataProfilePopupAdmin from '../../../../../../img/tutorial/itx-live-data-profile-popup-admin.png';\r\nimport itxLiveDataProfilePopupUser from '../../../../../../img/tutorial/itx-live-data-profile-popup-user.png';\r\n\r\nimport itxLiveDataRadarButtonAdmin from '../../../../../../img/tutorial/itx-live-data-radar-button-admin.png';\r\nimport itxLiveDataRadarButtonUser from '../../../../../../img/tutorial/itx-live-data-radar-button-user.png';\r\nimport itxLiveDataRadarPopupAdmin from '../../../../../../img/tutorial/itx-live-data-radar-popup-admin.png';\r\nimport itxLiveDataRadarPopupUser from '../../../../../../img/tutorial/itx-live-data-radar-popup-user.png';\r\n\r\nimport itxLiveDataSearchAdmin from '../../../../../../img/tutorial/itx-live-data-search-admin.png';\r\nimport itxLiveDataSearchUser from '../../../../../../img/tutorial/itx-live-data-search-user.png';\r\nimport itxLiveDataSortAdmin from '../../../../../../img/tutorial/itx-live-data-sort-admin.png';\r\nimport itxLiveDataSortUser from '../../../../../../img/tutorial/itx-live-data-sort-user.png';\r\n\r\nimport itxLiveDataStorageEditButton from '../../../../../../img/tutorial/itx-live-data-storage-edit-button.png';\r\nimport itxLiveDataStorageEditPopup from '../../../../../../img/tutorial/itx-live-data-storage-edit-popup.png';\r\n\r\nimport itxLiveDataStorageViewAdmin from '../../../../../../img/tutorial/itx-live-data-storage-view-admin.png';\r\nimport itxLiveDataStorageViewUser from '../../../../../../img/tutorial/itx-live-data-storage-view-user.png';\r\n\r\nimport itxNotificationActiveAlertButton from '../../../../../../img/tutorial/itx-notification-active-alert-button.png';\r\nimport itxNotificationActiveInfoButton from '../../../../../../img/tutorial/itx-notification-active-info-button.png';\r\nimport itxNotificationActiveInfoRadar from '../../../../../../img/tutorial/itx-notification-active-info-radar.png';\r\nimport itxNotificationDateSetup from '../../../../../../img/tutorial/itx-notification-date-setup.png';\r\nimport itxNotificationExportAlertType from '../../../../../../img/tutorial/itx-notification-export-alert-type.png';\r\nimport itxNotificationExportBins from '../../../../../../img/tutorial/itx-notification-export-bins.png';\r\nimport itxNotificationExportButton from '../../../../../../img/tutorial/itx-notification-export-button.png';\r\nimport itxNotificationExportDate from '../../../../../../img/tutorial/itx-notification-export-date.png';\r\nimport itxNotificationFilters from '../../../../../../img/tutorial/itx-notification-filters.png';\r\nimport itxNotificationHistoricalAlertView from '../../../../../../img/tutorial/itx-notification-historical-alert-view.png';\r\n\r\nimport itxReportDateSetup from '../../../../../../img/tutorial/itx-report-date-setup.png';\r\n\r\nimport itxReportExportButton from '../../../../../../img/tutorial/itx-report-export-button.png';\r\nimport itxReportExportPopup from '../../../../../../img/tutorial/itx-report-export-popup.png';\r\nimport itxReportGenerateButton from '../../../../../../img/tutorial/itx-report-generate-button.png';\r\nimport itxReportLocationSetup from '../../../../../../img/tutorial/itx-report-location-setup.png';\r\nimport itxReportPlot from '../../../../../../img/tutorial/itx-report-plot.png';\r\nimport ktxCurrentDataBinDetailsBinDropdown from '../../../../../../img/tutorial/ktx-current-data-bin-details-bin-dropdown.png';\r\nimport ktxCurrentDataBinDetailsMeasure from '../../../../../../img/tutorial/ktx-current-data-bin-details-measure.png';\r\nimport ktxCurrentDataBinDetailsReadButton from '../../../../../../img/tutorial/ktx-current-data-bin-details-read-button.png';\r\nimport ktxCurrentDataBinDetailsTemperatureLegeng from '../../../../../../img/tutorial/ktx-current-data-bin-details-temperature-legend.png';\r\nimport ktxCurrentDataBinDetailsUnitButton from '../../../../../../img/tutorial/ktx-current-data-bin-details-unit-button.png';\r\nimport ktxCurrentDataBinExportButton from '../../../../../../img/tutorial/ktx-current-data-bin-export-button.png';\r\nimport ktxCurrentDataExportPopupBinTreeAdmin from '../../../../../../img/tutorial/ktx-current-data-export-popup-bin-tree-admin.png';\r\nimport ktxCurrentDataExportPopupBinTreeUser from '../../../../../../img/tutorial/ktx-current-data-export-popup-bin-tree-user.png';\r\nimport ktxCurrentDataExportPopupDownloadButtonAdmin\r\n from '../../../../../../img/tutorial/ktx-current-data-export-popup-download-button-admin.png';\r\nimport ktxCurrentDataExportPopupDownloadButtonUser\r\n from '../../../../../../img/tutorial/ktx-current-data-export-popup-download-button-user.png';\r\n\r\nimport ktxCurrentDataLocationDropdownAdmin from '../../../../../../img/tutorial/ktx-current-data-location-dropdown-admin.png';\r\nimport ktxCurrentDataLocationDropdownUser from '../../../../../../img/tutorial/ktx-current-data-location-dropdown-user.png';\r\nimport ktxCurrentDataLocationExportButtonAdmin from '../../../../../../img/tutorial/ktx-current-data-location-export-button-admin.png';\r\n\r\nimport ktxCurrentDataLocationExportButtonUser from '../../../../../../img/tutorial/ktx-current-data-location-export-button-user.png';\r\n\r\nimport ktxCurrentDataLocationSelectMenuAdmin from '../../../../../../img/tutorial/ktx-current-data-location-select-menu-admin.png';\r\nimport ktxCurrentDataLocationSelectMenuUser from '../../../../../../img/tutorial/ktx-current-data-location-select-menu-user.png';\r\n\r\nimport ktxCurrentDataLocationSelectSchemaAdmin from '../../../../../../img/tutorial/ktx-current-data-location-select-schema-admin.png';\r\nimport ktxCurrentDataLocationSelectSchemaUser from '../../../../../../img/tutorial/ktx-current-data-location-select-schema-user.png';\r\n\r\nimport ktxCurrentDataSceduleButton from '../../../../../../img/tutorial/ktx-current-data-scedule-button.png';\r\nimport ktxCurrentDataScedulePopup from '../../../../../../img/tutorial/ktx-current-data-scedule-popup.png';\r\n\r\nimport ktxCurrentDataTemperatureButton from '../../../../../../img/tutorial/ktx-current-data-temperature-button.png';\r\nimport ktxCurrentDataTemperaturePopup from '../../../../../../img/tutorial/ktx-current-data-temperature-popup.png';\r\n\r\nimport ktxCurrentDataViewAllCablesButtonAdmin from '../../../../../../img/tutorial/ktx-current-data-view-all-cables-button-admin.png';\r\nimport ktxCurrentDataViewAllCablesButtonUser from '../../../../../../img/tutorial/ktx-current-data-view-all-cables-button-user.png';\r\nimport ktxCurrentDataViewAllCablesPage from '../../../../../../img/tutorial/ktx-current-data-view-all-cables-page.png';\r\n\r\nimport ktxHistoricalDataDateDropdown from '../../../../../../img/tutorial/ktx-historical-data-date-dropdown.png';\r\nimport ktxHistoricalDataExportButton from '../../../../../../img/tutorial/ktx-historical-data-export-button.png';\r\nimport ktxHistoricalDataLocationTree from '../../../../../../img/tutorial/ktx-historical-data-location-tree.png';\r\nimport ktxHistoricalDataSpecificDateAndMeasuring from '../../../../../../img/tutorial/ktx-historical-data-specific-date-and-measuring.png';\r\n\r\nimport ktxNotificationActiveButton from '../../../../../../img/tutorial/ktx-notification-active-button.png';\r\nimport ktxNotificationActiveInfoBinDetails from '../../../../../../img/tutorial/ktx-notification-active-info-bin-details.png';\r\nimport ktxNotificationActiveInfoButton from '../../../../../../img/tutorial/ktx-notification-active-info-button.png';\r\nimport ktxNotificationDateSetup from '../../../../../../img/tutorial/ktx-notification-date-setup.png';\r\nimport ktxNotificationExportAlertType from '../../../../../../img/tutorial/ktx-notification-export-alert-type.png';\r\nimport ktxNotificationExportBins from '../../../../../../img/tutorial/ktx-notification-export-bins.png';\r\nimport ktxNotificationExportButton from '../../../../../../img/tutorial/ktx-notification-export-button.png';\r\nimport ktxNotificationExportDate from '../../../../../../img/tutorial/ktx-notification-export-date.png';\r\nimport ktxNotificationFilters from '../../../../../../img/tutorial/ktx-notification-filters.png';\r\nimport ktxNotificationHistoryAlerts from '../../../../../../img/tutorial/ktx-notification-history-alerts.png';\r\n\r\nimport locationManagement from '../../../../../../img/tutorial/location-management.png';\r\n\r\n\r\nexport const TutorialImages = {\r\n ADD_NEW_COMPANY_ADMIN_BUTTON: addNewCompanyAdminButton,\r\n ADD_NEW_COMPANY_ADMIN_POPUP: addNewCompanyAdminPopup,\r\n ADD_NEW_COMPANY_USER_BUTTON: addNewCompanyUserButton,\r\n ADD_NEW_COMPANY_USER_POPUP: addNewCompanyUserPopup,\r\n ADD_NEW_VENDOR_BUTTON: addNewVendorButton,\r\n ADD_NEW_VENDOR_POPUP: addNewVendorPopup,\r\n\r\n EMAIL_SERVICE_OVERVIEW: emailServiceOverview,\r\n EMAIL_SERVICE_OVERVIEW_EXPAND: emailServiceOverviewExpand,\r\n EMAIL_SERVICE_ADD_BUTTON: emailServiceAddButton,\r\n EMAIL_SERVICE_ENTER_EMAILS: emailServiceEnterEmails,\r\n EMAIL_SERVICE_ALERT_TYPES: emailServiceAlertTypes,\r\n EMAIL_SERVICE_SCHEDULE: emailServiceSchedule,\r\n\r\n LOCATION_MANAGEMENT: locationManagement,\r\n\r\n BTX_LIVE_DATA_LOCATIONS_VIEW: btxLiveDataLocationsView,\r\n BTX_LIVE_DATA_EQUIPMENT_VIEW: btxLiveDataEquipmentView,\r\n BTX_LIVE_DATA_EQUIPMENT_ALERTS: btxLiveDataEquipmentAlerts,\r\n BTX_LIVE_DATA_SEARCH_CONTROL: btxLiveDataSearchControl,\r\n BTX_LIVE_DATA_SEARCH_ENTER: btxLiveDataSearchEnter,\r\n BTX_LIVE_DATA_FILTER: btxLiveDataFilter,\r\n BTX_LIVE_DATA_EQUIPMENT_VIEW_BUTTON: btxLiveDataEquipmentViewButton,\r\n BTX_LIVE_DATA_EQUIPMENT_SENSORS_TABLE: btxLiveDataEquipmentSensorsTable,\r\n BTX_LIVE_DATA_EQUIPMENT_SCHEMA: btxLiveDataEquipmentSchema,\r\n BTX_LIVE_DATA_EQUIPMENT_DROPDOWN: btxLiveDataEquipmentDropdown,\r\n BTX_LIVE_DATA_EQUIPMENT_EXPORT_BUTTON: btxLiveDataEquipmentExportButton,\r\n BTX_LIVE_DATA_EXPORT_POPUP_EQUIPMENT_TREE: btxLiveDataExportPopupEquipmentTree,\r\n\r\n BTX_HISTORICAL_DATE_RANGE_SETUP: btxHistoricalDateRangeSetup,\r\n BTX_HISTORICAL_EQUIPMENT_SETUP: btxHistoricalEquipmentSetup,\r\n BTX_HISTORICAL_GENERATE_REPORT_BUTTON: btxHistoricalGenerateReportButton,\r\n BTX_HISTORICAL_PLOT: btxHistoricalPlot,\r\n BTX_HISTORICAL_EXPORT_BUTTON: btxHistoricalExportButton,\r\n\r\n BTX_NOTIFICATION_ACTIVE_BUTTON: btxNotificationActiveButton,\r\n BTX_NOTIFICATION_ACTIVE_INFO_BUTTON: btxNotificationActiveInfoButton,\r\n BTX_NOTIFICATION_ACTIVE_INFO_POPUP: btxNotificationActiveInfoPopup,\r\n BTX_NOTIFICATION_DATE_SETUP: btxNotificationDateSetup,\r\n BTX_NOTIFICATION_HISTORY_ALERTS: btxNotificationHistoryAlerts,\r\n BTX_NOTIFICATION_FILTERS: btxNotificationFilters,\r\n BTX_NOTIFICATION_EXPORT_BUTTON: btxNotificationExportButton,\r\n BTX_NOTIFICATION_EXPORT_DATE: btxNotificationExportDate,\r\n BTX_NOTIFICATION_EXPORT_ALERT_TYPE: btxNotificationExportAlertType,\r\n BTX_NOTIFICATION_EXPORT_EQUIPMENT: btxNotificationExportEquipment,\r\n\r\n KTX_CURRENT_DATA_LOCATION_DROPDOWN_ADMIN: ktxCurrentDataLocationDropdownAdmin,\r\n KTX_CURRENT_DATA_LOCATION_DROPDOWN_USER: ktxCurrentDataLocationDropdownUser,\r\n\r\n KTX_CURRENT_DATA_VIEW_ALL_CABLES_BUTTON_ADMIN: ktxCurrentDataViewAllCablesButtonAdmin,\r\n KTX_CURRENT_DATA_VIEW_ALL_CABLES_BUTTON_USER: ktxCurrentDataViewAllCablesButtonUser,\r\n KTX_CURRENT_DATA_VIEW_ALL_CABLES_PAGE:ktxCurrentDataViewAllCablesPage,\r\n\r\n KTX_CURRENT_DATA_LOCATION_SELECT_SCHEMA_ADMIN: ktxCurrentDataLocationSelectSchemaAdmin,\r\n KTX_CURRENT_DATA_LOCATION_SELECT_SCHEMA_USER: ktxCurrentDataLocationSelectSchemaUser,\r\n KTX_CURRENT_DATA_LOCATION_SELECT_MENU_ADMIN: ktxCurrentDataLocationSelectMenuAdmin,\r\n KTX_CURRENT_DATA_LOCATION_SELECT_MENU_USER: ktxCurrentDataLocationSelectMenuUser,\r\n KTX_CURRENT_DATA_BIN_DETAILS_MEASURE: ktxCurrentDataBinDetailsMeasure,\r\n KTX_CURRENT_DATA_BIN_DETAILS_UNIT_BUTTON: ktxCurrentDataBinDetailsUnitButton,\r\n KTX_CURRENT_DATA_BIN_DETAILS_READ_BUTTON: ktxCurrentDataBinDetailsReadButton,\r\n KTX_CURRENT_DATA_BIN_DETAILS_BIN_DROPDOWN: ktxCurrentDataBinDetailsBinDropdown,\r\n KTX_CURRENT_DATA_BIN_DETAILS_TEMPERATURE_LEGEND: ktxCurrentDataBinDetailsTemperatureLegeng,\r\n\r\n KTX_CURRENT_DATA_SCEDULE_BUTTON: ktxCurrentDataSceduleButton,\r\n KTX_CURRENT_DATA_SCEDULE_POPUP: ktxCurrentDataScedulePopup,\r\n\r\n KTX_CURRENT_DATA_TEMPERATURE_BUTTON: ktxCurrentDataTemperatureButton,\r\n KTX_CURRENT_DATA_TEMPERATURE_POPUP: ktxCurrentDataTemperaturePopup,\r\n\r\n KTX_CURRENT_DATA_LOCATION_EXPORT_BUTTON_ADMIN: ktxCurrentDataLocationExportButtonAdmin,\r\n KTX_CURRENT_DATA_LOCATION_EXPORT_BUTTON_USER: ktxCurrentDataLocationExportButtonUser,\r\n KTX_CURRENT_DATA_BIN_EXPORT_BUTTON: ktxCurrentDataBinExportButton,\r\n KTX_CURRENT_DATA_EXPORT_POPUP_BIN_TREE_ADMIN: ktxCurrentDataExportPopupBinTreeAdmin,\r\n KTX_CURRENT_DATA_EXPORT_POPUP_BIN_TREE_USER: ktxCurrentDataExportPopupBinTreeUser,\r\n KTX_CURRENT_DATA_EXPORT_POPUP_DOWNLOAD_BUTTON_ADMIN: ktxCurrentDataExportPopupDownloadButtonAdmin,\r\n KTX_CURRENT_DATA_EXPORT_POPUP_DOWNLOAD_BUTTON_USER: ktxCurrentDataExportPopupDownloadButtonUser,\r\n\r\n KTX_HISTORICAL_DATA_LOCATION_TREE:ktxHistoricalDataLocationTree,\r\n KTX_HISTORICAL_DATA_DATE_DROPDOWN: ktxHistoricalDataDateDropdown,\r\n KTX_HISTORICAL_DATA_SPECIFIC_DATE_AND_MEASURING: ktxHistoricalDataSpecificDateAndMeasuring,\r\n KTX_HISTORICAL_DATA_EXPORT_BUTTON: ktxHistoricalDataExportButton,\r\n\r\n KTX_NOTIFICATION_ACTIVE_BUTTON: ktxNotificationActiveButton,\r\n KTX_NOTIFICATION_ACTIVE_INFO_BUTTON: ktxNotificationActiveInfoButton,\r\n KTX_NOTIFICATION_ACTIVE_INFO_BIN_DETAILS: ktxNotificationActiveInfoBinDetails,\r\n KTX_NOTIFICATION_DATE_SETUP: ktxNotificationDateSetup,\r\n KTX_NOTIFICATION_HISTORY_ALERTS: ktxNotificationHistoryAlerts,\r\n KTX_NOTIFICATION_FILTERS: ktxNotificationFilters,\r\n KTX_NOTIFICATION_EXPORT_BUTTON: ktxNotificationExportButton,\r\n KTX_NOTIFICATION_EXPORT_DATE: ktxNotificationExportDate,\r\n KTX_NOTIFICATION_EXPORT_ALERT_TYPE: ktxNotificationExportAlertType,\r\n KTX_NOTIFICATION_EXPORT_BINS: ktxNotificationExportBins,\r\n\r\n ITX_LIVE_DATA_STORAGE_VIEW_ADMIN: itxLiveDataStorageViewAdmin,\r\n ITX_LIVE_DATA_STORAGE_VIEW_USER: itxLiveDataStorageViewUser,\r\n\r\n ITX_LIVE_DATA_PROFILE_BUTTON_ADMIN: itxLiveDataProfileButtonAdmin,\r\n ITX_LIVE_DATA_PROFILE_POPUP_ADMIN: itxLiveDataProfilePopupAdmin,\r\n ITX_LIVE_DATA_PROFILE_BUTTON_USER: itxLiveDataProfileButtonUser,\r\n ITX_LIVE_DATA_PROFILE_POPUP_USER: itxLiveDataProfilePopupUser,\r\n\r\n ITX_LIVE_DATA_STORAGE_EDIT_BUTTON: itxLiveDataStorageEditButton,\r\n ITX_LIVE_DATA_STORAGE_EDIT_POPUP: itxLiveDataStorageEditPopup,\r\n\r\n ITX_LIVE_DATA_RADAR_BUTTON_ADMIN: itxLiveDataRadarButtonAdmin,\r\n ITX_LIVE_DATA_RADAR_BUTTON_USER: itxLiveDataRadarButtonUser,\r\n ITX_LIVE_DATA_RADAR_POPUP_ADMIN: itxLiveDataRadarPopupAdmin,\r\n ITX_LIVE_DATA_RADAR_POPUP_USER: itxLiveDataRadarPopupUser,\r\n\r\n ITX_LIVE_DATA_SEARCH_ADMIN: itxLiveDataSearchAdmin,\r\n ITX_LIVE_DATA_SEARCH_USER: itxLiveDataSearchUser,\r\n ITX_LIVE_DATA_FILTER_ADMIN: itxLiveDataFilterAdmin,\r\n ITX_LIVE_DATA_FILTER_USER: itxLiveDataFilterUser,\r\n ITX_LIVE_DATA_SORT_ADMIN: itxLiveDataSortAdmin,\r\n ITX_LIVE_DATA_SORT_USER: itxLiveDataSortUser,\r\n\r\n ITX_LIVE_DATA_EXPORT_BUTTON_ADMIN: itxLiveDataExportButtonAdmin,\r\n ITX_LIVE_DATA_EXPORT_BUTTON_USER: itxLiveDataExportButtonUser,\r\n ITX_LIVE_DATA_EXPORT_POPUP_ADMIN: itxLiveDataExportPopupAdmin,\r\n ITX_LIVE_DATA_EXPORT_POPUP_USER: itxLiveDataExportPopupUser,\r\n\r\n ITX_NOTIFICATION_ACTIVE_ALERT_BUTTON: itxNotificationActiveAlertButton,\r\n ITX_NOTIFICATION_ACTIVE_INFO_BUTTON: itxNotificationActiveInfoButton,\r\n ITX_NOTIFICATION_ACTIVE_INFO_RADAR: itxNotificationActiveInfoRadar,\r\n ITX_NOTIFICATION_DATE_SETUP: itxNotificationDateSetup,\r\n ITX_NOTIFICATION_HISTORICAL_ALERT_VIEW: itxNotificationHistoricalAlertView,\r\n ITX_NOTIFICATION_FILTERS: itxNotificationFilters,\r\n ITX_NOTIFICATION_EXPORT_BUTTON: itxNotificationExportButton,\r\n ITX_NOTIFICATION_EXPORT_DATE: itxNotificationExportDate,\r\n ITX_NOTIFICATION_EXPORT_ALERT_TYPE: itxNotificationExportAlertType,\r\n ITX_NOTIFICATION_EXPORT_BINS: itxNotificationExportBins,\r\n\r\n ITX_REPORT_DATE_SETUP: itxReportDateSetup,\r\n ITX_REPORT_LOCATION_SETUP: itxReportLocationSetup,\r\n ITX_REPORT_GENERATE_BUTTON: itxReportGenerateButton,\r\n ITX_REPORT_PLOT: itxReportPlot,\r\n\r\n ITX_REPORT_EXPORT_BUTTON: itxReportExportButton,\r\n ITX_REPORT_EXPORT_POPUP: itxReportExportPopup,\r\n\r\n\r\n}\r\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\r\nimport { Router } from '@angular/router';\r\n\r\nimport { BACK_DOOR, UsersTutorialMenu } from '../../../../constants';\r\nimport { CommonFunctions, LocalStorageService, UserRoleEnum } from './../../../../../common';\r\nimport { RoleService } from './../../../../services';\r\nimport { ProjectEnum, TutorialMenuEnum, TutorialParagraphEnum } from '../../../../enums';\r\n\r\nimport { TutorialImages } from './tutorial-img-constants';\r\n\r\n@Component({\r\n selector: 'greensleeves-tutorial',\r\n templateUrl: './tutorial.component.html',\r\n styles: []\r\n})\r\nexport class TutorialComponent implements OnInit {\r\n @Input() _paragraph: TutorialParagraphEnum[];\r\n @Input() menuNum: TutorialMenuEnum;\r\n @Output() menuNumChange = new EventEmitter();\r\n\r\n _menuItems: { label: string, value: TutorialMenuEnum }[];\r\n _userRoles = UserRoleEnum;\r\n _tutorialMenu = TutorialMenuEnum;\r\n _tutorialParagraph = TutorialParagraphEnum;\r\n _project = ProjectEnum;\r\n _images = TutorialImages;\r\n\r\n private role: UserRoleEnum;\r\n private projects: number;\r\n\r\n public get _isCompanyAdmin(): boolean {\r\n return this.role == UserRoleEnum.CompanyAdmin;\r\n }\r\n\r\n\r\n\r\n constructor(\r\n private _router: Router,\r\n private _localStorageService: LocalStorageService,\r\n private _roleService: RoleService,\r\n ) { }\r\n\r\n ngOnInit() {\r\n const info = this._localStorageService.getLoginInfo();\r\n if (this._router.url.indexOf(BACK_DOOR) !== -1) {\r\n const backDorInfo = this._roleService.getBackDoorUserWithRole(this._router.url);\r\n this.role = backDorInfo.role\r\n this.projects = backDorInfo.projects;\r\n }\r\n else {\r\n this.role = info.role;\r\n this.projects = info.projects;\r\n }\r\n this._menuItems = [];\r\n if (this.role != UserRoleEnum.ServiceUser && this.role != UserRoleEnum.Vendor) {\r\n\r\n if (this.role == UserRoleEnum.CompanyAdmin) {\r\n this._menuItems.push(...this.getProjectMeny(ProjectEnum.None));\r\n }\r\n\r\n if (CommonFunctions.containsProject(this.projects, ProjectEnum.Btx)) {\r\n this._menuItems.push(...this.getProjectMeny(ProjectEnum.Btx));\r\n }\r\n\r\n if (CommonFunctions.containsProject(this.projects, ProjectEnum.Ktx)) {\r\n this._menuItems.push(...this.getProjectMeny(ProjectEnum.Ktx));\r\n }\r\n\r\n if (CommonFunctions.containsProject(this.projects, ProjectEnum.Itx)) {\r\n this._menuItems.push(...this.getProjectMeny(ProjectEnum.Itx));\r\n }\r\n }\r\n }\r\n\r\n onSelectMenu(value: TutorialMenuEnum) {\r\n this.menuNum = value;\r\n this.menuNumChange.emit(value);\r\n }\r\n\r\n checkProject(project: ProjectEnum): boolean {\r\n return CommonFunctions.containsProject(this.projects, project);\r\n }\r\n\r\n private getProjectMeny(project: ProjectEnum): { label: string, value: number }[] {\r\n let menuArr: { label: string, value: number }[] = [];\r\n const menu = UsersTutorialMenu[this.role][project]\r\n for (let key in menu) {\r\n if (menu.hasOwnProperty(key)) {\r\n menuArr.push({ label: menu[key], value: Number(key) });\r\n }\r\n }\r\n return menuArr;\r\n }\r\n\r\n getIndex(paragraph: TutorialParagraphEnum): number {\r\n return Number(paragraph);\r\n }\r\n\r\n getActiveIndex(paragraph: TutorialParagraphEnum): number[] {\r\n return [Number(paragraph)];\r\n }\r\n}\r\n\r\n\r\n\r\n","export * from './update-firmware-popup.component';","import { Component, OnDestroy, OnInit } from '@angular/core';\r\nimport { CancelUpdateFirmwarePostModel, LocationUpdaterViewModel, ProjectFirmwareUpdateViewModel, UpdateFirmwarePostModel, UpdateFirmwareResultModel, UpdateFirmwaresDevicePostModel, UpdateFirmwaresPostModel } from '@models';\r\nimport { UpdaterDeviceDatasourceService } from '@services';\r\nimport { MessageService } from 'primeng/api';\r\nimport { Subscription } from 'rxjs';\r\n\r\nimport { ErrorModel } from '../../../../common';\r\nimport { FirmwareFileFolder } from '../../../constants';\r\nimport { ColumnTypeEnum, ProjectEnum, UpdateProjectStateEnum } from '../../../enums';\r\nimport { BasePopupBehavior } from '../common';\r\n\r\n@Component({\r\n selector: 'greensleeves-update-firmware-popup',\r\n templateUrl: './update-firmware-popup.component.html',\r\n styles: [],\r\n providers: [MessageService]\r\n})\r\nexport class UpdateFirmwarePopupComponent extends BasePopupBehavior implements OnInit, OnDestroy {\r\n static CREATING_DATE_KEY = 'locationName';\r\n static SORT_ORDER_DEFAULT = 1;\r\n\r\n _sortOrder = UpdateFirmwarePopupComponent.SORT_ORDER_DEFAULT;\r\n _sortField = UpdateFirmwarePopupComponent.CREATING_DATE_KEY;\r\n\r\n _isHidden = true;\r\n _loading = false;\r\n _selectedProject: ProjectEnum = null;\r\n _dropdownOptions: { label: string, value: ProjectEnum }[] = [\r\n { label: 'Btx', value: ProjectEnum.Btx },\r\n { label: 'Ktx', value: ProjectEnum.Ktx },\r\n { label: 'Itx', value: ProjectEnum.Itx }];\r\n _dropdownFirmwareOptions: { label: string, value: string }[];\r\n _selectFirmware: string = null;\r\n _gridData: ProjectFirmwareUpdateViewModel[] = [];\r\n _columnTypeEnum = ColumnTypeEnum;\r\n _selectedUpdaters: ProjectFirmwareUpdateViewModel[] = [];\r\n _uppateState = UpdateProjectStateEnum;\r\n _columnsView = [\r\n { header: 'Selected', columnType: ColumnTypeEnum.QuoteSelected, dataField: 'isSelected', width: 100 },\r\n { header: 'Location name', columnType: ColumnTypeEnum.LocationName, dataField: 'locationName', width: 200 },\r\n { header: 'Version', columnType: ColumnTypeEnum.CurrentVersion, dataField: 'currentVersion', width: 100 },\r\n { header: 'Last Updated', columnType: ColumnTypeEnum.Date, dataField: 'lastUpdated', width: 150 },\r\n { header: '', columnType: ColumnTypeEnum.DownloadConnectionFile, width: 122 },\r\n { header: '', columnType: ColumnTypeEnum.Status, width: 40 },\r\n ];\r\n\r\n private subscriptions: Subscription[] = [];\r\n private locations: LocationUpdaterViewModel[] = [];\r\n constructor(\r\n private _updaterDeviceDatasourceService: UpdaterDeviceDatasourceService,\r\n private _messageService: MessageService\r\n ) { super(); }\r\n\r\n ngOnInit() {\r\n this._selectedProject = this._dropdownOptions[0].value;\r\n let fileSub = this._updaterDeviceDatasourceService.firmwares$.subscribe(items => {\r\n this._dropdownFirmwareOptions = [];\r\n if (items) {\r\n let data = items.sort((n1, n2) => {\r\n if (n1.lastModified > n2.lastModified) {\r\n return 1;\r\n }\r\n\r\n if (n1.lastModified < n2.lastModified) {\r\n return -1;\r\n }\r\n\r\n return 0;\r\n });\r\n if (data.length > 0) {\r\n data.forEach(x => {\r\n this._dropdownFirmwareOptions.push({ label: x.name, value: x.name });\r\n });\r\n }\r\n else{\r\n this._dropdownFirmwareOptions.push({ label: 'There are no firmwares', value: null });\r\n }\r\n }\r\n });\r\n\r\n let locationSub = this._updaterDeviceDatasourceService.locationsUpdaters$.subscribe(item => {\r\n this.locations = item;\r\n this.fillGridData();\r\n });\r\n this.subscriptions.push(fileSub);\r\n this.subscriptions.push(locationSub);\r\n }\r\n\r\n show() {\r\n this._selectedProject = this._dropdownOptions[0].value;\r\n this._isHidden = false;\r\n this._loading = true;\r\n this._updaterDeviceDatasourceService.getBlobFirmwareFiles(FirmwareFileFolder[this._selectedProject]);\r\n this.fillGridData();\r\n }\r\n\r\n async onClose() {\r\n this._isHidden = true;\r\n this._selectedProject = null;\r\n this._loading = false;\r\n this._selectFirmware = null;\r\n this._selectedUpdaters = [];\r\n }\r\n\r\n onProjectChange() {\r\n this._loading = true;\r\n this._selectFirmware = null;\r\n this._selectedUpdaters = [];\r\n this._dropdownFirmwareOptions = [];\r\n this._updaterDeviceDatasourceService.getBlobFirmwareFiles(FirmwareFileFolder[this._selectedProject]);\r\n this.fillGridData();\r\n }\r\n\r\n async onBulkUpdateDevicesFirmware() {\r\n this._selectedUpdaters.forEach(x => {\r\n x.state = this._uppateState.Updating;\r\n x.sendCommand = true;\r\n });\r\n const request = {\r\n project: this._selectedProject,\r\n fileName: this._selectFirmware,\r\n fileFolder: FirmwareFileFolder[this._selectedProject],\r\n devices: this._selectedUpdaters.map(x => {\r\n return { locationId: x.locationId, updaterDeviceId: x.updaterDeviceId, projectDeviceId: x.projectDeviceId };\r\n }) as UpdateFirmwaresDevicePostModel[],\r\n } as UpdateFirmwaresPostModel;\r\n\r\n const result = await this._updaterDeviceDatasourceService.updateDeviceFirmwares(request);\r\n this.UpdateErrors(result);\r\n }\r\n\r\n async onUpdateDeviceFirmware(updater: ProjectFirmwareUpdateViewModel) {\r\n updater.sendCommand = true;\r\n if (updater.state != this._uppateState.Updating && updater.state != this._uppateState.Starting) {\r\n updater.state = this._uppateState.Updating;\r\n const updateFirmwarePostModel = {\r\n project: this._selectedProject,\r\n fileName: this._selectFirmware,\r\n fileFolder: FirmwareFileFolder[this._selectedProject],\r\n updaterDeviceId: updater.updaterDeviceId,\r\n locationId: updater.locationId,\r\n projectDeviceId: updater.projectDeviceId,\r\n } as UpdateFirmwarePostModel;\r\n const result = await this._updaterDeviceDatasourceService.updateDeviceFirmware(updateFirmwarePostModel);\r\n this.UpdateError(result, updater);\r\n }\r\n else {\r\n const cancelUpdate = {\r\n locationId: updater.locationId,\r\n projectDeviceId: updater.projectDeviceId,\r\n updaterDeviceId: updater.updaterDeviceId,\r\n } as CancelUpdateFirmwarePostModel;\r\n const result = await this._updaterDeviceDatasourceService.cancelUpdateDeviceFirmware(cancelUpdate);\r\n this.UpdateError(result, updater);\r\n }\r\n }\r\n\r\n onSelectUpdater(updater: ProjectFirmwareUpdateViewModel) {\r\n if (this._selectedUpdaters.find(x => x.locationId == updater.locationId)) {\r\n this._selectedUpdaters = this._selectedUpdaters.filter(x => x.locationId != updater.locationId);\r\n }\r\n else {\r\n this._selectedUpdaters.push(updater);\r\n }\r\n }\r\n\r\n ngOnDestroy() {\r\n this.subscriptions && this.subscriptions.forEach(x => x.unsubscribe());\r\n }\r\n\r\n isUpdatingState(data: ProjectFirmwareUpdateViewModel): boolean {\r\n return data.state == this._uppateState.Updating || data.state == this._uppateState.Starting;\r\n }\r\n\r\n private fillGridData() {\r\n this._gridData = [];\r\n this.locations.forEach(x => {\r\n let updater = x.updaterDevices.find(u => u.isInitialized && (u.projectsAvailable & this._selectedProject) === this._selectedProject);\r\n if (updater) {\r\n let data = new ProjectFirmwareUpdateViewModel();\r\n data.locationId = x.id;\r\n data.locationName = x.name;\r\n data.project = ProjectEnum[this._selectedProject];\r\n data.updaterDeviceId = updater.id;\r\n let projectDevice = updater.projectDevices.find(d => d.project == this._selectedProject);\r\n data.currentVersion = projectDevice.currentVersion;\r\n data.lastUpdated = projectDevice.lastUpdate == null ? null : projectDevice.lastUpdate * 1000;\r\n data.state = projectDevice.state;\r\n data.errorMessage = projectDevice.errorMessage;\r\n data.projectDeviceId = projectDevice.deviceId;\r\n this._gridData.push(data);\r\n }\r\n })\r\n this._loading = false;\r\n }\r\n\r\n private UpdateErrors(result) {\r\n if (result instanceof ErrorModel) {\r\n this._messageService.add({ severity: 'error', summary: 'Error!', detail: result.message });\r\n }\r\n (result as UpdateFirmwareResultModel[]).forEach(item => {\r\n if (!item.payLoadSuccess) {\r\n var selectLocation = this._selectedUpdaters.find(x => x.locationId = item.locationId);\r\n this.UpdateError(item, selectLocation);\r\n }\r\n });\r\n this._gridData.forEach(x => x.isSelected = false);\r\n this._selectedUpdaters = [];\r\n }\r\n\r\n private UpdateError(result, updater: ProjectFirmwareUpdateViewModel) {\r\n if (result instanceof ErrorModel) {\r\n this._messageService.add({ severity: 'error', summary: 'Error!', detail: result.message });\r\n updater.state = this._uppateState.Failed;\r\n }\r\n if (!result.payLoadSuccess) {\r\n let location = this._updaterDeviceDatasourceService.locationsUpdaters$.getValue().find(x => x.id == updater.locationId);\r\n this._messageService.add({ severity: 'error', summary: `${location.name} Firmware update error:`, detail: `${result.payLoadMessage}`, life: 10000 });\r\n }\r\n }\r\n}\r\n","export * from './update-versions-management-popup.component';","import { Component, OnInit } from '@angular/core';\r\nimport { UpdaterDeviceDatasourceService } from '@services';\r\nimport { BasePopupBehavior } from '../common';\r\nimport { ColumnTypeEnum } from 'src/app/main/enums';\r\nimport { VersionHistoryResponseModel } from '@models';\r\n\r\n@Component({\r\n selector: 'greensleeves-update-versions-management-popup',\r\n templateUrl: './update-versions-management-popup.component.html',\r\n styleUrls: []\r\n})\r\nexport class UpdateVersionsManagementPopupComponent extends BasePopupBehavior implements OnInit{\r\n _isHidden = true;\r\n _loading = true;\r\n _deviceId: string;\r\n _locationId: number;\r\n _locationName: string;\r\n _projectName: string;\r\n\r\n _columnTypeEnum = ColumnTypeEnum;\r\n _gridData: VersionHistoryResponseModel[];\r\n\r\n _columnsView = [\r\n { header: 'Update date', columnType: ColumnTypeEnum.Date, dataField: 'realUpdateTime', width: 200 },\r\n { header: 'Current version', columnType: ColumnTypeEnum.FileName, dataField: 'currentVersion', width: 150 },\r\n { header: 'Target version', columnType: ColumnTypeEnum.FileName, dataField: 'targetVersion', width: 150 },\r\n { header: 'Status', columnType: ColumnTypeEnum.Status, dataField: 'status', width: 120 },\r\n { header: 'Message', columnType: ColumnTypeEnum.Data, dataField: 'lastErrorMessage', width: 420 },\r\n ];\r\n\r\n constructor(\r\n private _updaterDeviceDatasourceService: UpdaterDeviceDatasourceService,\r\n ) {\r\n super();\r\n }\r\n\r\n ngOnInit() {\r\n }\r\n\r\n async onShow(deviceId: string, locationId: number, locationName: string, projectName: string){\r\n this._loading = true;\r\n this._isHidden = false;\r\n\r\n this._locationName = locationName;\r\n this._projectName = projectName;\r\n\r\n this._deviceId = deviceId;\r\n this._locationId = locationId;\r\n this._gridData = await this._updaterDeviceDatasourceService.getUpdateHistoryVersions(this._deviceId, this._locationId.toString()) as VersionHistoryResponseModel[];\r\n this._loading = false;\r\n }\r\n\r\n onCancel(){\r\n this._isHidden = true;\r\n this._loading = false;\r\n this._gridData = [];\r\n }\r\n}\r\n","export * from './updater-add-edit-popup.component';","import { Component, EventEmitter, OnInit, Output } from '@angular/core';\r\nimport { FormBuilder, FormGroup, Validators } from '@angular/forms';\r\nimport { LocationUpdaterViewModel, UpdateDeviceViewModel } from '@models';\r\nimport { UpdaterDeviceDatasourceService } from '@services';\r\nimport { ProjectEnum } from 'src/app/main/enums';\r\n\r\nimport { BasePopupBehavior } from '../common';\r\n\r\n@Component({\r\n selector: 'greensleeves-updater-add-edit-popup',\r\n templateUrl: './updater-add-edit-popup.component.html',\r\n styleUrls: []\r\n})\r\nexport class UpdaterAddEditPopupComponent extends BasePopupBehavior implements OnInit {\r\n @Output() onEdetUpdater = new EventEmitter();\r\n _updater: UpdateDeviceViewModel;\r\n _location: LocationUpdaterViewModel;\r\n _updaterForm: FormGroup;\r\n _submitted = false;\r\n _hasSubmittionErrors = false;\r\n _isHidden = true;\r\n _isAddPopup = true;\r\n _projects: { label: string, value: number }[];\r\n _selectedProjects: number[];\r\n\r\n constructor(\r\n private _formBuilder: FormBuilder,\r\n private _updaterDeviceDatasourceService: UpdaterDeviceDatasourceService,\r\n ) {\r\n super();\r\n }\r\n\r\n ngOnInit() {\r\n this._updater = new UpdateDeviceViewModel();\r\n this._location = new LocationUpdaterViewModel();\r\n }\r\n\r\n public showEdit(updater: UpdateDeviceViewModel, location: LocationUpdaterViewModel) {\r\n this._isHidden = false;\r\n this._submitted = false;\r\n this._isAddPopup = false;\r\n this._updater = updater;\r\n this._location = location;\r\n\r\n this._projects = this.selectAvailableProjects();\r\n\r\n this._selectedProjects = [];\r\n\r\n for (const value in ProjectEnum) {\r\n if (typeof ProjectEnum[value as keyof typeof ProjectEnum] === 'number') {\r\n const enumValue = ProjectEnum[value as keyof typeof ProjectEnum];\r\n const valueToCheck = updater.projectsAvailable & enumValue;\r\n if (valueToCheck !== 0 && enumValue !== 127) {\r\n this._selectedProjects.push(enumValue);\r\n }\r\n }\r\n }\r\n\r\n this._selectedProjects.forEach(p => this._projects.push({ label: ProjectEnum[p], value: p }));\r\n\r\n this.initForm();\r\n }\r\n\r\n public showAdd(location: LocationUpdaterViewModel) {\r\n this._isHidden = false;\r\n this._submitted = false;\r\n this._isAddPopup = true;\r\n this._location = location;\r\n\r\n this._projects = this.selectAvailableProjects();\r\n\r\n this.initForm();\r\n }\r\n\r\n async onSubmit() {\r\n this._submitted = true;\r\n\r\n if (this._updaterForm.invalid) {\r\n this._submitted = false;\r\n this._hasSubmittionErrors = true;\r\n return;\r\n }\r\n\r\n const value = {\r\n locationId: this._location.id,\r\n projectsAvailable: this._selectedProjects.reduce((accum, current) => accum + current, 0)\r\n };\r\n\r\n this._isAddPopup\r\n ? await this._updaterDeviceDatasourceService.add(value)\r\n : await this._updaterDeviceDatasourceService.edit(this._updater.id, { projectsAvailable: value.projectsAvailable });\r\n\r\n this._isHidden = true;\r\n this._submitted = false;\r\n this._hasSubmittionErrors = false;\r\n if (!this._isAddPopup) {\r\n this.onEdetUpdater.emit(this._updater);\r\n }\r\n this._updaterForm.reset();\r\n }\r\n\r\n async onClose() {\r\n this._submitted = false;\r\n this._isHidden = true;\r\n this._isAddPopup = true;\r\n this._location = new LocationUpdaterViewModel();\r\n this._updaterForm.reset();\r\n }\r\n\r\n private initForm() {\r\n this._updaterForm = this._formBuilder.group({\r\n projects: [this._selectedProjects, Validators.compose([\r\n Validators.required,\r\n ])],\r\n })\r\n }\r\n\r\n private selectAvailableProjects(): { label: string, value: number }[] {\r\n this._projects = this._location.locationDevices.map((d) => ({ label: ProjectEnum[d.project], value: d.project }));\r\n\r\n let projectsWithUpdaters = new Set();\r\n this._location.updaterDevices.forEach(u => {\r\n u.projectDevices.forEach(p => {\r\n projectsWithUpdaters.add(p.project);\r\n })\r\n });\r\n\r\n return this._projects = this._projects.filter(p => !projectsWithUpdaters.has(p.value));\r\n }\r\n}\r\n","export * from './updater-delete-popup.component';","import { Component, EventEmitter, OnInit, Output } from '@angular/core';\r\nimport { UpdaterDeviceDatasourceService } from '@services';\r\nimport { ErrorModel } from 'src/app/common';\r\n\r\n@Component({\r\n selector: 'greensleeves-updater-delete-popup',\r\n templateUrl: './updater-delete-popup.component.html',\r\n styleUrls: []\r\n})\r\nexport class UpdaterDeletePopupComponent implements OnInit {\r\n @Output() onDeleteUpdater = new EventEmitter();\r\n _isHidden = true;\r\n _isSubmitted = false;\r\n\r\n _updaterId: string;\r\n _locationId: number;\r\n _error: string;\r\n\r\n\r\n constructor(\r\n private _updaterDeviceDatasourceService: UpdaterDeviceDatasourceService\r\n ) { }\r\n\r\n ngOnInit() {\r\n }\r\n\r\n public show(updaterId: string, locationId: number){\r\n this._updaterId = updaterId;\r\n this._locationId = locationId;\r\n this._isHidden = false;\r\n }\r\n\r\n async onSubmit(){\r\n if (this._updaterId && this._locationId && !this._isSubmitted){\r\n this._isSubmitted = true;\r\n const result = await this._updaterDeviceDatasourceService.delete(this._updaterId, this._locationId);\r\n\r\n this._isSubmitted = false;\r\n if (result === true){\r\n this.onDeleteUpdater.emit(this._locationId);\r\n this.onClickCancel();\r\n } else if (result === false) {\r\n this._error = 'Unknown error occured';\r\n } else {\r\n const errorModel = result as ErrorModel;\r\n if (errorModel) {\r\n this._error = errorModel.message;\r\n }\r\n }\r\n }\r\n }\r\n\r\n onClickCancel(){\r\n this._isHidden = true;\r\n this._error = null;\r\n this._updaterId = null;\r\n }\r\n}\r\n","export * from './upload-btx-location-configuration-file-popup.component';","import { Component, ViewChildren, ElementRef, QueryList, OnInit, OnDestroy, ChangeDetectorRef, EventEmitter, AfterViewChecked, Output, ViewChild } from '@angular/core';\r\nimport { Subscription } from 'rxjs';\r\nimport { FormGroup, FormBuilder } from '@angular/forms';\r\n\r\nimport { LocationsBtxDataSourceService } from '../../../services';\r\nimport { ErrorModel, ErrorCodeEnum } from '../../../../common';\r\nimport { BasePopupBehavior } from '../common';\r\nimport { UploadEquipmentPopupComponent } from '../upload-equipment-popup';\r\nimport { BTXLocationConfiguration, LocationBtxViewModel } from '@models';\r\n\r\n@Component({\r\n selector: 'greensleeves-upload-btx-location-configuration-file-popup',\r\n templateUrl: './upload-btx-location-configuration-file-popup.component.html',\r\n styles: []\r\n})\r\nexport class UploadBtxLocationConfigurationFilePopupComponent extends BasePopupBehavior implements OnInit, OnDestroy, AfterViewChecked {\r\n public onUploadSuccess = new EventEmitter<[string, number]>();\r\n @ViewChildren('popupConfiguration') popupConfigurationEl: QueryList;\r\n\r\n @ViewChild(UploadEquipmentPopupComponent, { read: false, static: false })\r\n private _uploadEquipmentPopupComponent: UploadEquipmentPopupComponent;\r\n\r\n @Output()\r\n public isNeedToPreventClose = new EventEmitter();\r\n\r\n _formGroup: FormGroup;\r\n\r\n _isHidden = true;\r\n _isNeedToPreventClose = true;\r\n _submitted = false;\r\n _isLoading = false;\r\n\r\n _location: LocationBtxViewModel;\r\n _errorMessage: string = null;\r\n\r\n _isFileUploaded = false;\r\n\r\n get _fileName(): string {\r\n return this.fileToUpload ? this.fileToUpload.name : '';\r\n }\r\n\r\n get _isSubmitDisabled(): boolean {\r\n return this._isLoading;\r\n }\r\n\r\n private locationId: number;\r\n private fileToUpload: File;\r\n private isNeedToreInitScrollbar = false;\r\n\r\n private _subscriptions: Subscription[] = [];\r\n\r\n constructor(\r\n private _locationsBtxDataSourceService: LocationsBtxDataSourceService,\r\n private cdRef: ChangeDetectorRef,\r\n private formBuilder: FormBuilder,\r\n ) {\r\n super();\r\n }\r\n\r\n ngOnInit() {\r\n this._formGroup = this.formBuilder.group({});\r\n }\r\n\r\n ngAfterViewChecked() {\r\n if (this._isFileUploaded && this.isNeedToreInitScrollbar) {\r\n this.isNeedToreInitScrollbar = false;\r\n }\r\n }\r\n\r\n ngOnDestroy() {\r\n this._subscriptions && this._subscriptions.forEach(sub => sub.unsubscribe());\r\n }\r\n\r\n async onSubmit() {\r\n this._submitted = true;\r\n\r\n if (!this.fileToUpload) {\r\n this._errorMessage = 'File is required';\r\n this._submitted = false;\r\n return;\r\n }\r\n\r\n this.uploadConfigurationFile();\r\n this._isLoading = false;\r\n }\r\n\r\n onClickClose() {\r\n this._isHidden = false;\r\n this.closePopup();\r\n this.isNeedToPreventClose.emit(false);\r\n }\r\n\r\n onSelect(onSelectEvent: any) {\r\n const uploadFile = onSelectEvent.currentFiles[0] as File;\r\n if (uploadFile.size == 0) {\r\n this._errorMessage = 'File size should be more than 0.';\r\n } else if (!uploadFile.name.includes('.json') || uploadFile.type != 'application/json') {\r\n this._errorMessage = 'Invalid file format.';\r\n } else {\r\n this._errorMessage = null;\r\n this.fileToUpload = uploadFile;\r\n this._isFileUploaded = false;\r\n }\r\n }\r\n\r\n public show(location: LocationBtxViewModel) {\r\n this._isLoading = false;\r\n this.locationId = location.id;\r\n this._location = location;\r\n this._submitted = false;\r\n this._isHidden = false;\r\n this.cdRef.detectChanges();\r\n }\r\n\r\n private closePopup() {\r\n this._isHidden = true;\r\n this.fileToUpload = null;\r\n this._errorMessage = null;\r\n this._isFileUploaded = false;\r\n this._formGroup = this.formBuilder.group({});\r\n this.isNeedToPreventClose.emit(false);\r\n }\r\n\r\n private async uploadConfigurationFile() {\r\n const result = await this._locationsBtxDataSourceService.uploadToParseConfigurationFile(this.fileToUpload, this.locationId);\r\n if (result) {\r\n if (result instanceof ErrorModel) {\r\n if (result.code == ErrorCodeEnum.InvalidModelState) {\r\n this._errorMessage = result.errors[0];\r\n } else {\r\n this._errorMessage = result.message;\r\n }\r\n } else {\r\n this._isFileUploaded = true;\r\n this.isNeedToreInitScrollbar = true;\r\n const equipment = result as BTXLocationConfiguration;\r\n this._uploadEquipmentPopupComponent.show(this._location, equipment.equipments, equipment.isAnyEquipmentAlreadyExist);\r\n }\r\n this._submitted = false;\r\n }\r\n }\r\n}","export * from './upload-configuration-file-popup.component';\r\nexport * from './upload-configuration-close-popup';","export * from './upload-configuration-close-confirmation-popup.component';","import { Component, EventEmitter, OnInit, Output } from '@angular/core';\r\n\r\n\r\nimport { BasePopupBehavior } from '../../common';\r\n\r\n@Component({\r\n selector: 'greensleeves-upload-configuration-close-confirmation-popup',\r\n templateUrl: './upload-configuration-close-confirmation-popup.component.html'\r\n})\r\nexport class UploadConfigurationCloseConfirmationPopupComponent extends BasePopupBehavior implements OnInit {\r\n _isHidden = true;\r\n\r\n @Output('closeConfirmation')\r\n closeConfirmation: EventEmitter = new EventEmitter();\r\n\r\n constructor() { \r\n super();\r\n }\r\n ngOnInit() {\r\n }\r\n\r\n onCancel() {\r\n this._isHidden = true;\r\n this.closeConfirmation.emit(false);\r\n }\r\n\r\n async onSubmit() {\r\n this._isHidden = true;\r\n this.closeConfirmation.emit(true);\r\n }\r\n\r\n public show() {\r\n this._isHidden = false;\r\n }\r\n}\r\n","import { Component, ViewChildren, ElementRef, QueryList, OnInit, OnDestroy, ChangeDetectorRef, EventEmitter, AfterViewChecked, ViewChild, Output } from '@angular/core';\r\nimport { Subscription } from 'rxjs';\r\nimport { FormGroup, Validators, FormBuilder, ValidatorFn } from '@angular/forms';\r\n\r\nimport { LocationsKtxDataSourceService } from '../../../services';\r\nimport { ErrorModel, ErrorCodeEnum } from '../../../../common';\r\nimport { BinViewModel, AddEditLocationKtxSchemeViewModel, AddEditLocationKtxSchemePostModel } from '../../../models';\r\nimport { SwitchTypeEnum, BinTypeEnum } from '../../../enums';\r\nimport { TemplateFunctions } from '../../common';\r\nimport { BasePopupBehavior } from '../common';\r\nimport { UploadConfigurationCloseConfirmationPopupComponent } from './upload-configuration-close-popup';\r\n\r\ninterface BinsListsViewInterface {\r\n sys: number,\r\n bins: BinViewModel[],\r\n binsListLabel: string,\r\n ipAddress: string,\r\n ipAddressFormControlName: string,\r\n port: number,\r\n portFormControlName: string,\r\n portRemote: number,\r\n portRemoteFormControlName: string,\r\n withRemotePort: boolean,\r\n}\r\n\r\n@Component({\r\n selector: 'greensleeves-upload-configuration-file-popup',\r\n templateUrl: './upload-configuration-file-popup.component.html',\r\n styles: []\r\n})\r\nexport class UploadConfigurationFilePopupComponent extends BasePopupBehavior implements OnInit, OnDestroy, AfterViewChecked {\r\n public onUploadSuccess = new EventEmitter<[string, number]>();\r\n @ViewChildren('popupConfiguration') popupConfigurationEl: QueryList;\r\n\r\n @ViewChild(UploadConfigurationCloseConfirmationPopupComponent, { read: false, static: false })\r\n _closeModal: UploadConfigurationCloseConfirmationPopupComponent;\r\n\r\n @Output()\r\n public isNeedToPreventClose = new EventEmitter();\r\n\r\n _formGroup: FormGroup;\r\n\r\n _isHidden = true;\r\n _isNeedToPreventClose = true;\r\n _submitted = false;\r\n _isLoading = false;\r\n\r\n _locationName = '';\r\n _errorMessage: string = null;\r\n\r\n _isFileUploaded = false;\r\n _binsLists: BinsListsViewInterface[];\r\n\r\n get _fileName(): string {\r\n return this.fileToUpload ? this.fileToUpload.name : '';\r\n }\r\n\r\n get _isSubmitDisabled(): boolean {\r\n return this._isLoading;\r\n }\r\n\r\n private locationId: number;\r\n private fileToUpload: File;\r\n private addEditLocationKtxSchemeViewModel: AddEditLocationKtxSchemeViewModel;\r\n private isNeedToreInitScrollbar = false;\r\n\r\n private _subscriptions: Subscription[] = [];\r\n\r\n constructor(\r\n private _locationsKtxDataSourceService: LocationsKtxDataSourceService,\r\n private cdRef: ChangeDetectorRef,\r\n private formBuilder: FormBuilder,\r\n ) {\r\n super();\r\n }\r\n\r\n ngOnInit() {\r\n this._formGroup = this.formBuilder.group({});\r\n }\r\n\r\n ngAfterViewChecked() {\r\n if (this._isFileUploaded && this.isNeedToreInitScrollbar) {\r\n this.isNeedToreInitScrollbar = false;\r\n this.reInitScrollBar(0);\r\n }\r\n\r\n this._closeModal.closeConfirmation.subscribe(isNeedToClose => {\r\n if (isNeedToClose) {\r\n this.closePopup()\r\n }\r\n });\r\n }\r\n\r\n ngOnDestroy() {\r\n this._subscriptions && this._subscriptions.forEach(sub => sub.unsubscribe());\r\n }\r\n\r\n async onSubmit() {\r\n this._submitted = true;\r\n\r\n if (!this.fileToUpload) {\r\n this._errorMessage = 'File is required';\r\n this._submitted = false;\r\n return;\r\n }\r\n\r\n if (this._isFileUploaded) {\r\n if (this._formGroup.invalid) {\r\n return;\r\n }\r\n this._isLoading = true;\r\n await this.updateLocationScheme();\r\n } else {\r\n this._isLoading = true;\r\n await this.uploadConfigurationFile();\r\n }\r\n\r\n this._isLoading = false;\r\n }\r\n\r\n async onClickClose() {\r\n this._isHidden = false;\r\n this.isNeedToPreventClose.emit(true);\r\n\r\n if (this._isFileUploaded) {\r\n this._closeModal.show();\r\n } else {\r\n this.closePopup();\r\n this.isNeedToPreventClose.emit(false);\r\n }\r\n }\r\n\r\n onSelect(onSelectEvent: any) {\r\n const uploadFile = onSelectEvent.currentFiles[0] as File;\r\n if (uploadFile.size == 0) {\r\n this._errorMessage = 'File size should be more than 0.';\r\n } else if (!uploadFile.name.includes('.xml') || uploadFile.type != 'text/xml') {\r\n this._errorMessage = 'Invalid file format.';\r\n } else {\r\n this._errorMessage = null;\r\n this.fileToUpload = uploadFile;\r\n this._isFileUploaded = false;\r\n this._binsLists = null;\r\n }\r\n }\r\n\r\n public show(locationId: number, locationName: string) {\r\n this._isLoading = false;\r\n this.locationId = locationId;\r\n this._locationName = locationName;\r\n this._submitted = false;\r\n this._isHidden = false;\r\n this.cdRef.detectChanges();\r\n }\r\n\r\n private closePopup() {\r\n this._isHidden = true;\r\n this.fileToUpload = null;\r\n this._errorMessage = null;\r\n this._isFileUploaded = false;\r\n this._binsLists = null;\r\n this._formGroup = this.formBuilder.group({});\r\n this.isNeedToPreventClose.emit(false);\r\n }\r\n\r\n private async uploadConfigurationFile() {\r\n const result = await this._locationsKtxDataSourceService.uploadConfigurationFile(this.fileToUpload, this.locationId);\r\n if (result) {\r\n if (result instanceof ErrorModel) {\r\n if (result.code == ErrorCodeEnum.InvalidModelState) {\r\n this._errorMessage = result.errors[0];\r\n } else {\r\n this._errorMessage = result.message;\r\n }\r\n } else {\r\n const binsLists = this.generateBinsListsViewInterfaces(result.bins);\r\n this.reInitForm(binsLists);\r\n this._binsLists = binsLists;\r\n this._locationName = result.locationName;\r\n this._isFileUploaded = true;\r\n this.isNeedToreInitScrollbar = true;\r\n\r\n this.addEditLocationKtxSchemeViewModel = result;\r\n }\r\n this._submitted = false;\r\n }\r\n }\r\n\r\n private async updateLocationScheme() {\r\n let binsToForeach = this.addEditLocationKtxSchemeViewModel.bins.filter(b => b.binType != BinTypeEnum.Unit);\r\n this.addEditLocationKtxSchemeViewModel.bins.filter(b => b.binType == BinTypeEnum.Unit).forEach(b => {\r\n binsToForeach = binsToForeach.concat(b.bins.filter(c => !c.isDecorBin));\r\n });\r\n\r\n binsToForeach.forEach(bin => {\r\n const binsListsViewInterface = this._binsLists.find(bL => bL.sys == bin.sysId);\r\n\r\n if (binsListsViewInterface) {\r\n bin.port = this._formGroup.controls[binsListsViewInterface.portFormControlName].value;\r\n bin.ipAddress = this._formGroup.controls[binsListsViewInterface.ipAddressFormControlName].value;\r\n\r\n const portRemoteFormControl = this._formGroup.controls[binsListsViewInterface.portRemoteFormControlName];\r\n if (portRemoteFormControl) {\r\n bin.portRemote = portRemoteFormControl.value;\r\n }\r\n }\r\n });\r\n\r\n const request = new AddEditLocationKtxSchemePostModel(this.locationId, this.addEditLocationKtxSchemeViewModel);\r\n const result = await this._locationsKtxDataSourceService.updateLocationScheme(request);\r\n if (result) {\r\n if (result instanceof ErrorModel) {\r\n this._submitted = false;\r\n if (result.code == ErrorCodeEnum.InvalidModelState) {\r\n this._errorMessage = result.errors[0];\r\n } else {\r\n this._errorMessage = result.message;\r\n }\r\n } else {\r\n this._isHidden = true;\r\n this.fileToUpload = null;\r\n const successPopupInfoText = this.generateSuccessPopupInfoText(result.isBinsOrCablesWereAddedOrRemoved);\r\n this.onUploadSuccess.emit([successPopupInfoText, this.locationId]);\r\n this.closePopup();\r\n }\r\n }\r\n\r\n this._submitted = false;\r\n }\r\n\r\n private generateBinsListsViewInterfaces(bins: BinViewModel[]): BinsListsViewInterface[] {\r\n const binsListsViewInterfaces: BinsListsViewInterface[] = [];\r\n let binsToForeach = bins.filter(b => b.binType != BinTypeEnum.Unit);\r\n bins.filter(b => b.binType == BinTypeEnum.Unit).forEach(b => {\r\n binsToForeach = binsToForeach.concat(b.bins.filter(c => !c.isDecorBin));\r\n });\r\n\r\n binsToForeach.forEach(bin => {\r\n let binsListsViewInterface = binsListsViewInterfaces.find(bLVI => bLVI.sys == bin.sysId);\r\n\r\n if (!binsListsViewInterface) {\r\n binsListsViewInterface = {\r\n sys: bin.sysId,\r\n portFormControlName: `portFormControl_${bin.sysId}`,\r\n portRemoteFormControlName: `portRemoteFormControl_${bin.sysId}`,\r\n ipAddressFormControlName: `ipAddressFormControl_${bin.sysId}`,\r\n bins: [],\r\n withRemotePort: bin.switchType != SwitchTypeEnum.MUX && bin.switchType != SwitchTypeEnum.NONE,\r\n } as BinsListsViewInterface;\r\n binsListsViewInterfaces.push(binsListsViewInterface);\r\n }\r\n\r\n binsListsViewInterface.bins.push(bin);\r\n });\r\n\r\n return binsListsViewInterfaces;\r\n }\r\n\r\n private reInitForm(binsListsViewInterfaces: BinsListsViewInterface[]) {\r\n let formGroup = {};\r\n binsListsViewInterfaces.forEach(bLVI => {\r\n bLVI.binsListLabel = this.getBinsListLabel(bLVI.bins);\r\n formGroup[bLVI.portFormControlName] = [\r\n null,\r\n Validators.compose([\r\n Validators.required,\r\n Validators.min(0),\r\n Validators.max(65535)\r\n ])\r\n ] as ValidatorFn[];\r\n\r\n formGroup[bLVI.ipAddressFormControlName] = [\r\n null,\r\n Validators.compose([\r\n Validators.required,\r\n TemplateFunctions.ipValidator,\r\n ])\r\n ] as ValidatorFn[];\r\n\r\n if (bLVI.withRemotePort) {\r\n formGroup[bLVI.portRemoteFormControlName] = [\r\n null,\r\n Validators.compose([\r\n Validators.required,\r\n Validators.min(0),\r\n Validators.max(65535)\r\n ])\r\n ] as ValidatorFn[];\r\n }\r\n });\r\n\r\n this._formGroup = this.formBuilder.group(formGroup);\r\n }\r\n\r\n private getBinsListLabel(binsList: BinViewModel[]): string {\r\n return binsList.map(bin => bin.name).join(', ');\r\n }\r\n\r\n private generateSuccessPopupInfoText(isBinsOrCablesWereAddedOrRemoved: boolean) {\r\n let stringToReturn = `Configuration for ${this._locationName} location was successfully uploaded.`;\r\n if (isBinsOrCablesWereAddedOrRemoved) {\r\n stringToReturn = stringToReturn + ' Note, that new config is different than old config, new config has overridden data';\r\n }\r\n\r\n return stringToReturn;\r\n }\r\n\r\n private reInitScrollBar(timeout?: number) {\r\n const el = this.popupConfigurationEl.first.nativeElement;\r\n this.reInitMainScrollBar(el, timeout);\r\n }\r\n}\r\n","import { Component, OnInit, Output, EventEmitter } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'greensleeves-delete-equipment-confirmation-popup',\r\n templateUrl: './delete-equipment-confirmation-popup.component.html',\r\n styles: []\r\n})\r\nexport class DeleteEquipmentConfirmationPopupComponent implements OnInit {\r\n @Output()\r\n onDeleteEquipmentConfirmation = new EventEmitter();\r\n\r\n _equipmentIndex: number;\r\n _isHidden = true;\r\n\r\n _submitted = false;\r\n _error: string;\r\n\r\n constructor(\r\n ) { }\r\n\r\n ngOnInit() {\r\n }\r\n\r\n public show(equipmentIndex: number) {\r\n this._equipmentIndex = equipmentIndex;\r\n this._isHidden = false;\r\n }\r\n\r\n async onSubmit() {\r\n this._error = null;\r\n this._isHidden = true;\r\n this.onDeleteEquipmentConfirmation.next(this._equipmentIndex);\r\n }\r\n\r\n onClickCancel() {\r\n this._error = null;\r\n this._isHidden = true;\r\n }\r\n}","export * from './delete-equipment-confirmation-popup.component';","export * from './upload-equipment-popup.component';\r\nexport * from './upload-equipment-scheme';\r\nexport * from './upload-equipment-menu';\r\nexport * from './upload-equipment-sensor-delete-popup';\r\nexport * from './upload-equipment-view-data';\r\nexport * from './delete-equipment-confirmation-popup';\r\nexport * from './upload-success-popup';\r\nexport * from './upload-cancellation-popup';","export * from './upload-add-edit-equipment-popup.component';","import { Component, Output, EventEmitter, Input, OnDestroy, AfterViewChecked } from '@angular/core';\r\nimport { FormBuilder, FormGroup, Validators, FormControl } from '@angular/forms';\r\n\r\nimport { BtxLocationEquipmentConfiguration, EquipmentViewModel } from '../../../../models';\r\nimport { bitOptions } from '../../../../constants';\r\nimport { equipmentTypeLabels, equipmentSubTypeLabels, equipmentSensorMapping } from 'src/app/main/constants';\r\nimport { digitsValidator } from 'src/app/common/validators';\r\nimport { BasePopupBehavior } from '../../common';\r\nimport { ModbussAddress, TemplateFunctions } from '../../../common';\r\n\r\n@Component({\r\n selector: 'greensleeves-upload-add-edit-equipment-popup',\r\n templateUrl: './upload-add-edit-equipment-popup.component.html',\r\n styles: []\r\n})\r\nexport class UploadAddEditEquipmentPopupComponent extends BasePopupBehavior implements OnDestroy, AfterViewChecked {\r\n _isHidden = true;\r\n _submitted = false;\r\n\r\n _equipment: BtxLocationEquipmentConfiguration;\r\n _title: string;\r\n\r\n @Output()\r\n onClose = new EventEmitter();\r\n\r\n @Output()\r\n onSave: EventEmitter<[EquipmentViewModel, boolean]> = new EventEmitter<[EquipmentViewModel, boolean]>();\r\n\r\n @Output()\r\n onCancel: EventEmitter = new EventEmitter();\r\n\r\n @Input()\r\n uniqueValidator: (equipment: EquipmentViewModel) => boolean;\r\n\r\n @Input()\r\n uniqueAddressesValidator: (equipment: EquipmentViewModel) => ModbussAddress[];\r\n\r\n @Output()\r\n closedPopup: EventEmitter = new EventEmitter();\r\n\r\n _equipmentForm: FormGroup;\r\n\r\n _isNeedToCloseParentPopup: boolean;\r\n _bitOptions = bitOptions;\r\n\r\n _equipmentTypes: Array<{ label: string, value: number }>;\r\n\r\n _equipmentSubtypes: Array<{ label: string, value: number }> = [];\r\n _submitLabel: string;\r\n\r\n _generalAddressErrorText = 'Address already in use';\r\n _generalBitErrorText = 'Bit already in use';\r\n\r\n private isEditMode: boolean;\r\n\r\n get _hasSensor(): boolean {\r\n return this._equipment && this._equipment.sensors && this._equipment.sensors.length > 0;\r\n }\r\n\r\n constructor(\r\n formBuilder: FormBuilder,\r\n ) {\r\n super();\r\n this._equipmentTypes = Object.keys(equipmentSensorMapping).map(k => ({ label: equipmentTypeLabels[k], value: Number.parseInt(k) }))\r\n this._equipmentForm = formBuilder.group({\r\n type: [\r\n null,\r\n Validators.compose([\r\n Validators.required\r\n ])\r\n ],\r\n subType: [\r\n null,\r\n Validators.compose([\r\n Validators.required\r\n ])\r\n ],\r\n name: [\r\n '',\r\n Validators.compose([\r\n Validators.required,\r\n Validators.minLength(3),\r\n Validators.maxLength(50)\r\n ])\r\n ],\r\n totalRunHoursFirstRegisterAddress: [\r\n null,\r\n Validators.compose([\r\n Validators.required,\r\n digitsValidator,\r\n Validators.min(1),\r\n Validators.max(65536)\r\n ])\r\n ],\r\n totalRunHoursSecondRegisterAddress: [\r\n null,\r\n Validators.compose([\r\n Validators.required,\r\n digitsValidator,\r\n Validators.min(1),\r\n Validators.max(65536)\r\n ])\r\n ],\r\n timeTillMaintenanceAddress: [\r\n null,\r\n ],\r\n shutDownAlarmAddress: [\r\n null,\r\n Validators.compose([\r\n Validators.required,\r\n digitsValidator,\r\n Validators.min(1),\r\n Validators.max(65536)\r\n ])\r\n ],\r\n shutDownAlarmAddressBit: [\r\n null,\r\n Validators.compose([\r\n Validators.required,\r\n Validators.min(1),\r\n Validators.max(16)\r\n ])\r\n ],\r\n maintenanceRequiredWarningAddress: [\r\n null,\r\n Validators.compose([\r\n Validators.required,\r\n digitsValidator,\r\n Validators.min(1),\r\n Validators.max(65536)\r\n ])\r\n ],\r\n maintenanceRequiredWarningAddressBit: [\r\n null,\r\n Validators.compose([\r\n Validators.required,\r\n Validators.min(1),\r\n Validators.max(16)\r\n ])\r\n ]\r\n })\r\n }\r\n\r\n onSubmit() {\r\n this._submitted = true;\r\n if (this._equipmentForm.hasError('unique')) {\r\n delete this._equipmentForm.errors.unique;\r\n this._equipmentForm.updateValueAndValidity();\r\n }\r\n if (this._equipmentForm.invalid) {\r\n return;\r\n }\r\n\r\n if (this._equipmentForm.controls.timeTillMaintenanceAddress.value == '') this._equipmentForm.controls.timeTillMaintenanceAddress.setValue(null);\r\n if (this._equipmentForm.controls.timeTillMaintenanceAddress.value != null) {\r\n var address = parseInt(this._equipmentForm.controls.timeTillMaintenanceAddress.value);\r\n if (isNaN(address) || address < 1 || address > 65536) {\r\n this._equipmentForm.controls.timeTillMaintenanceAddress.setErrors({ digitsValidator: true })\r\n return;\r\n }\r\n this._equipmentForm.controls.timeTillMaintenanceAddress.setValue(address);\r\n }\r\n\r\n const equipment = {\r\n ...this._equipment,\r\n ...this._equipmentForm.value\r\n } as EquipmentViewModel;\r\n\r\n if (!this.uniqueValidator(equipment)) {\r\n this._equipmentForm.setErrors({\r\n unique: 'Equipment with the same name already exists in the system'\r\n });\r\n return;\r\n }\r\n\r\n const notUniqueAddresses = this.uniqueAddressesValidator(equipment);\r\n if (notUniqueAddresses && notUniqueAddresses.length > 0) {\r\n TemplateFunctions.markAddressControllsAsNotUnique(this._equipmentForm, notUniqueAddresses);\r\n return;\r\n }\r\n\r\n this.onSave.emit([equipment, this.isEditMode]);\r\n this.resetPopup();\r\n this._isHidden = true;\r\n }\r\n\r\n ngAfterViewChecked() {\r\n super.ngAfterViewChecked();\r\n }\r\n\r\n public show(title: string, submitLabel: string, equipment: BtxLocationEquipmentConfiguration = null, isNeedToCloseParentPopup = false) {\r\n this.isEditMode = !!equipment;\r\n this._equipment = equipment || new BtxLocationEquipmentConfiguration();\r\n this._isNeedToCloseParentPopup = isNeedToCloseParentPopup;\r\n this.setFormValues(equipment);\r\n this.onTypeChanged();\r\n this._title = title;\r\n this._submitLabel = submitLabel;\r\n this._isHidden = false;\r\n }\r\n\r\n onClickClose() {\r\n this._isHidden = true;\r\n this.resetPopup();\r\n this.closedPopup.emit();\r\n if (this._isNeedToCloseParentPopup) {\r\n this.onClose.next();\r\n }\r\n }\r\n\r\n onTypeChanged() {\r\n const equipmentType = this._equipmentForm.get('type').value;\r\n this._equipmentSubtypes = ((equipmentType || equipmentType === 0) ? Object.keys(equipmentSensorMapping[equipmentType]) : [])\r\n .map(k => ({ label: equipmentSubTypeLabels[k], value: Number.parseInt(k) }));\r\n }\r\n\r\n private resetPopup() {\r\n this._equipmentForm.reset();\r\n this._equipment = null;\r\n this._submitted = false;\r\n }\r\n\r\n private setFormValues(equipment: BtxLocationEquipmentConfiguration) {\r\n this._equipmentForm.reset();\r\n if (equipment) {\r\n const {\r\n type,\r\n subType,\r\n name,\r\n totalRunHoursFirstRegisterAddress,\r\n totalRunHoursSecondRegisterAddress,\r\n timeTillMaintenanceAddress,\r\n shutDownAlarmAddress,\r\n shutDownAlarmAddressBit,\r\n maintenanceRequiredWarningAddress,\r\n maintenanceRequiredWarningAddressBit\r\n } = equipment;\r\n this._equipmentForm.setValue({\r\n type,\r\n subType,\r\n name,\r\n totalRunHoursFirstRegisterAddress,\r\n totalRunHoursSecondRegisterAddress,\r\n timeTillMaintenanceAddress,\r\n shutDownAlarmAddress,\r\n shutDownAlarmAddressBit,\r\n maintenanceRequiredWarningAddress,\r\n maintenanceRequiredWarningAddressBit\r\n });\r\n }\r\n }\r\n\r\n hasValue(control: FormControl) {\r\n return control.value || control.value === 0;\r\n }\r\n}","export * from './upload-cancellation-popup.component';","import { Component, OnInit, Output, EventEmitter } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'greensleeves-upload-cancellation-popup',\r\n templateUrl: './upload-cancellation-popup.component.html',\r\n styles: []\r\n})\r\nexport class UploadCancellationPopupComponent implements OnInit {\r\n @Output()\r\n onClose = new EventEmitter();\r\n\r\n _equipmentIndex: number;\r\n _isHidden = true;\r\n\r\n _submitted = false;\r\n _error: string;\r\n\r\n constructor(\r\n ) { }\r\n\r\n ngOnInit() {\r\n }\r\n\r\n public show() {\r\n this._isHidden = false;\r\n }\r\n\r\n async onSubmit() {\r\n this._error = null;\r\n this._isHidden = true;\r\n this.onClose.next();\r\n }\r\n\r\n onClickCancel() {\r\n this._error = null;\r\n this._isHidden = true;\r\n }\r\n}","export * from './upload-equipment-menu.component';","import { Component, Input, Output, EventEmitter } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'greensleeves-upload-equipment-menu',\r\n templateUrl: './upload-equipment-menu.component.html',\r\n styles: []\r\n})\r\nexport class UploadEquipmentMenuComponent {\r\n @Input()\r\n index: number = -1;\r\n\r\n @Output()\r\n onToggle: EventEmitter<{ index: number, isOpen: boolean }> = new EventEmitter<{ index: number, isOpen: boolean }>();\r\n \r\n _isMenuOpen: boolean = false;\r\n \r\n close() {\r\n this._isMenuOpen = false;\r\n this.notifyNext()\r\n }\r\n\r\n onToogleMenu() {\r\n this._isMenuOpen = !this._isMenuOpen;\r\n this.notifyNext();\r\n }\r\n\r\n onElementClick(e: Event) {\r\n e.stopPropagation();\r\n }\r\n\r\n private notifyNext() {\r\n this.onToggle.emit({ isOpen: this._isMenuOpen, index: this.index });\r\n }\r\n}","import { Component, ViewChild, AfterViewInit, OnDestroy, Output, EventEmitter } from '@angular/core';\r\nimport {\r\n SensorViewModel,\r\n EquipmentViewModel,\r\n LocationBtxViewModel,\r\n LocationBtxEquipmentViewModel,\r\n BtxLocationEquipmentConfiguration,\r\n BtxLocationSensorConfiguration,\r\n BTXLocationConfiguration\r\n} from '../../../models';\r\nimport { UploadAddEditEquipmentPopupComponent } from './upload-add-edit-equipment-popup';\r\nimport { ModelsTypes, equipmentSensorMapping } from 'src/app/main/constants';\r\nimport { UploadEquipmentViewDataPopupComponent } from './upload-equipment-view-data';\r\nimport { ModbussAddress, ValidationFunctions } from '../../common';\r\nimport { DeleteEquipmentConfirmationPopupComponent } from './delete-equipment-confirmation-popup';\r\nimport { Subscription } from 'rxjs';\r\nimport { UploadSuccessPopupComponent } from './upload-success-popup';\r\nimport { UploadCancellationPopupComponent } from './upload-cancellation-popup';\r\nimport { LocationsBtxDataSourceService, LocationsDataSourceService } from '@services';\r\nimport { EquipmentSideEnum, SensorPositionEnum, SensorSideEnum, SensorTypeEnum } from 'src/app/main/enums';\r\n\r\n@Component({\r\n selector: 'greensleeves-upload-equipment-popup',\r\n templateUrl: './upload-equipment-popup.component.html',\r\n styles: []\r\n})\r\n\r\nexport class UploadEquipmentPopupComponent implements AfterViewInit, OnDestroy {\r\n\r\n @ViewChild(UploadAddEditEquipmentPopupComponent, { read: false, static: false })\r\n private _addEquipmentModal: UploadAddEditEquipmentPopupComponent;\r\n\r\n @ViewChild(UploadEquipmentViewDataPopupComponent, { read: false, static: false })\r\n private _equipmentViewDataModal: UploadEquipmentViewDataPopupComponent;\r\n\r\n @ViewChild(DeleteEquipmentConfirmationPopupComponent, { read: false, static: false })\r\n private _deleteEquipmentModal: DeleteEquipmentConfirmationPopupComponent;\r\n\r\n @ViewChild(UploadSuccessPopupComponent, { read: false, static: false })\r\n private _uploadSuccessModal: UploadSuccessPopupComponent;\r\n\r\n @ViewChild(UploadCancellationPopupComponent, { read: false, static: false })\r\n private _uploadCancellationModal: UploadCancellationPopupComponent;\r\n\r\n @Output()\r\n onClose = new EventEmitter();\r\n\r\n _isHidden = true;\r\n _submitted = false;\r\n _isAnyEquipmentAlreadyExist: boolean = false;\r\n _isNeedToHideCloseButton = true;\r\n _isNeedToDisableUploadButton: boolean = true;\r\n _isLoading: boolean = false;\r\n\r\n _location: LocationBtxViewModel;\r\n _maxSensorIndex: number;\r\n _equipments: BtxLocationEquipmentConfiguration[];\r\n\r\n _companies: { label: string, value: number }[];\r\n\r\n _activeEquipment: BtxLocationEquipmentConfiguration = null;\r\n _activeSensor: SensorViewModel = null;\r\n\r\n _activeAccordionTabIndex = -1;\r\n\r\n private _activeSensorIndex: any;\r\n private subscriptions: Subscription[] = [];\r\n private _editingEquipmentIndex?: number = null;\r\n\r\n _schema: Array<{ className: string, markers: Array<{ className: string, index: number, tooltip: string }> }> = [];\r\n\r\n constructor(\r\n private _locationsBtxDataSourceService: LocationsBtxDataSourceService,\r\n ) {\r\n this.isSensorHasDublicates = this.isSensorHasDublicates.bind(this);\r\n this.equipmentHasUniqueName = this.equipmentHasUniqueName.bind(this);\r\n this.ValidateSensorAddressesUnique = this.ValidateSensorAddressesUnique.bind(this);\r\n this.ValidateEquipmentSensorsTypePositionAndSide = this.ValidateEquipmentSensorsTypePositionAndSide.bind(this);\r\n this.ValidateEquipmentAddressesUnique = this.ValidateEquipmentAddressesUnique.bind(this);\r\n this.ValidateEquipmentAndSensors = this.ValidateEquipmentAndSensors.bind(this);\r\n }\r\n\r\n ngAfterViewInit() {\r\n let subs = this._addEquipmentModal.onSave.subscribe((emitModel: [BtxLocationEquipmentConfiguration, boolean]) => {\r\n if (emitModel[1]) {\r\n this.onEquipmentEditSave(emitModel[0]);\r\n } else {\r\n this.onEquipmentAddSave(emitModel[0]);\r\n }\r\n });\r\n this.subscriptions.push(subs);\r\n\r\n subs = this._addEquipmentModal.onCancel.subscribe(() => this.onEquipmentAddCancel());\r\n this.subscriptions.push(subs);\r\n }\r\n\r\n ngOnDestroy() {\r\n this._activeEquipment = null;\r\n }\r\n\r\n public async show(location: LocationBtxViewModel, locationEquipments: BtxLocationEquipmentConfiguration[], isAnyEquipmentAlreadyExist: boolean) {\r\n await this._locationsBtxDataSourceService.markLocationEquipmentsForOthersAsInUpdate(location.id);\r\n this._location = location;\r\n this._isAnyEquipmentAlreadyExist = isAnyEquipmentAlreadyExist;\r\n this._equipments = locationEquipments;\r\n this.ValidateEquipmentSensorsTypePositionAndSide();\r\n this.ValidateEquipmentAndSensors(true);\r\n\r\n this._maxSensorIndex = Math.max(...[].concat(...this._equipments.map(e => {\r\n if (e.sensors == null) {\r\n return 0;\r\n } else {\r\n return e.sensors.map(s => s.index)\r\n }\r\n })));\r\n\r\n if (!this._equipments || !this._equipments.length) {\r\n this._addEquipmentModal.show(\"Add first equipment\", \"Add first equipment\");\r\n } else {\r\n this._isHidden = false;\r\n }\r\n }\r\n\r\n ValidateEquipmentSensorsTypePositionAndSide() {\r\n if (this._equipments) {\r\n this._equipments.forEach(equipment => {\r\n equipment.sensors.forEach(sensor => {\r\n let equipmentMapping = equipmentSensorMapping[equipment.type][equipment.subType];\r\n if (equipmentMapping) {\r\n if ((typeof equipmentMapping[sensor.type] === 'undefined')) {\r\n sensor.type = null;\r\n sensor.position = null;\r\n sensor.side = null;\r\n } else if (typeof equipmentMapping[sensor.type][sensor.position] === 'undefined') {\r\n sensor.position = null;\r\n sensor.side = null;\r\n } else if (typeof equipmentMapping[sensor.type][sensor.position][sensor.side] === 'undefined') {\r\n sensor.side = null;\r\n }\r\n }\r\n\r\n if(sensor.type == SensorTypeEnum.Speed){\r\n sensor.position = SensorPositionEnum.OnePerEquipment;\r\n sensor.side = EquipmentSideEnum.None;\r\n }\r\n\r\n if (sensor.type == SensorTypeEnum.Vibration\r\n || sensor.type == SensorTypeEnum.CurrentAmpDraw\r\n || sensor.type == SensorTypeEnum.CurrentDesignLoad) {\r\n sensor.rateOfChangeAlarmAddress = null;\r\n sensor.rateOfChangeAlarmAddressBit = null;\r\n sensor.rateOfChangeWarningAddress = null;\r\n sensor.rateOfChangeWarningAddressBit = null;\r\n }\r\n });\r\n });\r\n }\r\n }\r\n\r\n onToggleMenu({ isOpen, index }) {\r\n if (isOpen) {\r\n this._activeAccordionTabIndex = index;\r\n }\r\n }\r\n\r\n onAccordionOpen(index) {\r\n this._activeEquipment = this._equipments[index];\r\n\r\n setTimeout(() => {\r\n let tab = document.getElementById(`${this._activeEquipment.index}`);\r\n if (tab) {\r\n let sensorWrap = document.getElementById('sensorsWrap');\r\n if (sensorWrap) {\r\n sensorWrap.style.setProperty('top', `${tab.offsetTop}px`);\r\n }\r\n }\r\n }, 300);\r\n }\r\n\r\n onAccordionClose() {\r\n this._activeEquipment = null;\r\n }\r\n\r\n async onClickSave() {\r\n var isAnyValidationIssue = this.ValidateEquipmentAndSensors();\r\n if(isAnyValidationIssue){\r\n return;\r\n }\r\n\r\n this.onDisableUploadButton();\r\n this._isLoading = true;\r\n let request: BTXLocationConfiguration = new BTXLocationConfiguration();\r\n request.locationId = this._location.id;\r\n request.deviceId = this._location.deviceId;\r\n request.equipments = this._equipments;\r\n const result = await this._locationsBtxDataSourceService.uploadBtxLocationEquipmentsConfigurationFile(request);\r\n if(result) {\r\n this._isLoading = false;\r\n return;\r\n }\r\n\r\n this.onEnableUploadButton();\r\n this._isLoading = false;\r\n this._uploadSuccessModal.show();\r\n }\r\n\r\n onSensorChanged(sensor: BtxLocationSensorConfiguration) {\r\n this._activeEquipment.sensors[this._activeSensorIndex] = sensor;\r\n this._activeSensorIndex = null;\r\n this._activeSensor = null;\r\n }\r\n\r\n onDeleteEquipmentConfirmation(equipmentIndex: number){\r\n this._equipments = this._equipments.filter(e => e.index != equipmentIndex);\r\n if (!this._equipments || !this._equipments.length) {\r\n this._addEquipmentModal.show(\"Add first equipment\", \"Add first equipment\", null, true);\r\n } else {\r\n this._isHidden = false;\r\n }\r\n }\r\n\r\n onChangeSensors(sensors: BtxLocationSensorConfiguration[]) {\r\n if (!this._activeEquipment) {\r\n return;\r\n }\r\n\r\n this._activeEquipment.sensors = sensors\r\n }\r\n\r\n onEquipmentAddSave(equipment: BtxLocationEquipmentConfiguration) {\r\n let maxEquipmentIndex = 0;\r\n if (!this._equipments || !this._equipments.length) {\r\n this._equipments = [];\r\n maxEquipmentIndex = 1;\r\n } else {\r\n maxEquipmentIndex = Math.max(...this._equipments.map(x => x.index));\r\n }\r\n\r\n equipment.index = maxEquipmentIndex + 1;\r\n this._equipments.push(equipment);\r\n\r\n if (this._equipments.length) {\r\n this._isHidden = false;\r\n }\r\n\r\n this.ValidateEquipmentAndSensors();\r\n }\r\n\r\n onEquipmentEditSave(equipment: BtxLocationEquipmentConfiguration) {\r\n this._equipments[this._editingEquipmentIndex] = equipment as BtxLocationEquipmentConfiguration;\r\n this._editingEquipmentIndex = null;\r\n\r\n if (this._equipments.length) {\r\n this._isHidden = false;\r\n }\r\n }\r\n\r\n onEquipmentAddCancel() {\r\n if (!this._equipments || !this._equipments.length) {\r\n this._isHidden = true;\r\n }\r\n }\r\n\r\n onClickAddMenu() {\r\n this._editingEquipmentIndex = null;\r\n this._addEquipmentModal.show(\"Add new equipment\", \"Add\");\r\n }\r\n\r\n onClickDeleteEquipment(equipmentIndex: number) {\r\n this._deleteEquipmentModal.show(equipmentIndex);\r\n }\r\n\r\n onClickViewData(equipment: EquipmentViewModel) {\r\n this._equipmentViewDataModal.show(equipment, this._location.id);\r\n }\r\n\r\n onClickUploadCancellation() {\r\n this._uploadCancellationModal.show();\r\n }\r\n\r\n async onClickClose() {\r\n await this._locationsBtxDataSourceService.markLocationEquipmentsForOthersAsUpdated(this._location.id);\r\n this._activeEquipment = null;\r\n this._isHidden = true;\r\n this._location = null;\r\n this._submitted = false;\r\n this.onClose.emit();\r\n }\r\n\r\n onEnableUploadButton() {\r\n this._isNeedToDisableUploadButton = false;\r\n }\r\n\r\n onDisableUploadButton() {\r\n this._isNeedToDisableUploadButton = true;\r\n }\r\n\r\n isSensorHasDublicates(sensor: SensorViewModel, equipment: EquipmentViewModel): boolean {\r\n var result = equipment && equipment.sensors\r\n .filter(s => s.id != sensor.id)\r\n .some(s => s.type === sensor.type && s.position === sensor.position && s.side === sensor.side);\r\n return result;\r\n }\r\n\r\n equipmentHasUniqueName(equipment: EquipmentViewModel) {\r\n var result = !this._equipments\r\n .some((e, i) => (this._editingEquipmentIndex === null || this._editingEquipmentIndex !== i) && e.name === equipment.name);\r\n return result;\r\n }\r\n\r\n ValidateEquipmentAndSensors(isFirstValidation: boolean = false) {\r\n var isAnyValidationIssue = false;\r\n\r\n this._equipments.forEach(equipment => {\r\n equipment.validation = this.ValidateEquipmentAddressesUnique(EquipmentViewModel.toViewModel(equipment));\r\n\r\n var isAnyNullValueOnEquipment = equipment.name == null\r\n || equipment.totalRunHoursFirstRegisterAddress == null\r\n || equipment.totalRunHoursSecondRegisterAddress == null\r\n || equipment.timeTillMaintenanceAddress == null\r\n || equipment.shutDownAlarmAddress == null || equipment.shutDownAlarmAddressBit == null\r\n || equipment.maintenanceRequiredWarningAddress == null || equipment.maintenanceRequiredWarningAddressBit == null;\r\n\r\n if (equipment.sensors && equipment.sensors.length > 0) {\r\n equipment.sensors.forEach(sensor => {\r\n sensor.validation = this.ValidateSensorAddressesUnique(SensorViewModel.toViewModel(sensor));\r\n });\r\n\r\n var isEquipmentSensorHasDuplicates = equipment.sensors != null && equipment.sensors.some(s => this.isSensorHasDublicates(SensorViewModel.toViewModel(s), EquipmentViewModel.toViewModel(equipment)));\r\n var isAnyNullValueOnSensor = equipment.sensors != null &&\r\n equipment.sensors.some(s => s.type == null || s.position == null || s.side == null) ||\r\n equipment.sensors.some(s => (s.type == SensorTypeEnum.CurrentAmpDraw || s.type == SensorTypeEnum.CurrentDesignLoad || s.type == SensorTypeEnum.Vibration)\r\n && (s.modbusAddress == null || s.warningAddress == null || s.warningAddressBit == null || s.alarmAddress == null || s.alarmAddressBit == null))\r\n || equipment.sensors.some(s => (s.type != SensorTypeEnum.CurrentAmpDraw && s.type != SensorTypeEnum.CurrentDesignLoad && s.type != SensorTypeEnum.Vibration)\r\n && (s.modbusAddress == null || s.warningAddress == null || s.warningAddressBit == null || s.alarmAddress == null || s.alarmAddressBit == null\r\n && s.rateOfChangeAlarmAddress == null || s.rateOfChangeAlarmAddressBit == null || s.rateOfChangeWarningAddress == null || s.rateOfChangeWarningAddressBit == null));\r\n }\r\n\r\n var isAnyValidationIssuePerEquipment = (isAnyNullValueOnSensor\r\n || isAnyNullValueOnEquipment\r\n || isEquipmentSensorHasDuplicates\r\n || (equipment.validation != null && equipment.validation.length > 0)\r\n || (equipment.sensors != null && equipment.sensors.some(s => s.validation != null && s.validation.length > 0)))\r\n\r\n if (!isAnyValidationIssue && isAnyValidationIssuePerEquipment) {\r\n isAnyValidationIssue = true;\r\n }\r\n\r\n if (isFirstValidation) {\r\n equipment.isAnyValidationIssuesActive = isAnyValidationIssuePerEquipment;\r\n }\r\n });\r\n\r\n if (isAnyValidationIssue) {\r\n this.onDisableUploadButton();\r\n } else {\r\n this.onEnableUploadButton();\r\n }\r\n\r\n return isAnyValidationIssue;\r\n }\r\n\r\n ValidateSensorAddressesUnique(sensor: SensorViewModel): ModbussAddress[] {\r\n const existentItems: (LocationBtxViewModel | EquipmentViewModel | SensorViewModel)[] = [this._location];\r\n this._equipments.forEach(eq => {\r\n const equipmentViewModel = EquipmentViewModel.toViewModel(eq)\r\n existentItems.push(equipmentViewModel);\r\n if (eq.sensors && eq.sensors.length > 0) {\r\n eq.sensors.forEach(s => (s.index !== sensor.id) && existentItems.push(SensorViewModel.toViewModel(s)));\r\n }\r\n });\r\n \r\n sensor.modelType = ModelsTypes.sensorViewModel;\r\n var result = ValidationFunctions.checkIsAllAddressesUnique(existentItems, sensor, LocationBtxEquipmentViewModel.toViewModel(this._location, this._equipments));\r\n return result;\r\n }\r\n\r\n ValidateEquipmentAddressesUnique(equipment: EquipmentViewModel): ModbussAddress[] {\r\n const existentItems: (LocationBtxViewModel | EquipmentViewModel | SensorViewModel)[] = [this._location];\r\n this._equipments.forEach(eq => {\r\n const equipmentViewModel = EquipmentViewModel.toViewModel(eq)\r\n if (equipmentViewModel.id !== equipment.id) {\r\n existentItems.push(equipmentViewModel);\r\n }\r\n\r\n if (eq.sensors && eq.sensors.length > 0) {\r\n eq.sensors.forEach(sensor => existentItems.push(SensorViewModel.toViewModel(sensor)));\r\n }\r\n });\r\n \r\n equipment.modelType = ModelsTypes.equipmentViewModel;\r\n var result = ValidationFunctions.checkIsAllAddressesUnique(existentItems, equipment);\r\n return result;\r\n }\r\n}","export * from './upload-equipment-scheme.component';","import { Component, OnInit, OnDestroy, Input, ElementRef, NgZone, AfterViewInit, Output, EventEmitter } from '@angular/core';\r\nimport { FormBuilder, FormGroup, Validators, FormControl } from '@angular/forms';\r\n\r\nimport { BtxLocationEquipmentConfiguration, BtxLocationSensorConfiguration, EquipmentViewModel, SensorViewModel } from '../../../../models';\r\nimport { EquipmentSubTypeEnum, SensorTypeEnum, SensorPositionEnum, EquipmentSideEnum } from '../../../../enums';\r\nimport { equipmentSensorMapping } from '../../../../constants';\r\nimport { equipmentSideLabels, sensorPositionLabels, sensorTypeLabels, equipmentNorthSouthSideLabels, equipmentWestEastSideLabels, equipmentTypeLabels, equipmentSubTypeLabels } from 'src/app/main/constants';\r\nimport PerfectScrollbar from 'perfect-scrollbar';\r\nimport { bitOptions } from '../../../../constants';\r\nimport { digitsValidator } from '../../../../../common/validators';\r\nimport { ModbussAddress } from '../../../common';\r\n\r\nexport class DropdownModel {\r\n label: string;\r\n value: number;\r\n}\r\n\r\n@Component({\r\n selector: 'greensleeves-upload-equipment-scheme-editor',\r\n templateUrl: './upload-equipment-scheme.component.html',\r\n styles: []\r\n})\r\n\r\nexport class UploadEquipmentSchemeEditorComponent implements OnInit, OnDestroy, AfterViewInit {\r\n @Input()\r\n type: EquipmentSubTypeEnum;\r\n\r\n @Input()\r\n equipment: BtxLocationEquipmentConfiguration;\r\n\r\n @Input()\r\n maxSensorIndex: number;\r\n\r\n @Input()\r\n uniqueValidator: (sensor: SensorViewModel, equipment: EquipmentViewModel) => boolean;\r\n\r\n @Input()\r\n validateEquipmentSensorsTypePositionAndSide: () => void;\r\n\r\n @Input()\r\n validateEquipmentAndSensors: () => void\r\n\r\n @Input()\r\n uniqueSensorAddressesValidator: (sensor: SensorViewModel) => ModbussAddress[];\r\n\r\n @Input()\r\n uniqueEquipmentAddressesValidator: (equipment: EquipmentViewModel) => ModbussAddress[];\r\n\r\n @Output()\r\n onEnableUploadButton = new EventEmitter();\r\n\r\n @Output()\r\n onDisableUploadButton = new EventEmitter();\r\n\r\n _edit = 'edit';\r\n _delete = 'delete';\r\n _sensorType = 'sensorType';\r\n _sensorPosition = 'sensorPosition';\r\n _equipmentSide = 'equipmentSide';\r\n _generalAddressErrorText = 'Address already in use';\r\n _generalBitErrorText = 'Bit already in use';\r\n // _sensorWithErrorBackgroundColor = '#eedc9a';\r\n\r\n _equipmentForm: FormGroup;\r\n _sensorIdInEdit: number = -99;\r\n\r\n _selectedSensorIndex: number;\r\n _allowedSensorTypes: any;\r\n _allowedSensorPositions: any;\r\n _allowedSensorSides: any;\r\n\r\n _isEastWestAppropriateSensorSides: boolean;\r\n _isEditMode: boolean = false;\r\n _isAddMode: boolean = false;\r\n\r\n _sensorTypes: Array = [];\r\n _sensorPositions: Array = [];\r\n _equipmentSides: Array = [];\r\n _equipmentTypes: Array;\r\n _equipmentSubtypes: Array = [];\r\n _bitOptions = bitOptions;\r\n clonedSensors: { [s: string]: BtxLocationSensorConfiguration; } = {};\r\n\r\n _columns = [\r\n { type: 'type', header: 'Type' },\r\n { type: 'position', header: 'Position' },\r\n { type: 'side', header: 'Side' },\r\n { type: 'modbusAddress', header: 'Modbus address' },\r\n { type: 'warningAddress', header: 'Warning address' },\r\n { type: 'warningAddressBit', header: 'Bit' },\r\n { type: 'alarmAddress', header: 'Alarm address' },\r\n { type: 'alarmAddressBit', header: 'Bit' },\r\n { type: 'rateOfChangeWarningAddress', header: 'Rate of change warning' },\r\n { type: 'rateOfChangeWarningAddressBit', header: 'Bit' },\r\n { type: 'rateOfChangeAlarmAddress', header: 'Rate of change alarm' },\r\n { type: 'rateOfChangeAlarmAddressBit', header: 'Bit' },\r\n ];\r\n\r\n _ps: PerfectScrollbar;\r\n _psConfig = {\r\n wheelSpeed: 2,\r\n wheelPropagation: true,\r\n minScrollbarLength: 20\r\n };\r\n\r\n getAllowedSensorTypes() {\r\n var result = this.toDropdownOptions(equipmentSensorMapping[this.equipment.type][this.equipment.subType], this._sensorType);\r\n return result;\r\n }\r\n\r\n _sensorTypeLabel(type: SensorTypeEnum) {\r\n return sensorTypeLabels[type];\r\n }\r\n\r\n _sensorPositionLabel(position: SensorPositionEnum) {\r\n return sensorPositionLabels[position];\r\n }\r\n\r\n _sensorSideLabel(side: EquipmentSideEnum) {\r\n return equipmentSideLabels[side];\r\n }\r\n\r\n constructor(\r\n private _formBuilder: FormBuilder,\r\n private _el: ElementRef,\r\n private _zone: NgZone\r\n ) {\r\n\r\n this._equipmentTypes = Object.keys(equipmentSensorMapping).map(k => ({ label: equipmentTypeLabels[k], value: Number.parseInt(k) }))\r\n\r\n this._equipmentForm = this._formBuilder.group({\r\n type: [\r\n null,\r\n Validators.compose([\r\n Validators.required\r\n ])\r\n ],\r\n subType: [\r\n null,\r\n Validators.compose([\r\n Validators.required\r\n ])\r\n ],\r\n name: [\r\n '',\r\n Validators.compose([\r\n Validators.required,\r\n Validators.minLength(3),\r\n Validators.maxLength(50),\r\n ])\r\n ],\r\n totalRunHoursFirstRegisterAddress: [\r\n null,\r\n Validators.compose([\r\n Validators.required,\r\n digitsValidator,\r\n Validators.min(1),\r\n Validators.max(65535)\r\n ])\r\n ],\r\n totalRunHoursSecondRegisterAddress: [\r\n null,\r\n Validators.compose([\r\n Validators.required,\r\n digitsValidator,\r\n Validators.min(1),\r\n Validators.max(65535)\r\n ])\r\n ],\r\n timeTillMaintenanceAddress: [\r\n null,\r\n ],\r\n shutDownAlarmAddress: [\r\n null,\r\n Validators.compose([\r\n Validators.required,\r\n digitsValidator,\r\n Validators.min(1),\r\n Validators.max(65535)\r\n ])\r\n ],\r\n shutDownAlarmAddressBit: [\r\n null,\r\n Validators.compose([\r\n Validators.required,\r\n Validators.min(1),\r\n Validators.max(16)\r\n ])\r\n ],\r\n maintenanceRequiredWarningAddress: [\r\n null,\r\n Validators.compose([\r\n Validators.required,\r\n digitsValidator,\r\n Validators.min(1),\r\n Validators.max(65535)\r\n ])\r\n ],\r\n maintenanceRequiredWarningAddressBit: [\r\n null,\r\n Validators.compose([\r\n Validators.required,\r\n Validators.min(1),\r\n Validators.max(16)\r\n ])\r\n ]\r\n });\r\n }\r\n\r\n ngOnInit() {\r\n this.reInitScrollBar(0);\r\n this.setFormValues(this.equipment);\r\n this.validateEquipmentAndSensors();\r\n\r\n this._equipmentForm.valueChanges.subscribe(() => {\r\n this.equipment.type = this._equipmentForm.controls.type.value;\r\n this.equipment.subType = this._equipmentForm.controls.subType.value;\r\n this.equipment.name = this._equipmentForm.controls.name.value;\r\n this.equipment.totalRunHoursFirstRegisterAddress = this._equipmentForm.controls.totalRunHoursFirstRegisterAddress.value;\r\n this.equipment.totalRunHoursSecondRegisterAddress = this._equipmentForm.controls.totalRunHoursSecondRegisterAddress.value;\r\n this.equipment.timeTillMaintenanceAddress = this._equipmentForm.controls.timeTillMaintenanceAddress.value;\r\n this.equipment.shutDownAlarmAddress = this._equipmentForm.controls.shutDownAlarmAddress.value;\r\n this.equipment.shutDownAlarmAddressBit = this._equipmentForm.controls.shutDownAlarmAddressBit.value;\r\n this.equipment.maintenanceRequiredWarningAddress = this._equipmentForm.controls.maintenanceRequiredWarningAddress.value;\r\n this.equipment.maintenanceRequiredWarningAddressBit = this._equipmentForm.controls.maintenanceRequiredWarningAddressBit.value;\r\n this.validateEquipmentAndSensors();\r\n });\r\n\r\n this._equipmentSubtypes = ((this.equipment.type || this.equipment.type === 0) ? Object.keys(equipmentSensorMapping[this.equipment.type]) : [])\r\n .map(k => ({ label: equipmentSubTypeLabels[k], value: Number.parseInt(k) }));\r\n }\r\n\r\n ngOnDestroy() {\r\n this._ps && this._ps.destroy();\r\n this._ps = null;\r\n }\r\n\r\n ngAfterViewInit() {\r\n this.ValidateSensorSides();\r\n this.reInitScrollBar(0);\r\n }\r\n\r\n onTypeChanged() {\r\n const equipmentType = this._equipmentForm.controls.type.value;\r\n this._equipmentForm.controls.subType.setValue(null);\r\n this.equipment.type = equipmentType;\r\n this.equipment.subType = null;\r\n this._equipmentSubtypes = ((equipmentType || equipmentType === 0) ? Object.keys(equipmentSensorMapping[equipmentType]) : [])\r\n .map(k => ({ label: equipmentSubTypeLabels[k], value: Number.parseInt(k) }));\r\n }\r\n\r\n onSubTypeChanged() {\r\n const equipmentSubType = this._equipmentForm.controls.subType.value;\r\n this.equipment.subType = equipmentSubType;\r\n this.validateEquipmentSensorsTypePositionAndSide();\r\n }\r\n\r\n getAllowedSensorPositions(sensor: BtxLocationSensorConfiguration) {\r\n var result = this.toDropdownOptions((sensor.type || sensor.type === 0) && equipmentSensorMapping[this.equipment.type][this.type][sensor.type] || null, this._sensorPosition);\r\n return result;\r\n }\r\n\r\n getAllowedSides(sensor: BtxLocationSensorConfiguration) {\r\n let allowedSides = this.toDropdownOptions((sensor.type || sensor.type === 0) && (sensor.position || sensor.position === 0) && equipmentSensorMapping[this.equipment.type][this.equipment.subType][sensor.type][sensor.position] || null, this._equipmentSide);\r\n let result = allowedSides.filter(side => side.label);\r\n if (this._isEastWestAppropriateSensorSides && this.equipment.sensors.length > 1) {\r\n result = result.filter(x => x.value == EquipmentSideEnum.East || x.value == EquipmentSideEnum.West)\r\n } else if (this.equipment.sensors.length > 1) {\r\n result = result.filter(x => x.value == EquipmentSideEnum.North || x.value == EquipmentSideEnum.South)\r\n }\r\n\r\n if (sensor.position != null && result && result.length == 0) {\r\n result.push({ label: '-', value: EquipmentSideEnum.None })\r\n }\r\n return result;\r\n }\r\n\r\n ValidateSensorSides() {\r\n if (this.equipment && this.equipment.sensors && this.equipment.sensors.length > 0) {\r\n let sensorSides = this.equipment.sensors.map(sensor => {\r\n return sensor.side\r\n });\r\n\r\n let countOfEastWestSides = sensorSides.filter(side => side == EquipmentSideEnum.East || side == EquipmentSideEnum.West).length;\r\n let countOfNorthSouthSides = sensorSides.filter(side => side == EquipmentSideEnum.North || side == EquipmentSideEnum.South).length;\r\n this._isEastWestAppropriateSensorSides = countOfEastWestSides >= countOfNorthSouthSides;\r\n this.equipment.sensors.forEach(sensor => {\r\n if (this._isEastWestAppropriateSensorSides) {\r\n if (sensor.side == EquipmentSideEnum.North || sensor.side == EquipmentSideEnum.South) {\r\n sensor.side = null;\r\n }\r\n } else {\r\n if (sensor.side == EquipmentSideEnum.East || sensor.side == EquipmentSideEnum.West) {\r\n sensor.side = null;\r\n }\r\n }\r\n });\r\n }\r\n }\r\n\r\n isPropertyHasValue(value: number, sensor: BtxLocationSensorConfiguration = null) {\r\n if (sensor != null && (sensor.type == SensorTypeEnum.Vibration\r\n || sensor.type == SensorTypeEnum.CurrentDesignLoad\r\n || sensor.type == SensorTypeEnum.CurrentAmpDraw)) {\r\n return true;\r\n }\r\n\r\n return value != null;\r\n }\r\n\r\n isPropertyAddressValid(value: number, sensor: BtxLocationSensorConfiguration = null) {\r\n if (sensor != null && (sensor.type == SensorTypeEnum.Vibration\r\n || sensor.type == SensorTypeEnum.CurrentDesignLoad\r\n || sensor.type == SensorTypeEnum.CurrentAmpDraw)) {\r\n return true;\r\n }\r\n\r\n return value > 0 && value < 65536;\r\n }\r\n\r\n isPropertyBitValid(value: number, sensor: BtxLocationSensorConfiguration = null) {\r\n if (sensor != null && (sensor.type == SensorTypeEnum.Vibration\r\n || sensor.type == SensorTypeEnum.CurrentDesignLoad\r\n || sensor.type == SensorTypeEnum.CurrentAmpDraw)) {\r\n return true;\r\n }\r\n\r\n return value > 0 && value <= 16;\r\n }\r\n\r\n isSensorNotUniq(sensor: BtxLocationSensorConfiguration): boolean {\r\n var result = this.uniqueValidator(SensorViewModel.toViewModel(sensor), EquipmentViewModel.toViewModel(this.equipment));\r\n return result && sensor.index !== this._sensorIdInEdit;\r\n }\r\n\r\n isSensorPropertyNotUniq(sensor: BtxLocationSensorConfiguration, propName: string): boolean {\r\n var result = sensor.validation && sensor.validation.some(v => v.Name === propName);\r\n return result && sensor.index !== this._sensorIdInEdit;\r\n }\r\n\r\n isEquipmentPropertyNotUniq(equipment: BtxLocationEquipmentConfiguration, propName: string): boolean {\r\n var result = equipment.validation && equipment.validation.some(v => v.Name === propName);\r\n return result;\r\n }\r\n\r\n isSensorHasDublicates(sensor: BtxLocationSensorConfiguration): boolean {\r\n if (sensor != null) {\r\n var isSensorHasDublicates = this.uniqueValidator(SensorViewModel.toViewModel(sensor), EquipmentViewModel.toViewModel(this.equipment));\r\n return isSensorHasDublicates && sensor.index !== this._sensorIdInEdit;\r\n }\r\n\r\n return false;\r\n }\r\n\r\n isNeedToDisabledInput(type: SensorTypeEnum) {\r\n return type == SensorTypeEnum.CurrentAmpDraw || type == SensorTypeEnum.CurrentDesignLoad || type == SensorTypeEnum.Vibration;\r\n }\r\n\r\n private toDropdownOptions(map: Object, type: string) {\r\n if (!map) {\r\n return [];\r\n }\r\n\r\n let labels;\r\n switch (type) {\r\n case this._sensorType:\r\n labels = sensorTypeLabels;\r\n break;\r\n case this._sensorPosition:\r\n labels = sensorPositionLabels;\r\n break;\r\n case this._equipmentSide:\r\n if (this.equipment.sensors.length === 0) {\r\n labels = equipmentSideLabels;\r\n } else if (this.equipment.sensors[0].side as EquipmentSideEnum === EquipmentSideEnum.East || this.equipment.sensors[0].side as EquipmentSideEnum === EquipmentSideEnum.West) {\r\n labels = equipmentWestEastSideLabels;\r\n } else if (this.equipment.sensors[0].side as EquipmentSideEnum === EquipmentSideEnum.South || this.equipment.sensors[0].side as EquipmentSideEnum === EquipmentSideEnum.North) {\r\n labels = equipmentNorthSouthSideLabels;\r\n } else {\r\n labels = equipmentSideLabels;\r\n }\r\n break;\r\n default:\r\n return [];\r\n }\r\n\r\n return Object.keys(map).map(k => {\r\n return {\r\n label: labels[k],\r\n value: Number.parseInt(k)\r\n };\r\n });\r\n }\r\n\r\n onSelectSensorType(sensor: BtxLocationSensorConfiguration) {\r\n sensor.position = null;\r\n sensor.side = null;\r\n this._allowedSensorPositions = this.getAllowedSensorPositions(sensor);\r\n\r\n if (this._allowedSensorPositions.length == 1) {\r\n sensor.position = this._allowedSensorPositions[0].value;\r\n }\r\n\r\n this._allowedSensorSides = this.getAllowedSides(sensor);\r\n if (this._allowedSensorSides.length == 1) {\r\n sensor.side = this._allowedSensorSides[0].value;\r\n }\r\n }\r\n\r\n onSelectSensorPosition(sensor: BtxLocationSensorConfiguration) {\r\n sensor.side = null;\r\n this._allowedSensorSides = this.getAllowedSides(sensor);\r\n if (this._allowedSensorSides.length == 1) {\r\n sensor.side = this._allowedSensorSides[0].value;\r\n }\r\n }\r\n\r\n onRowEditInit(sensor: BtxLocationSensorConfiguration) {\r\n this._isEditMode = true;\r\n this._sensorIdInEdit = sensor.index;\r\n this.clonedSensors[sensor.index] = { ...sensor };\r\n this._allowedSensorTypes = this.getAllowedSensorTypes();\r\n this._allowedSensorPositions = this.getAllowedSensorPositions(sensor);\r\n this._allowedSensorSides = this.getAllowedSides(sensor);\r\n this.onDisableUploadButton.emit();\r\n }\r\n\r\n onRowEditSave(sensor: BtxLocationSensorConfiguration) {\r\n this._sensorIdInEdit = -999;\r\n delete this.clonedSensors[sensor.index];\r\n if (sensor.type == SensorTypeEnum.CurrentAmpDraw\r\n || sensor.type == SensorTypeEnum.CurrentDesignLoad\r\n || sensor.type == SensorTypeEnum.Vibration) {\r\n sensor.rateOfChangeAlarmAddress = null;\r\n sensor.rateOfChangeAlarmAddressBit = null;\r\n sensor.rateOfChangeWarningAddress = null;\r\n sensor.rateOfChangeWarningAddressBit = null;\r\n }\r\n\r\n this.validateEquipmentAndSensors();\r\n this._isEditMode = false;\r\n this._isAddMode = false;\r\n this.ValidateSensorSides();\r\n }\r\n\r\n onRowEditCancel(sensor: BtxLocationSensorConfiguration, index: number) {\r\n this._sensorIdInEdit = -999;\r\n if (this.maxSensorIndex == sensor.index && this._isAddMode) {\r\n this.equipment.sensors = this.equipment.sensors.filter(s => s.index != sensor.index);\r\n } else {\r\n this.equipment.sensors[index] = this.clonedSensors[sensor.index];\r\n }\r\n delete this.clonedSensors[sensor.index];\r\n this._isEditMode = false;\r\n this._isAddMode = false;\r\n this.ValidateSensorSides();\r\n this.validateEquipmentAndSensors();\r\n }\r\n\r\n onDeleteSensor(sensor: BtxLocationSensorConfiguration) {\r\n this.equipment.sensors = this.equipment.sensors.filter(s => s.index != sensor.index);\r\n this.ValidateSensorSides();\r\n this.validateEquipmentAndSensors();\r\n }\r\n\r\n newSensorRow() {\r\n if (this._isEditMode || this._isAddMode) {\r\n return;\r\n }\r\n\r\n this._isAddMode = true;\r\n var newSensor = new BtxLocationSensorConfiguration();\r\n this.maxSensorIndex++;\r\n newSensor.index = this.maxSensorIndex;\r\n this._sensorIdInEdit = newSensor.index;\r\n if (!this.equipment.sensors || this.equipment.sensors.length == 0) {\r\n this.equipment.sensors = [];\r\n }\r\n\r\n this.equipment.sensors.push(newSensor);\r\n this.clonedSensors[newSensor.index] = { ...newSensor };\r\n let buttonIdToEdit = \"btn\" + newSensor.index;\r\n setTimeout(() => {\r\n document.getElementById(buttonIdToEdit).click();\r\n this._allowedSensorTypes = this.getAllowedSensorTypes();\r\n }, 10);\r\n return newSensor;\r\n }\r\n\r\n updateEditableOptions() {\r\n this._updateScroll();\r\n }\r\n\r\n reInitScrollBar(timeout?: number, withCheck = false) {\r\n if (withCheck) {\r\n return;\r\n }\r\n\r\n if (this._ps) {\r\n this._ps.destroy();\r\n }\r\n\r\n const createScrollbarFunc = () => {\r\n this._zone.runOutsideAngular(() => {\r\n try {\r\n const el = this._el.nativeElement.querySelector('.scroll-container .ui-table-scrollable-body');\r\n if (!el) {\r\n return;\r\n }\r\n\r\n this._ps = new PerfectScrollbar(el, {\r\n wheelSpeed: 2,\r\n wheelPropagation: true,\r\n minScrollbarLength: 20\r\n });\r\n } catch (error) {\r\n }\r\n })\r\n };\r\n\r\n if (timeout) {\r\n setTimeout(() => {\r\n createScrollbarFunc();\r\n }, timeout);\r\n } else {\r\n createScrollbarFunc();\r\n }\r\n }\r\n\r\n _updateScroll() {\r\n this._ps && this._ps.update();\r\n }\r\n\r\n hasValue(control: FormControl) {\r\n return control.value || control.value === 0;\r\n }\r\n\r\n private setFormValues(equipment: BtxLocationEquipmentConfiguration) {\r\n this._equipmentForm.reset();\r\n if (equipment) {\r\n const {\r\n type,\r\n subType,\r\n name,\r\n totalRunHoursFirstRegisterAddress,\r\n totalRunHoursSecondRegisterAddress,\r\n timeTillMaintenanceAddress,\r\n shutDownAlarmAddress,\r\n shutDownAlarmAddressBit,\r\n maintenanceRequiredWarningAddress,\r\n maintenanceRequiredWarningAddressBit\r\n } = equipment;\r\n this._equipmentForm.setValue({\r\n type,\r\n subType,\r\n name,\r\n totalRunHoursFirstRegisterAddress,\r\n totalRunHoursSecondRegisterAddress,\r\n timeTillMaintenanceAddress,\r\n shutDownAlarmAddress,\r\n shutDownAlarmAddressBit,\r\n maintenanceRequiredWarningAddress,\r\n maintenanceRequiredWarningAddressBit\r\n });\r\n }\r\n }\r\n}\r\n","export * from './upload-equipment-sensor-delete-popup.component';","import { Component, OnInit, EventEmitter, Output } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'greensleeves-upload-equipment-sensor-delete-popup',\r\n templateUrl: './upload-equipment-sensor-delete-popup.component.html',\r\n styles: []\r\n})\r\n\r\nexport class UploadEquipmentSensorDeletePopupComponent implements OnInit {\r\n @Output('sensorDelete')\r\n sensorDelete: EventEmitter = new EventEmitter();\r\n\r\n @Output('equipmentDelete')\r\n equipmentDelete: EventEmitter = new EventEmitter();\r\n\r\n _isHidden = true;\r\n _isSubmitted: boolean;\r\n _isSensorDeletePopup: boolean;\r\n _sensorId: number;\r\n _equipmentIndex: number;\r\n constructor() { }\r\n\r\n ngOnInit() {\r\n this._isSubmitted = false;\r\n this._isHidden = true;\r\n } \r\n \r\n public showSensorView(sensorId: number){\r\n this._sensorId = sensorId;\r\n this._isSubmitted = false;\r\n this._isSensorDeletePopup = true;\r\n this._isHidden = false;\r\n }\r\n\r\n public showEquipmentView(equipmentIndex: number){\r\n this._isSubmitted = false;\r\n this._equipmentIndex = equipmentIndex;\r\n this._isSensorDeletePopup = false;\r\n this._isHidden = false;\r\n }\r\n\r\n async onSubmit() {\r\n this._isSubmitted = true;\r\n if (this._isSensorDeletePopup){\r\n this.sensorDelete.emit(this._sensorId);\r\n } else {\r\n this.equipmentDelete.emit(this._equipmentIndex);\r\n }\r\n\r\n this._isHidden = true;\r\n }\r\n\r\n onCancel(){\r\n this._isHidden = true;\r\n this._isSubmitted = false;\r\n }\r\n}","export * from './upload-equipment-view-data.component';","import { AfterViewChecked, Component, ElementRef, OnDestroy, OnInit } from '@angular/core';\r\nimport { FormGroup } from '@angular/forms';\r\nimport { ErrorModel } from '../../../../../common';\r\nimport { equipmentSchemes, equipmentSensorMapping, equipmentSideLabels, sensorPositionLabels, sensorTypeLabels } from '../../../../constants';\r\nimport { EquipmentSideEnum, EquipmentSubTypeEnum, SensorPositionEnum, SensorTypeEnum, SensorValuesStatusEnum } from '../../../../enums';\r\n\r\nimport { EquipmentViewModel, SensorViewModel } from '../../../../models';\r\nimport { LastTelemetrySensorResponse } from '../../../../models/lastTelemetrySensorResponse.model';\r\nimport { LocationsBtxDataSourceService } from '../../../../services';\r\nimport { BasePopupBehavior } from '../../common';\r\n\r\n\r\n@Component({\r\n selector: 'greensleeves-upload-equipment-view-data',\r\n templateUrl: './upload-equipment-view-data.component.html',\r\n styles: []\r\n})\r\nexport class UploadEquipmentViewDataPopupComponent extends BasePopupBehavior implements OnInit, OnDestroy, AfterViewChecked {\r\n _schema: Array<{ className: string, markers: Array<{ className: string, sensorType: SensorTypeEnum, sensorPosition: SensorPositionEnum, sensorId: number, sensorValueData: string, sensorMarkerData: string, sensorMarkerColor: string, sensorTableData: string, tooltip: string }> }> = [];\r\n\r\n _view = 'view';\r\n _isHidden = true;\r\n _sensorPosition = 'sensorPosition';\r\n _equipmentSide = 'equipmentSide';\r\n _activeEquipment: EquipmentViewModel;\r\n _currentLocationId: number;\r\n _submitted = false;\r\n _sensorForm: FormGroup;\r\n _equipmentSensors: LastTelemetrySensorResponse[];\r\n _receivingTimestamp: string;\r\n _leftSchemeSideName: string = null;\r\n _rightSchemeSideName: string = null;\r\n\r\n _sensorTypes: Array<{ label: string, value: number }> = [];\r\n _sensorPositions: Array<{ label: string, value: number }> = [];\r\n _equipmentSides: Array<{ label: string, value: number }> = [];\r\n\r\n _sensorTempTable: Array<{ label: string, value: string, sensorMarkerColor: string, isRightSide: boolean }> = [];\r\n\r\n _sensorTempTableForLeftSchemeLeftColumn: Array<{ label: string, value: string, sensorMarkerColor: string }> = [];\r\n _sensorTempTableForLeftSchemeRightColumn: Array<{ label: string, value: string, sensorMarkerColor: string }> = [];\r\n _sensorTempTableForRightSchemeLeftColumn: Array<{ label: string, value: string, sensorMarkerColor: string }> = []\r\n _sensorTempTableForRightSchemeRightColumn: Array<{ label: string, value: string, sensorMarkerColor: string }> = []\r\n\r\n constructor(\r\n private _el: ElementRef,\r\n private _locationBtxService: LocationsBtxDataSourceService,) {\r\n super();\r\n }\r\n\r\n ngAfterViewInit() {\r\n this.reInitScrollBar(0);\r\n }\r\n\r\n public show(equipment: EquipmentViewModel, locationId: number) {\r\n this._schema = [];\r\n this._sensorTempTable = [];\r\n this._sensorTempTableForLeftSchemeLeftColumn = [];\r\n this._sensorTempTableForLeftSchemeRightColumn = [];\r\n this._sensorTempTableForRightSchemeLeftColumn = [];\r\n this._sensorTempTableForRightSchemeRightColumn = [];\r\n this._receivingTimestamp = '';\r\n this._activeEquipment = equipment;\r\n this._currentLocationId = locationId;\r\n this.getLastDataForEquipment();\r\n this.buildSchema();\r\n this._isHidden = false;\r\n }\r\n\r\n onClickClose() {\r\n this._isHidden = true;\r\n this._activeEquipment = null;\r\n this._equipmentSensors = [];\r\n }\r\n\r\n buildSchema() {\r\n this._leftSchemeSideName = null;\r\n this._rightSchemeSideName = null;\r\n\r\n if (!this._activeEquipment) {\r\n this._schema = [];\r\n return;\r\n }\r\n\r\n this.sortSensors();\r\n const mapping = equipmentSensorMapping[this._activeEquipment.type][this._activeEquipment.subType];\r\n\r\n let selectedSideA: EquipmentSideEnum;\r\n let selectedSideB: EquipmentSideEnum;\r\n\r\n if (this._activeEquipment.sensors && this._activeEquipment.sensors.length > 0 && (this._activeEquipment.sensors[0].side as EquipmentSideEnum === EquipmentSideEnum.North ||\r\n this._activeEquipment.sensors[0].side as EquipmentSideEnum === EquipmentSideEnum.South)) {\r\n selectedSideA = EquipmentSideEnum.South;\r\n selectedSideB = EquipmentSideEnum.North;\r\n } else {\r\n selectedSideA = EquipmentSideEnum.East;\r\n selectedSideB = EquipmentSideEnum.West;\r\n }\r\n\r\n this._leftSchemeSideName = EquipmentSideEnum[selectedSideA];\r\n this._rightSchemeSideName = EquipmentSideEnum[selectedSideB];\r\n\r\n const sides = [\r\n equipmentSchemes[this._activeEquipment.type][this._activeEquipment.subType][0],\r\n equipmentSchemes[this._activeEquipment.type][this._activeEquipment.subType][selectedSideA],\r\n equipmentSchemes[this._activeEquipment.type][this._activeEquipment.subType][selectedSideB]\r\n ];\r\n\r\n const shouldAddNonSided = Object.keys(sides).some(x => Number(x) as EquipmentSideEnum === EquipmentSideEnum.None);\r\n this._schema = Object.entries(sides)\r\n .filter(([side, schemaClassName]) => !!schemaClassName)\r\n .map(([side, schemaClassName]) => ({ side: Number(side) as EquipmentSideEnum, schemaClassName: schemaClassName as string }))\r\n .map(({ side, schemaClassName: className }) => {\r\n const markers = this._activeEquipment.sensors\r\n .map((sensor, index) => ({ ...sensor, index: index + 1 }))\r\n .filter(sensor => sensor.side === side || sensor.side === side + 2 || (shouldAddNonSided && sensor.side === EquipmentSideEnum.None))\r\n .map(sensor => ({\r\n sensorId: sensor.id,\r\n sensorType: sensor.type,\r\n sensorPosition: sensor.position,\r\n sensorTableData: sensorPositionLabels[sensor.position] + ',\\n' + sensorTypeLabels[sensor.type],\r\n sensorValueData: this.getSensorValue(sensor.id),\r\n sensorMarkerData: sensorTypeLabels[sensor.type],\r\n sensorMarkerColor: this.getSensorColor(sensor.id),\r\n className: mapping[sensor.type][sensor.position][sensor.side],\r\n tooltip: sensor.index + ' - ' + sensorPositionLabels[sensor.position] + '\\n' + sensorTypeLabels[sensor.type],\r\n }))\r\n .filter(marker => !!marker.className);\r\n return {\r\n className,\r\n markers\r\n };\r\n });\r\n\r\n if (this._equipmentSensors && this._equipmentSensors.length > 0) {\r\n const date = new Date(this._equipmentSensors[0].timestamp * 1000);\r\n this._receivingTimestamp = 'Last updating timestamp: ' + date.toLocaleString(\"en-US\");\r\n }\r\n\r\n this._sensorTempTable = [];\r\n\r\n if (this._activeEquipment && this._activeEquipment.subType === EquipmentSubTypeEnum.Belt) {\r\n let isRightTableSide = false;;\r\n this._schema.forEach(s => {\r\n s.markers.forEach(m => {\r\n if (!this.isThisSensorForConveyorBeltScheme(m.sensorType, m.sensorPosition)) {\r\n this._sensorTempTable.push({ label: m.sensorTableData, value: m.sensorValueData, isRightSide: isRightTableSide, sensorMarkerColor: m.sensorMarkerColor })\r\n }\r\n }), isRightTableSide = true\r\n });\r\n\r\n this._sensorTempTableForRightSchemeLeftColumn = this._sensorTempTable.filter(stt => stt.isRightSide).filter((a, i) => i % 2 == 0);\r\n this._sensorTempTableForRightSchemeRightColumn = this._sensorTempTable.filter(stt => stt.isRightSide).filter((a, i) => i % 2 !== 0);\r\n\r\n this._sensorTempTableForLeftSchemeLeftColumn = this._sensorTempTable.filter(stt => !stt.isRightSide).filter((a, i) => i % 2 === 0);\r\n this._sensorTempTableForLeftSchemeRightColumn = this._sensorTempTable.filter(stt => !stt.isRightSide).filter((a, i) => i % 2 !== 0);\r\n\r\n this._schema.forEach(sc => sc.markers = sc.markers.filter(st => this.isThisSensorForConveyorBeltScheme(st.sensorType, st.sensorPosition)));\r\n\r\n }\r\n }\r\n\r\n private isThisSensorForConveyorBeltScheme(sensorType: SensorTypeEnum, sensorPosition: SensorPositionEnum) {\r\n let isThisSensorForConveyorBeltScheme = (sensorType == SensorTypeEnum.BearingTemperature && sensorPosition == SensorPositionEnum.Head) ||\r\n (sensorType == SensorTypeEnum.RubBlockTemperature && sensorPosition == SensorPositionEnum.Head) ||\r\n (sensorType == SensorTypeEnum.BearingTemperature && sensorPosition == SensorPositionEnum.BendHead) ||\r\n (sensorType == SensorTypeEnum.RubBlockTemperature && sensorPosition == SensorPositionEnum.BendHead) ||\r\n (sensorType == SensorTypeEnum.BearingTemperature && sensorPosition == SensorPositionEnum.Tail) ||\r\n (sensorType == SensorTypeEnum.RubBlockTemperature && sensorPosition == SensorPositionEnum.Tail) ||\r\n (sensorType == SensorTypeEnum.BearingTemperature && sensorPosition == SensorPositionEnum.BendTail) ||\r\n (sensorType == SensorTypeEnum.RubBlockTemperature && sensorPosition == SensorPositionEnum.BendTail)\r\n\r\n return isThisSensorForConveyorBeltScheme;\r\n }\r\n\r\n private reInitScrollBar(timeout?: number) {\r\n const el = this._el.nativeElement.querySelector('.popup-container');\r\n this.reInitMainScrollBar(el, timeout);\r\n }\r\n\r\n private getSensorValue(sensorId: number) {\r\n let sensor = this._equipmentSensors.find(x => x.id == sensorId);\r\n if (sensor) {\r\n return sensor.value.toString()\r\n } else {\r\n return '--'\r\n }\r\n }\r\n\r\n private getSensorColor(sensorId: number) {\r\n let sensor = this._equipmentSensors.find(x => x.id == sensorId);\r\n if (sensor) {\r\n if (sensor.status === SensorValuesStatusEnum.Norm) { return 'white'; }\r\n if (sensor.status === SensorValuesStatusEnum.Alarm) { return 'red'; }\r\n if (sensor.status === SensorValuesStatusEnum.Warning) { return 'yellow'; }\r\n if (sensor.status === SensorValuesStatusEnum.Error) { return 'grey'; }\r\n } else {\r\n return 'white';\r\n }\r\n }\r\n\r\n private sortSensors() {\r\n if (!this._activeEquipment) {\r\n return;\r\n }\r\n\r\n const sortByPosition = (a: SensorViewModel, b: SensorViewModel) => {\r\n const aString = `${sensorTypeLabels[a.type]}${sensorPositionLabels[a.position]}${equipmentSideLabels[a.side]}`;\r\n const bString = `${sensorTypeLabels[b.type]}${sensorPositionLabels[b.position]}${equipmentSideLabels[b.side]}`;\r\n if (aString < bString) {\r\n return -1;\r\n }\r\n if (aString > bString) {\r\n return 1;\r\n }\r\n return 0;\r\n };\r\n this._activeEquipment.sensors = this._activeEquipment.sensors.sort(sortByPosition);\r\n }\r\n\r\n private async getLastDataForEquipment() {\r\n this._equipmentSensors = [];\r\n let equipmentSensorIds = this._activeEquipment.sensors.map(x => x.id);\r\n const result = await this._locationBtxService.getLastData(this._currentLocationId, this._activeEquipment.id, equipmentSensorIds);\r\n if (result instanceof ErrorModel) {\r\n } else {\r\n this._equipmentSensors = result;\r\n }\r\n\r\n this.buildSchema();\r\n }\r\n}","export * from './upload-success-popup.component';","import { Component, OnInit, Output, EventEmitter } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'greensleeves-upload-success-popup',\r\n templateUrl: './upload-success-popup.component.html',\r\n styles: []\r\n})\r\nexport class UploadSuccessPopupComponent implements OnInit {\r\n @Output()\r\n onClose = new EventEmitter();\r\n\r\n _isHidden = true;\r\n _submitted = false;\r\n _error: string;\r\n\r\n constructor(\r\n ) { }\r\n\r\n ngOnInit() {\r\n }\r\n\r\n public show() {\r\n this._isHidden = false;\r\n }\r\n\r\n async onSubmit() {\r\n this._error = null;\r\n this._isHidden = true;\r\n this.onClose.next();\r\n }\r\n}","export * from './upload-firmware-install-popup.component';","import { ChangeDetectorRef, Component, OnInit, ViewChild } from '@angular/core';\r\nimport { FormBuilder, FormGroup } from '@angular/forms';\r\nimport { CheckProjectsGetModel, GetInstalledProjectFirmwareInfo, InstallProjectModel, InstallProjectPostModel, UpdateFirmwareResultModel } from '@models';\r\nimport { UpdaterDeviceDatasourceService } from '@services';\r\nimport { MessageService } from 'primeng/api';\r\n\r\nimport { BasePopupBehavior } from '../common';\r\nimport { ErrorModel } from './../../../../common';\r\nimport { ConfirmationDialogEnum, ProjectEnum, UpdateProjectStatusEnum } from './../../../enums';\r\nimport { ConfirmationPopupComponent } from '../confirmation-popup';\r\n\r\n@Component({\r\n selector: 'greensleeves-upload-firmware-install-popup',\r\n templateUrl: './upload-firmware-install-popup.component.html',\r\n providers: [MessageService]\r\n})\r\nexport class UploadFirmwareInstallPopupComponent extends BasePopupBehavior implements OnInit {\r\n @ViewChild(ConfirmationPopupComponent, { read: false, static: false })\r\n private confirmationPopup: ConfirmationPopupComponent;\r\n\r\n _isHidden = true;\r\n _formGroup: FormGroup;\r\n _projectName: string = null;\r\n _locationName: string = null;\r\n _errorMessage: string = null;\r\n _isLoading = false;\r\n\r\n _submitted = false;\r\n _isFileUploaded = false;\r\n _isError = false;\r\n\r\n get _fileName(): string {\r\n return this.fileToUpload ? this.fileToUpload.name : '';\r\n }\r\n\r\n get _isSubmitDisabled(): boolean {\r\n return this._isLoading;\r\n }\r\n\r\n private fileToUpload: File;\r\n private installProject: InstallProjectModel;\r\n constructor(\r\n private _updaterDeviceDataSourceService: UpdaterDeviceDatasourceService,\r\n private cdRef: ChangeDetectorRef,\r\n private formBuilder: FormBuilder,\r\n private _messageService: MessageService,\r\n ) { super(); }\r\n\r\n ngOnInit() {\r\n this._formGroup = this.formBuilder.group({});\r\n }\r\n\r\n onShow(installModel: InstallProjectModel) {\r\n this._isHidden = false;\r\n this.installProject = installModel;\r\n this._locationName = installModel.locationName;\r\n this._projectName = ProjectEnum[installModel.project];\r\n this.cdRef.detectChanges();\r\n }\r\n\r\n onClickClose() {\r\n this._isHidden = true;\r\n this.installProject = null;\r\n this._submitted = false;\r\n this._isError = false;\r\n this._errorMessage = null;\r\n this.fileToUpload = null;\r\n this._isLoading = false;\r\n }\r\n\r\n async onSubmit() {\r\n this._submitted = true;\r\n\r\n if (!this.fileToUpload) {\r\n this._errorMessage = 'File is required';\r\n this._submitted = false;\r\n return;\r\n }\r\n this._isLoading = true;\r\n const getInstalledProjectInfo = {\r\n project: this.installProject.project,\r\n updaterDeviceId: this.installProject.updaterDeviceId,\r\n } as CheckProjectsGetModel;\r\n\r\n let projectInfo = await this._updaterDeviceDataSourceService.getInstalledProjectFirmwareInformation(getInstalledProjectInfo) as GetInstalledProjectFirmwareInfo;\r\n if (projectInfo.status == UpdateProjectStatusEnum.Offline) {\r\n this._messageService.add({ severity: 'error', summary: 'Error!', detail: \"Device is offline or updater was not installed.\", life: 5000 });\r\n this._isLoading = false;\r\n return;\r\n }\r\n\r\n if (projectInfo.isInstalled) {\r\n this.confirmationPopup.show(`This project is already installed, with version ${projectInfo.version}.`, ' Would you like to proceed?', 'Submit');\r\n } else {\r\n this.installPackage(false);\r\n }\r\n }\r\n\r\n async onSelect(onSelectEvent: any) {\r\n const uploadFile = onSelectEvent.currentFiles[0] as File;\r\n\r\n if (uploadFile.size == 0) {\r\n this._errorMessage = 'File size should be more than 0.';\r\n } else if (uploadFile.size >= 30000000) {\r\n this.fileToUpload = uploadFile;\r\n this._isError = true;\r\n this._errorMessage = 'File size should be less than 30 Mb.';\r\n } else {\r\n this._errorMessage = null;\r\n this.fileToUpload = uploadFile;\r\n this._isFileUploaded = false;\r\n this._isError = false;\r\n }\r\n }\r\n\r\n confirmationResult(confirmationResult: ConfirmationDialogEnum) {\r\n if (confirmationResult == ConfirmationDialogEnum.Confirmation) {\r\n this.installPackage(true);\r\n } else {\r\n this._isLoading = false;\r\n }\r\n }\r\n\r\n private async installPackage(overwriteConfig: boolean) {\r\n const request = {\r\n ...this.installProject,\r\n file: this.fileToUpload,\r\n overwriteConfig: overwriteConfig,\r\n } as InstallProjectPostModel;\r\n var result = await this._updaterDeviceDataSourceService.installProjectFirmware(request);\r\n if (result instanceof ErrorModel) {\r\n this._messageService.add({ severity: 'error', summary: 'Error!', detail: result.message, life: 10000 });\r\n }\r\n else if (result instanceof UpdateFirmwareResultModel && !result.payLoadSuccess) {\r\n let location = this._updaterDeviceDataSourceService.locationsUpdaters$.getValue().find(x => x.id == this.installProject.locationId);\r\n this._messageService.add({ severity: 'error', summary: `${location.name} Firmware update error:`, detail: `${result.payLoadMessage}`, life: 10000 });\r\n }\r\n else {\r\n this.onClickClose();\r\n\r\n }\r\n }\r\n}\r\n","export * from './upload-firmware-popup.component'","import { ChangeDetectorRef, Component, OnInit, ViewChild } from '@angular/core';\r\nimport { BasePopupBehavior } from '../common';\r\nimport { FormBuilder, FormGroup } from '@angular/forms';\r\nimport { ErrorCodeEnum, ErrorModel } from 'src/app/common';\r\nimport { UpdaterDeviceDatasourceService } from '@services';\r\nimport { UploadFirmwareRebasePopupComponent } from '../upload-firmware-rebase-popup';\r\nimport { ProjectFirmwareViewModel } from '@models';\r\n\r\n@Component({\r\n selector: 'greensleeves-upload-firmware-popup',\r\n templateUrl: './upload-firmware-popup.component.html',\r\n styleUrls: []\r\n})\r\nexport class UploadFirmwarePopupComponent extends BasePopupBehavior implements OnInit {\r\n @ViewChild(UploadFirmwareRebasePopupComponent, { read: false, static: false })\r\n private rebaseComponent: UploadFirmwareRebasePopupComponent;\r\n\r\n _formGroup: FormGroup;\r\n\r\n _isHidden = true;\r\n _isNeedToPreventClose = true;\r\n _submitted = false;\r\n _isLoading = false;\r\n _directoryName: string = null;\r\n _toUpdate = true;\r\n _isBigFile = false;\r\n _isFileUploaded = false;\r\n _isWrongFileType = false;\r\n\r\n _errorMessage: string = null;\r\n\r\n _files: ProjectFirmwareViewModel[];\r\n\r\n get _fileName(): string {\r\n return this.fileToUpload ? this.fileToUpload.name : '';\r\n }\r\n\r\n get _isSubmitDisabled(): boolean {\r\n return this._isLoading;\r\n }\r\n\r\n private fileToUpload: File;\r\n private isNeedToreInitScrollbar = false;\r\n\r\n\r\n constructor(\r\n private _updaterDeviceDatasourceService: UpdaterDeviceDatasourceService,\r\n private cdRef: ChangeDetectorRef,\r\n private formBuilder: FormBuilder,\r\n ) {\r\n super();\r\n }\r\n\r\n ngOnInit() {\r\n this._formGroup = this.formBuilder.group({});\r\n }\r\n\r\n ngAfterViewChecked() {\r\n if (this._isFileUploaded && this.isNeedToreInitScrollbar) {\r\n this.isNeedToreInitScrollbar = false;\r\n }\r\n }\r\n\r\n async onSubmit() {\r\n this._submitted = true;\r\n\r\n if (!this.fileToUpload) {\r\n this._errorMessage = 'File is required';\r\n this._submitted = false;\r\n return;\r\n }\r\n\r\n let confirmationNeeded = false;\r\n\r\n this._files.forEach(f => {\r\n if (f.name == this.fileToUpload.name) {\r\n confirmationNeeded = true;\r\n }\r\n });\r\n\r\n if (confirmationNeeded) {\r\n this.rebaseComponent.onShow(this._directoryName, this.fileToUpload.name);\r\n } else {\r\n await this.uploadConfigurationFile(true);\r\n }\r\n }\r\n\r\n onClickClose() {\r\n this._isHidden = false;\r\n this.closePopup();\r\n }\r\n\r\n async onSelect(onSelectEvent: any) {\r\n const uploadFile = onSelectEvent.currentFiles[0] as File;\r\n\r\n if (uploadFile.size == 0) {\r\n this._errorMessage = 'File size should be more than 0.';\r\n } else if (uploadFile.size >= 30000000) {\r\n this.fileToUpload = uploadFile;\r\n this._isBigFile = true;\r\n this._errorMessage = 'File size should be less than 30 Mb.';\r\n } else {\r\n this._errorMessage = null;\r\n this.fileToUpload = uploadFile;\r\n this._isFileUploaded = false;\r\n this._isBigFile = false;\r\n this._isWrongFileType = false;\r\n }\r\n }\r\n\r\n public show(directoryName: string, files: ProjectFirmwareViewModel[]) {\r\n this._isLoading = false;\r\n this._submitted = false;\r\n this._isHidden = false;\r\n this._files = files;\r\n this._directoryName = directoryName;\r\n this.cdRef.detectChanges();\r\n }\r\n\r\n private closePopup() {\r\n this._isLoading = false;\r\n this._isHidden = true;\r\n this.fileToUpload = null;\r\n this._errorMessage = null;\r\n this._isFileUploaded = false;\r\n this._isBigFile = false;\r\n this._isWrongFileType = false;\r\n this._formGroup = this.formBuilder.group({});\r\n }\r\n\r\n async uploadConfigurationFile(value: boolean) {\r\n this._toUpdate = value;\r\n if (!this._toUpdate) {\r\n this.fileToUpload = null;\r\n }\r\n\r\n if (this._toUpdate) {\r\n this._isLoading = true;\r\n const result = await this._updaterDeviceDatasourceService.uploadFirmware({ directoryName: this._directoryName, insertFile: this.fileToUpload });\r\n if (result) {\r\n if (result instanceof ErrorModel) {\r\n if (result.code == ErrorCodeEnum.InvalidModelState) {\r\n this._errorMessage = result.errors[0];\r\n } else {\r\n this._errorMessage = result.message;\r\n }\r\n } else {\r\n this._isFileUploaded = true;\r\n this.isNeedToreInitScrollbar = true;\r\n }\r\n this._submitted = false;\r\n }\r\n\r\n this.onClickClose();\r\n }\r\n }\r\n}\r\n","export * from './upload-firmware-rebase-popup.component';","import { Component, EventEmitter, OnInit, Output } from '@angular/core';\r\nimport { BasePopupBehavior } from '../common';\r\n\r\n@Component({\r\n selector: 'greensleeves-upload-firmware-rebase-popup',\r\n templateUrl: './upload-firmware-rebase-popup.component.html',\r\n styleUrls: []\r\n})\r\nexport class UploadFirmwareRebasePopupComponent extends BasePopupBehavior implements OnInit {\r\n @Output() onUploadFile = new EventEmitter();\r\n\r\n _isHidden = true;\r\n _submitted = false;\r\n _selectedProjectGroup: string;\r\n _projectName: string;\r\n\r\n constructor() {\r\n super();\r\n }\r\n\r\n onShow(selectedProjectGroup: string, projectName: string){\r\n this._isHidden = false;\r\n this._selectedProjectGroup = selectedProjectGroup;\r\n this._projectName = projectName;\r\n }\r\n\r\n ngOnInit() {\r\n }\r\n\r\n onSubmit(){\r\n this._submitted = true;\r\n this.onUploadFile.emit(true);\r\n this._submitted = false;\r\n this._selectedProjectGroup = null;\r\n this._isHidden = true;\r\n }\r\n\r\n onClickCancel(){\r\n this.onUploadFile.emit(false);\r\n this._isHidden = true;\r\n this._submitted = false;\r\n this._selectedProjectGroup = null;\r\n }\r\n}\r\n","export * from './user-profile-popup.component';","import { Component, OnInit } from '@angular/core';\r\nimport { FormBuilder, FormGroup, Validators } from '@angular/forms';\r\nimport { Router } from '@angular/router';\r\n\r\nimport { AccountDatasourceService } from '@services';\r\nimport { LocalStorageService, UserRoleEnum } from './../../../../common';\r\nimport { AccountProfileModel } from './../../../models';\r\n\r\n@Component({\r\n selector: 'greensleeves-user-profile-popup',\r\n templateUrl: './user-profile-popup.component.html',\r\n styles: []\r\n})\r\nexport class UserProfilePopupComponent implements OnInit {\r\n _isHidden = true;\r\n _userProfileForm: FormGroup;\r\n _role: UserRoleEnum;\r\n _roleEnum = UserRoleEnum;\r\n _submitted = false;\r\n private userId: number;\r\n\r\n get isUserHasCompany() {\r\n return this._role != UserRoleEnum.ServiceUser && this._role != UserRoleEnum.SalesUser;\r\n }\r\n\r\n constructor(private _formBuilder: FormBuilder,\r\n private _localStorageService: LocalStorageService,\r\n private _accountSource: AccountDatasourceService,\r\n private _router: Router\r\n ) { }\r\n\r\n ngOnInit() {\r\n if (this._router.url.indexOf('/back-door') > -1) {\r\n this._role = UserRoleEnum.Vendor;\r\n return;\r\n }\r\n const info = this._localStorageService.getLoginInfo();\r\n this._role = info ? info.role : null;\r\n }\r\n\r\n public async show() {\r\n let profile = await this._accountSource.getProfile() as AccountProfileModel;\r\n if (profile) {\r\n this.initForm(profile);\r\n this._isHidden = false;\r\n this.userId = profile.userId;\r\n }\r\n this._submitted = false;\r\n }\r\n\r\n onCancel() {\r\n this._isHidden = true;\r\n }\r\n\r\n async onSubmit() {\r\n this._submitted = true;\r\n if (this._userProfileForm.invalid) {\r\n return;\r\n }\r\n let profile = { ...this._userProfileForm.value, userId: this.userId } as AccountProfileModel;\r\n await this._accountSource.editProfile(profile);\r\n this._submitted = true;\r\n this.onCancel();\r\n }\r\n\r\n private initForm(profile: AccountProfileModel) {\r\n this._userProfileForm = this._formBuilder.group({\r\n companyName: [\r\n { value: profile.companyName, disabled: this._role != this._roleEnum.Vendor }\r\n ],\r\n firstName: [\r\n profile.firstName,\r\n Validators.compose([\r\n Validators.required,\r\n Validators.minLength(3),\r\n Validators.maxLength(50),\r\n ])\r\n ],\r\n lastName: [\r\n profile.lastName,\r\n Validators.compose([\r\n Validators.required,\r\n Validators.minLength(3),\r\n Validators.maxLength(50),\r\n ])\r\n ],\r\n });\r\n if (this._role != this._roleEnum.ServiceUser) {\r\n this._userProfileForm.controls.companyName.setValidators(\r\n Validators.compose([\r\n Validators.required,\r\n Validators.minLength(3),\r\n Validators.maxLength(50),\r\n ]));\r\n }\r\n }\r\n}\r\n","export * from './vendor-add-popup.component'","import { Subscription } from 'rxjs';\r\nimport { TreeNode } from 'primeng/api';\r\nimport { Component, OnInit, OnDestroy } from '@angular/core';\r\nimport { FormBuilder, FormGroup, Validators } from '@angular/forms';\r\nimport { Router } from '@angular/router';\r\n\r\nimport { VendorInviteModel, VendorViewModel } from './../../../models';\r\nimport { emailValidator, ErrorCodeEnum, ErrorModel, LocalStorageService, UserRoleEnum } from '../../../../common';\r\nimport { LocationsItxDatasourceService, VendorDataSourceService } from '../../../services';\r\n\r\n@Component({\r\n selector: 'greensleeves-vendor-add-popup',\r\n templateUrl: './vendor-add-popup.component.html',\r\n styles: []\r\n})\r\nexport class VendorAddPopupComponent implements OnInit, OnDestroy {\r\n _isHidden = true;\r\n _submitted = false;\r\n _role: UserRoleEnum;\r\n _vendorForm: FormGroup;\r\n _invalidEmail = false;\r\n _nodeSelected: TreeNode[] = [];\r\n _itxLocations: TreeNode[] = [];\r\n _noBinSelected = false;\r\n _disableSubmit = false;\r\n private _locationsSubscription: Subscription;\r\n\r\n get _isCompanyAdmin() {\r\n return this._role === UserRoleEnum.CompanyAdmin;\r\n }\r\n\r\n constructor(private _formBuilder: FormBuilder,\r\n private _localStorageService: LocalStorageService,\r\n private _locationItxData: LocationsItxDatasourceService,\r\n private _vendorDataServie: VendorDataSourceService,\r\n private _router: Router\r\n ) {\r\n }\r\n\r\n ngOnInit() {\r\n const loginInfo = this._localStorageService.getLoginInfo();\r\n this._role = loginInfo ? loginInfo.role : null;\r\n if (this._router.url.indexOf('/back-door') > -1) {\r\n this._role = UserRoleEnum.CompanyAdmin;\r\n }\r\n if (this._isCompanyAdmin) {\r\n this._locationItxData.getLocationsWithBinsForCompany(loginInfo ? loginInfo.companyId : 0);\r\n this._locationsSubscription = this._locationItxData.locationsItx$.subscribe(data => {\r\n if (data) {\r\n this._itxLocations = data.map(i => ({ label: i.locationName, key: i.id.toString() + i.locationName, data: i.id, expanded: false, children: i.itxBins.map(b => ({ label: b.name, data: b.id, key: b.id.toString() + b.name })) }));\r\n }\r\n });\r\n }\r\n\r\n this._vendorForm = this._formBuilder.group({\r\n email: [\r\n '',\r\n Validators.compose([\r\n Validators.required,\r\n Validators.email,\r\n emailValidator(),\r\n Validators.minLength(3),\r\n Validators.maxLength(50),\r\n ])\r\n ],\r\n });\r\n\r\n this._vendorForm.valueChanges.subscribe(() => this._invalidEmail = false);\r\n }\r\n\r\n ngOnDestroy() {\r\n this._locationsSubscription && this._locationsSubscription.unsubscribe();\r\n this._locationsSubscription = null;\r\n }\r\n\r\n public show() {\r\n this.clearForm();\r\n this._isHidden = false;\r\n }\r\n\r\n nodeSelect(event) {\r\n if (this._submitted) {\r\n this._noBinSelected = false;\r\n }\r\n\r\n if (!event.node.parent) {\r\n event.node.expanded = true;\r\n }\r\n }\r\n\r\n onSubmit() {\r\n this._submitted = true;\r\n this._noBinSelected = false;\r\n this._disableSubmit = true;\r\n if (this._vendorForm.invalid || this._invalidEmail) {\r\n if (!this._nodeSelected || this._nodeSelected.length === 0) {\r\n this._noBinSelected = true;\r\n this.collapseTree();\r\n }\r\n this._disableSubmit = false;\r\n return;\r\n }\r\n if (!this._nodeSelected || this._nodeSelected.length === 0) {\r\n this._noBinSelected = true;\r\n this.collapseTree();\r\n this._disableSubmit = false;\r\n return;\r\n }\r\n const inviteModel = new VendorInviteModel;\r\n inviteModel.email = this._vendorForm.value.email;\r\n inviteModel.itxStorageIds = [];\r\n this._nodeSelected.forEach(i => {\r\n if (i.parent) {\r\n inviteModel.itxStorageIds.push(i.data);\r\n }\r\n });\r\n this._vendorDataServie.invite(inviteModel).then((response: VendorViewModel) => {\r\n if (response instanceof ErrorModel && response.code === ErrorCodeEnum.UserAlreadyExist) {\r\n this._invalidEmail = true;\r\n this._disableSubmit = false;\r\n } else if (response) {\r\n const loginInfo = this._localStorageService.getLoginInfo();\r\n this._vendorDataServie.get(loginInfo.companyId);\r\n this.resetForm();\r\n }\r\n });\r\n }\r\n\r\n private clearForm() {\r\n this._submitted = false;\r\n this._noBinSelected = false;\r\n this._vendorForm.reset();\r\n this._itxLocations.forEach(i => { i.partialSelected = false });\r\n this._nodeSelected = [];\r\n this.collapseTree()\r\n this._disableSubmit = false;\r\n }\r\n\r\n private collapseTree() {\r\n this._itxLocations.forEach(i => i.expanded = false);\r\n }\r\n\r\n private resetForm() {\r\n this.clearForm();\r\n this._isHidden = true;\r\n }\r\n}\r\n","export * from './vendor-delete-popup.component'","import { Component, OnInit } from '@angular/core';\r\n\r\nimport { VendorDataSourceService } from '../../../services';\r\nimport { VendorViewModel } from './../../../models/vendor.model';\r\n\r\n@Component({\r\n selector: 'greensleeves-vendor-delete-popup',\r\n templateUrl: './vendor-delete-popup.component.html',\r\n styles: []\r\n})\r\nexport class VendorDeletePopupComponent implements OnInit {\r\n _isHidden = true;\r\n _vendor: VendorViewModel;\r\n _companyId: number;\r\n constructor(\r\n private _vendorDataSourceService: VendorDataSourceService\r\n ) { }\r\n\r\n ngOnInit() {\r\n }\r\n\r\n async onSubmit() {\r\n const result = await this._vendorDataSourceService.deleteVendor(this._vendor.id,this._companyId);\r\n if (result != null) {\r\n this._isHidden = true;\r\n this._vendor = null;\r\n }\r\n }\r\n\r\n onCancel() {\r\n this._isHidden = true;\r\n this._vendor = null;\r\n }\r\n\r\n public show(vendor: VendorViewModel, companyId: number) {\r\n this._isHidden = false;\r\n this._vendor = vendor;\r\n this._companyId=companyId;\r\n }\r\n\r\n}\r\n","export * from './vendor-edit-popup.component';","import { Component, OnInit, OnDestroy } from '@angular/core';\r\nimport { TreeNode } from 'primeng/api';\r\nimport { Subscription } from 'rxjs';\r\n\r\nimport { UserStatusEnum } from './../../../enums';\r\nimport { LocationsItxDatasourceService, VendorDataSourceService, } from './../../../services';\r\nimport { LocalStorageService, UserRoleEnum } from './../../../../common';\r\nimport { VendorViewModel, VendorEditModel } from './../../../models';\r\n\r\n@Component({\r\n selector: 'greensleeves-vendor-edit-popup',\r\n templateUrl: './vendor-edit-popup.component.html',\r\n styles: []\r\n})\r\nexport class VendorEditPopupComponent implements OnInit, OnDestroy {\r\n _isHidden = true;\r\n _vendor: VendorViewModel;\r\n _submitted = false;\r\n _nodeSelected: TreeNode[] = [];\r\n _itxLocations: TreeNode[];\r\n _noBinSelected = false;\r\n _disableSubmit = false;\r\n _selectedStatus;\r\n private _locationsSubscription: Subscription;\r\n _role: UserRoleEnum;\r\n\r\n get _isCompanyAdmin() {\r\n return this._role === UserRoleEnum.CompanyAdmin;\r\n }\r\n constructor(private _localStorageService: LocalStorageService,\r\n private _locationItxData: LocationsItxDatasourceService,\r\n private _vendorDataServie: VendorDataSourceService) { }\r\n\r\n ngOnInit() {\r\n const loginInfo = this._localStorageService.getLoginInfo();\r\n this._role = loginInfo ? loginInfo.role : null;\r\n if (this._isCompanyAdmin) {\r\n this._locationItxData.getLocationsWithBinsForCompany(loginInfo ? loginInfo.companyId : 0);\r\n this._locationsSubscription = this._locationItxData.locationsItx$.subscribe(data => {\r\n if (data) {\r\n this._itxLocations = data.map(i => ({ label: i.locationName, key: i.id.toString() + i.locationName, data: i.id, expanded: false, partialSelected: false, children: i.itxBins.map(b => ({ label: b.name, data: b.id, key: b.id.toString() + b.name })) }));\r\n }\r\n });\r\n }\r\n }\r\n\r\n public show(vendor: VendorViewModel) {\r\n this._vendor = vendor;\r\n this._selectedStatus = UserStatusEnum[vendor.status];\r\n this.clearForm();\r\n this.setSelectedItem();\r\n this._isHidden = false;\r\n this._disableSubmit = false;\r\n }\r\n\r\n ngOnDestroy() {\r\n this._locationsSubscription && this._locationsSubscription.unsubscribe();\r\n this._locationsSubscription = null;\r\n }\r\n\r\n onCancel() {\r\n this._vendorDataServie.markCompanyUserForOthersAsUpdated(this._vendor, false);\r\n this._isHidden = true;\r\n this._submitted = false;\r\n }\r\n\r\n nodeSelect(event) {\r\n if (this._submitted) {\r\n this._noBinSelected = false;\r\n }\r\n if (!event.node.parent) {\r\n event.node.expanded = true;\r\n }\r\n }\r\n\r\n async onSubmit() {\r\n this._submitted = true;\r\n this._disableSubmit = true;\r\n this._noBinSelected = false;\r\n if (!this._nodeSelected || this._nodeSelected.length == 0) {\r\n this._noBinSelected = true;\r\n this._disableSubmit = false;\r\n this.collapseTree();\r\n return;\r\n }\r\n\r\n const editModel = new VendorEditModel();\r\n editModel.id = this._vendor.id;\r\n editModel.status = Number(UserStatusEnum[this._selectedStatus]);\r\n this._nodeSelected.forEach(i => {\r\n if (i.parent) {\r\n editModel.itxStorageIds.push(i.data);\r\n }\r\n });\r\n try {\r\n const result = await this._vendorDataServie.editForCompany(editModel);\r\n if (result) {\r\n this._isHidden = true;\r\n this._submitted = false;\r\n this.clearForm();\r\n }\r\n } catch (error) {\r\n this._disableSubmit = false;\r\n console.log('ERROR', error)\r\n }\r\n\r\n }\r\n\r\n private setSelectedItem() {\r\n this._itxLocations.forEach(item => {\r\n this._vendor.itxLocations.forEach(value => {\r\n if (item.data == value.id) {\r\n item.expanded = true;\r\n let parentNode = { label: value.name, key: value.id.toString() + value.name, data: value.id, expanded: true, children: undefined, parent: undefined, partialSelected: true };\r\n var childrenNode = value.bins.map(b => ({ label: b.name, data: b.id, key: b.id.toString() + b.name, parent: parentNode, partialSelected: false }));\r\n parentNode.children = childrenNode;\r\n if (value.bins.length == item.children.length) {\r\n parentNode.partialSelected = false;\r\n this._nodeSelected.push(parentNode);\r\n }\r\n this._nodeSelected.push(...childrenNode);\r\n item.partialSelected = parentNode.partialSelected;\r\n }\r\n });\r\n });\r\n }\r\n\r\n private collapseTree() {\r\n this._itxLocations.forEach(i => i.expanded = false);\r\n }\r\n\r\n private clearForm() {\r\n this._submitted = false;\r\n this._noBinSelected = false;\r\n this._itxLocations.forEach(i => { i.partialSelected = false });\r\n this._nodeSelected = [];\r\n this.collapseTree()\r\n this._disableSubmit = false;\r\n }\r\n}\r\n","export * from './sales-users-tab.component';","import { Component, OnDestroy, OnInit, ViewChild } from '@angular/core';\r\nimport { Subscription } from 'rxjs';\r\n\r\nimport { LocalStorageService, UserRoleEnum } from '../../../common';\r\nimport { ColumnTypeEnum, UserStatusEnum } from '../../enums';\r\nimport { ServiceUserAddPopupComponent, ServiceUserDeletePopupComponent, ServiceUserEditPopupComponent } from '../popups';\r\nimport { SalesUserViewModel } from './../../models';\r\nimport { SalesUsersDatasourceService } from './../../services';\r\n\r\n@Component({\r\n selector: 'greensleeves-sales-users-tab',\r\n templateUrl: './sales-users-tab.component.html',\r\n styles: []\r\n})\r\nexport class SalesUsersTabComponent implements OnInit, OnDestroy {\r\n @ViewChild(ServiceUserEditPopupComponent, { read: false, static: false })\r\n private editModal: ServiceUserEditPopupComponent;\r\n\r\n @ViewChild(ServiceUserAddPopupComponent, { read: false, static: false })\r\n private addModal: ServiceUserAddPopupComponent;\r\n\r\n @ViewChild(ServiceUserDeletePopupComponent, { read: false, static: false })\r\n private deleteModal: ServiceUserDeletePopupComponent;\r\n\r\n _role: UserRoleEnum;\r\n _gridData: SalesUserViewModel[];\r\n _columnTypeEnum = ColumnTypeEnum;\r\n _userStatus = UserStatusEnum;\r\n\r\n private salesUsersSubscription: Subscription;\r\n\r\n get _columns() {\r\n return [\r\n { header: 'First name', columnType: ColumnTypeEnum.UserFirstName, dataField: 'firstName' },\r\n { header: 'Last name', columnType: ColumnTypeEnum.UserLastName, dataField: 'lastName' },\r\n { header: 'Email', dataField: 'email' },\r\n { header: 'Last login date', columnType: ColumnTypeEnum.Date, dataField: 'lastLoginDate' },\r\n { header: 'Status', columnType: ColumnTypeEnum.Status, dataField: 'status', width: \"80\" },\r\n { header: '', columnType: ColumnTypeEnum.Edit, width: \"46\" },\r\n { header: '', columnType: ColumnTypeEnum.Delete, dataField: 'id', width: \"46\" }\r\n ];\r\n }\r\n\r\n constructor(\r\n private _salesUserDatasouceService: SalesUsersDatasourceService,\r\n private _localStorageService: LocalStorageService,\r\n ) { }\r\n\r\n ngOnInit() {\r\n const info = this._localStorageService.getLoginInfo();\r\n this._role = info ? info.role : null;\r\n\r\n this.salesUsersSubscription = this._salesUserDatasouceService.salesUsers$.subscribe(data => this._gridData = data);\r\n this._salesUserDatasouceService.getAll();\r\n }\r\n\r\n ngOnDestroy() {\r\n this.salesUsersSubscription && this.salesUsersSubscription.unsubscribe();\r\n this.salesUsersSubscription = null;\r\n }\r\n\r\n onClickEdit(salesUser: SalesUserViewModel) {\r\n this.editModal.showSalesUserEdit(salesUser);\r\n }\r\n\r\n onClickAdd() {\r\n this.addModal.showForSalesUser();\r\n }\r\n\r\n onClickDelete(salesUser: SalesUserViewModel) {\r\n this.deleteModal.showSalesUser(salesUser.id);\r\n }\r\n\r\n}\r\n","export * from './service-users-grid';\r\nexport * from './service-users-tab.component';","export * from './service-users-grid.component';","import { Component, OnInit, OnDestroy, ViewChild } from '@angular/core';\r\n\r\nimport { ColumnTypeEnum, UserStatusEnum } from '../../../enums';\r\nimport { ServiceUserViewModel, ServiceUserPostModel } from '../../../models';\r\nimport { ServiceUsersDataSourceService } from '../../../services';\r\nimport { LocalStorageService, UserRoleEnum } from '../../../../common';\r\nimport { Subscription } from 'rxjs';\r\nimport { ServiceUserEditPopupComponent, ServiceUserDeletePopupComponent } from '../../popups';\r\n\r\n@Component({\r\n selector: 'greensleeves-service-users-grid',\r\n templateUrl: './service-users-grid.component.html'\r\n})\r\n\r\nexport class ServiceUsersGridComponent implements OnInit, OnDestroy {\r\n static Service_USER_ID_KEY = 'id';\r\n static SORT_ORDER_DEFAULT = -1;\r\n\r\n @ViewChild(ServiceUserEditPopupComponent, { read: false, static: false })\r\n _editModal: ServiceUserEditPopupComponent;\r\n\r\n @ViewChild(ServiceUserDeletePopupComponent, { read: false, static: false })\r\n _deleteModal: ServiceUserDeletePopupComponent;\r\n\r\n _columnTypeEnum = ColumnTypeEnum;\r\n _userStatus = UserStatusEnum;\r\n _sortField = ServiceUsersGridComponent.Service_USER_ID_KEY;\r\n _sortOrder = ServiceUsersGridComponent.SORT_ORDER_DEFAULT;\r\n _gridData: ServiceUserViewModel[];\r\n _locationNameKey = ServiceUsersGridComponent.Service_USER_ID_KEY;\r\n _currentUserId : string;\r\n\r\n _searchPhrase: string = '';\r\n\r\n _serviceUsersSubscription: Subscription;\r\n _role: UserRoleEnum;\r\n\r\n get _isServiceUser(): boolean {\r\n return this._role === UserRoleEnum.ServiceUser;\r\n }\r\n\r\n get _columns() {\r\n return [\r\n { header: 'First name', columnType: ColumnTypeEnum.UserFirstName, dataField: 'firstName' },\r\n { header: 'Last name', columnType: ColumnTypeEnum.UserLastName, dataField: 'lastName' },\r\n { header: 'Email', dataField: 'email' },\r\n { header: 'Last login date', columnType: ColumnTypeEnum.Date, dataField: 'lastLoginDate' },\r\n { header: '', columnType: ColumnTypeEnum.Edit, width: \"46\" },\r\n { header: '', columnType: ColumnTypeEnum.Delete, dataField: 'id', width: \"46\" }\r\n ];\r\n }\r\n\r\n constructor(\r\n private _serviceUsersService: ServiceUsersDataSourceService,\r\n private _localStorageService: LocalStorageService\r\n ) {\r\n }\r\n\r\n ngOnInit() {\r\n const info = this._localStorageService.getLoginInfo();\r\n this._role = info ? info.role : null;\r\n this._currentUserId = info.id;\r\n\r\n this._serviceUsersService.get();\r\n this._serviceUsersSubscription = this._serviceUsersService.serviceUsers$\r\n .subscribe(data => this._gridData = data);\r\n }\r\n\r\n ngOnDestroy() {\r\n this._serviceUsersSubscription && this._serviceUsersSubscription.unsubscribe();\r\n this._serviceUsersSubscription = null;\r\n }\r\n\r\n onClickEdit(serviceUser: ServiceUserViewModel) {\r\n this._editModal.show(serviceUser);\r\n }\r\n\r\n onClickDelete(serviceUser: ServiceUserViewModel) {\r\n this._deleteModal.show(serviceUser);\r\n }\r\n}","import { Component, ViewChild } from '@angular/core';\r\nimport { ServiceUserAddPopupComponent } from '../popups';\r\nimport { LocalStorageService, UserRoleEnum } from '../../../common';\r\n\r\n@Component({\r\n selector: 'greensleeves-service-users-tab',\r\n templateUrl: './service-users-tab.component.html'\r\n})\r\nexport class ServiceUsersTabComponent {\r\n @ViewChild(ServiceUserAddPopupComponent, { read: false, static: false })\r\n _addModal: ServiceUserAddPopupComponent;\r\n _role: UserRoleEnum;\r\n \r\n constructor(\r\n private _localStorageService: LocalStorageService,\r\n ) {}\r\n\r\n ngOnInit() {\r\n const info = this._localStorageService.getLoginInfo();\r\n this._role = info ? info.role : null;\r\n }\r\n\r\n onClickAdd() {\r\n this._addModal.show();\r\n }\r\n}\r\n","export * from './vendors-tab.component'\r\nexport * from './vendors-grid'","export * from './vendors-grid.component'","import { Component, OnInit, ViewChild } from '@angular/core';\r\nimport { FormBuilder, FormGroup } from '@angular/forms';\r\n\r\nimport { VendorDeletePopupComponent, VendorEditPopupComponent } from './../../popups';\r\nimport { VendorViewModel } from './../../../models';\r\nimport { Subscription } from 'rxjs';\r\nimport { VendorDataSourceService } from '../../../services';\r\nimport { LocalStorageService, UserRoleEnum } from '../../../../common';\r\nimport { ColumnTypeEnum, UserStatusEnum } from '../../../enums';\r\n\r\n@Component({\r\n selector: 'greensleeves-vendors-grid',\r\n templateUrl: './vendors-grid.component.html',\r\n styles: []\r\n})\r\nexport class VendorsGridComponent implements OnInit {\r\n static LOCATION_NAME_KEY = 'locations';\r\n static SORT_ORDER_DEFAULT = -1;\r\n\r\n @ViewChild(VendorDeletePopupComponent, { read: false, static: false })\r\n _deletModal: VendorDeletePopupComponent;\r\n\r\n @ViewChild(VendorEditPopupComponent, { read: false, static: false })\r\n _editModal: VendorEditPopupComponent;\r\n\r\n _role: UserRoleEnum;\r\n _searchPhrase: string = '';\r\n _searchForm: FormGroup;\r\n _vendorSubscription: Subscription;\r\n _gridData: VendorViewModel[];\r\n _columnTypeEnum = ColumnTypeEnum;\r\n _userStatus = UserStatusEnum;\r\n\r\n _sortField = VendorsGridComponent.LOCATION_NAME_KEY;\r\n _sortOrder = VendorsGridComponent.SORT_ORDER_DEFAULT;\r\n\r\n get _isCompanyAdmin(): boolean {\r\n return this._role === UserRoleEnum.CompanyAdmin;\r\n }\r\n\r\n get _columns() {\r\n return [\r\n { header: 'Company', columnType: ColumnTypeEnum.Company, dataField: 'companyName' },\r\n { header: 'First name', columnType: ColumnTypeEnum.UserFirstName, dataField: 'firstName' },\r\n { header: 'Last name', columnType: ColumnTypeEnum.UserLastName, dataField: 'lastName' },\r\n { header: 'Email', dataField: 'email' },\r\n ...(this._gridData.some(function (el) { return el.itxLocations.length > 0 }) ? [{ header: 'ITX Locations', columnType: ColumnTypeEnum.UserLocationNames, dataField: 'itxLocationsNames' }] : []),\r\n { header: 'Storages', columnType: ColumnTypeEnum.Bins, dataField: 'countOfBins' },\r\n { header: 'Last login date', columnType: ColumnTypeEnum.Date, dataField: 'lastLoginDate' },\r\n { header: 'Status', columnType: ColumnTypeEnum.Status, dataField: 'status' },\r\n { header: '', columnType: ColumnTypeEnum.Edit, width: \"46\" },\r\n { header: '', columnType: ColumnTypeEnum.Delete, width: \"46\" },\r\n ];\r\n }\r\n\r\n constructor(\r\n private _vendorService: VendorDataSourceService,\r\n private _localStorageService: LocalStorageService,\r\n formBuilder: FormBuilder) {\r\n this._searchForm = formBuilder.group({\r\n searchPhrase: ['']\r\n });\r\n }\r\n\r\n ngOnInit() {\r\n const info = this._localStorageService.getLoginInfo();\r\n this._role = info ? info.role : null;\r\n this._vendorService.get(info ? info.companyId : 0);\r\n this._vendorSubscription = this._vendorService.companyVendors$.subscribe(data => this._gridData = data);\r\n }\r\n\r\n ngOnDestroy() {\r\n this._vendorSubscription && this._vendorSubscription.unsubscribe();\r\n this._vendorSubscription = null;\r\n }\r\n\r\n async onClickEdit(vendor: VendorViewModel) {\r\n await this._vendorService.markCompanyUserForOthersAsInUpdate(vendor.id);\r\n this._editModal.show(vendor);\r\n }\r\n\r\n onClickDelete(vendor: VendorViewModel) {\r\n const info = this._localStorageService.getLoginInfo();\r\n this._deletModal.show(vendor, info ? info.companyId : 0);\r\n }\r\n\r\n onClickSearch(_searchPhrase: string) {\r\n this._vendorSubscription = this._vendorService.companyVendors$.subscribe(data => this._gridData = data);\r\n\r\n if (_searchPhrase.length > 0) {\r\n this._gridData = this._gridData.filter(\r\n i => i.itxLocations.filter(l => l.name.toLowerCase().indexOf(_searchPhrase.toLowerCase()) > -1).length > 0);\r\n }\r\n }\r\n\r\n}\r\n","import { Component, OnInit, ViewChild } from '@angular/core';\r\nimport { Subscription } from 'rxjs';\r\n\r\nimport { LocalStorageService } from './../../../common';\r\nimport { TutorialPopupComponent, VendorAddPopupComponent } from '../popups';\r\nimport { LocationsItxDatasourceService } from '../../services';\r\nimport { TutorialMenuEnum, TutorialParagraphEnum } from '../../enums';\r\n\r\n@Component({\r\n selector: 'greensleeves-vendors-tab',\r\n templateUrl: './vendors-tab.component.html',\r\n styles: []\r\n})\r\nexport class VendorsTabComponent implements OnInit {\r\n _itxLocations: { value: number }[];\r\n private _subscriptions: Subscription[] = [];\r\n\r\n @ViewChild(VendorAddPopupComponent, { read: false, static: false })\r\n _addModal: VendorAddPopupComponent;\r\n\r\n @ViewChild(TutorialPopupComponent, { read: false, static: false })\r\n private tutorialPopup: TutorialPopupComponent;\r\n\r\n constructor(\r\n private _localStorageService: LocalStorageService,\r\n private _locationsItxService: LocationsItxDatasourceService\r\n ) { }\r\n\r\n ngOnInit() {\r\n const info = this._localStorageService.getLoginInfo();\r\n let subscriptionLocationItx = this._locationsItxService.locationsItx$.subscribe(data => {\r\n if (data) {\r\n this._itxLocations = data.map(x => ({ value: x.id }));\r\n }\r\n });\r\n\r\n this._subscriptions.push(subscriptionLocationItx);\r\n this._locationsItxService.getLocationsWithBinsForCompany(info ? info.companyId : 0);\r\n }\r\n\r\n onClickAdd() {\r\n this._addModal.show();\r\n }\r\n\r\n showTutorial() {\r\n this.tutorialPopup.showPopup(TutorialMenuEnum.UserManagement, TutorialParagraphEnum.AddVendor);\r\n }\r\n}\r\n","export class ApiRoutes {\r\n private static readonly locationBaseUrl: string = '/location';\r\n private static readonly locationBtxBaseUrl = '/LocationBtx';\r\n private static readonly locationItxBaseUrl = '/LocationItx';\r\n private static readonly locationKtxBaseUrl = '/locationKtx';\r\n private static readonly companyBaseUrl: string = '/company';\r\n private static readonly equipmentBaseUrl: string = '/equipment';\r\n public static readonly hub: string = '/webhub';\r\n private static readonly telemetryBaseUrl: string = '/TelemetrySnapshot';\r\n private static readonly binBaseUrl: string = '/bins';\r\n private static readonly telemetry: string = '/telemetry';\r\n private static readonly telemetrySnapshot: string = '/telemetrySnapshot';\r\n private static readonly itxBinBaseUrl: string = '/itxBins';\r\n private static readonly notififcationUrl: string = '/notification';\r\n private static readonly reportUrl: string = '/report';\r\n private static readonly CommodityBaseUrl: string = '/commodity';\r\n private static readonly aqsReportUrl: string = '/aqsReport';\r\n private static readonly AirflowBaseUrl: string = '/aqsAirflow';\r\n private static readonly quoteStorageUrl: string = '/aqsQuoteStorage';\r\n private static readonly deiveLog: string = '/deviceLog';\r\n private static readonly updaterDevice: string = '/updaterDevice';\r\n\r\n static Location = class {\r\n public static readonly getAll: string = `${ApiRoutes.locationBaseUrl}/getAll`;\r\n public static readonly getAllForCompany: string = `${ApiRoutes.locationBaseUrl}/getAllForCompany`;\r\n public static readonly getKtxBtxItxLocationsForCompany: string = `${ApiRoutes.locationBaseUrl}/getKtxBtxItxLocationsForCompany`;\r\n public static readonly add: string = `${ApiRoutes.locationBaseUrl}/add`;\r\n public static readonly edit: string = `${ApiRoutes.locationBaseUrl}/edit`;\r\n public static readonly delete = `${ApiRoutes.locationBaseUrl}/delete`;\r\n }\r\n\r\n static LocationItx = class {\r\n public static readonly getLocationsWithBinsForCompany: string = `${ApiRoutes.locationItxBaseUrl}/getLocationsWithBinsForCompany`;\r\n public static readonly getAll: string = `${ApiRoutes.locationItxBaseUrl}/getAll`;\r\n public static readonly edit: string = `${ApiRoutes.locationItxBaseUrl}/edit`;\r\n public static readonly add: string = `${ApiRoutes.locationItxBaseUrl}/add`;\r\n public static readonly delete: string = `${ApiRoutes.locationItxBaseUrl}/delete`;\r\n public static readonly editFullnessRange: string = `${ApiRoutes.locationItxBaseUrl}/editFullnessRange`;\r\n public static readonly getFullnessRanges: string = `${ApiRoutes.locationItxBaseUrl}/getFullnessRanges`;\r\n public static readonly initializeDeviceConfiguration: string = `${ApiRoutes.locationItxBaseUrl}/initializeDeviceEnrollment`;\r\n public static readonly downloadConnectionFile: string = `${ApiRoutes.locationItxBaseUrl}/getConnectionFile`;\r\n public static readonly getListOfAssignedItxLocationsWithItxBins: string = `${ApiRoutes.locationItxBaseUrl}/getListOfAssignedItxLocationsWithItxBins`;\r\n }\r\n\r\n static LocationBtx = class {\r\n public static readonly getAll: string = `${ApiRoutes.locationBtxBaseUrl}/getAll`;\r\n public static readonly add: string = `${ApiRoutes.locationBtxBaseUrl}/add`;\r\n public static readonly edit: string = `${ApiRoutes.locationBtxBaseUrl}/edit`;\r\n public static readonly delete: string = `${ApiRoutes.locationBtxBaseUrl}/delete`;\r\n public static readonly downloadConnectionFile: string = `${ApiRoutes.locationBtxBaseUrl}/getConnectionFile`;\r\n public static readonly initializeDeviceConfiguration: string = `${ApiRoutes.locationBtxBaseUrl}/initializeDeviceEnrollment`;\r\n public static readonly getCompaniesWithLocations: string = `${ApiRoutes.locationBtxBaseUrl}/getCompaniesWithLocations`;\r\n public static readonly getLiveDataLocations: string = `${ApiRoutes.locationBtxBaseUrl}/getLiveDataLocations`;\r\n public static readonly parseLocationConfiguration: string = `${ApiRoutes.locationBtxBaseUrl}/parseBtxLocationConfiguration`;\r\n public static readonly uploadBtxLocationConfiguration: string = `${ApiRoutes.locationBtxBaseUrl}/uploadBtxLocationConfiguration`;\r\n }\r\n\r\n static LocationKtx = class {\r\n public static readonly getAll: string = `${ApiRoutes.locationKtxBaseUrl}/getAll`;\r\n public static readonly add: string = `${ApiRoutes.locationKtxBaseUrl}/add`;\r\n public static readonly edit: string = `${ApiRoutes.locationKtxBaseUrl}/edit`;\r\n public static readonly delete: string = `${ApiRoutes.locationKtxBaseUrl}/delete`;\r\n public static readonly downloadConnectionFile: string = `${ApiRoutes.locationKtxBaseUrl}/getConnectionFile`;\r\n public static readonly initializeDeviceConfiguration: string = `${ApiRoutes.locationKtxBaseUrl}/initializeDeviceEnrollment`;\r\n public static readonly editTemperatureRange: string = `${ApiRoutes.locationKtxBaseUrl}/EditTemperatureRange`;\r\n public static readonly getTemperatureRanges: string = `${ApiRoutes.locationKtxBaseUrl}/GetTemperatureRanges`;\r\n public static readonly getCompaniesWithLocations: string = `${ApiRoutes.locationKtxBaseUrl}/getCompaniesWithLocations`;\r\n }\r\n\r\n static Company = class {\r\n public static readonly getAll: string = `${ApiRoutes.companyBaseUrl}/getAll`;\r\n public static readonly add: string = `${ApiRoutes.companyBaseUrl}/AddCompany`;\r\n public static readonly delete: string = `${ApiRoutes.companyBaseUrl}/DeleteCompany`;\r\n public static readonly edit: string = `${ApiRoutes.companyBaseUrl}/EditCompany`;\r\n public static readonly getCompaniesForUpdaterFilter: string = `${ApiRoutes.companyBaseUrl}/getCompaniesForUpdaterFilter`;\r\n }\r\n\r\n static Equipment = class {\r\n public static readonly get: string = `${ApiRoutes.equipmentBaseUrl}/GetEquipmentsInfoWeb`;\r\n public static readonly getEquipmentSensorsInfo: string = `${ApiRoutes.equipmentBaseUrl}/getEquipmentSensorsInfo`;\r\n public static readonly edit: string = `${ApiRoutes.equipmentBaseUrl}/AddUpdateEquipment`;\r\n public static readonly getEquipmentWithTelemetry: string = `${ApiRoutes.equipmentBaseUrl}/GetEquipmentWithTelemetry`;\r\n }\r\n\r\n static Hub = class {\r\n public static readonly sendToAll: string = `SendToAll`;\r\n public static readonly sendToAllServiceUsers: string = `SendToAllServiceUsers`;\r\n public static readonly sendToCompanyAdminsAllAndServiceUsers: string = `SendToCompanyAdminsAllAndServiceUsers`;\r\n public static readonly sendToCompanyAdmins: string = `SendToCompanyAdmins`;\r\n public static readonly bindCompanyAdminToCompanyGroup: string = `BindCompanyAdminToCompanyGroup`;\r\n }\r\n\r\n static Bin = class {\r\n public static readonly get2dScheme: string = `${ApiRoutes.binBaseUrl}/get2DScheme`;\r\n public static readonly get3dScheme: string = `${ApiRoutes.binBaseUrl}/get3DScheme`;\r\n public static readonly getLastSnapshotData: string = `${ApiRoutes.telemetryBaseUrl}/getLastSnapshotData`;\r\n public static readonly getBinsLastSnapshotData: string = `${ApiRoutes.telemetryBaseUrl}/getBinsLastSnapshotData`;\r\n public static readonly uploadConfigurationFile: string = `${ApiRoutes.binBaseUrl}/uploadConfigurationFile`;\r\n public static readonly readSiloData: string = `${ApiRoutes.telemetryBaseUrl}/readSiloData`;\r\n public static readonly getScheme: string = `${ApiRoutes.binBaseUrl}/getScheme`;\r\n public static readonly addEditLocationScheme: string = `${ApiRoutes.binBaseUrl}/addEditLocationScheme`;\r\n public static readonly getBinsForConnectionEditByLocationId: string = `${ApiRoutes.binBaseUrl}/getBinsForConnectionByLocation`;\r\n public static readonly editBinsConnections: string = `${ApiRoutes.binBaseUrl}/editBinsConnections`;\r\n public static readonly getBinScheme: string = `${ApiRoutes.binBaseUrl}/getBinScheme`;\r\n }\r\n\r\n static Telemetry = class {\r\n public static readonly getLastData: string = `${ApiRoutes.telemetry}/GetLastData`;\r\n public static readonly getHistoricalDataForThePeriod: string = `${ApiRoutes.telemetry}/getHistoricalDataForThePeriod`;\r\n }\r\n\r\n static TelemetrySnapshot = class {\r\n public static readonly getHistoricalBinsSnapshotForThePeriod: string = `${ApiRoutes.telemetrySnapshot}/getHistoricalBinsSnapshotForThePeriod`;\r\n }\r\n\r\n static ItxBin = class {\r\n public static readonly getItxBinsByLocationId: string = `${ApiRoutes.itxBinBaseUrl}/GetItxBinsByLocationId`;\r\n public static readonly add: string = `${ApiRoutes.itxBinBaseUrl}/Add`;\r\n public static readonly edit: string = `${ApiRoutes.itxBinBaseUrl}/Edit`;\r\n public static readonly delete: string = `${ApiRoutes.itxBinBaseUrl}/Delete`;\r\n public static readonly addRadar: string = `${ApiRoutes.itxBinBaseUrl}/AddRadar`;\r\n public static readonly editRadar: string = `${ApiRoutes.itxBinBaseUrl}/EditRadar`;\r\n public static readonly deleteRadar: string = `${ApiRoutes.itxBinBaseUrl}/DeleteRadar`;\r\n public static readonly getSchemeForLiveData: string = `${ApiRoutes.itxBinBaseUrl}/getItxBinSchemeForUser`;\r\n public static readonly getDataForLiveData: string = `${ApiRoutes.itxBinBaseUrl}/getDataForLiveData`;\r\n public static readonly getStaticSchemeForFiveData: string = `${ApiRoutes.itxBinBaseUrl}/getStaticItxBinSchemeData`;\r\n public static readonly setUserPreferences: string = `${ApiRoutes.itxBinBaseUrl}/setUserPreferences`;\r\n public static readonly quicEdit: string = `${ApiRoutes.itxBinBaseUrl}/QuickEditStorage`;\r\n public static readonly getLocationReportFilters: string = `${ApiRoutes.itxBinBaseUrl}/GetItxLocationReportFilters`;\r\n public static readonly getRadarTelemetryWithUserPreferences: string = `${ApiRoutes.itxBinBaseUrl}/GetRadarTelemetryWithUserPreferences`;\r\n }\r\n\r\n static Report = class {\r\n public static readonly getItxReportHistoricalDataByFilter: string = `${ApiRoutes.reportUrl}/getItxReportHistoricalDataByFilter`\r\n public static readonly getItxReportFile: string = `${ApiRoutes.reportUrl}/GetItxReportFile`;\r\n public static readonly getItxReportLiveDataByFilter: string = `${ApiRoutes.reportUrl}/getItxReportLiveDataByFilter`;\r\n public static readonly getKtxReportHistoricalByFilterForPeriod: string = `${ApiRoutes.reportUrl}/getKtxReportHistoricalByFilterForPeriod`;\r\n public static readonly getKtxReportCurrentDataByFilter: string = `${ApiRoutes.reportUrl}/getKtxReportCurrentDataByFilter`;\r\n public static readonly getBtxReportLiveDataByFilter: string = `${ApiRoutes.reportUrl}/getBtxReportLiveDataByFilter`;\r\n public static readonly getBtxReportHistoricalDataByFilter: string = `${ApiRoutes.reportUrl}/getBtxReportHistoricalDataByFilter`;\r\n public static readonly getNotificationReport: string = `${ApiRoutes.reportUrl}/getNotificationReport`;\r\n }\r\n\r\n static AqsReport = class {\r\n public static readonly getReportComputationSheet: string = `${ApiRoutes.aqsReportUrl}/getReportComputationSheet`;\r\n public static readonly getReportComputationSheetToSend: string = `${ApiRoutes.aqsReportUrl}/getReportComputationSheetToSend`;\r\n public static readonly getReportQuoteRound: string = `${ApiRoutes.aqsReportUrl}/getReportQuoteRound`;\r\n public static readonly getReportRoundStorageToSend: string = `${ApiRoutes.aqsReportUrl}/getReportRoundStorageToSend`;\r\n public static readonly getReportQuoteFlat: string = `${ApiRoutes.aqsReportUrl}/getReportQuoteFlat`;\r\n public static readonly getReportFlatStorageToSend: string = `${ApiRoutes.aqsReportUrl}/getReportFlatStorageToSend`;\r\n public static readonly getReportListOfQuote: string = `${ApiRoutes.aqsReportUrl}/getListOfQuote`;\r\n public static readonly getReportListOfQuoteToSend: string = `${ApiRoutes.aqsReportUrl}/getReportListOfQuoteToSend`;\r\n }\r\n\r\n static Notification = class {\r\n public static readonly getItxNotificationByQuery: string = `${ApiRoutes.notififcationUrl}/getItxEvents`;\r\n public static readonly getKtxNotificationByQuery: string = `${ApiRoutes.notififcationUrl}/getKtxAlerts`;\r\n public static readonly getBtxNotificationByQuery: string = `${ApiRoutes.notififcationUrl}/getBtxEvents`;\r\n }\r\n\r\n static Commodity = class {\r\n public static readonly getAll: string = `${ApiRoutes.CommodityBaseUrl}/getAll`;\r\n }\r\n\r\n static Airflow = class {\r\n public static readonly getAllFanTypesWithFans: string = `${ApiRoutes.AirflowBaseUrl}/getAllFanTypesWithFans`;\r\n }\r\n\r\n static QuoteStorage = class {\r\n //Flat\r\n public static readonly addQuoteFlatStorage: string = `${ApiRoutes.quoteStorageUrl}/addQuoteFlatStorage`;\r\n public static readonly getQuoteFlatStorage: string = `${ApiRoutes.quoteStorageUrl}/getQuoteFlatStorage`;\r\n public static readonly editQuoteFlatStorage: string = `${ApiRoutes.quoteStorageUrl}/editQuoteFlatStorage`;\r\n //Round\r\n public static readonly addQuoteRoundStorage: string = `${ApiRoutes.quoteStorageUrl}/addQuoteRoundStorage`;\r\n public static readonly getQuoteRoundStorage: string = `${ApiRoutes.quoteStorageUrl}/getQuoteRoundStorage`;\r\n public static readonly editQuoteRoundStorage: string = `${ApiRoutes.quoteStorageUrl}/editQuoteRoundStorage`;\r\n\r\n public static readonly deleteQuoteStorage: string = `${ApiRoutes.quoteStorageUrl}/deleteQuoteStorage`;\r\n //Computation\r\n public static readonly addComputationSheet: string = `${ApiRoutes.quoteStorageUrl}/addComputationSheet`;\r\n public static readonly editComputationSheet: string = `${ApiRoutes.quoteStorageUrl}/editComputationSheet`;\r\n public static readonly getComputationSheetById: string = `${ApiRoutes.quoteStorageUrl}/getComputationSheetById`;\r\n public static readonly getAllComputationSheetsForBindingByUserId: string = `${ApiRoutes.quoteStorageUrl}/GetComputationSheetsForBindingByUserId`;\r\n //Quotes\r\n public static readonly getAllSavedQuotes: string = `${ApiRoutes.quoteStorageUrl}/getAllSavedQuotesByUserId`;\r\n }\r\n\r\n static DeviceLog = class {\r\n public static readonly getLogsInfoForDeivce: string = `${ApiRoutes.deiveLog}/getLogsInfoForDevice`;\r\n public static readonly downloadLogFile: string = `${ApiRoutes.deiveLog}/downloadLogFile`;\r\n public static readonly downloadLogFiles: string = `${ApiRoutes.deiveLog}/downloadLogFiles`;\r\n public static readonly addLogLinkToDeviceTwin: string = `${ApiRoutes.deiveLog}/addLinkToTwin`;\r\n }\r\n\r\n static UpdaterDevice = class {\r\n public static readonly getByFilter: string = `${ApiRoutes.updaterDevice}/getByFilter`;\r\n public static readonly addUpdaterDevice: string = `${ApiRoutes.updaterDevice}/create`;\r\n public static readonly initializeDeviceConfiguration: string = `${ApiRoutes.updaterDevice}/initializeDeviceEnrollment`;\r\n public static readonly editUpdaterDevice: string = `${ApiRoutes.updaterDevice}/update`;\r\n public static readonly deleteUpdaterDevice: string = `${ApiRoutes.updaterDevice}/delete`;\r\n public static readonly downloadConnectionFile: string = `${ApiRoutes.updaterDevice}/getConnectionFile`;\r\n public static readonly getBlobFirmwareFiles: string = `${ApiRoutes.updaterDevice}/getBlobFirmwareFiles`;\r\n public static readonly downloadFirmwareFile: string = `${ApiRoutes.updaterDevice}/downloadFirmwareFile`;\r\n public static readonly downloadFirmwareFiles: string = `${ApiRoutes.updaterDevice}/downloadFirmwareFiles`;\r\n public static readonly deleteSelectedFirmwares: string = `${ApiRoutes.updaterDevice}/deleteSelectedFirmwares`;\r\n public static readonly uploadFirmware: string = `${ApiRoutes.updaterDevice}/uploadFirmware`;\r\n public static readonly updateDeviceFirmware: string = `${ApiRoutes.updaterDevice}/updateDeviceFirmware`;\r\n public static readonly updateDeviceFirmwares: string = `${ApiRoutes.updaterDevice}/updateDeviceFirmwares`;\r\n public static readonly cancelUpdateDeviceFirmware: string = `${ApiRoutes.updaterDevice}/cancelUpdateDeviceFirmware`;\r\n public static readonly getUpdateHistoryVersions: string = `${ApiRoutes.updaterDevice}/getUpdateHistoryVersionsById`;\r\n public static readonly getUpdateStates: string = `${ApiRoutes.updaterDevice}/getUpdateStates`;\r\n public static readonly getDeviceConnectionStatus: string = `${ApiRoutes.updaterDevice}/getDeviceConnectionStatus`;\r\n public static readonly installProjectFirmware: string = `${ApiRoutes.updaterDevice}/installProjectFirmware`;\r\n public static readonly getInstalledProjectFirmware: string = `${ApiRoutes.updaterDevice}/getInstalledProjectFirmware`;\r\n }\r\n}\r\n","import { AqsAirflowFanTypeEnum, AqsAirflowLevelEnum } from \"../enums\";\r\n\r\nexport const AqsAirflowLevelLabel = {\r\n [AqsAirflowLevelEnum.Normal]: 'Normal',\r\n [AqsAirflowLevelEnum.RoofPull]: 'Roof Pull',\r\n [AqsAirflowLevelEnum.Tandem]: 'Tandem',\r\n [AqsAirflowLevelEnum.PushPull]: 'Push Pull',\r\n}\r\n\r\nexport const AqsChartFanTypeNote = {\r\n [AqsAirflowFanTypeEnum.Axial]: { leftNote: \"Two stage axial\", rightNote: \"Single stage axial\" },\r\n [AqsAirflowFanTypeEnum.Centrifugal60HZ]: { leftNote: \"1750 rpm centrifugal 60 Hz\", rightNote: \"3450 rpm centrifugal 60 Hz\" },\r\n [AqsAirflowFanTypeEnum.Centrifugal60HZAF]: { leftNote: \"1750 rpm centrifugal 60 Hz air foil\", rightNote: \"\" },\r\n [AqsAirflowFanTypeEnum.Centrifugal50HZ]: { leftNote: \"1458 rpm centrifugal 50 Hz\", rightNote: \"2875 rpm centrifugal 50 Hz\" },\r\n}","import { AqsCoverSheetTypeEnum } from \"../enums\";\r\n\r\nexport const CoverSheetConst = {\r\n [AqsCoverSheetTypeEnum.Steel]: 'Steel',\r\n [AqsCoverSheetTypeEnum.Concrete]: 'Concrete',\r\n}\r\n","import { AqsFlatDuctingShapeTypeEnum } from \"../enums\";\r\n\r\nexport const AqsFlatDuctingShapesConstant = {\r\n [AqsFlatDuctingShapeTypeEnum.FullRound]: 'Full round duct',\r\n [AqsFlatDuctingShapeTypeEnum.HalfRound]: 'Half round duct',\r\n}\r\n","import { AQSFlatStorageTypesEnum } from \"../enums\";\r\n\r\n\r\nexport const FlatStorageConst = {\r\n [AQSFlatStorageTypesEnum.Flat]: 'Flat',\r\n [AQSFlatStorageTypesEnum.Peaked]: 'Peaked',\r\n [AQSFlatStorageTypesEnum.Sloped]: 'Four sloped peak',\r\n [AQSFlatStorageTypesEnum.Truncated]: 'Truncated peak'\r\n}\r\n","import { AqsFlushFloorTunnelDesignEnum } from \"../enums\";\r\n\r\nexport const AqsFlushFloorDesignTunnelForTwoFansLabel = {\r\n [AqsFlushFloorTunnelDesignEnum.DoubleH]: 'Double H',\r\n [AqsFlushFloorTunnelDesignEnum.TwoRuns]: 'Two Runs',\r\n [AqsFlushFloorTunnelDesignEnum.DoubleTSpecial]: 'Double T Special',\r\n [AqsFlushFloorTunnelDesignEnum.DoubleT]: 'Double T',\r\n}\r\n\r\nexport const AqsFlushFloorDesignTunnelForFourFansLabel = {\r\n [AqsFlushFloorTunnelDesignEnum.FourLaneSpecial]: '4 Lane Special',\r\n [AqsFlushFloorTunnelDesignEnum.FourLaneSpeciaWithTee]: '4 Lane Special With Tee',\r\n}\r\n\r\nexport const AqsFlushFloorDesignTunnelForSixFansLabel = {\r\n [AqsFlushFloorTunnelDesignEnum.SixLaneSpecial]: '6 Lane Special',\r\n}\r\n\r\nexport const AqsFlushFloorDesignVelocityTableHeaderLabel = {\r\n valueLabel: 'Value',\r\n crossSectionLabel: 'Cross sectional velocity (ft/s)',\r\n surfaceVelocityLabel: 'Surface velocity (ft/s)',\r\n}","import { AqsPagesEnum } from \"../enums\";\r\n\r\nexport const AqsPageLabel = {\r\n [AqsPagesEnum.CoverSheet]: 'Cover Sheet',\r\n [AqsPagesEnum.RoundStorageConfiguration]: 'Round storage',\r\n [AqsPagesEnum.FlatStorageConfiguration]: 'Flat storage',\r\n [AqsPagesEnum.DetermineTargetAirflow]: 'Airflow',\r\n [AqsPagesEnum.ExhausterRecommendations]: 'Exhauster',\r\n [AqsPagesEnum.FlushFloorDesign]: 'Flush Design',\r\n [AqsPagesEnum.DuctDesign]: 'Duct Design',\r\n}","import { ReportFormatEnum } from \"../enums\";\r\n\r\nexport const AqsReportFormatFileLabel = {\r\n [ReportFormatEnum.pdf]: \"pdf\",\r\n [ReportFormatEnum.csv]: \"csv\",\r\n}","import { AqsDuctTypeEnum, AqsRoundStorageHopperTypeEnum } from \"../enums\";\r\n\r\nexport const AqsRoundStorageTypeLabel = {\r\n [AqsRoundStorageHopperTypeEnum.Conical]: 'Conical',\r\n [AqsRoundStorageHopperTypeEnum.SideDraw]: 'Side Draw',\r\n}\r\n\r\nexport const AqsRoundDuctTypeLabel = {\r\n [AqsDuctTypeEnum.FullRoundDuct]: 'Full Round Duct',\r\n [AqsDuctTypeEnum.HalfRoundDuct]: 'Half Round Duct',\r\n}","import { AqsSessionTypeEnum, AqsStorageTypeEnum, } from \"../enums\";\r\n\r\nexport const AqsSessionsTypeContants = {\r\n [AqsSessionTypeEnum.ComputationSheetType]: \"navigation-icon-computation-sheet\",\r\n [AqsSessionTypeEnum.FlatSessionType]: \"navigation-icon-flat-storage\",\r\n [AqsSessionTypeEnum.RoundSessionType]: \"navigation-icon-round-storage\",\r\n}\r\n\r\nexport const AqsStorageTypesTreeNodeConstants = {\r\n [AqsSessionTypeEnum.RoundSessionType]: {\r\n label: 'Quote round storage',\r\n key: 'roundStorage',\r\n data: AqsSessionTypeEnum.RoundSessionType,\r\n expanded: true,\r\n children: [\r\n {label: 'Conical', key: 'conical', expanded: false, data: AqsStorageTypeEnum.Conical,},\r\n {label: 'Side draw', key: 'sideDraw', expanded: false, data: AqsStorageTypeEnum.SideDraw,},\r\n ]},\r\n [AqsSessionTypeEnum.FlatSessionType]: {\r\n label: 'Quote flat storage',\r\n key: 'flatStorage',\r\n data: AqsSessionTypeEnum.FlatSessionType,\r\n expanded: true,\r\n children: [\r\n {label: 'Flat', key: 'flat', expanded: false, data: AqsStorageTypeEnum.Flat,},\r\n {label: 'Peaked', key: 'peaked', expanded: false, data: AqsStorageTypeEnum.Peaked,},\r\n {label: '4 sloped peak', key: 'sloped', expanded: false, data: AqsStorageTypeEnum.SlopedPeak,},\r\n {label: 'Truncated peak', key: 'truncated', expanded: false, data: AqsStorageTypeEnum.TruncatedPeak,},\r\n ]\r\n },\r\n [AqsSessionTypeEnum.ComputationSheetType]: {\r\n label: 'Computation sheet',\r\n key: 'computation',\r\n data: AqsStorageTypeEnum.None,\r\n expanded: false,\r\n },\r\n}\r\n","import { PLCDeviceEnum } from './../enums/equipment.enum';\r\nexport class BtxHardwareIconClass {\r\n public static readonly arduino_device = 'arduino-hardware-icon';\r\n public static readonly raspberry_device = 'raspberry-hardware-icon';\r\n public static getIconClass(deviceType: PLCDeviceEnum): string {\r\n switch (deviceType) {\r\n case PLCDeviceEnum.Arduino:\r\n return BtxHardwareIconClass.arduino_device;\r\n case PLCDeviceEnum.Raspberry:\r\n return BtxHardwareIconClass.raspberry_device;\r\n }\r\n }\r\n\r\n}\r\n\r\nexport const BtxPLCDeviceLabel = {\r\n [PLCDeviceEnum.Arduino]: \"P1AM\",\r\n [PLCDeviceEnum.Raspberry]: \"Rev Pi\",\r\n}","import { BtxSensorEventTypeEnum } from '../enums/btx-notification-type.enum';\r\n\r\nexport const BtxNotificationTypeLabel = {\r\n [BtxSensorEventTypeEnum.Norm]: \"Normal\",\r\n [BtxSensorEventTypeEnum.Alarm]: 'Alarm',\r\n [BtxSensorEventTypeEnum.Warning]: 'Warning',\r\n [BtxSensorEventTypeEnum.RateOfChangeWarning]: 'Rate of change warning',\r\n [BtxSensorEventTypeEnum.RateOfChangeAlarm]: 'Rate of change alarm',\r\n [BtxSensorEventTypeEnum.Error]: 'Communication error',\r\n}","import { DefaultDateRangeEnum } from './../enums';\r\n\r\nclass DateLocale {\r\n firstDayOfWeek: number;\r\n dayNames: Array;\r\n dayNamesShort: Array;\r\n dayNamesMin: Array;\r\n monthNames: Array;\r\n monthNamesShort: Array;\r\n dateFormat: string;\r\n today: string;\r\n}\r\n\r\nexport class EnglishDateLocale extends DateLocale {\r\n constructor() {\r\n super();\r\n this.firstDayOfWeek = 0;\r\n this.dayNames = [\"Sunday\", \"Monday\", \"Tuesday\", \"Wednesday\", \"Thursday\", \"Friday\", \"Saturday\"];\r\n this.dayNamesShort = [\"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\"];\r\n this.dayNamesMin = [\"Su\", \"Mo\", \"Tu\", \"We\", \"Th\", \"Fr\", \"Sa\"];\r\n this.monthNames = [\"January\", \"February\", \"March\", \"April\", \"May\", \"June\", \"July\", \"August\", \"September\", \"October\", \"November\", \"December\"];\r\n this.monthNamesShort = [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"May\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Oct\", \"Nov\", \"Dec\"];\r\n this.dateFormat = 'mm/dd/yy';\r\n }\r\n}\r\n\r\nexport const DefaultDateRangeLabel = {\r\n [DefaultDateRangeEnum.Day]: 'Day',\r\n [DefaultDateRangeEnum.Week]: 'Week',\r\n [DefaultDateRangeEnum.Month]: 'Month',\r\n}\r\n\r\n\r\nexport class CalendarDefaultValues {\r\n public static readonly defaultOneMonthDays: number = 29;\r\n public static readonly defaultOneWeekDays: number = 6;\r\n public static readonly defaultOneSecondMilliseconds: number = 1000;\r\n}\r\n","import { ProjectEnum } from \"../enums\";\r\n\r\nexport const FirmwareFileFolder = {\r\n [ProjectEnum.Btx]: 'btx',\r\n [ProjectEnum.Ktx]: 'ktx',\r\n [ProjectEnum.Itx]: 'itx',\r\n}","import { EmailServiceScheduleEnum } from \"../enums\";\r\n\r\nexport const EmailServiceScheduleLable = {\r\n [EmailServiceScheduleEnum.Daily]: 'Daily',\r\n [EmailServiceScheduleEnum.Weekly]: 'Weekly',\r\n [EmailServiceScheduleEnum.Monthly]: 'Monthly',\r\n}\r\n","export const bitOptions: Array<{ label: string, value: number }> = Array(16).fill(null).map((_, i) => ({ label: (i + 1).toString(), value: i + 1 }));\r\n\r\nexport const disabledBitOptions: Array<{ label: string, value: number }> = [{ label: '-', value: null }];","import { EquipmentSubTypeEnum, EquipmentTypeEnum } from '../enums';\r\n\r\nexport const EquipmentPlaceholderClassNames = {\r\n [EquipmentTypeEnum.Leg]: {\r\n [EquipmentSubTypeEnum.WithKneeBearing]: 'leg-with-knee-bearing-placeholder',\r\n [EquipmentSubTypeEnum.WithoutKneeBearing]: 'leg-without-knee-bearing-placeholder',\r\n },\r\n [EquipmentTypeEnum.Conveyor]: {\r\n [EquipmentSubTypeEnum.Belt]: 'conveyor-belt-placeholder',\r\n [EquipmentSubTypeEnum.CoveredBelt]: 'conveyor-covered-belt-placeholder',\r\n [EquipmentSubTypeEnum.Drag]: 'conveyor-drag-placeholder',\r\n [EquipmentSubTypeEnum.Screw]: 'conveyor-screw-placeholder',\r\n },\r\n [EquipmentTypeEnum.Silo]: {\r\n [EquipmentSubTypeEnum.Small]: 'silo-placeholder',\r\n [EquipmentSubTypeEnum.Medium]: 'silo-placeholder',\r\n [EquipmentSubTypeEnum.Large]: 'silo-placeholder',\r\n },\r\n [EquipmentTypeEnum.Tripper]: {\r\n [EquipmentSubTypeEnum.None]: 'tripper-placeholder',\r\n },\r\n [EquipmentTypeEnum.Fan]: {\r\n [EquipmentSubTypeEnum.BeltDrive]: 'fan-belt-drive-placeholder',\r\n [EquipmentSubTypeEnum.DirectDrive]: 'fan-direct-drive-placeholder',\r\n },\r\n};\r\n","import { SensorPositionEnum, SensorTypeEnum, EquipmentSubTypeEnum, EquipmentSideEnum, EquipmentTypeEnum } from '../enums'\r\n\r\nexport const equipmentTypeLabels = {\r\n [EquipmentTypeEnum.Silo]: 'Silo',\r\n [EquipmentTypeEnum.Conveyor]: 'Conveyor',\r\n [EquipmentTypeEnum.Leg]: 'Leg',\r\n [EquipmentTypeEnum.Tripper]: 'Tripper',\r\n [EquipmentTypeEnum.Fan]: 'Fan',\r\n}\r\n\r\nexport const equipmentSideLabels = {\r\n [EquipmentSideEnum.None]: '-',\r\n [EquipmentSideEnum.East]: 'East',\r\n [EquipmentSideEnum.West]: 'West',\r\n [EquipmentSideEnum.North]: 'North',\r\n [EquipmentSideEnum.South]: 'South'\r\n}\r\n\r\nexport const equipmentNorthSouthSideLabels = {\r\n [EquipmentSideEnum.None]: '-',\r\n [EquipmentSideEnum.North]: 'North',\r\n [EquipmentSideEnum.South]: 'South'\r\n}\r\n\r\nexport const equipmentWestEastSideLabels = {\r\n [EquipmentSideEnum.None]: '-',\r\n [EquipmentSideEnum.East]: 'East',\r\n [EquipmentSideEnum.West]: 'West'\r\n}\r\n\r\nexport const equipmentSubTypeLabels = {\r\n [EquipmentSubTypeEnum.Small]: 'Small',\r\n [EquipmentSubTypeEnum.Medium]: 'Medium',\r\n [EquipmentSubTypeEnum.Large]: 'Large',\r\n [EquipmentSubTypeEnum.WithKneeBearing]: 'With knee bearing',\r\n [EquipmentSubTypeEnum.WithoutKneeBearing]: 'Without knee bearing',\r\n [EquipmentSubTypeEnum.Drag]: 'Drag',\r\n [EquipmentSubTypeEnum.Belt]: 'Belt',\r\n [EquipmentSubTypeEnum.Screw]: 'Screw',\r\n [EquipmentSubTypeEnum.CoveredBelt]: 'Covered belt',\r\n [EquipmentSubTypeEnum.None]: '-',\r\n [EquipmentSubTypeEnum.BeltDrive]: 'Belt Drive',\r\n [EquipmentSubTypeEnum.DirectDrive]: 'Direct Drive',\r\n}\r\n\r\nexport const sensorTypeLabels = {\r\n [SensorTypeEnum.GrainDepth]: 'Grain depth',\r\n [SensorTypeEnum.BearingTemperature]: 'Bearing temperature',\r\n [SensorTypeEnum.RubBlockTemperature]: 'Rub block temperature',\r\n [SensorTypeEnum.Speed]: 'Speed',\r\n [SensorTypeEnum.ShaftBearingTemperature]: 'Shaft bearing temperature',\r\n [SensorTypeEnum.GearBoxTemperature]: 'Gear box temperature',\r\n [SensorTypeEnum.BottomRubTemperature]: 'Bottom rub temperature',\r\n [SensorTypeEnum.CurrentAmpDraw]: 'Current amp draw',\r\n [SensorTypeEnum.CurrentDesignLoad]: 'Current % design load',\r\n [SensorTypeEnum.Vibration]: 'Vibration',\r\n}\r\n\r\nexport const sensorPositionLabels = {\r\n [SensorPositionEnum.CenterOfTheEquipmentScheme]: 'Center of the equipment scheme',\r\n [SensorPositionEnum.Head]: 'Head',\r\n [SensorPositionEnum.Knee]: 'Knee',\r\n [SensorPositionEnum.Boot]: 'Boot',\r\n [SensorPositionEnum.OnePerEquipment]: 'One per equipment',\r\n [SensorPositionEnum.Tail]: 'Tail',\r\n [SensorPositionEnum.BendHead]: 'Bend head',\r\n [SensorPositionEnum.BendTail]: 'Bend tail',\r\n [SensorPositionEnum.SnubHead]: 'Snub head',\r\n [SensorPositionEnum.SnubTail]: 'Snub tail',\r\n [SensorPositionEnum.KneeHead]: 'Knee head',\r\n [SensorPositionEnum.KneeTail]: 'Knee tail',\r\n [SensorPositionEnum.UpperTripperHead]: 'Upper tripper head',\r\n [SensorPositionEnum.UpperTripperTail]: 'Upper tripper tail',\r\n [SensorPositionEnum.LowerTripperHead]: 'Lower tripper head',\r\n [SensorPositionEnum.LowerTripperTail]: 'Lower tripper tail',\r\n [SensorPositionEnum.Upper]: 'Upper',\r\n [SensorPositionEnum.Lower]: 'Lower',\r\n [SensorPositionEnum.Top]: 'Top',\r\n [SensorPositionEnum.Frame]: 'Frame',\r\n [SensorPositionEnum.Drive]: 'Drive',\r\n [SensorPositionEnum.FrameUpper]: 'Frame Upper',\r\n [SensorPositionEnum.FrameLower]: 'Frame Lower',\r\n [SensorPositionEnum.DriveUpper]: 'Drive Upper',\r\n [SensorPositionEnum.DriveLower]: 'Drive Lower',\r\n [SensorPositionEnum.Motor]: 'Motor',\r\n}","import {\r\n EquipmentSideEnum,\r\n SensorPositionEnum,\r\n SensorTypeEnum,\r\n EquipmentTypeEnum,\r\n EquipmentSubTypeEnum\r\n} from \"../enums\";\r\n\r\nexport const equipmentSensorMapping = {\r\n [EquipmentTypeEnum.Silo]: {\r\n [EquipmentSubTypeEnum.Small]: {\r\n [SensorTypeEnum.GrainDepth]: {\r\n [SensorPositionEnum.CenterOfTheEquipmentScheme]: {\r\n [EquipmentSideEnum.None]: 'grain-depth'\r\n }\r\n }\r\n },\r\n [EquipmentSubTypeEnum.Medium]: {\r\n [SensorTypeEnum.GrainDepth]: {\r\n [SensorPositionEnum.CenterOfTheEquipmentScheme]: {\r\n [EquipmentSideEnum.None]: 'grain-depth'\r\n }\r\n }\r\n },\r\n [EquipmentSubTypeEnum.Large]: {\r\n [SensorTypeEnum.GrainDepth]: {\r\n [SensorPositionEnum.CenterOfTheEquipmentScheme]: {\r\n [EquipmentSideEnum.None]: 'grain-depth'\r\n }\r\n }\r\n }\r\n },\r\n [EquipmentTypeEnum.Leg]: {\r\n [EquipmentSubTypeEnum.WithKneeBearing]: {\r\n [SensorTypeEnum.BearingTemperature]: {\r\n [SensorPositionEnum.Head]: {\r\n [EquipmentSideEnum.North]: ['bearing-temperature', 'head', 'left'],\r\n [EquipmentSideEnum.South]: ['bearing-temperature', 'head', 'right'],\r\n [EquipmentSideEnum.East]: ['bearing-temperature', 'head', 'right'],\r\n [EquipmentSideEnum.West]: ['bearing-temperature', 'head', 'left'],\r\n },\r\n [SensorPositionEnum.Knee]: {\r\n [EquipmentSideEnum.North]: ['bearing-temperature', 'knee', 'left'],\r\n [EquipmentSideEnum.South]: ['bearing-temperature', 'knee', 'right'],\r\n [EquipmentSideEnum.East]: ['bearing-temperature', 'knee', 'right'],\r\n [EquipmentSideEnum.West]: ['bearing-temperature', 'knee', 'left'],\r\n },\r\n [SensorPositionEnum.Boot]: {\r\n [EquipmentSideEnum.North]: ['bearing-temperature', 'boot', 'left'],\r\n [EquipmentSideEnum.South]: ['bearing-temperature', 'boot', 'right'],\r\n [EquipmentSideEnum.East]: ['bearing-temperature', 'boot', 'right'],\r\n [EquipmentSideEnum.West]: ['bearing-temperature', 'boot', 'left']\r\n }\r\n },\r\n [SensorTypeEnum.RubBlockTemperature]: {\r\n [SensorPositionEnum.Head]: {\r\n [EquipmentSideEnum.North]: ['rub-block-temperature', 'head', 'left'],\r\n [EquipmentSideEnum.South]: ['rub-block-temperature', 'head', 'right'],\r\n [EquipmentSideEnum.East]: ['rub-block-temperature', 'head', 'right'],\r\n [EquipmentSideEnum.West]: ['rub-block-temperature', 'head', 'left']\r\n },\r\n [SensorPositionEnum.Boot]: {\r\n [EquipmentSideEnum.North]: ['rub-block-temperature', 'boot', 'left'],\r\n [EquipmentSideEnum.South]: ['rub-block-temperature', 'boot', 'right'],\r\n [EquipmentSideEnum.East]: ['rub-block-temperature', 'boot', 'right'],\r\n [EquipmentSideEnum.West]: ['rub-block-temperature', 'boot', 'left']\r\n }\r\n },\r\n [SensorTypeEnum.Speed]: {\r\n [SensorPositionEnum.OnePerEquipment]: {\r\n [EquipmentSideEnum.None]: 'speed'\r\n }\r\n },\r\n [SensorTypeEnum.ShaftBearingTemperature]: {\r\n [SensorPositionEnum.Boot]: {\r\n [EquipmentSideEnum.North]: ['shaft-bearing-temperature', 'boot', 'left'],\r\n [EquipmentSideEnum.South]: ['shaft-bearing-temperature', 'boot', 'right'],\r\n [EquipmentSideEnum.East]: ['shaft-bearing-temperature', 'boot', 'right'],\r\n [EquipmentSideEnum.West]: ['shaft-bearing-temperature', 'boot', 'left'],\r\n }\r\n },\r\n [SensorTypeEnum.GearBoxTemperature]: {\r\n [SensorPositionEnum.Head]: {\r\n [EquipmentSideEnum.North]: ['gear-box-temperature', 'head', 'left'],\r\n [EquipmentSideEnum.South]: ['gear-box-temperature', 'head', 'right'],\r\n [EquipmentSideEnum.East]: ['gear-box-temperature', 'head', 'right'],\r\n [EquipmentSideEnum.West]: ['gear-box-temperature', 'head', 'left'],\r\n }\r\n },\r\n [SensorTypeEnum.CurrentDesignLoad]: {\r\n [SensorPositionEnum.OnePerEquipment]: {\r\n [EquipmentSideEnum.None]: 'current-design-load'\r\n }\r\n },\r\n [SensorTypeEnum.CurrentAmpDraw]: {\r\n [SensorPositionEnum.OnePerEquipment]: {\r\n [EquipmentSideEnum.None]: 'current-amp-draw'\r\n }\r\n },\r\n [SensorTypeEnum.Vibration]: {\r\n [SensorPositionEnum.Frame]: {\r\n [EquipmentSideEnum.None]: ['vibration', 'frame']\r\n },\r\n [SensorPositionEnum.Motor]: {\r\n [EquipmentSideEnum.None]: ['vibration', 'motor']\r\n },\r\n },\r\n },\r\n [EquipmentSubTypeEnum.WithoutKneeBearing]: {\r\n [SensorTypeEnum.BearingTemperature]: {\r\n [SensorPositionEnum.Head]: {\r\n [EquipmentSideEnum.North]: ['bearing-temperature', 'head', 'left'],\r\n [EquipmentSideEnum.South]: ['bearing-temperature', 'head', 'right'],\r\n [EquipmentSideEnum.East]: ['bearing-temperature', 'head', 'right'],\r\n [EquipmentSideEnum.West]: ['bearing-temperature', 'head', 'left']\r\n },\r\n [SensorPositionEnum.Boot]: {\r\n [EquipmentSideEnum.North]: ['bearing-temperature', 'boot', 'left'],\r\n [EquipmentSideEnum.South]: ['bearing-temperature', 'boot', 'right'],\r\n [EquipmentSideEnum.East]: ['bearing-temperature', 'boot', 'right'],\r\n [EquipmentSideEnum.West]: ['bearing-temperature', 'boot', 'left']\r\n }\r\n },\r\n [SensorTypeEnum.RubBlockTemperature]: {\r\n [SensorPositionEnum.Head]: {\r\n [EquipmentSideEnum.North]: ['rub-block-temperature', 'head', 'left'],\r\n [EquipmentSideEnum.South]: ['rub-block-temperature', 'head', 'right'],\r\n [EquipmentSideEnum.East]: ['rub-block-temperature', 'head', 'right'],\r\n [EquipmentSideEnum.West]: ['rub-block-temperature', 'head', 'left']\r\n },\r\n [SensorPositionEnum.Boot]: {\r\n [EquipmentSideEnum.North]: ['rub-block-temperature', 'boot', 'left'],\r\n [EquipmentSideEnum.South]: ['rub-block-temperature', 'boot', 'right'],\r\n [EquipmentSideEnum.East]: ['rub-block-temperature', 'boot', 'right'],\r\n [EquipmentSideEnum.West]: ['rub-block-temperature', 'boot', 'left']\r\n }\r\n },\r\n [SensorTypeEnum.Speed]: {\r\n [SensorPositionEnum.OnePerEquipment]: {\r\n [EquipmentSideEnum.None]: 'speed'\r\n }\r\n },\r\n [SensorTypeEnum.ShaftBearingTemperature]: {\r\n [SensorPositionEnum.Boot]: {\r\n [EquipmentSideEnum.North]: ['shaft-bearing-temperature', 'boot', 'left'],\r\n [EquipmentSideEnum.South]: ['shaft-bearing-temperature', 'boot', 'right'],\r\n [EquipmentSideEnum.East]: ['shaft-bearing-temperature', 'boot', 'right'],\r\n [EquipmentSideEnum.West]: ['shaft-bearing-temperature', 'boot', 'left'],\r\n }\r\n },\r\n [SensorTypeEnum.GearBoxTemperature]: {\r\n [SensorPositionEnum.Head]: {\r\n [EquipmentSideEnum.North]: ['gear-box-temperature', 'head', 'left'],\r\n [EquipmentSideEnum.South]: ['gear-box-temperature', 'head', 'right'],\r\n [EquipmentSideEnum.East]: ['gear-box-temperature', 'head', 'right'],\r\n [EquipmentSideEnum.West]: ['gear-box-temperature', 'head', 'left'],\r\n }\r\n },\r\n [SensorTypeEnum.CurrentDesignLoad]: {\r\n [SensorPositionEnum.OnePerEquipment]: {\r\n [EquipmentSideEnum.None]: 'current-design-load'\r\n }\r\n },\r\n [SensorTypeEnum.CurrentAmpDraw]: {\r\n [SensorPositionEnum.OnePerEquipment]: {\r\n [EquipmentSideEnum.None]: 'current-amp-draw'\r\n }\r\n },\r\n [SensorTypeEnum.Vibration]: {\r\n [SensorPositionEnum.Frame]: {\r\n [EquipmentSideEnum.None]: ['vibration', 'frame']\r\n },\r\n [SensorPositionEnum.Motor]: {\r\n [EquipmentSideEnum.None]: ['vibration', 'motor']\r\n },\r\n },\r\n }\r\n },\r\n [EquipmentTypeEnum.Conveyor]: {\r\n [EquipmentSubTypeEnum.Drag]: {\r\n [SensorTypeEnum.BearingTemperature]: {\r\n [SensorPositionEnum.Head]: {\r\n [EquipmentSideEnum.North]: ['bearing-temperature', 'head', 'left'],\r\n [EquipmentSideEnum.South]: ['bearing-temperature', 'head', 'right'],\r\n [EquipmentSideEnum.East]: ['bearing-temperature', 'head', 'right'],\r\n [EquipmentSideEnum.West]: ['bearing-temperature', 'head', 'left']\r\n },\r\n [SensorPositionEnum.Tail]: {\r\n [EquipmentSideEnum.North]: ['bearing-temperature', 'tail', 'left'],\r\n [EquipmentSideEnum.South]: ['bearing-temperature', 'tail', 'right'],\r\n [EquipmentSideEnum.East]: ['bearing-temperature', 'tail', 'right'],\r\n [EquipmentSideEnum.West]: ['bearing-temperature', 'tail', 'left']\r\n }\r\n },\r\n [SensorTypeEnum.Speed]: {\r\n [SensorPositionEnum.OnePerEquipment]: {\r\n [EquipmentSideEnum.None]: 'speed'\r\n }\r\n },\r\n [SensorTypeEnum.CurrentDesignLoad]: {\r\n [SensorPositionEnum.OnePerEquipment]: {\r\n [EquipmentSideEnum.None]: 'current-design-load'\r\n }\r\n },\r\n [SensorTypeEnum.CurrentAmpDraw]: {\r\n [SensorPositionEnum.OnePerEquipment]: {\r\n [EquipmentSideEnum.None]: 'current-amp-draw'\r\n }\r\n },\r\n [SensorTypeEnum.Vibration]: {\r\n [SensorPositionEnum.Frame]: {\r\n [EquipmentSideEnum.None]: ['vibration', 'frame']\r\n },\r\n [SensorPositionEnum.Motor]: {\r\n [EquipmentSideEnum.None]: ['vibration', 'motor']\r\n },\r\n },\r\n },\r\n [EquipmentSubTypeEnum.Belt]: {\r\n [SensorTypeEnum.BearingTemperature]: {\r\n [SensorPositionEnum.Head]: {\r\n [EquipmentSideEnum.North]: ['bearing-temperature', 'head', 'left'],\r\n [EquipmentSideEnum.South]: ['bearing-temperature', 'head', 'right'],\r\n [EquipmentSideEnum.East]: ['bearing-temperature', 'head', 'right'],\r\n [EquipmentSideEnum.West]: ['bearing-temperature', 'head', 'left']\r\n },\r\n [SensorPositionEnum.Tail]: {\r\n [EquipmentSideEnum.North]: ['bearing-temperature', 'tail', 'left'],\r\n [EquipmentSideEnum.South]: ['bearing-temperature', 'tail', 'right'],\r\n [EquipmentSideEnum.East]: ['bearing-temperature', 'tail', 'right'],\r\n [EquipmentSideEnum.West]: ['bearing-temperature', 'tail', 'left']\r\n },\r\n [SensorPositionEnum.BendHead]: {\r\n [EquipmentSideEnum.North]: ['bearing-temperature', 'bend-head', 'left'],\r\n [EquipmentSideEnum.South]: ['bearing-temperature', 'bend-head', 'right'],\r\n [EquipmentSideEnum.East]: ['bearing-temperature', 'bend-head', 'right'],\r\n [EquipmentSideEnum.West]: ['bearing-temperature', 'bend-head', 'left']\r\n },\r\n [SensorPositionEnum.BendTail]: {\r\n [EquipmentSideEnum.North]: ['bearing-temperature', 'bend-tail', 'left'],\r\n [EquipmentSideEnum.South]: ['bearing-temperature', 'bend-tail', 'right'],\r\n [EquipmentSideEnum.East]: ['bearing-temperature', 'bend-tail', 'right'],\r\n [EquipmentSideEnum.West]: ['bearing-temperature', 'bend-tail', 'left']\r\n },\r\n [SensorPositionEnum.SnubHead]: {\r\n [EquipmentSideEnum.North]: ['bearing-temperature', 'snub-head', 'left'],\r\n [EquipmentSideEnum.South]: ['bearing-temperature', 'snub-head', 'right'],\r\n [EquipmentSideEnum.East]: ['bearing-temperature', 'snub-head', 'right'],\r\n [EquipmentSideEnum.West]: ['bearing-temperature', 'snub-head', 'left']\r\n },\r\n [SensorPositionEnum.SnubTail]: {\r\n [EquipmentSideEnum.North]: ['bearing-temperature', 'snub-tail', 'left'],\r\n [EquipmentSideEnum.South]: ['bearing-temperature', 'snub-tail', 'right'],\r\n [EquipmentSideEnum.East]: ['bearing-temperature', 'snub-tail', 'right'],\r\n [EquipmentSideEnum.West]: ['bearing-temperature', 'snub-tail', 'left']\r\n },\r\n [SensorPositionEnum.KneeHead]: {\r\n [EquipmentSideEnum.North]: ['bearing-temperature', 'knee-head', 'left'],\r\n [EquipmentSideEnum.South]: ['bearing-temperature', 'knee-head', 'right'],\r\n [EquipmentSideEnum.East]: ['bearing-temperature', 'knee-head', 'right'],\r\n [EquipmentSideEnum.West]: ['bearing-temperature', 'knee-head', 'left']\r\n },\r\n [SensorPositionEnum.KneeTail]: {\r\n [EquipmentSideEnum.North]: ['bearing-temperature', 'knee-tail', 'left'],\r\n [EquipmentSideEnum.South]: ['bearing-temperature', 'knee-tail', 'right'],\r\n [EquipmentSideEnum.East]: ['bearing-temperature', 'knee-tail', 'right'],\r\n [EquipmentSideEnum.West]: ['bearing-temperature', 'knee-tail', 'left']\r\n },\r\n [SensorPositionEnum.UpperTripperHead]: {\r\n [EquipmentSideEnum.North]: ['bearing-temperature', 'upper-tripper-head', 'left'],\r\n [EquipmentSideEnum.South]: ['bearing-temperature', 'upper-tripper-head', 'right'],\r\n [EquipmentSideEnum.East]: ['bearing-temperature', 'upper-tripper-head', 'right'],\r\n [EquipmentSideEnum.West]: ['bearing-temperature', 'upper-tripper-head', 'left']\r\n },\r\n [SensorPositionEnum.UpperTripperTail]: {\r\n [EquipmentSideEnum.North]: ['bearing-temperature', 'upper-tripper-tail', 'left'],\r\n [EquipmentSideEnum.South]: ['bearing-temperature', 'upper-tripper-tail', 'right'],\r\n [EquipmentSideEnum.East]: ['bearing-temperature', 'upper-tripper-tail', 'right'],\r\n [EquipmentSideEnum.West]: ['bearing-temperature', 'upper-tripper-tail', 'left']\r\n },\r\n [SensorPositionEnum.LowerTripperHead]: {\r\n [EquipmentSideEnum.North]: ['bearing-temperature', 'lower-tripper-head', 'left'],\r\n [EquipmentSideEnum.South]: ['bearing-temperature', 'lower-tripper-head', 'right'],\r\n [EquipmentSideEnum.East]: ['bearing-temperature', 'lower-tripper-head', 'right'],\r\n [EquipmentSideEnum.West]: ['bearing-temperature', 'lower-tripper-head', 'left']\r\n },\r\n [SensorPositionEnum.LowerTripperTail]: {\r\n [EquipmentSideEnum.North]: ['bearing-temperature', 'lower-tripper-tail', 'left'],\r\n [EquipmentSideEnum.South]: ['bearing-temperature', 'lower-tripper-tail', 'right'],\r\n [EquipmentSideEnum.East]: ['bearing-temperature', 'lower-tripper-tail', 'right'],\r\n [EquipmentSideEnum.West]: ['bearing-temperature', 'lower-tripper-tail', 'left']\r\n }\r\n },\r\n [SensorTypeEnum.RubBlockTemperature]: {\r\n [SensorPositionEnum.Head]: {\r\n [EquipmentSideEnum.North]: ['rub-block-temperature', 'head', 'left'],\r\n [EquipmentSideEnum.South]: ['rub-block-temperature', 'head', 'right'],\r\n [EquipmentSideEnum.East]: ['rub-block-temperature', 'head', 'right'],\r\n [EquipmentSideEnum.West]: ['rub-block-temperature', 'head', 'left']\r\n },\r\n [SensorPositionEnum.Tail]: {\r\n [EquipmentSideEnum.North]: ['rub-block-temperature', 'tail', 'left'],\r\n [EquipmentSideEnum.South]: ['rub-block-temperature', 'tail', 'right'],\r\n [EquipmentSideEnum.East]: ['rub-block-temperature', 'tail', 'right'],\r\n [EquipmentSideEnum.West]: ['rub-block-temperature', 'tail', 'left']\r\n },\r\n [SensorPositionEnum.BendHead]: {\r\n [EquipmentSideEnum.North]: ['rub-block-temperature', 'bend-head', 'left'],\r\n [EquipmentSideEnum.South]: ['rub-block-temperature', 'bend-head', 'right'],\r\n [EquipmentSideEnum.East]: ['rub-block-temperature', 'bend-head', 'right'],\r\n [EquipmentSideEnum.West]: ['rub-block-temperature', 'bend-head', 'left']\r\n },\r\n [SensorPositionEnum.BendTail]: {\r\n [EquipmentSideEnum.North]: ['rub-block-temperature', 'bend-tail', 'left'],\r\n [EquipmentSideEnum.South]: ['rub-block-temperature', 'bend-tail', 'right'],\r\n [EquipmentSideEnum.East]: ['rub-block-temperature', 'bend-tail', 'right'],\r\n [EquipmentSideEnum.West]: ['rub-block-temperature', 'bend-tail', 'left']\r\n },\r\n [SensorPositionEnum.SnubHead]: {\r\n [EquipmentSideEnum.North]: ['rub-block-temperature', 'snub-head', 'left'],\r\n [EquipmentSideEnum.South]: ['rub-block-temperature', 'snub-head', 'right'],\r\n [EquipmentSideEnum.East]: ['rub-block-temperature', 'snub-head', 'right'],\r\n [EquipmentSideEnum.West]: ['rub-block-temperature', 'snub-head', 'left']\r\n },\r\n [SensorPositionEnum.SnubTail]: {\r\n [EquipmentSideEnum.North]: ['rub-block-temperature', 'snub-tail', 'left'],\r\n [EquipmentSideEnum.South]: ['rub-block-temperature', 'snub-tail', 'right'],\r\n [EquipmentSideEnum.East]: ['rub-block-temperature', 'snub-tail', 'right'],\r\n [EquipmentSideEnum.West]: ['rub-block-temperature', 'snub-tail', 'left']\r\n },\r\n [SensorPositionEnum.KneeHead]: {\r\n [EquipmentSideEnum.North]: ['rub-block-temperature', 'knee-head', 'left'],\r\n [EquipmentSideEnum.South]: ['rub-block-temperature', 'knee-head', 'right'],\r\n [EquipmentSideEnum.East]: ['rub-block-temperature', 'knee-head', 'right'],\r\n [EquipmentSideEnum.West]: ['rub-block-temperature', 'knee-head', 'left']\r\n },\r\n [SensorPositionEnum.KneeTail]: {\r\n [EquipmentSideEnum.North]: ['rub-block-temperature', 'knee-tail', 'left'],\r\n [EquipmentSideEnum.South]: ['rub-block-temperature', 'knee-tail', 'right'],\r\n [EquipmentSideEnum.East]: ['rub-block-temperature', 'knee-tail', 'right'],\r\n [EquipmentSideEnum.West]: ['rub-block-temperature', 'knee-tail', 'left']\r\n }\r\n },\r\n [SensorTypeEnum.Speed]: {\r\n [SensorPositionEnum.OnePerEquipment]: {\r\n [EquipmentSideEnum.None]: 'speed'\r\n }\r\n },\r\n [SensorTypeEnum.CurrentDesignLoad]: {\r\n [SensorPositionEnum.OnePerEquipment]: {\r\n [EquipmentSideEnum.None]: 'current-design-load'\r\n }\r\n },\r\n [SensorTypeEnum.CurrentAmpDraw]: {\r\n [SensorPositionEnum.OnePerEquipment]: {\r\n [EquipmentSideEnum.None]: 'current-amp-draw'\r\n }\r\n },\r\n [SensorTypeEnum.Vibration]: {\r\n [SensorPositionEnum.Frame]: {\r\n [EquipmentSideEnum.None]: ['vibration', 'frame']\r\n },\r\n [SensorPositionEnum.Motor]: {\r\n [EquipmentSideEnum.None]: ['vibration', 'motor']\r\n },\r\n },\r\n },\r\n [EquipmentSubTypeEnum.Screw]: {\r\n [SensorTypeEnum.BearingTemperature]: {\r\n [SensorPositionEnum.Head]: {\r\n [EquipmentSideEnum.None]: ['bearing-temperature', 'head']\r\n },\r\n [SensorPositionEnum.Tail]: {\r\n [EquipmentSideEnum.None]: ['bearing-temperature', 'tail']\r\n }\r\n },\r\n [SensorTypeEnum.Speed]: {\r\n [SensorPositionEnum.OnePerEquipment]: {\r\n [EquipmentSideEnum.None]: 'speed'\r\n }\r\n },\r\n [SensorTypeEnum.CurrentDesignLoad]: {\r\n [SensorPositionEnum.OnePerEquipment]: {\r\n [EquipmentSideEnum.None]: ['current-design-load']\r\n }\r\n },\r\n [SensorTypeEnum.CurrentAmpDraw]: {\r\n [SensorPositionEnum.OnePerEquipment]: {\r\n [EquipmentSideEnum.None]: ['current-amp-draw']\r\n }\r\n },\r\n [SensorTypeEnum.Vibration]: {\r\n [SensorPositionEnum.Frame]: {\r\n [EquipmentSideEnum.None]: ['vibration', 'frame']\r\n },\r\n [SensorPositionEnum.Motor]: {\r\n [EquipmentSideEnum.None]: ['vibration', 'motor']\r\n },\r\n },\r\n },\r\n [EquipmentSubTypeEnum.CoveredBelt]: {\r\n [SensorTypeEnum.BearingTemperature]: {\r\n [SensorPositionEnum.Head]: {\r\n [EquipmentSideEnum.North]: ['bearing-temperature', 'head', 'left'],\r\n [EquipmentSideEnum.South]: ['bearing-temperature', 'head', 'right'],\r\n [EquipmentSideEnum.East]: ['bearing-temperature', 'head', 'right'],\r\n [EquipmentSideEnum.West]: ['bearing-temperature', 'head', 'left']\r\n },\r\n [SensorPositionEnum.Tail]: {\r\n [EquipmentSideEnum.North]: ['bearing-temperature', 'tail', 'left'],\r\n [EquipmentSideEnum.South]: ['bearing-temperature', 'tail', 'right'],\r\n [EquipmentSideEnum.East]: ['bearing-temperature', 'tail', 'right'],\r\n [EquipmentSideEnum.West]: ['bearing-temperature', 'tail', 'left']\r\n },\r\n },\r\n [SensorTypeEnum.BottomRubTemperature]: {\r\n [SensorPositionEnum.Head]: {\r\n [EquipmentSideEnum.North]: ['bottom-rub-temperature', 'head', 'left'],\r\n [EquipmentSideEnum.South]: ['bottom-rub-temperature', 'head', 'right'],\r\n [EquipmentSideEnum.East]: ['bottom-rub-temperature', 'head', 'right'],\r\n [EquipmentSideEnum.West]: ['bottom-rub-temperature', 'head', 'left']\r\n },\r\n [SensorPositionEnum.Tail]: {\r\n [EquipmentSideEnum.North]: ['bottom-rub-temperature', 'tail', 'left'],\r\n [EquipmentSideEnum.South]: ['bottom-rub-temperature', 'tail', 'right'],\r\n [EquipmentSideEnum.East]: ['bottom-rub-temperature', 'tail', 'right'],\r\n [EquipmentSideEnum.West]: ['bottom-rub-temperature', 'tail', 'left']\r\n },\r\n },\r\n [SensorTypeEnum.RubBlockTemperature]: {\r\n [SensorPositionEnum.Head]: {\r\n [EquipmentSideEnum.North]: ['rub-block-temperature', 'head', 'left'],\r\n [EquipmentSideEnum.South]: ['rub-block-temperature', 'head', 'right'],\r\n [EquipmentSideEnum.East]: ['rub-block-temperature', 'head', 'right'],\r\n [EquipmentSideEnum.West]: ['rub-block-temperature', 'head', 'left']\r\n },\r\n [SensorPositionEnum.Tail]: {\r\n [EquipmentSideEnum.North]: ['rub-block-temperature', 'tail', 'left'],\r\n [EquipmentSideEnum.South]: ['rub-block-temperature', 'tail', 'right'],\r\n [EquipmentSideEnum.East]: ['rub-block-temperature', 'tail', 'right'],\r\n [EquipmentSideEnum.West]: ['rub-block-temperature', 'tail', 'left']\r\n },\r\n },\r\n [SensorTypeEnum.Speed]: {\r\n [SensorPositionEnum.OnePerEquipment]: {\r\n [EquipmentSideEnum.None]: 'speed'\r\n }\r\n },\r\n [SensorTypeEnum.CurrentDesignLoad]: {\r\n [SensorPositionEnum.OnePerEquipment]: {\r\n [EquipmentSideEnum.None]: 'current-design-load'\r\n }\r\n },\r\n [SensorTypeEnum.CurrentAmpDraw]: {\r\n [SensorPositionEnum.OnePerEquipment]: {\r\n [EquipmentSideEnum.None]: 'current-amp-draw'\r\n }\r\n },\r\n [SensorTypeEnum.Vibration]: {\r\n [SensorPositionEnum.Frame]: {\r\n [EquipmentSideEnum.None]: ['vibration', 'frame']\r\n },\r\n [SensorPositionEnum.Motor]: {\r\n [EquipmentSideEnum.None]: ['vibration', 'motor']\r\n },\r\n },\r\n },\r\n },\r\n [EquipmentTypeEnum.Tripper]: {\r\n [EquipmentSubTypeEnum.None]: {\r\n [SensorTypeEnum.BearingTemperature]: {\r\n [SensorPositionEnum.Upper]: {\r\n [EquipmentSideEnum.North]: ['bearing-temperature', 'upper', 'left'],\r\n [EquipmentSideEnum.South]: ['bearing-temperature', 'upper', 'right'],\r\n [EquipmentSideEnum.East]: ['bearing-temperature', 'upper', 'right'],\r\n [EquipmentSideEnum.West]: ['bearing-temperature', 'upper', 'left']\r\n },\r\n [SensorPositionEnum.Lower]: {\r\n [EquipmentSideEnum.North]: ['bearing-temperature', 'lower', 'left'],\r\n [EquipmentSideEnum.South]: ['bearing-temperature', 'lower', 'right'],\r\n [EquipmentSideEnum.East]: ['bearing-temperature', 'lower', 'right'],\r\n [EquipmentSideEnum.West]: ['bearing-temperature', 'lower', 'left']\r\n },\r\n },\r\n [SensorTypeEnum.RubBlockTemperature]: {\r\n [SensorPositionEnum.Top]: {\r\n [EquipmentSideEnum.North]: ['rub-block-temperature', 'top', 'left'],\r\n [EquipmentSideEnum.South]: ['rub-block-temperature', 'top', 'right'],\r\n [EquipmentSideEnum.East]: ['rub-block-temperature', 'top', 'right'],\r\n [EquipmentSideEnum.West]: ['rub-block-temperature', 'top', 'left']\r\n },\r\n },\r\n }\r\n },\r\n [EquipmentTypeEnum.Fan]: {\r\n [EquipmentSubTypeEnum.BeltDrive]: {\r\n [SensorTypeEnum.BearingTemperature]: {\r\n [SensorPositionEnum.DriveUpper]: {\r\n [EquipmentSideEnum.None]: ['bearing-temperature', 'drive-upper']\r\n },\r\n [SensorPositionEnum.DriveLower]: {\r\n [EquipmentSideEnum.None]: ['bearing-temperature', 'drive-lower']\r\n },\r\n [SensorPositionEnum.FrameUpper]: {\r\n [EquipmentSideEnum.None]: ['bearing-temperature', 'frame-upper']\r\n },\r\n [SensorPositionEnum.FrameLower]: {\r\n [EquipmentSideEnum.None]: ['bearing-temperature', 'frame-lower']\r\n },\r\n },\r\n [SensorTypeEnum.CurrentDesignLoad]: {\r\n [SensorPositionEnum.OnePerEquipment]: {\r\n [EquipmentSideEnum.None]: 'current-design-load'\r\n }\r\n },\r\n [SensorTypeEnum.CurrentAmpDraw]: {\r\n [SensorPositionEnum.OnePerEquipment]: {\r\n [EquipmentSideEnum.None]: 'current-amp-draw'\r\n }\r\n },\r\n [SensorTypeEnum.Speed]: {\r\n [SensorPositionEnum.OnePerEquipment]: {\r\n [EquipmentSideEnum.None]: 'speed'\r\n }\r\n },\r\n [SensorTypeEnum.Vibration]: {\r\n [SensorPositionEnum.Frame]: {\r\n [EquipmentSideEnum.None]: ['vibration', 'frame']\r\n },\r\n [SensorPositionEnum.Motor]: {\r\n [EquipmentSideEnum.None]: ['vibration', 'motor']\r\n },\r\n },\r\n },\r\n [EquipmentSubTypeEnum.DirectDrive]: {\r\n [SensorTypeEnum.BearingTemperature]: {\r\n [SensorPositionEnum.Drive]: {\r\n [EquipmentSideEnum.None]: ['bearing-temperature', 'drive']\r\n },\r\n [SensorPositionEnum.Frame]: {\r\n [EquipmentSideEnum.None]: ['bearing-temperature', 'frame']\r\n },\r\n },\r\n [SensorTypeEnum.CurrentDesignLoad]: {\r\n [SensorPositionEnum.OnePerEquipment]: {\r\n [EquipmentSideEnum.None]: 'current-design-load'\r\n }\r\n },\r\n [SensorTypeEnum.CurrentAmpDraw]: {\r\n [SensorPositionEnum.OnePerEquipment]: {\r\n [EquipmentSideEnum.None]: 'current-amp-draw'\r\n }\r\n },\r\n [SensorTypeEnum.Speed]: {\r\n [SensorPositionEnum.OnePerEquipment]: {\r\n [EquipmentSideEnum.None]: 'speed'\r\n }\r\n },\r\n [SensorTypeEnum.Vibration]: {\r\n [SensorPositionEnum.Frame]: {\r\n [EquipmentSideEnum.None]: ['vibration', 'frame']\r\n },\r\n [SensorPositionEnum.Motor]: {\r\n [EquipmentSideEnum.None]: ['vibration', 'motor']\r\n },\r\n },\r\n },\r\n },\r\n}\r\n\r\nexport const equipmentSchemes = {\r\n [EquipmentTypeEnum.Silo]: {\r\n [EquipmentSubTypeEnum.Small]: {\r\n [EquipmentSideEnum.None]: ['silo', 'small'],\r\n [EquipmentSideEnum.North]: '',\r\n [EquipmentSideEnum.South]: '',\r\n [EquipmentSideEnum.East]: '',\r\n [EquipmentSideEnum.West]: '',\r\n },\r\n [EquipmentSubTypeEnum.Medium]: {\r\n [EquipmentSideEnum.None]: ['silo', 'medium'],\r\n [EquipmentSideEnum.North]: '',\r\n [EquipmentSideEnum.South]: '',\r\n [EquipmentSideEnum.East]: '',\r\n [EquipmentSideEnum.West]: '',\r\n },\r\n [EquipmentSubTypeEnum.Large]: {\r\n [EquipmentSideEnum.None]: ['silo', 'large'],\r\n [EquipmentSideEnum.North]: '',\r\n [EquipmentSideEnum.South]: '',\r\n [EquipmentSideEnum.East]: '',\r\n [EquipmentSideEnum.West]: '',\r\n }\r\n },\r\n [EquipmentTypeEnum.Leg]: {\r\n [EquipmentSubTypeEnum.WithKneeBearing]: {\r\n [EquipmentSideEnum.None]: '',\r\n [EquipmentSideEnum.North]: ['leg', 'with-knee-bearing', 'left'],\r\n [EquipmentSideEnum.South]: ['leg', 'with-knee-bearing', 'right'],\r\n [EquipmentSideEnum.East]: ['leg', 'with-knee-bearing', 'right'],\r\n [EquipmentSideEnum.West]: ['leg', 'with-knee-bearing', 'left']\r\n },\r\n [EquipmentSubTypeEnum.WithoutKneeBearing]: {\r\n [EquipmentSideEnum.None]: '',\r\n [EquipmentSideEnum.North]: ['leg', 'without-knee-bearing', 'left'],\r\n [EquipmentSideEnum.South]: ['leg', 'without-knee-bearing', 'right'],\r\n [EquipmentSideEnum.East]: ['leg', 'without-knee-bearing', 'right'],\r\n [EquipmentSideEnum.West]: ['leg', 'without-knee-bearing', 'left']\r\n }\r\n },\r\n [EquipmentTypeEnum.Conveyor]: {\r\n [EquipmentSubTypeEnum.Drag]: {\r\n [EquipmentSideEnum.None]: '',\r\n [EquipmentSideEnum.North]: ['conveyor', 'drag', 'left'],\r\n [EquipmentSideEnum.South]: ['conveyor', 'drag', 'right', 'drag-south'],\r\n [EquipmentSideEnum.East]: ['conveyor', 'drag', 'right'],\r\n [EquipmentSideEnum.West]: ['conveyor', 'drag', 'left']\r\n },\r\n [EquipmentSubTypeEnum.Belt]: {\r\n [EquipmentSideEnum.None]: '',\r\n [EquipmentSideEnum.North]: ['conveyor', 'belt', 'left'],\r\n [EquipmentSideEnum.South]: ['conveyor', 'belt', 'right'],\r\n [EquipmentSideEnum.East]: ['conveyor', 'belt', 'right'],\r\n [EquipmentSideEnum.West]: ['conveyor', 'belt', 'left']\r\n },\r\n [EquipmentSubTypeEnum.Screw]: {\r\n [EquipmentSideEnum.None]: ['conveyor', 'screw'],\r\n [EquipmentSideEnum.North]: '',\r\n [EquipmentSideEnum.South]: '',\r\n [EquipmentSideEnum.East]: '',\r\n [EquipmentSideEnum.West]: '',\r\n },\r\n [EquipmentSubTypeEnum.CoveredBelt]: {\r\n [EquipmentSideEnum.None]: '',\r\n [EquipmentSideEnum.North]: ['conveyor', 'covered-belt', 'left'],\r\n [EquipmentSideEnum.South]: ['conveyor', 'covered-belt', 'right'],\r\n [EquipmentSideEnum.East]: ['conveyor', 'covered-belt', 'right'],\r\n [EquipmentSideEnum.West]: ['conveyor', 'covered-belt', 'left']\r\n },\r\n },\r\n [EquipmentTypeEnum.Tripper]: {\r\n [EquipmentSubTypeEnum.None]: {\r\n [EquipmentSideEnum.None]: '',\r\n [EquipmentSideEnum.North]: ['tripper', '', 'left'],\r\n [EquipmentSideEnum.South]: ['tripper', '', 'right'],\r\n [EquipmentSideEnum.East]: ['tripper', '', 'right'],\r\n [EquipmentSideEnum.West]: ['tripper', '', 'left']\r\n }\r\n },\r\n [EquipmentTypeEnum.Fan]: {\r\n [EquipmentSubTypeEnum.BeltDrive]: {\r\n [EquipmentSideEnum.None]: ['fan', 'belt-drive', ''],\r\n [EquipmentSideEnum.North]: '',\r\n [EquipmentSideEnum.South]: '',\r\n [EquipmentSideEnum.East]: '',\r\n [EquipmentSideEnum.West]: ''\r\n },\r\n [EquipmentSubTypeEnum.DirectDrive]: {\r\n [EquipmentSideEnum.None]: ['fan', 'direct-drive', ''],\r\n [EquipmentSideEnum.North]: '',\r\n [EquipmentSideEnum.South]: '',\r\n [EquipmentSideEnum.East]: '',\r\n [EquipmentSideEnum.West]: ''\r\n },\r\n }\r\n}\r\n\r\nexport const SideAB = {\r\n [EquipmentSideEnum.East]:EquipmentSideEnum.South,\r\n [EquipmentSideEnum.West]: EquipmentSideEnum.North,\r\n [EquipmentSideEnum.North]: EquipmentSideEnum.West,\r\n [EquipmentSideEnum.South]: EquipmentSideEnum.East,\r\n}","import { ItxEventTypeEnum, KtxEventTypeEnum, BtxEventTypeEnum } from \"../enums\";\r\n\r\nconst alarmLabel = 'Alarm';\r\nconst warningLabel = 'Warning';\r\nconst infoLabel = 'Info';\r\nconst errorLabel = 'Error';\r\n\r\nconst alarmIcon = 'table-icon-alarm';\r\nconst warningIcon = 'table-icon-warning';\r\nconst infoIcon = 'table-icon-info';\r\nconst errorIcon = 'table-icon-error';\r\n\r\nexport const ItxEventTypesLabel = {\r\n [ItxEventTypeEnum.Alarm]: alarmLabel,\r\n [ItxEventTypeEnum.Warning]: warningLabel,\r\n [ItxEventTypeEnum.Error]: errorLabel,\r\n}\r\n\r\nexport const ItxEventTypesIconClass = {\r\n [ItxEventTypeEnum.Alarm]: alarmIcon,\r\n [ItxEventTypeEnum.Warning]: warningIcon,\r\n [ItxEventTypeEnum.Error]: errorIcon,\r\n}\r\n\r\nexport const KtxEventTypesLabel = {\r\n [KtxEventTypeEnum.Alarm]: alarmLabel,\r\n [KtxEventTypeEnum.Info]: infoLabel\r\n}\r\n\r\nexport const KtxEventTypesIconClass = {\r\n [KtxEventTypeEnum.Alarm]: alarmIcon,\r\n [KtxEventTypeEnum.Info]: infoIcon\r\n}\r\n\r\nexport const BtxEventTypesLabel = {\r\n [BtxEventTypeEnum.Alarm]: alarmLabel,\r\n [BtxEventTypeEnum.Warning]: warningLabel\r\n}\r\n\r\nexport const BtxEventTypesIconClass = {\r\n [BtxEventTypeEnum.Alarm]: alarmIcon,\r\n [BtxEventTypeEnum.Warning]: warningIcon\r\n}","export class HubMethods {\r\n static Location = class {\r\n public static readonly locationAdded: string = 'locationAdded';\r\n public static readonly locationDeleted: string = 'locationDeleted';\r\n public static readonly locationInUpdate: string = 'locationInUpdate';\r\n public static readonly locationUpdated: string = 'locationUpdated';\r\n public static readonly locationEquipmentsInUpdate: string = 'locationEquipmentsInUpdate';\r\n public static readonly locationEquipmentsUpdated: string = 'locationEquipmentsUpdated';\r\n public static readonly locationDeviceInInitialization: string = 'locationDeviceInInitialization';\r\n public static readonly locationDeviceInitialized: string = 'locationDeviceInitialized';\r\n }\r\n\r\n static LocationBtx = class {\r\n public static readonly locationBtxAdded: string = 'locationBtxAdded';\r\n public static readonly locationBtxDeleted: string = 'locationBtxDeleted';\r\n public static readonly locationBtxInUpdate: string = 'locationBtxInUpdate';\r\n public static readonly locationBtxUpdated: string = 'locationBtxUpdated';\r\n public static readonly locationBtxEquipmentsInUpdate: string = 'locationBtxEquipmentsInUpdate';\r\n public static readonly locationBtxEquipmentsUpdated: string = 'locationBtxEquipmentsUpdated';\r\n public static readonly locationBtxDeviceInInitialization: string = 'locationBtxDeviceInInitialization';\r\n public static readonly locationBtxDeviceInitialized: string = 'locationBtxDeviceInitialized';\r\n }\r\n\r\n static Company = class {\r\n public static readonly companyAdded: string = 'companyAdded';\r\n public static readonly companyDeleted: string = 'companyDeleted';\r\n public static readonly companyInUpdate: string = 'companyInUpdate';\r\n public static readonly companyUpdated: string = 'companyUpdated';\r\n }\r\n\r\n static ServiceUser = class {\r\n public static readonly serviceUserAdded: string = 'serviceUserAdded';\r\n public static readonly serviceUserDeleted: string = 'serviceUserDeleted';\r\n public static readonly serviceUserInUpdate: string = 'serviceUserInUpdate';\r\n public static readonly serviceUserUpdated: string = 'serviceUserUpdated';\r\n }\r\n\r\n static SalesUser = class {\r\n public static readonly salesUserAdded: string = 'salesUserAdded';\r\n public static readonly salesUserDeleted: string = 'salesUserDeleted';\r\n public static readonly salesUserInUpdate: string = 'salesUserInUpdate';\r\n public static readonly salesUserUpdated: string = 'salesUserUpdated';\r\n }\r\n\r\n static CompanyAdmin = class {\r\n public static readonly companyAdminAdded: string = 'companyAdminAdded';\r\n public static readonly companyAdminDeleted: string = 'companyAdminDeleted';\r\n public static readonly companyAdminInUpdate: string = 'companyAdminInUpdate';\r\n public static readonly companyAdminUpdated: string = 'companyAdminUpdated';\r\n }\r\n\r\n static CompanyUser = class {\r\n public static readonly companyUserAdded: string = 'companyUserAdded';\r\n public static readonly companyUserDeleted: string = 'companyUserDeleted';\r\n public static readonly companyUserInUpdate: string = 'companyUserInUpdate';\r\n public static readonly companyUserUpdated: string = 'companyUserUpdated';\r\n }\r\n\r\n static Vendor = class {\r\n public static readonly vendorAdded: string = 'vendorAdded';\r\n public static readonly vendorDeleted: string = 'vendorDeleted';\r\n public static readonly vendorInUpdate: string = 'vendorInUpdate';\r\n public static readonly vendorUpdated: string = 'vendorUpdated';\r\n }\r\n\r\n static LocationKtx = class {\r\n public static readonly locationKtxAdded: string = 'locationKtxAdded';\r\n public static readonly locationKtxInUpdate: string = 'locationKtxInUpdate';\r\n public static readonly locationKtxUpdated: string = 'locationKtxUpdated';\r\n public static readonly locationKtxDeleted: string = 'locationKtxDeleted';\r\n public static readonly locationKtxBinsInUpdate: string = 'locationKtxBinsInUpdate';\r\n public static readonly locationKtxBinsUpdated: string = 'locationKtxBinsUpdated';\r\n public static readonly locationKtxDeviceInInitialization: string = 'locationKtxDeviceInInitialization';\r\n public static readonly locationKtxDeviceInitialized: string = 'locationKtxDeviceInitialized';\r\n public static readonly locationKtxTemperatureRangeUpdated: string = 'locationKtxTemperatureRangeUpdated';\r\n }\r\n\r\n static LocationItx = class {\r\n public static readonly locationItxAdded: string = 'locationItxAdded';\r\n public static readonly locationItxInUpdate: string = 'locationItxInUpdate';\r\n public static readonly locationItxUpdated: string = 'locationItxUpdated';\r\n public static readonly locationItxDeleted: string = 'locationItxDeleted';\r\n public static readonly locationItxStorageInView: string = 'locationItxStorageInView';\r\n public static readonly locationItxFullnessRangeUpdated: string = 'locationItxFullnessRangeUpdated';\r\n public static readonly locationItxDeviceInInitialization: string = 'locationItxDeviceInInitialization';\r\n public static readonly locationItxDeviceInitialized: string = 'locationItxDeviceInitialized';\r\n }\r\n\r\n static ItxBin = class {\r\n public static readonly itxBinAdded: string = 'itxBinAdded';\r\n public static readonly itxBinInUpdate: string = 'itxBinInUpdate';\r\n public static readonly itxBinUpdated: string = 'itxBinUpdated';\r\n public static readonly itxBinDeleted: string = 'itxBinDeleted';\r\n public static readonly itxBinRadarAdded: string = 'itxBinRadarAdded';\r\n public static readonly itxBinRadarInUpdate: string = 'itxBinRadarInUpdate';\r\n public static readonly itxBinRadarUpdated: string = 'itxBinRadarUpdated';\r\n public static readonly itxBinRadarDeleted: string = 'itxBinRadarDeleted';\r\n }\r\n\r\n static Updater = class {\r\n public static readonly updaterProjectUpdateFirmware: string = 'updaterProjectUpdateFirmware';\r\n }\r\n}","export * from './main-route-paths.constants';\r\nexport * from './api-routes.constants';\r\nexport * from './equipment-sensor-mapping.constants';\r\nexport * from './equipment-sensor-labels.constants';\r\nexport * from './hub-methods';\r\nexport * from './models-types.constants';\r\nexport * from './itx-bin.constants';\r\nexport * from './itx-reports-tab.constants';\r\nexport * from './event.constants';\r\nexport * from './calendar.constants';\r\nexport * from './btx-device.constants';\r\nexport * from './itx-radar.constants';\r\nexport * from './aqs-flat-storage-types.constants';\r\nexport * from './aqs-round.constants';\r\nexport * from './aqs-report.constants';\r\nexport * from './aqs-page.constants';\r\nexport * from './aqs-coversheet-types.constants';\r\nexport * from './aqs-airflow.constants';\r\nexport * from './aqs-flat-ducting-shapes.constants';\r\nexport * from './aqs-flush-floor.constants';\r\nexport * from './aqs-saved-quote.contants';\r\nexport * from './pile-shape.constants';\r\nexport * from './equipment-placeholders.constants';\r\nexport * from './btx-notification-type-label.constants';\r\nexport * from './email-service.constants';\r\nexport * from './equipment-options';\r\nexport * from './tutorial.constants';\r\nexport * from './device-update.constants';\r\nexport * from './ktx-sensor.constants';","import { ItxBinTypeEnum, CapacityUnitEnum, SizeMeasureEnum, TemperatureMeasureEnum, ItxStorageSortingEnum } from \"../enums\";\r\n\r\nexport class ItxBinIconClass {\r\n public static readonly bin_conical = 'bin-conical-icon';\r\n public static readonly bin_sloped = 'bin-sloped-icon';\r\n public static readonly bin_flat = 'bin-flat-icon';\r\n public static readonly silo_flat = 'silo-flat-icon';\r\n public static readonly silo_conical = 'silo-conical-icon';\r\n public static readonly silo_sloped = 'silo-sloped-icon';\r\n public static readonly liquid_flat = 'liquid-storage-flat-icon';\r\n public static readonly liquid_conical = 'liquid-storage-conical-icon';\r\n public static readonly liquid_sloped = 'liquid-storage-sloped-icon';\r\n public static readonly storage_flat = 'flat-storage-level-icon';\r\n public static readonly storage_conical = 'flat-storage-conical-icon';\r\n public static readonly storage_sloped = 'flat-storage-sloped-icon';\r\n public static getIconClass(binType: ItxBinTypeEnum): string {\r\n switch (binType) {\r\n case ItxBinTypeEnum.BinFlat:\r\n return ItxBinIconClass.bin_flat;\r\n case ItxBinTypeEnum.BinConical:\r\n return ItxBinIconClass.bin_conical;\r\n case ItxBinTypeEnum.BinSloped:\r\n return ItxBinIconClass.bin_sloped;\r\n case ItxBinTypeEnum.SiloFlat:\r\n return ItxBinIconClass.silo_flat;\r\n case ItxBinTypeEnum.SiloConical:\r\n return ItxBinIconClass.silo_conical;\r\n case ItxBinTypeEnum.SiloSloped:\r\n return ItxBinIconClass.silo_sloped;\r\n case ItxBinTypeEnum.LiquidStorageFlat:\r\n return ItxBinIconClass.liquid_flat;\r\n case ItxBinTypeEnum.LiquidStorageConical:\r\n return ItxBinIconClass.liquid_conical;\r\n case ItxBinTypeEnum.LiquidStorageSloped:\r\n return ItxBinIconClass.liquid_sloped;\r\n case ItxBinTypeEnum.FlatStorageLevel:\r\n return ItxBinIconClass.storage_flat;\r\n case ItxBinTypeEnum.FlatStorageConical:\r\n return ItxBinIconClass.storage_conical;\r\n case ItxBinTypeEnum.FlatStorageSloped:\r\n return ItxBinIconClass.storage_sloped;\r\n }\r\n }\r\n}\r\n\r\nexport const ItxBinTypeLabel = {\r\n [ItxBinTypeEnum.BinFlat]: 'Bin flat',\r\n [ItxBinTypeEnum.BinConical]: 'Bin conical',\r\n [ItxBinTypeEnum.BinSloped]: 'Bin sloped',\r\n [ItxBinTypeEnum.SiloFlat]: 'Silo flat',\r\n [ItxBinTypeEnum.SiloConical]: 'Silo conical',\r\n [ItxBinTypeEnum.SiloSloped]: 'Silo sloped',\r\n [ItxBinTypeEnum.FlatStorageLevel]: ' Flat storage level',\r\n [ItxBinTypeEnum.FlatStorageConical]: 'Flat storage conical',\r\n [ItxBinTypeEnum.FlatStorageSloped]: 'Flat storage sloped',\r\n [ItxBinTypeEnum.LiquidStorageFlat]: 'Liquid storage flat',\r\n [ItxBinTypeEnum.LiquidStorageConical]: 'Liquid storage conical',\r\n [ItxBinTypeEnum.LiquidStorageSloped]: 'Liquid storage sloped',\r\n}\r\n\r\nexport const CapacityUnitLabel = {\r\n [CapacityUnitEnum.Ft_3]: 'ft³',\r\n [CapacityUnitEnum.M_3]: 'm³',\r\n [CapacityUnitEnum.Bsh]: 'bsh',\r\n [CapacityUnitEnum.L]: 'L',\r\n [CapacityUnitEnum.HL]: 'hL',\r\n [CapacityUnitEnum.KL]: 'kL',\r\n [CapacityUnitEnum.Gal]: 'gal',\r\n [CapacityUnitEnum.Bbl]: 'BBL'\r\n}\r\n\r\nexport const CapacityUnitLiquidLabel = {\r\n [CapacityUnitEnum.L]: 'L',\r\n [CapacityUnitEnum.HL]: 'hL',\r\n [CapacityUnitEnum.KL]: 'kL',\r\n [CapacityUnitEnum.Gal]: 'gal',\r\n [CapacityUnitEnum.Bbl]: 'BBL'\r\n}\r\n\r\nexport const CapacityUnitLoosLabel = {\r\n [CapacityUnitEnum.Ft_3]: 'ft³',\r\n [CapacityUnitEnum.M_3]: 'm³',\r\n [CapacityUnitEnum.Bsh]: 'bsh'\r\n}\r\n\r\nexport const SizeMeasureLabel = {\r\n [SizeMeasureEnum.Ft]: 'ft',\r\n [SizeMeasureEnum.M]: 'm',\r\n [SizeMeasureEnum.In]: 'in'\r\n}\r\n\r\nexport const TemperatureMeasureLabel = {\r\n [TemperatureMeasureEnum.Fahrenheit]: '°F',\r\n [TemperatureMeasureEnum.Celsius]: '°C',\r\n}\r\n\r\nexport const SortParametersLabel = {\r\n [ItxStorageSortingEnum.Alphabetically]: \"Alphabetically A-Z\",\r\n [ItxStorageSortingEnum.AlphabeticallyDesc]: \"Alphabetically Z-A\",\r\n [ItxStorageSortingEnum.Percentage]: \"From lowest percentage to highest\",\r\n [ItxStorageSortingEnum.PercentageDesc]: \"From highest percentage to lowest\",\r\n [ItxStorageSortingEnum.Capacity]: \"From lowest capacity to highest\",\r\n [ItxStorageSortingEnum.CapacityDesc]: \"From highest capacity to lowest\" ,\r\n [ItxStorageSortingEnum.Material]: \"By stored material\"\r\n}\r\n\r\nexport const StorageBinTypesIcons = {\r\n [ItxBinTypeEnum.BinFlat]: \"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='157.827' height='165.002' viewBox='0 0 157.827 165.002'%3E%3Cdefs%3E%3Cstyle%3E .cls-1%7Bfill:%23dce1eb%7D.cls-2%7Bfill:%23bec3d2%7D %3C/style%3E%3C/defs%3E%3Cg id='Group_1178' transform='translate(-181.033 -72.312)'%3E%3Cpath id='Subtraction_1' d='M-2153.174 1955.139H-2311V1828h157.827v127.138zm-144.275-113.588v82.1h132.319v-82.1z' class='cls-1' transform='translate(2492.033 -1717.826)'/%3E%3Cpath id='Path_798' d='M10688 1108.376h-40.652l55.8-33.08h6.775z' class='cls-2' transform='translate(-10462.725 -1002.984)'/%3E%3Cpath id='Path_797' d='M10712.707 1075.3h9.167v34.276h-28.7z' class='cls-1' transform='translate(-10462.725 -1002.984)'/%3E%3Cpath id='Path_796' d='M10725.461 1075.3v33.877h27.1l-19.529-33.877z' class='cls-1' transform='translate(-10462.725 -1002.984)'/%3E%3Cpath id='Path_801' d='M10735.823 1075.3h8.768l53.8 33.478h-41.449z' class='cls-2' transform='translate(-10462.725 -1002.984)'/%3E%3C/g%3E%3C/svg%3E%0A\",\r\n [ItxBinTypeEnum.BinConical]: \"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='157.827' height='164.843' viewBox='0 0 157.827 164.843'%3E%3Cdefs%3E%3Cstyle%3E .cls-1%7Bfill:%23bec3d2%7D.cls-2%7Bfill:%23dce1eb%7D %3C/style%3E%3C/defs%3E%3Cg id='Group_1182' transform='translate(-181.275 -282.312)'%3E%3Cpath id='Path_798' d='M10688 1108.376h-40.652l55.8-33.08h6.775z' class='cls-1' transform='translate(-10462.725 -792.984)'/%3E%3Cpath id='Path_797' d='M10712.707 1075.3h9.167v34.276h-28.7z' class='cls-2' transform='translate(-10462.725 -792.984)'/%3E%3Cpath id='Path_796' d='M10725.461 1075.3v33.877h27.1l-19.529-33.877z' class='cls-2' transform='translate(-10462.725 -792.984)'/%3E%3Cpath id='Path_801' d='M10735.823 1075.3h8.768l53.8 33.478h-41.449z' class='cls-1' transform='translate(-10462.725 -792.984)'/%3E%3Cpath id='Subtraction_5' d='M-2153.174 1955.139H-2311V1828h157.827v127.138zM-2298.5 1841.5v72.282l47.148 28.963h37.046l47.823-28.963V1841.5z' class='cls-2' transform='translate(2492.275 -1507.984)'/%3E%3C/g%3E%3C/svg%3E%0A\",\r\n [ItxBinTypeEnum.BinSloped]: \"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='157.827' height='165.002'%3E%3Cdefs%3E%3Cstyle%3E .cls-1%7Bfill:%23dce1eb%7D.cls-2%7Bfill:%23bec3d2%7D %3C/style%3E%3C/defs%3E%3Cg id='Group_1186' data-name='Group 1186' transform='translate(-181.033 -525.312)'%3E%3Cpath id='Subtraction_9' data-name='Subtraction 9' class='cls-1' d='M-2153.174 1955.139H-2311V1828h157.827v127.138zm-144.275-104.621v82.1l132.319-18.833v-63.269z' transform='translate(2492.033 -1264.826)'/%3E%3Cpath id='Path_798' data-name='Path 798' class='cls-2' d='M10688 1108.376h-40.652l55.8-33.08h6.775z' transform='translate(-10462.725 -549.984)'/%3E%3Cpath id='Path_797' data-name='Path 797' class='cls-1' d='M10712.707 1075.3h9.167v34.276h-28.7z' transform='translate(-10462.725 -549.984)'/%3E%3Cpath id='Path_796' data-name='Path 796' class='cls-1' d='M10725.461 1075.3v33.877h27.1l-19.529-33.877z' transform='translate(-10462.725 -549.984)'/%3E%3Cpath id='Path_801' data-name='Path 801' class='cls-2' d='M10735.823 1075.3h8.768l53.8 33.478h-41.449z' transform='translate(-10462.725 -549.984)'/%3E%3C/g%3E%3C/svg%3E%0A\",\r\n \r\n [ItxBinTypeEnum.SiloFlat]: \"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='99.638' height='165.451'%3E%3Cdefs%3E%3Cstyle%3E .cls-1%7Bfill:%23dce1eb%7D.cls-2%7Bfill:%23bec3d2%7D %3C/style%3E%3C/defs%3E%3Cg id='Group_1179' data-name='Group 1179' transform='translate(-399.275 -74.051)'%3E%3Cpath id='Subtraction_2' data-name='Subtraction 2' class='cls-1' d='M-2211.362 1954.741H-2311V1828h99.638v126.74zM-2298 1840.754v83.3h74.529v-83.3z' transform='translate(2710.275 -1715.239)'/%3E%3Cpath id='Path_804' data-name='Path 804' class='cls-2' d='m10953.477 1075.2-36.3 33.975h26.7l14.154-33.975z' transform='translate(-10517.903 -1000.773)'/%3E%3Cpath id='Path_805' data-name='Path 805' class='cls-1' d='M10965.179 1109.583h-18.159l13.583-34.336h4.576z' transform='translate(-10517.903 -1001.196)'/%3E%3Cpath id='Path_806' data-name='Path 806' class='cls-1' d='M10967 1074.5h6.2l13.206 34.139H10967z' transform='translate(-10517.904 -1000.238)'/%3E%3Cpath id='Path_807' data-name='Path 807' class='cls-2' d='M10975.692 1075.47h4.47l36.059 34.127h-27.379z' transform='translate(-10517.903 -1001.196)'/%3E%3C/g%3E%3C/svg%3E%0A\",\r\n [ItxBinTypeEnum.SiloConical]: \"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='99.638' height='165.706'%3E%3Cdefs%3E%3Cstyle%3E .cls-1%7Bfill:%23bec3d2%7D.cls-2%7Bfill:%23dce1eb%7D %3C/style%3E%3C/defs%3E%3Cg id='Group_1183' data-name='Group 1183' transform='translate(-399.275 -284.051)'%3E%3Cg id='Group_822' data-name='Group 822' transform='translate(-10462.903 -1656.984)'%3E%3Cpath id='Path_804' data-name='Path 804' class='cls-1' d='m10953.477 1075.2-36.3 33.975h26.7l14.154-33.975z' transform='translate(-55 866.211)'/%3E%3Cpath id='Path_805' data-name='Path 805' class='cls-2' d='M10965.179 1109.583h-18.159l13.583-34.336h4.576z' transform='translate(-55 865.789)'/%3E%3Cpath id='Path_806' data-name='Path 806' class='cls-2' d='M10967 1074.5h6.2l13.206 34.139H10967z' transform='translate(-55 866.746)'/%3E%3Cpath id='Path_807' data-name='Path 807' class='cls-1' d='M10975.692 1075.47h4.47l36.059 34.127h-27.379z' transform='translate(-55 865.789)'/%3E%3C/g%3E%3Cpath id='Subtraction_6' data-name='Subtraction 6' class='cls-2' d='M-2211.362 1954.741H-2311V1828h99.638v126.74zM-2298 1840v71.341l27.1 30.688h22.319l25.108-30.688V1840z' transform='translate(2710.275 -1504.984)'/%3E%3C/g%3E%3C/svg%3E%0A\",\r\n [ItxBinTypeEnum.SiloSloped]: \"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='99.638' height='165.451'%3E%3Cdefs%3E%3Cstyle%3E .cls-1%7Bfill:%23dce1eb%7D.cls-2%7Bfill:%23bec3d2%7D %3C/style%3E%3C/defs%3E%3Cg id='Group_1187' data-name='Group 1187' transform='translate(-399.275 -527.051)'%3E%3Cpath id='Subtraction_10' data-name='Subtraction 10' class='cls-1' d='M-2211.362 1954.741H-2311V1828h99.638v126.74zM-2298 1840.754v83.3l74.529-10.79v-72.508z' transform='translate(2710.275 -1262.239)'/%3E%3Cpath id='Path_804' data-name='Path 804' class='cls-2' d='m10953.477 1075.2-36.3 33.975h26.7l14.154-33.975z' transform='translate(-10517.903 -547.773)'/%3E%3Cpath id='Path_805' data-name='Path 805' class='cls-1' d='M10965.179 1109.583h-18.159l13.583-34.336h4.576z' transform='translate(-10517.903 -548.196)'/%3E%3Cpath id='Path_806' data-name='Path 806' class='cls-1' d='M10967 1074.5h6.2l13.206 34.139H10967z' transform='translate(-10517.904 -547.238)'/%3E%3Cpath id='Path_807' data-name='Path 807' class='cls-2' d='M10975.692 1075.47h4.47l36.059 34.127h-27.379z' transform='translate(-10517.903 -548.196)'/%3E%3C/g%3E%3C/svg%3E%0A\",\r\n \r\n [ItxBinTypeEnum.FlatStorageLevel]: \"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='221.691' height='166.556'%3E%3Cdefs%3E%3Cstyle%3E .cls-1%7Bfill:%23bec3d2%7D.cls-2%7Bfill:%23dce1eb%7D %3C/style%3E%3C/defs%3E%3Cg id='Group_1181' data-name='Group 1181' transform='translate(-701.916 -70.253)'%3E%3Cpath id='Path_810' data-name='Path 810' class='cls-1' d='M11465.688 1075.159h10.377l-32.545 35.139h-60.845z' transform='translate(-10680.759 -1004.906)'/%3E%3Cpath id='Path_811' data-name='Path 811' class='cls-2' d='M11479.6 1075.159h12.264v34.667h-40.327z' transform='translate(-10680.759 -1004.906)'/%3E%3Cpath id='Path_812' data-name='Path 812' class='cls-2' d='M11497.286 1075.159h10.849l29.715 33.724h-40.563z' transform='translate(-10680.759 -1004.906)'/%3E%3Cpath id='Path_813' data-name='Path 813' class='cls-1' d='M11513.323 1075.159h9.669l80.891 33.724h-60.845z' transform='translate(-10680.759 -1004.906)'/%3E%3Cpath id='Subtraction_4' data-name='Subtraction 4' class='cls-2' d='M-2089.31 1952.35H-2311V1828h221.691v124.349zm-204.061-110v81.7h186.125v-81.7z' transform='translate(3012.916 -1715.542)'/%3E%3C/g%3E%3C/svg%3E%0A\",\r\n [ItxBinTypeEnum.FlatStorageConical]: \"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='222.05' height='166.113'%3E%3Cdefs%3E%3Cstyle%3E .cls-1%7Bfill:%23bec3d2%7D.cls-2%7Bfill:%23dce1eb%7D %3C/style%3E%3C/defs%3E%3Cg id='Group_1185' data-name='Group 1185' transform='translate(-701.916 -280.253)'%3E%3Cg id='Group_824' data-name='Group 824' transform='translate(-10462.725 -1656.984)'%3E%3Cpath id='Path_810' data-name='Path 810' class='cls-1' d='M11465.688 1075.159h10.377l-32.545 35.139h-60.845z' transform='translate(-218.034 862.078)'/%3E%3Cpath id='Path_811' data-name='Path 811' class='cls-2' d='M11479.6 1075.159h12.264v34.667h-40.327z' transform='translate(-218.034 862.078)'/%3E%3Cpath id='Path_812' data-name='Path 812' class='cls-2' d='M11497.286 1075.159h10.849l29.715 33.724h-40.563z' transform='translate(-218.034 862.078)'/%3E%3Cpath id='Path_813' data-name='Path 813' class='cls-1' d='M11513.323 1075.159h9.669l80.891 33.724h-60.845z' transform='translate(-218.034 862.078)'/%3E%3C/g%3E%3Cpath id='Subtraction_8' data-name='Subtraction 8' class='cls-2' d='M-2089.31 1952.35H-2311V1828h221.691v124.349zM-2294 1845v68.392l47.667 22.279h83.936l54.92-19.17V1845z' transform='translate(3013.275 -1505.984)'/%3E%3C/g%3E%3C/svg%3E%0A\",\r\n [ItxBinTypeEnum.FlatStorageSloped]: \"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='221.691' height='166.556'%3E%3Cdefs%3E%3Cstyle%3E .cls-1%7Bfill:%23bec3d2%7D.cls-2%7Bfill:%23dce1eb%7D %3C/style%3E%3C/defs%3E%3Cg id='Group_1189' data-name='Group 1189' transform='translate(-701.916 -523.253)'%3E%3Cpath id='Path_810' data-name='Path 810' class='cls-1' d='M11465.688 1075.159h10.377l-32.545 35.139h-60.845z' transform='translate(-10680.759 -551.906)'/%3E%3Cpath id='Path_811' data-name='Path 811' class='cls-2' d='M11479.6 1075.159h12.264v34.667h-40.327z' transform='translate(-10680.759 -551.906)'/%3E%3Cpath id='Path_812' data-name='Path 812' class='cls-2' d='M11497.286 1075.159h10.849l29.715 33.724h-40.563z' transform='translate(-10680.759 -551.906)'/%3E%3Cpath id='Path_813' data-name='Path 813' class='cls-1' d='M11513.323 1075.159h9.669l80.891 33.724h-60.845z' transform='translate(-10680.759 -551.906)'/%3E%3Cpath id='Subtraction_12' data-name='Subtraction 12' class='cls-2' d='M-2089.31 1952.35H-2311V1828h221.691v124.349zm-204.061-110v81.7l186.125-25.663v-56.042z' transform='translate(3012.916 -1262.542)'/%3E%3C/g%3E%3C/svg%3E%0A\",\r\n \r\n [ItxBinTypeEnum.LiquidStorageFlat]: \"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='99.042' height='165.697'%3E%3Cdefs%3E%3Cstyle%3E .cls-1%7Bfill:%23bec3d2%7D.cls-2%7Bfill:%23dce1eb%7D %3C/style%3E%3C/defs%3E%3Cg id='Group_1180' data-name='Group 1180' transform='translate(-554.276 -74.051)'%3E%3Cpath id='Path_804' data-name='Path 804' class='cls-1' d='m10953.477 1075.2-36.3 33.975h26.7l14.154-33.975z' transform='translate(-10362.902 -1000.773)'/%3E%3Cpath id='Path_805' data-name='Path 805' class='cls-2' d='M10965.179 1109.583h-18.159l13.583-34.336h4.576z' transform='translate(-10362.902 -1001.196)'/%3E%3Cpath id='Path_806' data-name='Path 806' class='cls-2' d='M10967 1074.5h6.2l13.206 34.139H10967z' transform='translate(-10362.902 -1000.238)'/%3E%3Cpath id='Path_807' data-name='Path 807' class='cls-1' d='M10975.692 1075.47h4.47l36.059 34.127h-27.379z' transform='translate(-10362.902 -1001.196)'/%3E%3Cpath id='Subtraction_3' data-name='Subtraction 3' class='cls-2' d='M-2222.4 1955.232h-7.665v-30.045h-74.5v30.045H-2311V1828h88.6v127.231zm-75.6-113.742v63.769h61.623v-63.769z' transform='translate(2871.274 -1715.484)'/%3E%3C/g%3E%3C/svg%3E%0A\",\r\n [ItxBinTypeEnum.LiquidStorageConical]: \"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='99.042' height='166.197'%3E%3Cdefs%3E%3Cstyle%3E .cls-1%7Bfill:%23bec3d2%7D.cls-2%7Bfill:%23dce1eb%7D %3C/style%3E%3C/defs%3E%3Cg id='Group_1184' data-name='Group 1184' transform='translate(-554.276 -284.051)'%3E%3Cg id='Group_823' data-name='Group 823' transform='translate(-10307.902 -1656.984)'%3E%3Cpath id='Path_804' data-name='Path 804' class='cls-1' d='m10953.477 1075.2-36.3 33.975h26.7l14.154-33.975z' transform='translate(-55 866.211)'/%3E%3Cpath id='Path_805' data-name='Path 805' class='cls-2' d='M10965.179 1109.583h-18.159l13.583-34.336h4.576z' transform='translate(-55 865.789)'/%3E%3Cpath id='Path_806' data-name='Path 806' class='cls-2' d='M10967 1074.5h6.2l13.206 34.139H10967z' transform='translate(-55 866.746)'/%3E%3Cpath id='Path_807' data-name='Path 807' class='cls-1' d='M10975.692 1075.47h4.47l36.059 34.127h-27.379z' transform='translate(-55 865.789)'/%3E%3C/g%3E%3Cpath id='Subtraction_7' data-name='Subtraction 7' class='cls-2' d='M-2222.4 1955.232h-7.665v-30.045h-74.5v30.045H-2311V1828h88.6v127.231zm-75.1-114.732v50.257l20.725 20.207h21.243l18.652-20.207V1840.5z' transform='translate(2871.274 -1504.984)'/%3E%3C/g%3E%3C/svg%3E%0A\",\r\n [ItxBinTypeEnum.LiquidStorageSloped]: \"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='99.042' height='165.697'%3E%3Cdefs%3E%3Cstyle%3E .cls-1%7Bfill:%23bec3d2%7D.cls-2%7Bfill:%23dce1eb%7D %3C/style%3E%3C/defs%3E%3Cg id='Group_1188' data-name='Group 1188' transform='translate(-554.276 -527.051)'%3E%3Cpath id='Path_804' data-name='Path 804' class='cls-1' d='m10953.477 1075.2-36.3 33.975h26.7l14.154-33.975z' transform='translate(-10362.902 -547.773)'/%3E%3Cpath id='Path_805' data-name='Path 805' class='cls-2' d='M10965.179 1109.583h-18.159l13.583-34.336h4.576z' transform='translate(-10362.902 -548.196)'/%3E%3Cpath id='Path_806' data-name='Path 806' class='cls-2' d='M10967 1074.5h6.2l13.206 34.139H10967z' transform='translate(-10362.902 -547.238)'/%3E%3Cpath id='Path_807' data-name='Path 807' class='cls-1' d='M10975.692 1075.47h4.47l36.059 34.127h-27.379z' transform='translate(-10362.902 -548.196)'/%3E%3Cpath id='Subtraction_11' data-name='Subtraction 11' class='cls-2' d='M-2222.4 1955.232h-7.665v-30.045h-74.5v30.045H-2311V1828h88.6v127.231zm-75.6-113.742v63.769l61.623-9.366v-54.4z' transform='translate(2871.274 -1262.484)'/%3E%3C/g%3E%3C/svg%3E%0A\",\r\n }\r\n\r\nexport const LiquidStorageTypes = [ItxBinTypeEnum.LiquidStorageFlat, ItxBinTypeEnum.LiquidStorageConical, ItxBinTypeEnum.LiquidStorageSloped];\r\nexport const FlatStorageTypes = [ItxBinTypeEnum.FlatStorageLevel, ItxBinTypeEnum.FlatStorageConical, ItxBinTypeEnum.FlatStorageSloped];\r\nexport const LiquidCapacityUnit = [CapacityUnitEnum.L, CapacityUnitEnum.HL, CapacityUnitEnum.KL, CapacityUnitEnum.Gal, CapacityUnitEnum.Bbl];\r\n","import { ItxRadarLocationEnum } from \"../enums\";\r\n\r\nexport const ItxRadarLocationLabel={\r\n [ItxRadarLocationEnum.Eave]:'Eave',\r\n [ItxRadarLocationEnum.Middle]:'Middle',\r\n [ItxRadarLocationEnum.Peak]:'Peak',\r\n}","import { ItxReportsReadingUnitEnum, ItxBinTypeEnum, ReportFormatEnum } from \"../enums\"\r\n\r\nexport class StorageFakeDataModel {\r\n id: number;\r\n name: string;\r\n totalCapacity: number;\r\n material: string;\r\n headSpace: number;\r\n temperature: number;\r\n binType: string;\r\n storageFull: number;\r\n rangeColor: string;\r\n}\r\n\r\nexport const StorageBinTypesClasses = {\r\n [ItxBinTypeEnum.BinFlat]: \"bin-flat\",\r\n [ItxBinTypeEnum.BinConical]: \"bin-conical\",\r\n [ItxBinTypeEnum.BinSloped]: \"bin-sloped\",\r\n\r\n [ItxBinTypeEnum.SiloFlat]: \"silo-flat\",\r\n [ItxBinTypeEnum.SiloConical]: \"silo-conical\",\r\n [ItxBinTypeEnum.SiloSloped]: \"silo-sloped\",\r\n\r\n [ItxBinTypeEnum.FlatStorageLevel]: \"flat-storage\",\r\n [ItxBinTypeEnum.FlatStorageConical]: \"flat-conical\",\r\n [ItxBinTypeEnum.FlatStorageSloped]: \"flat-sloped\",\r\n\r\n [ItxBinTypeEnum.LiquidStorageFlat]: \"liquid-flat\",\r\n [ItxBinTypeEnum.LiquidStorageConical]: \"liquid-conical\",\r\n [ItxBinTypeEnum.LiquidStorageSloped]: \"liquid-sloped\",\r\n}\r\n\r\nexport const ItxReportReadingUnitLabel = {\r\n [ItxReportsReadingUnitEnum.AvailableCapacity]: \"Available Capacity\",\r\n [ItxReportsReadingUnitEnum.UsedCapacity]: \"Used Capacity\",\r\n [ItxReportsReadingUnitEnum.HeadSpace]: \"Head Space\",\r\n [ItxReportsReadingUnitEnum.PercentFull]: \"Percent Full\",\r\n [ItxReportsReadingUnitEnum.Temperature]: \"Temperature of the Electronics\",\r\n [ItxReportsReadingUnitEnum.FillHeight]: \"Fill Height of Material in Storage\",\r\n [ItxReportsReadingUnitEnum.CalcUsedCapacity]: \"Calc'd Used Cap\",\r\n [ItxReportsReadingUnitEnum.CalcAvailableCapacity]: \"Calc'd Available Cap\",\r\n}\r\n\r\nexport const ItxReportRadarReadingUnitLabel = {\r\n [ItxReportsReadingUnitEnum.UsedCapacity]: \"Used Capacity\",\r\n [ItxReportsReadingUnitEnum.HeadSpace]: \"Head Space\",\r\n [ItxReportsReadingUnitEnum.PercentFull]: \"Percent Full\",\r\n [ItxReportsReadingUnitEnum.Temperature]: \"Temperature of the Electronics\",\r\n}\r\n\r\nexport const StorageFakeData: StorageFakeDataModel[] = [\r\n {\r\n id: 1,\r\n name: \"Storage 1\",\r\n totalCapacity: 80.000,\r\n material: \"Corn\",\r\n headSpace: 21,\r\n temperature: 98,\r\n binType: \"binFlat\",\r\n storageFull: 40,\r\n rangeColor: \"#71c5a3\",\r\n },\r\n {\r\n id: 2,\r\n name: \"Storage 2\",\r\n totalCapacity: 120.000,\r\n material: \"Corn\",\r\n headSpace: 21,\r\n temperature: 98,\r\n binType: \"binConical\",\r\n storageFull: 80,\r\n rangeColor: \"#f4bd56\",\r\n },\r\n {\r\n id: 3,\r\n name: \"Storage 3\",\r\n totalCapacity: 120.000,\r\n material: \"Corn\",\r\n headSpace: 21,\r\n temperature: 98,\r\n binType: \"binSloped\",\r\n storageFull: 65,\r\n rangeColor: \"#8bc9ff\",\r\n },\r\n {\r\n id: 4,\r\n name: \"Storage 4\",\r\n totalCapacity: 10.000,\r\n material: \"Corn\",\r\n headSpace: 21,\r\n temperature: 98,\r\n binType: \"siloFlat\",\r\n storageFull: 20,\r\n rangeColor: \"#6cc3a0\",\r\n },\r\n {\r\n id: 5,\r\n name: \"Storage 5\",\r\n totalCapacity: 10.000,\r\n material: \"Corn\",\r\n headSpace: 21,\r\n temperature: 98,\r\n binType: \"siloConical\",\r\n storageFull: 32,\r\n rangeColor: \"#6cc3a0\",\r\n },\r\n {\r\n id: 6,\r\n name: \"Storage 6\",\r\n totalCapacity: 10.000,\r\n material: \"Corn\",\r\n headSpace: 21,\r\n temperature: 98,\r\n binType: \"siloSloped\",\r\n storageFull: 75,\r\n rangeColor: \"#f4bd56\",\r\n },\r\n {\r\n id: 7,\r\n name: \"Storage 7\",\r\n totalCapacity: 100.000,\r\n material: \"Corn\",\r\n headSpace: 21,\r\n temperature: 98,\r\n binType: \"flatStorageLevel\",\r\n storageFull: 50,\r\n rangeColor: \"#8bc9ff\",\r\n },\r\n {\r\n id: 8,\r\n name: \"Storage 8\",\r\n totalCapacity: 100.000,\r\n material: \"Corn\",\r\n headSpace: 21,\r\n temperature: 98,\r\n binType: \"flatStorageConical\",\r\n storageFull: 82,\r\n rangeColor: \"#8f65c7\",\r\n },\r\n {\r\n id: 9,\r\n name: \"Storage 9\",\r\n totalCapacity: 100.000,\r\n material: \"Corn\",\r\n headSpace: 21,\r\n temperature: 98,\r\n binType: \"flatStorageSloped\",\r\n storageFull: 91,\r\n rangeColor: \"#d95656\",\r\n },\r\n {\r\n id: 10,\r\n name: \"Storage 10\",\r\n totalCapacity: 100.000,\r\n material: \"Corn\",\r\n headSpace: 21,\r\n temperature: 98,\r\n binType: \"liquidStorageFlat\",\r\n storageFull: 11,\r\n rangeColor: \"#6cc3a0\",\r\n },\r\n {\r\n id: 11,\r\n name: \"Storage 11\",\r\n totalCapacity: 50.000,\r\n material: \"Corn\",\r\n headSpace: 21,\r\n temperature: 98,\r\n binType: \"liquidStorageConical\",\r\n storageFull: 72,\r\n rangeColor: \"#f4bd56\",\r\n },\r\n {\r\n id: 12,\r\n name: \"Storage 12\",\r\n totalCapacity: 50.000,\r\n material: \"Corn\",\r\n headSpace: 21,\r\n temperature: 98,\r\n binType: \"liquidStorageSloped\",\r\n storageFull: 98,\r\n rangeColor: \"#d95656\",\r\n }\r\n]\r\nexport const ReportFileFormatLabel = {\r\n [ReportFormatEnum.csv]: \"csv\",\r\n [ReportFormatEnum.pdf]: \"pdf\",\r\n [ReportFormatEnum.png]: \"png\"\r\n}\r\n","export class SensorAlarmLabels {\r\n public static readonly OpenTc: string = 'OT';\r\n public static readonly NoResponse: string = 'BL';\r\n public static readonly MaxRise: string = 'MR';\r\n public static readonly HighLimit: string = 'HL';\r\n public static readonly Unknown: string = 'unk';\r\n}","import { UserRoleEnum } from '../../common';\r\nimport {\r\n NavigationItemsInfoInterface,\r\n RouteToRoleMapInterface,\r\n RoutesForRolesInterface,\r\n} from '../models';\r\nimport { ProjectEnum } from '../enums';\r\n\r\nexport const MainRoutePaths = {\r\n LOCATIONS: 'locations',\r\n COMPANIES: 'companies',\r\n COMPANY_ADMINS: 'company-admins',\r\n COMPANY_USERS: 'company-users',\r\n SERVICE_USERS: 'service-users',\r\n BTX_MANAGEMENT: 'btx-management',\r\n BTX_LIVE_DATA: 'btx-live-data',\r\n BTX_LIVE_DATA_EQUIPMENT_VIEW: 'btx-live-data-equipment-view',\r\n BTX_HISTORICAL_DATA: 'btx-historical-data',\r\n BTX_NOTIFICATIONS: 'btx-notifications',\r\n KTX_MANAGEMENT: 'ktx-management',\r\n KTX_LOCATION_DETAILS: 'ktx-location-details',\r\n KTX_BIN_DETAILS: 'ktx-bin-details',\r\n KTX_LOCATION_VIEW: 'ktx-location-view',\r\n KTX_HISTORICAL_DATA: 'ktx-historical-data',\r\n KTX_NOTIFICATIONS: 'ktx-notifications',\r\n BINS: 'bins',\r\n ITX_MANAGEMENT: 'itx-management',\r\n ITX_VIEWS: 'itx-storages-view',\r\n ITX_STORAGES_MANAGEMENT: 'itx-storages-management',\r\n ITX_REPORTS: 'itx-reports',\r\n ITX_ALERT: 'itx-alerts',\r\n VENDORS: 'vendors',\r\n SALES_USERS: 'sales-users',\r\n AQS_ROUND_STORAGE: 'round-storage',\r\n AQS_FLAT_STORAGE: 'flat-storage',\r\n AQS_COMPUTATION_SHEET: 'computation_sheet',\r\n AQS_QUOTES: 'quotes',\r\n EMAIL_MANAGEMENT: 'email-management',\r\n FIRMWARE_MANAGEMENT: 'firmware-management',\r\n};\r\n\r\nexport const NavigationItemsInfo: NavigationItemsInfoInterface = {\r\n [MainRoutePaths.LOCATIONS]: {\r\n label: 'Locations',\r\n icon: 'navigation-icon-location',\r\n },\r\n [MainRoutePaths.COMPANY_ADMINS]: {\r\n label: 'Company Admins',\r\n icon: 'navigation-icon-admin',\r\n },\r\n [MainRoutePaths.COMPANIES]: {\r\n label: 'Companies',\r\n icon: 'navigation-icon-company',\r\n },\r\n [MainRoutePaths.SALES_USERS]: {\r\n label: 'Sales Users',\r\n icon: 'navigation-icon-user',\r\n },\r\n [MainRoutePaths.BINS]: {\r\n label: 'Bins',\r\n icon: 'navigation-icon-bins',\r\n },\r\n [MainRoutePaths.COMPANY_USERS]: {\r\n label: 'Company Users',\r\n icon: 'navigation-icon-user',\r\n },\r\n [MainRoutePaths.SERVICE_USERS]: {\r\n label: 'Service Users',\r\n icon: 'navigation-icon-service',\r\n },\r\n [MainRoutePaths.VENDORS]: {\r\n label: 'Vendors',\r\n icon: 'navigation-icon-vendor',\r\n },\r\n [MainRoutePaths.AQS_ROUND_STORAGE]: {\r\n label: 'Quote Round Storage',\r\n icon: 'navigation-icon-round-storage',\r\n },\r\n [MainRoutePaths.AQS_FLAT_STORAGE]: {\r\n label: 'Quote Flat Storage',\r\n icon: 'navigation-icon-flat-storage',\r\n },\r\n [MainRoutePaths.AQS_COMPUTATION_SHEET]: {\r\n label: 'Computation Sheet',\r\n icon: 'navigation-icon-computation-sheet',\r\n },\r\n [MainRoutePaths.AQS_QUOTES]: {\r\n label: 'Saved Quotes',\r\n icon: 'navigation-icon-saved-quotes',\r\n },\r\n [MainRoutePaths.BTX_MANAGEMENT]: {\r\n label: 'BTX Management',\r\n icon: 'navigation-icon-btx-location',\r\n childrenRoutes: [\r\n MainRoutePaths.BTX_LIVE_DATA,\r\n MainRoutePaths.BTX_HISTORICAL_DATA,\r\n MainRoutePaths.BTX_NOTIFICATIONS,\r\n ]\r\n },\r\n [MainRoutePaths.BTX_LIVE_DATA]: {\r\n label: 'Live Data',\r\n icon: 'navigation-icon-itx-bins-location',\r\n dependentRoutes: [MainRoutePaths.BTX_LIVE_DATA_EQUIPMENT_VIEW],\r\n },\r\n [MainRoutePaths.BTX_HISTORICAL_DATA]: {\r\n label: 'Historical Data',\r\n icon: 'navigation-icon-historical',\r\n },\r\n [MainRoutePaths.BTX_NOTIFICATIONS]: {\r\n label: 'Notifications',\r\n icon: 'navigation-icon-alert',\r\n },\r\n [MainRoutePaths.KTX_MANAGEMENT]: {\r\n label: 'KTX Management',\r\n icon: 'navigation-icon-ktx-location',\r\n childrenRoutes: [\r\n MainRoutePaths.KTX_LOCATION_VIEW,\r\n MainRoutePaths.KTX_HISTORICAL_DATA,\r\n MainRoutePaths.KTX_NOTIFICATIONS,\r\n ],\r\n },\r\n [MainRoutePaths.KTX_LOCATION_VIEW]: {\r\n label: 'Current Data',\r\n icon: 'navigation-icon-itx-bins-location',\r\n dependentRoutes: [\r\n MainRoutePaths.KTX_LOCATION_DETAILS,\r\n MainRoutePaths.KTX_BIN_DETAILS,\r\n ],\r\n },\r\n [MainRoutePaths.KTX_HISTORICAL_DATA]: {\r\n label: 'Historical Data',\r\n icon: 'navigation-icon-historical',\r\n },\r\n [MainRoutePaths.KTX_NOTIFICATIONS]: {\r\n label: 'Notifications',\r\n icon: 'navigation-icon-alert',\r\n },\r\n [MainRoutePaths.ITX_MANAGEMENT]: {\r\n label: 'ITX Management',\r\n icon: 'navigation-icon-itx-location',\r\n childrenRoutes: [\r\n MainRoutePaths.ITX_VIEWS,\r\n MainRoutePaths.ITX_ALERT,\r\n MainRoutePaths.ITX_REPORTS,\r\n ],\r\n dependentRoutes: [MainRoutePaths.ITX_STORAGES_MANAGEMENT],\r\n },\r\n [MainRoutePaths.ITX_VIEWS]: {\r\n label: 'Live Data',\r\n icon: 'navigation-icon-itx-bins-location',\r\n },\r\n [MainRoutePaths.ITX_ALERT]: {\r\n label: 'Alerts',\r\n icon: 'navigation-icon-alert',\r\n },\r\n [MainRoutePaths.ITX_REPORTS]: {\r\n label: 'Reports',\r\n icon: 'navigation-icon-reports',\r\n },\r\n [MainRoutePaths.EMAIL_MANAGEMENT]: {\r\n label: 'E-mail Management',\r\n icon: 'navigation-icon-email',\r\n },\r\n [MainRoutePaths.FIRMWARE_MANAGEMENT]: {\r\n label: 'Firmware Management',\r\n icon: 'navigation-icon-firmware',\r\n }\r\n};\r\n\r\nexport const RoutesForRoles: RoutesForRolesInterface = {\r\n [UserRoleEnum.CompanyAdmin]: [\r\n { route: MainRoutePaths.COMPANY_ADMINS },\r\n { route: MainRoutePaths.COMPANY_USERS },\r\n { route: MainRoutePaths.VENDORS, project: ProjectEnum.Itx },\r\n { route: MainRoutePaths.EMAIL_MANAGEMENT },\r\n { route: MainRoutePaths.LOCATIONS },\r\n {\r\n route: MainRoutePaths.BTX_MANAGEMENT,\r\n isDisabled: true,\r\n project: ProjectEnum.Btx,\r\n },\r\n {\r\n route: MainRoutePaths.KTX_MANAGEMENT,\r\n isDisabled: true,\r\n project: ProjectEnum.Ktx,\r\n },\r\n {\r\n route: MainRoutePaths.ITX_MANAGEMENT,\r\n isDisabled: true,\r\n project: ProjectEnum.Itx,\r\n },\r\n ],\r\n [UserRoleEnum.ServiceUser]: [\r\n { route: MainRoutePaths.FIRMWARE_MANAGEMENT },\r\n { route: MainRoutePaths.SERVICE_USERS },\r\n { route: MainRoutePaths.SALES_USERS },\r\n { route: MainRoutePaths.COMPANIES },\r\n { route: MainRoutePaths.COMPANY_ADMINS },\r\n { route: MainRoutePaths.LOCATIONS },\r\n { route: MainRoutePaths.BTX_MANAGEMENT },\r\n { route: MainRoutePaths.KTX_MANAGEMENT },\r\n { route: MainRoutePaths.ITX_MANAGEMENT },\r\n ],\r\n [UserRoleEnum.Vendor]: [\r\n { route: MainRoutePaths.ITX_VIEWS },\r\n { route: MainRoutePaths.ITX_REPORTS },\r\n ],\r\n [UserRoleEnum.CompanyUser]: [\r\n {\r\n route: MainRoutePaths.BTX_MANAGEMENT,\r\n isDisabled: true,\r\n project: ProjectEnum.Btx,\r\n },\r\n {\r\n route: MainRoutePaths.KTX_MANAGEMENT,\r\n isDisabled: true,\r\n project: ProjectEnum.Ktx,\r\n },\r\n {\r\n route: MainRoutePaths.ITX_MANAGEMENT,\r\n isDisabled: true,\r\n project: ProjectEnum.Itx,\r\n },\r\n ],\r\n [UserRoleEnum.SalesUser]: [\r\n { route: MainRoutePaths.AQS_QUOTES },\r\n { route: MainRoutePaths.AQS_ROUND_STORAGE },\r\n { route: MainRoutePaths.AQS_FLAT_STORAGE },\r\n { route: MainRoutePaths.AQS_COMPUTATION_SHEET },\r\n ],\r\n};\r\n\r\nexport const BACK_DOOR = '/back-door';\r\n\r\nexport const BackDoorRouteToRoleMap: RouteToRoleMapInterface = {\r\n '/back-door/admin': UserRoleEnum.CompanyAdmin,\r\n '/back-door/company-user': UserRoleEnum.CompanyUser,\r\n '/back-door/vendor': UserRoleEnum.Vendor,\r\n '/back-door/aqs': UserRoleEnum.SalesUser,\r\n};\r\n","export class ModelsTypes {\r\n public static readonly locationViewModel: string = 'LocationViewModel';\r\n public static readonly locationBtxViewModel: string = 'LocationBtxViewModel';\r\n public static readonly locationKtxViewModel: string = 'LocationKtxViewModel';\r\n public static readonly LocationItxViewModel: string = 'LocationItxViewModel';\r\n public static readonly sensorViewModel: string = 'SensorViewModel';\r\n public static readonly equipmentViewModel: string = 'EquipmentViewModel';\r\n public static readonly locationKtxSchemeViewModel: string = 'LocationKtxSchemeViewModel';\r\n}","import { PileShale } from './../enums/pile-shape.enum';\r\n\r\nexport const PileShapeLabel = {\r\n [PileShale.Unknown]: 'Unknown',\r\n [PileShale.Cone]: 'Cone',\r\n [PileShale.MShape]: 'M Shape',\r\n [PileShale.WShape]: 'W Shape',\r\n [PileShale.InvertedCone]: 'Inverted Cone',\r\n}","import { UserRoleEnum } from \"src/app/common\";\r\nimport { ProjectEnum, TutorialMenuEnum, TutorialParagraphEnum } from \"../enums\";\r\n\r\nexport const TutorialMenuLabels = {\r\n [TutorialMenuEnum.UserManagement]: 'User Management',\r\n [TutorialMenuEnum.EmailManagement]: 'Email Management',\r\n [TutorialMenuEnum.Locations]: 'Locations',\r\n [TutorialMenuEnum.BtxLiveData]: 'BTX Live Data',\r\n [TutorialMenuEnum.BtxHistoricalData]: 'BTX Historical Data',\r\n [TutorialMenuEnum.BtxNotifications]: 'BTX Notifications',\r\n [TutorialMenuEnum.KtxCurrentData]: 'KTX Current Data',\r\n [TutorialMenuEnum.KtxNotifications]: 'KTX Notifications',\r\n [TutorialMenuEnum.KtxHistoricalData]: 'KTX Historical Data',\r\n [TutorialMenuEnum.ItxLiveData]: 'ITX Live Data',\r\n [TutorialMenuEnum.ItxReports]: 'ITX Reports',\r\n [TutorialMenuEnum.ItxAlerts]: 'ITX Alerts',\r\n}\r\n\r\nexport const UsersTutorialMenu = {\r\n [UserRoleEnum.CompanyAdmin]: {\r\n [ProjectEnum.None]: {\r\n [TutorialMenuEnum.UserManagement]: TutorialMenuLabels[TutorialMenuEnum.UserManagement],\r\n [TutorialMenuEnum.EmailManagement]: TutorialMenuLabels[TutorialMenuEnum.EmailManagement],\r\n [TutorialMenuEnum.Locations]: TutorialMenuLabels[TutorialMenuEnum.Locations],\r\n },\r\n [ProjectEnum.Btx]: {\r\n [TutorialMenuEnum.BtxLiveData]: TutorialMenuLabels[TutorialMenuEnum.BtxLiveData],\r\n [TutorialMenuEnum.BtxHistoricalData]: TutorialMenuLabels[TutorialMenuEnum.BtxHistoricalData],\r\n [TutorialMenuEnum.BtxNotifications]: TutorialMenuLabels[TutorialMenuEnum.BtxNotifications],\r\n },\r\n [ProjectEnum.Ktx]: {\r\n [TutorialMenuEnum.KtxCurrentData]: TutorialMenuLabels[TutorialMenuEnum.KtxCurrentData],\r\n [TutorialMenuEnum.KtxHistoricalData]: TutorialMenuLabels[TutorialMenuEnum.KtxHistoricalData],\r\n [TutorialMenuEnum.KtxNotifications]: TutorialMenuLabels[TutorialMenuEnum.KtxNotifications],\r\n },\r\n [ProjectEnum.Itx]: {\r\n [TutorialMenuEnum.ItxLiveData]: TutorialMenuLabels[TutorialMenuEnum.ItxLiveData],\r\n [TutorialMenuEnum.ItxAlerts]: TutorialMenuLabels[TutorialMenuEnum.ItxAlerts],\r\n [TutorialMenuEnum.ItxReports]: TutorialMenuLabels[TutorialMenuEnum.ItxReports],\r\n },\r\n },\r\n [UserRoleEnum.CompanyUser]: {\r\n [ProjectEnum.Btx]: {\r\n [TutorialMenuEnum.BtxLiveData]: TutorialMenuLabels[TutorialMenuEnum.BtxLiveData],\r\n [TutorialMenuEnum.BtxHistoricalData]: TutorialMenuLabels[TutorialMenuEnum.BtxHistoricalData],\r\n [TutorialMenuEnum.BtxNotifications]: TutorialMenuLabels[TutorialMenuEnum.BtxNotifications],\r\n },\r\n [ProjectEnum.Ktx]: {\r\n [TutorialMenuEnum.KtxCurrentData]: TutorialMenuLabels[TutorialMenuEnum.KtxCurrentData],\r\n [TutorialMenuEnum.KtxHistoricalData]: TutorialMenuLabels[TutorialMenuEnum.KtxHistoricalData],\r\n [TutorialMenuEnum.KtxNotifications]: TutorialMenuLabels[TutorialMenuEnum.KtxNotifications],\r\n },\r\n [ProjectEnum.Itx]: {\r\n [TutorialMenuEnum.ItxLiveData]: TutorialMenuLabels[TutorialMenuEnum.ItxLiveData],\r\n [TutorialMenuEnum.ItxAlerts]: TutorialMenuLabels[TutorialMenuEnum.ItxAlerts],\r\n [TutorialMenuEnum.ItxReports]: TutorialMenuLabels[TutorialMenuEnum.ItxReports],\r\n },\r\n },\r\n [UserRoleEnum.Vendor]: {\r\n [ProjectEnum.Itx]: {\r\n [TutorialMenuEnum.ItxLiveData]: TutorialMenuLabels[TutorialMenuEnum.ItxLiveData],\r\n [TutorialMenuEnum.ItxReports]: TutorialMenuLabels[TutorialMenuEnum.ItxReports],\r\n },\r\n },\r\n}\r\n\r\nexport const TutorialParagraphLabels={\r\n [TutorialParagraphEnum.AddCompanyAdmin]:'Add a new company admin',\r\n [TutorialParagraphEnum.AddCompanyUser]:'Add a new company user',\r\n [TutorialParagraphEnum.AddVendor]:'Add a new vendor',\r\n [TutorialParagraphEnum.ViewLocationData]:'View location data',\r\n}\r\n","import {\r\n Directive,\r\n ElementRef,\r\n EventEmitter,\r\n Inject,\r\n Input,\r\n OnChanges,\r\n OnDestroy,\r\n OnInit,\r\n Output,\r\n PLATFORM_ID,\r\n SimpleChanges,\r\n NgZone,\r\n} from '@angular/core';\r\nimport { isPlatformBrowser } from '@angular/common';\r\n\r\n@Directive({ selector: '[greensleevesClickOutside]' })\r\nexport class ClickOutsideDirective implements OnInit, OnChanges, OnDestroy {\r\n\r\n @Input() clickOutsideEnabled: boolean = true;\r\n\r\n @Input() attachOutsideOnClick: boolean = false;\r\n @Input() delayClickOutsideInit: boolean = false;\r\n @Input() emitOnBlur: boolean = false;\r\n\r\n @Input() exclude: string = '';\r\n @Input() excludeBeforeClick: boolean = false;\r\n\r\n @Input() capture: boolean = false;\r\n\r\n @Input() clickOutsideEvents: string = '';\r\n\r\n @Output() greensleevesClickOutside: EventEmitter = new EventEmitter();\r\n\r\n private _nodesExcluded: Array = [];\r\n private _events: Array = ['click'];\r\n\r\n constructor(\r\n private _el: ElementRef,\r\n private _ngZone: NgZone,\r\n @Inject(PLATFORM_ID) private platformId: Object) {\r\n this._initOnClickBody = this._initOnClickBody.bind(this);\r\n this._onClickBody = this._onClickBody.bind(this);\r\n this._onWindowBlur = this._onWindowBlur.bind(this);\r\n }\r\n\r\n ngOnInit() {\r\n if (!isPlatformBrowser(this.platformId)) { return; }\r\n\r\n this._init();\r\n }\r\n\r\n ngOnDestroy() {\r\n if (!isPlatformBrowser(this.platformId)) { return; }\r\n\r\n this._removeClickOutsideListener();\r\n this._removeAttachOutsideOnClickListener();\r\n this._removeWindowBlurListener();\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges) {\r\n if (!isPlatformBrowser(this.platformId)) { return; }\r\n\r\n if (changes['attachOutsideOnClick'] || changes['exclude'] || changes['emitOnBlur']) {\r\n this._init();\r\n }\r\n }\r\n\r\n private _init() {\r\n if (this.clickOutsideEvents !== '') {\r\n this._events = this.clickOutsideEvents.split(',').map(e => e.trim());\r\n }\r\n\r\n this._excludeCheck();\r\n\r\n if (this.attachOutsideOnClick) {\r\n this._initAttachOutsideOnClickListener();\r\n } else {\r\n this._initOnClickBody();\r\n }\r\n\r\n if (this.emitOnBlur) {\r\n this._initWindowBlurListener();\r\n }\r\n }\r\n\r\n private _initOnClickBody() {\r\n if (this.delayClickOutsideInit) {\r\n setTimeout(this._initClickOutsideListener.bind(this));\r\n } else {\r\n this._initClickOutsideListener();\r\n }\r\n }\r\n\r\n private _excludeCheck() {\r\n if (this.exclude) {\r\n try {\r\n const nodes = Array.from(document.querySelectorAll(this.exclude)) as Array;\r\n if (nodes) {\r\n this._nodesExcluded = nodes;\r\n }\r\n } catch (err) {\r\n console.error('[ng-click-outside] Check your exclude selector syntax.', err);\r\n }\r\n }\r\n }\r\n\r\n private _onClickBody(ev: Event) {\r\n if (!this.clickOutsideEnabled) { return; }\r\n\r\n if (this.excludeBeforeClick) {\r\n this._excludeCheck();\r\n }\r\n\r\n if (!this._el.nativeElement.contains(ev.target) && !this._shouldExclude(ev.target)) {\r\n this._emit(ev);\r\n\r\n if (this.attachOutsideOnClick) {\r\n this._removeClickOutsideListener();\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Resolves problem with outside click on iframe\r\n * @see https://github.com/arkon/ng-click-outside/issues/32\r\n */\r\n private _onWindowBlur(ev: Event) {\r\n setTimeout(() => {\r\n if (!document.hidden) {\r\n this._emit(ev);\r\n }\r\n });\r\n }\r\n\r\n private _emit(ev: Event) {\r\n if (!this.clickOutsideEnabled) { return; }\r\n\r\n this._ngZone.run(() => this.greensleevesClickOutside.emit(ev));\r\n }\r\n\r\n private _shouldExclude(target): boolean {\r\n for (let excludedNode of this._nodesExcluded) {\r\n if (excludedNode.contains(target)) {\r\n return true;\r\n }\r\n }\r\n\r\n return false;\r\n }\r\n\r\n private _initClickOutsideListener() {\r\n this._ngZone.runOutsideAngular(() => {\r\n this._events.forEach(e => document.addEventListener(e, this._onClickBody, this.capture));\r\n });\r\n }\r\n\r\n private _removeClickOutsideListener() {\r\n this._ngZone.runOutsideAngular(() => {\r\n this._events.forEach(e => document.removeEventListener(e, this._onClickBody, this.capture));\r\n });\r\n }\r\n\r\n private _initAttachOutsideOnClickListener() {\r\n this._ngZone.runOutsideAngular(() => {\r\n this._events.forEach(e => this._el.nativeElement.addEventListener(e, this._initOnClickBody, this.capture));\r\n });\r\n }\r\n\r\n private _removeAttachOutsideOnClickListener() {\r\n this._ngZone.runOutsideAngular(() => {\r\n this._events.forEach(e => this._el.nativeElement.removeEventListener(e, this._initOnClickBody, this.capture));\r\n });\r\n }\r\n\r\n private _initWindowBlurListener() {\r\n this._ngZone.runOutsideAngular(() => {\r\n window.addEventListener('blur', this._onWindowBlur, this.capture);\r\n });\r\n }\r\n\r\n private _removeWindowBlurListener() {\r\n this._ngZone.runOutsideAngular(() => {\r\n window.removeEventListener('blur', this._onWindowBlur, this.capture);\r\n });\r\n }\r\n\r\n}\r\n","export * from './click-outside.directive';","export * from './touch-on-focus';\r\nexport * from './click-outside';\r\nexport * from './ip-mask-fix';\r\n","export * from './ip-mask-fix.directive';","import {\r\n Directive,\r\n HostListener,\r\n Host\r\n} from '@angular/core';\r\nimport { CustomKeyboardEvent, MaskDirective } from 'ngx-mask';\r\n\r\n@Directive({ selector: 'input[mask$=\"IP\"], textarea[mask]' })\r\nexport class IpMaskFixDirective {\r\n constructor(\r\n @Host() private _maskDirective: MaskDirective\r\n ) { }\r\n\r\n @HostListener('input', ['$event'])\r\n onInput(e: CustomKeyboardEvent) {\r\n const el: HTMLInputElement = e.target as HTMLInputElement;\r\n const value = el.value;\r\n if (value) {\r\n let digits: number = 0;\r\n for (let i = 0; i < value.length; i++) {\r\n if (value[i].match('\\\\d')) {\r\n digits++;\r\n }\r\n }\r\n \r\n if (!digits) {\r\n el.value = '';\r\n }\r\n }\r\n \r\n this._maskDirective.onInput(e);\r\n }\r\n}","export * from './touch-on-focus.directive';","import { Directive, HostListener } from \"@angular/core\";\r\nimport { NgControl } from \"@angular/forms\";\r\n\r\n@Directive({\r\n selector: '[greensleeves-touch-on-focus]'\r\n})\r\nexport class TouchOnFocusDirective {\r\n constructor(\r\n private _control: NgControl\r\n ) {}\r\n\r\n @HostListener('focus')\r\n onFocus() {\r\n this._control.control.markAsTouched();\r\n }\r\n\r\n @HostListener('blur')\r\n onBlur() {\r\n this._control.control.markAsUntouched();\r\n }\r\n}","export enum AcquisitionRateEnum {\r\n TenSeconds = 10,\r\n ThirtySeconds = 30,\r\n OneMinute = 60,\r\n ThreeMinutes = 180,\r\n FiveMinutes = 300\r\n}\r\n","export enum AqsAirflowLevelEnum {\r\n Normal = 1,\r\n RoofPull = 2,\r\n Tandem = 3,\r\n PushPull = 4,\r\n}\r\n\r\nexport enum AqsAirflowFanTypeEnum {\r\n Axial = 1,\r\n Centrifugal60HZ = 2,\r\n Centrifugal60HZAF = 3,\r\n Centrifugal50HZ = 4,\r\n}\r\n\r\nexport enum AqsFlushDuctDesignEnum {\r\n None = 0,\r\n Duct = 1,\r\n FlushFloor = 2,\r\n}","export enum AqsCoverSheetTypeEnum {\r\n Steel = 0,\r\n Concrete = 1,\r\n}\r\n","export enum AqsDuctTypeEnum {\r\n FullRoundDuct = 1,\r\n HalfRoundDuct = 2,\r\n}","export enum AqsFlatDuctingShapeTypeEnum {\r\n FullRound = 1,\r\n HalfRound = 2\r\n}\r\n\r\n\r\nexport enum AqsFlatDuctCallMethodsBaseOnEntity {\r\n OpeningDiameter = 0,\r\n DuctDiameter = 1,\r\n NumberFans = 2,\r\n PerfRun = 3,\r\n SolidRun = 4,\r\n CtrCtr = 5,\r\n}\r\n\r\nexport enum AqsFlatDuctSideNo {\r\n Near = 0,\r\n Far = 1,\r\n Front = 2,\r\n Rear = 3\r\n}\r\n","export enum AqsFlushFloorTunnelDesignEnum {\r\n DoubleH = 0,\r\n TwoRuns = 1,\r\n DoubleTSpecial = 2,\r\n DoubleT = 3,\r\n FourLaneSpecial = 4,\r\n FourLaneSpeciaWithTee = 5,\r\n SixLaneSpecial = 6,\r\n}","export enum AqsPagesEnum {\r\n CoverSheet = 0,\r\n RoundStorageConfiguration = 1,\r\n FlatStorageConfiguration = 2,\r\n DetermineTargetAirflow = 3,\r\n ExhausterRecommendations = 4,\r\n FlushFloorDesign = 5,\r\n DuctDesign = 6,\r\n}\r\n","export enum AqsRoundDuctDesignType {\r\n SingleFan,\r\n MultipleFans,\r\n HopperPitchConical,\r\n HopperPitchSideDraw\r\n}","export enum AqsRoundStorageHopperTypeEnum{\r\n Conical = 0,\r\n SideDraw = 1,\r\n}\r\n","export enum AqsSessionTypeEnum {\r\n RoundSessionType = 0,\r\n FlatSessionType = 1,\r\n ComputationSheetType = 3,\r\n}","export enum AqsStorageTypeEnum {\r\n Conical = 1,\r\n SideDraw = 2,\r\n Flat = 3,\r\n Peaked = 4,\r\n SlopedPeak = 5,\r\n TruncatedPeak = 6,\r\n None = 7,\r\n}\r\n\r\nexport enum AqsStorageTypeStringEnum {\r\n Conical = 'Conical',\r\n SideDraw = 'Side Draw',\r\n Flat = 'Flat',\r\n Peaked = 'Peaked',\r\n SlopedPeak = 'Four Sloped Peak',\r\n TruncatedPeak = 'Truncated Peak',\r\n None = 'None',\r\n}\r\n","export enum BinTypeEnum {\r\n Circular = 1,\r\n Rectangular = 2,\r\n Unit = 3\r\n}\r\n","export enum BtxEventTypeEnum{\r\n Alarm = 0,\r\n Warning = 1,\r\n}","export enum BtxNotificationFilterNodeTypeEnum {\r\n Company = 1, \r\n Location = 2, \r\n Equipment = 3\r\n}","export enum BtxSensorEventTypeEnum {\r\n Norm = 0,\r\n Alarm = 1,\r\n Warning = 2,\r\n RateOfChangeAlarm = 3,\r\n RateOfChangeWarning = 4,\r\n Error = 5,\r\n}","export enum DefaultDateRangeEnum {\r\n Day = 0,\r\n Week = 1,\r\n Month = 2,\r\n}","export enum ColumnTypeEnum {\r\n LocationName,\r\n IPAddress,\r\n Port,\r\n Company,\r\n ServiceEmail,\r\n ServicePhone,\r\n EmergencyPhone,\r\n SitePhone,\r\n SiteEmail,\r\n Equipment,\r\n DownloadConnectionFile,\r\n InitializeDevice,\r\n Edit,\r\n EditKTX,\r\n EditBTX,\r\n Add,\r\n Delete,\r\n Date,\r\n Status,\r\n UserFirstName,\r\n UserLastName,\r\n UserLocationNames,\r\n LocationAddress,\r\n Project,\r\n AcquisitionRate,\r\n P1AMMac,\r\n P1AMIp,\r\n Bins,\r\n BinName,\r\n Height,\r\n Depth,\r\n Width,\r\n Type,\r\n Details,\r\n Cable,\r\n Data,\r\n Time,\r\n TC,\r\n CableName,\r\n CableID,\r\n Angle,\r\n Radius,\r\n SensorsAmount,\r\n MUXOrDevice,\r\n Number,\r\n From,\r\n To,\r\n Color,\r\n TemperatureRanges,\r\n UploadConfigFile,\r\n binWithinUnitName,\r\n StorageIcon,\r\n StorageName,\r\n StorageType,\r\n Capacity,\r\n CapacityUnit,\r\n StoredMaterial,\r\n NumberOfRadars,\r\n TiltAngle,\r\n Radar,\r\n AlertTitle,\r\n AlertBody,\r\n AlertIcon,\r\n Hardware,\r\n RadarLocation,\r\n RadarDistance,\r\n HeadSpace,\r\n Counter,\r\n ComodityName,\r\n StaticPressure,\r\n TargetAitflow,\r\n Fans,\r\n QuoteSelected,\r\n QuoteText,\r\n QuoteSessionType,\r\n QuoteStorageType,\r\n CustomerName,\r\n CompanyName,\r\n PileShape,\r\n FileName,\r\n Sv,\r\n Csv,\r\n SensorIndex,\r\n SensorPosition,\r\n SensorSide,\r\n SensorValue,\r\n Schedule,\r\n Expand,\r\n Updaters,\r\n UpdaterName,\r\n CurrentVersion,\r\n Update,\r\n History,\r\n}\r\n","export enum ConfirmationDialogEnum {\r\n Cancel = 0,\r\n Confirmation = 1,\r\n}","export enum EmailServiceScheduleEnum{\r\n Daily = 0,\r\n Weekly = 1,\r\n Monthly = 2\r\n}\r\n","export enum EquipmentTypeEnum {\r\n Leg = 0,\r\n Conveyor = 1,\r\n Silo = 2,\r\n Tripper = 3,\r\n Fan = 4,\r\n}\r\n\r\nexport enum EquipmentSideEnum {\r\n None = 0,\r\n East = 1,\r\n West = 2,\r\n North = 3,\r\n South = 4,\r\n}\r\n\r\nexport enum EquipmentSubTypeEnum {\r\n Small = 0,\r\n Medium = 1,\r\n Large = 2,\r\n WithKneeBearing = 3,\r\n WithoutKneeBearing = 4,\r\n Drag = 5,\r\n Belt = 6,\r\n Screw = 7,\r\n CoveredBelt = 8,\r\n None = 9,\r\n BeltDrive = 10,\r\n DirectDrive = 11,\r\n}\r\n\r\nexport enum SensorTypeEnum {\r\n GrainDepth = 0,\r\n BearingTemperature = 1,\r\n RubBlockTemperature = 2,\r\n Speed = 3,\r\n GearBoxTemperature = 4,\r\n ShaftBearingTemperature = 5,\r\n BottomRubTemperature = 6,\r\n CurrentAmpDraw = 7,\r\n CurrentDesignLoad = 8,\r\n Vibration = 9,\r\n}\r\n\r\nexport enum MeasureEnum {\r\n Temperature = 0,\r\n Resistance = 1,\r\n}\r\n\r\nexport enum SensorPositionEnum {\r\n CenterOfTheEquipmentScheme = 0,\r\n Head = 1,\r\n Knee = 2,\r\n Boot = 3,\r\n OnePerEquipment = 4,\r\n Tail = 5,\r\n BendHead = 6,\r\n BendTail = 7,\r\n SnubHead = 8,\r\n SnubTail = 9,\r\n KneeHead = 10,\r\n KneeTail = 11,\r\n UpperTripperHead = 12,\r\n UpperTripperTail = 13,\r\n LowerTripperHead = 14,\r\n LowerTripperTail = 15,\r\n Upper = 16,\r\n Lower = 17,\r\n Top = 18,\r\n Motor = 19,\r\n Frame = 20,\r\n Drive = 21,\r\n FrameUpper = 22,\r\n FrameLower = 23,\r\n DriveUpper = 24,\r\n DriveLower = 25,\r\n}\r\n\r\nexport enum SensorValuesStatusEnum {\r\n Norm = 0,\r\n Warning = 1,\r\n Alarm = 2,\r\n Error = 3,\r\n}\r\nexport enum PLCDeviceEnum {\r\n Arduino = 0,\r\n Raspberry = 1,\r\n}\r\n\r\nexport enum SensorSideEnum {\r\n None = 0,\r\n East = 1,\r\n West = 2,\r\n North = 3,\r\n South = 4,\r\n}","export enum AQSFlatStorageTypesEnum {\r\n Flat = 1,\r\n Peaked = 2,\r\n Sloped = 3,\r\n Truncated = 4\r\n}\r\n","export * from './column-type.enum';\r\nexport * from './acquisition-rate.enum';\r\nexport * from './equipment.enum';\r\nexport * from './user-status.enum';\r\nexport * from './bin-type.enum';\r\nexport * from './switch-type.enum';\r\nexport * from './reading-schedule-type.enum';\r\nexport * from './sensor-status.enum';\r\nexport * from './itx-bin.enum';\r\nexport * from './itx-event-type.enum';\r\nexport * from './calendar.enum';\r\nexport * from './itx-report-reading-unit.enum';\r\nexport * from './itx-report-format.enum';\r\nexport * from './itx-radar.enum';\r\nexport * from './flat-storage.enum';\r\nexport * from './part-type.enum';\r\nexport * from './aqs-round.enums';\r\nexport * from './aqs-page.enums';\r\nexport * from './aqs-coversheet-type.enum';\r\nexport * from './aqs-session.enums';\r\nexport * from './aqs-airflow.enums';\r\nexport * from './aqs-duct-type.enum';\r\nexport * from './aqs-round-duct-design-type.enum';\r\nexport * from './aqs-flat-duct.enums';\r\nexport * from './aqs-flush-floor.enums';\r\nexport * from './aqs-storage-type.enum';\r\nexport * from './pile-shape.enum';\r\nexport * from './project.enum';\r\nexport * from './ktx-report-format.enum';\r\nexport * from './ktx-event-type.enum';\r\nexport * from './btx-event-type.enum';\r\nexport * from './ktx-notification-filter-type.enum';\r\nexport * from './btx-notification-filter-type.enum';\r\nexport * from './btx-notification-type.enum';\r\nexport * from './email-service.enums';\r\nexport * from './tutorial.enum';\r\nexport * from './itx-node-types.enum';\r\nexport * from './updater-device.enums';\r\nexport * from './confirmation-dialog.enum';","export enum ItxBinTypeEnum{\r\n BinFlat = 0,\r\n BinConical = 1,\r\n BinSloped = 2,\r\n\r\n SiloFlat = 3,\r\n SiloConical = 4,\r\n SiloSloped = 5,\r\n\r\n FlatStorageLevel = 6,\r\n FlatStorageConical = 7,\r\n FlatStorageSloped = 8,\r\n\r\n LiquidStorageFlat = 9,\r\n LiquidStorageConical = 10,\r\n LiquidStorageSloped = 11,\r\n}\r\n\r\nexport enum SizeMeasureEnum{\r\n Ft = 0,\r\n M = 1,\r\n In = 2,\r\n}\r\n\r\n\r\nexport enum CapacityUnitEnum{\r\n Ft_3 = 0,\r\n M_3 = 1,\r\n Bsh = 2,\r\n L = 3,\r\n HL = 4,\r\n KL = 5,\r\n Gal = 6,\r\n Bbl = 7,\r\n}\r\n\r\nexport enum TemperatureMeasureEnum{\r\n Celsius = 0,\r\n Fahrenheit = 1,\r\n}\r\n\r\nexport enum ItxStorageSortingEnum{\r\n Alphabetically = 1,\r\n AlphabeticallyDesc = 2,\r\n Percentage = 3,\r\n PercentageDesc = 4,\r\n Capacity = 5,\r\n CapacityDesc = 6 ,\r\n Material = 7,\r\n}","export enum ItxEventTypeEnum{\r\n Alarm = 0,\r\n Warning = 1,\r\n Error = 2,\r\n}","export enum ItxNodeTypesEnum {\r\n Company = 1,\r\n Location = 2,\r\n Bin = 3,\r\n}","export enum ItxRadarLocationEnum {\r\n Eave = 0,\r\n Middle = 1,\r\n Peak = 2,\r\n}","export enum ReportFormatEnum{ \r\n pdf = 0,\r\n csv = 1,\r\n png = 2, \r\n}","export enum ItxReportsReadingUnitEnum {\r\n UsedCapacity = 0,\r\n AvailableCapacity = 1,\r\n HeadSpace = 2,\r\n PercentFull = 3,\r\n Temperature = 4,\r\n FillHeight = 5,\r\n CalcUsedCapacity = 6,\r\n CalcAvailableCapacity = 7,\r\n}","export enum KtxEventTypeEnum {\r\n Alarm = 0,\r\n Info = 1,\r\n}\r\n","export enum KtxNotificationFilterNodeTypeEnum {\r\n Company = 1,\r\n Location = 2,\r\n Unit = 3,\r\n Bin = 4,\r\n}","export enum KtxReportFormatEnum {\r\n pdf = 0,\r\n}\r\n","export enum PartTypeEnum {\r\n duct,\r\n fans,\r\n manifold,\r\n miscellaneousEquipment\r\n}","export enum PileShale {\r\n Unknown = 0,\r\n Cone = 1,\r\n MShape = 2,\r\n WShape = 3,\r\n InvertedCone = 4,\r\n}","export enum ProjectEnum {\r\n None = 0,\r\n Btx = 1,\r\n Ktx = 2,\r\n Itx = 4,\r\n Aqs = 127,\r\n Updater = 200,\r\n}","export enum ReadingScheduleType {\r\n None = 0,\r\n Mon = 1,\r\n Tue = 2,\r\n Wed = 4,\r\n Thu = 8,\r\n Fri = 16,\r\n Sat = 32,\r\n Sun = 64\r\n}\r\n","export enum SensorStatusEnum {\r\n NoError = 0,\r\n OpenTC = 1,\r\n NoResponse = 2,\r\n MaxRise = 3,\r\n HighLimit = 4,\r\n}","export enum SwitchTypeEnum {\r\n NONE = 0,\r\n MUX,\r\n CABLE,\r\n BCS_AR,\r\n BCS_ARO,\r\n BCS_KT,\r\n BCS_SAE,\r\n BCS_110E,\r\n BCS_IICS,\r\n BCS_FLEX,\r\n BCS_RT,\r\n BCS_GT1000\r\n}","export enum TutorialMenuEnum {\r\n UserManagement = 0,\r\n EmailManagement = 1,\r\n Locations = 2,\r\n BtxLiveData = 3,\r\n BtxHistoricalData = 4,\r\n BtxNotifications = 5,\r\n KtxCurrentData = 6,\r\n KtxHistoricalData = 7,\r\n KtxNotifications = 8,\r\n ItxLiveData = 9,\r\n ItxAlerts = 10,\r\n ItxReports = 11,\r\n\r\n None = 255,\r\n}\r\n\r\nexport enum TutorialParagraphEnum {\r\n None = -1,\r\n AddCompanyAdmin,\r\n AddCompanyUser,\r\n AddVendor,\r\n EmailServiceOverview,\r\n AddNewEmailService,\r\n ViewLocationData,\r\n BtxLiveDataLocationView,\r\n BtxLiveDataSearchEquipment,\r\n BtxLiveDataEquipmentDetails,\r\n BtxLiveDataExportReport,\r\n BtxHistoricalDataSetupPlot,\r\n BtxHistoricalDataExportReport,\r\n BtxNotificationViewActiveAlerts,\r\n BtxNotificationViewHistoryAlerts,\r\n BtxNotificationExport,\r\n KtxCurrentDataView,\r\n KtxCurrentDataSetSchedule,\r\n KtxCurrentDataSetTemperature,\r\n KtxCurrentDataExport,\r\n KtxHistoricalDataView,\r\n KtxHistoricalDataExport,\r\n KtxNotificationViewActiveAlerts,\r\n KtxNotificationViewHistoicalAlerts,\r\n KtxNotificationExport,\r\n ItxLiveDataStorageView,\r\n ItxLiveDataSearch,\r\n ItxLiveDataProfile,\r\n ItxLiveDataEditStorage,\r\n ItxLiveDataRadarView,\r\n ItxLiveDataExport,\r\n ItxNotificationViewActiveAlerts,\r\n ItxNotificationViewHistoricalAlerts,\r\n ItxNotificationExport,\r\n ItxReportSetupView,\r\n ItxReportExport,\r\n}","export enum UpdateProjectStatusEnum {\r\n Continue = 100,\r\n Ok = 200,\r\n ClientError = 400,\r\n Forbidden = 403,\r\n NotAcceptable = 406,\r\n Conflict = 409,\r\n InternalError = 500,\r\n ServiceUnavailable = 503,\r\n Offline = 600,\r\n}\r\n\r\nexport enum UpdateProjectStateEnum {\r\n Unknown = 0,\r\n Ok = 1,\r\n Updating = 2,\r\n Failed = 3,\r\n Starting = 4,\r\n}","export enum UserStatusEnum {\r\n Unlocked = 0,\r\n Locked = 1,\r\n}\r\n","export * from './main.module';","import { Component, OnInit } from '@angular/core';\r\nimport { RoutePaths } from '../common';\r\nimport { HubService } from './services';\r\n\r\n@Component({\r\n selector: 'greensleeves-page-main',\r\n templateUrl: './main.component.html'\r\n})\r\nexport class MainComponent implements OnInit {\r\n _privacyLink = RoutePaths.PRIVACY;\r\n _isOpenNavigationBar: boolean = false;\r\n\r\n constructor(\r\n private _hubService: HubService,\r\n ) { }\r\n\r\n ngOnInit() {\r\n this._hubService.connect();\r\n }\r\n\r\n ngOnDestroy() {\r\n this._hubService.disconect();\r\n }\r\n\r\n onToggleNavigationBar(isOpen): void {\r\n this._isOpenNavigationBar = isOpen;\r\n }\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule as AngularCommonModule } from '@angular/common';\r\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\r\nimport { RouterModule } from '@angular/router';\r\nimport { BrowserAnimationsModule } from '@angular/platform-browser/animations';\r\nimport { TableModule } from 'primeng/table';\r\nimport { MultiSelectModule } from 'primeng/multiselect';\r\nimport { DropdownModule } from 'primeng/dropdown';\r\nimport { ListboxModule } from 'primeng/listbox';\r\nimport { TreeModule } from 'primeng/tree';\r\nimport { RadioButtonModule } from 'primeng/radiobutton';\r\nimport { MenuModule } from 'primeng/menu';\r\nimport { CheckboxModule } from 'primeng/checkbox';\r\nimport { OverlayPanelModule } from 'primeng/overlaypanel';\r\nimport { AccordionModule } from 'primeng/accordion';\r\nimport { InputNumberModule } from 'primeng/inputnumber';\r\nimport { NgxMaskModule } from 'ngx-mask';\r\nimport { ColorPickerModule } from 'primeng/colorpicker';\r\nimport { SpinnerModule } from 'primeng/spinner';\r\nimport { FileUploadModule } from 'primeng/fileupload';\r\nimport { ProgressSpinnerModule } from 'primeng/progressspinner';\r\nimport { CalendarModule } from 'primeng/calendar';\r\nimport { ToastModule } from 'primeng/toast';\r\nimport { MessagesModule } from 'primeng/messages';\r\nimport { MessageModule } from 'primeng/message';\r\nimport { InputTextareaModule } from 'primeng/inputtextarea';\r\nimport { InputSwitchModule } from 'primeng/inputswitch';\r\nimport { RoutePaths, UserRoleEnum } from '../common';\r\nimport { MainComponent } from './main.component';\r\nimport { AuthGuard } from './auth.guard';\r\nimport { AccessTokenFactory } from './access-token.factory';\r\nimport { InputPriceFormatModule } from 'angular-input-price-format';\r\nimport { ChipsModule } from 'primeng/chips';\r\nimport {\r\n LocationsTabComponent,\r\n LocationsGridComponent,\r\n NavigationBarComponent,\r\n HeaderComponent,\r\n CompaniesGridComponent,\r\n CompaniesTabComponent,\r\n CompaniesDeletePopupComponent,\r\n CompanyAdminsGridComponent,\r\n CompanyAdminsTabComponent,\r\n EquipmentSensorDeletePopupComponent,\r\n CompanyUsersGridComponent,\r\n CompanyUsersTabComponent,\r\n BasePopupComponent,\r\n CompanyAdminAddPopupComponent,\r\n EquipmentPopupComponent,\r\n EquipmentSchemeEditorComponent,\r\n EditSensorPopupComponent,\r\n ViewSensorPopupComponent,\r\n AddEditEquipmentPopupComponent,\r\n UploadAddEditEquipmentPopupComponent,\r\n ServiceUserAddPopupComponent,\r\n ServiceUserEditPopupComponent,\r\n ServiceUsersGridComponent,\r\n ServiceUsersTabComponent,\r\n ServiceUserDeletePopupComponent,\r\n CompaniesAddEditPopupComponent,\r\n LocationDeletePopupComponent,\r\n LocationBtxKtxDeletePopupComponent,\r\n LocationEditPopupComponent,\r\n BtxLocationEditPopupComponent,\r\n CompanyAdminDeletePopupComponent,\r\n CompanyAdminEditPopupComponent,\r\n CompanyUserEditPopupComponent,\r\n CompanyUserDeletePopupComponent,\r\n CompanyUserAddPopupComponent,\r\n EquipmentMenuComponent,\r\n BtxTabComponent,\r\n BtxGridComponent,\r\n KtxTabComponent,\r\n KtxGridComponent,\r\n KtxLocationAddEditPopupComponent,\r\n KtxLocationBinsPopupComponent,\r\n KtxBinDetailsPopupComponent,\r\n KtxListCablesPopupComponent,\r\n LocationChangedPopupComponent,\r\n KtxTemperatureRangesPopupComponent,\r\n UploadConfigurationFilePopupComponent,\r\n UploadBtxLocationConfigurationFilePopupComponent,\r\n SuccessOperationPopupComponent,\r\n KtxUnitDetailsPopupComponent,\r\n KtxRangeDeletePopupComponent,\r\n EquipmentViewDataPopupComponent,\r\n UploadConfigurationCloseConfirmationPopupComponent,\r\n ItxTabComponent,\r\n ITXGridComponent,\r\n VendorsTabComponent,\r\n ItxBinsTabComponent,\r\n ItxAlertTabComponent,\r\n VendorsGridComponent,\r\n VendorDeletePopupComponent,\r\n ItxAddEditPopupComponent,\r\n ItxBinGridComponent,\r\n VendorAddPopupComponent,\r\n VendorEditPopupComponent,\r\n ItxManageColorPopupComponent,\r\n ItxRangeDeletePopupComponent,\r\n ItxBinAddEditPopupComponent,\r\n ItxBinDeletePopupComponent,\r\n ItxListAddRadarPopupComponent,\r\n ItxEditRadarPopupComponent,\r\n ItxDeleteRadarPopupComponent,\r\n ItxExportReportPopupComponent,\r\n ItxLiveDataTabComponent,\r\n ItxLiveDataSettingPopupComponent,\r\n ItxStorageRadarsPopupComponent,\r\n ItxReportsTabComponent,\r\n UserProfilePopupComponent,\r\n ItxQuickEditPopupComponent,\r\n AqsRoundStorageTabComponent,\r\n AqsFlatStorageTabComponent,\r\n AqsComputationSheetTabComponent,\r\n SalesUsersTabComponent,\r\n AqsRoundConfigurationTabComponent,\r\n AqsConfirmPopupComponent,\r\n AqsRoundViewTabComponent,\r\n ComputationSheetTableComponent,\r\n AqsCommoditiesComponent,\r\n ComputationSheetReportPopupComponent,\r\n AqsFlatViewTabComponent,\r\n AqsFlatStorageParamsComponent,\r\n ComputationSheetShareReportPopupComponent,\r\n AqsComputationSheetConfirmPopupComponent,\r\n AqsCoverSheetComponent,\r\n AqsTargetAirflowComponent,\r\n AqsRoundDuctDesignComponent,\r\n AqsRoundDuctDesignViewTabComponent,\r\n AqsExhausterRecommendationsComponent,\r\n AqsComputationSheetResavePopupComponent,\r\n AqsFlatDuctDesignComponent,\r\n AqsRoundFlushDesignTabComponent,\r\n AqsRoundFlushDesignDoubleHComponent,\r\n AqsRoundFlushDesignDoubleTwoRunsComponent,\r\n AqsRoundFlushDesignDoubleTComponent,\r\n AqsRoundFlushDesignFourLaneSpecialComponent,\r\n AqsRoundFlushDesignSixLaneSpecialComponent,\r\n AqsRoundFlushDesignDoubleTSpecialComponent,\r\n AqsFlatDuctViewTabComponent,\r\n AqsQuotesTabComponent,\r\n AqsNewQuotePopupComponent,\r\n KtxConnectionPopupComponent,\r\n DeviceCommunicationPopupComponent,\r\n KtxCurrentDataTabComponent,\r\n BtxLiveDataTabComponent,\r\n BtxHistoricalDataTabComponent,\r\n BtxNotificationsTabComponent,\r\n KtxHistoricalDataTabComponent,\r\n KtxNotificationsTabComponent,\r\n EmailManagementTabComponent,\r\n KtxBinDetailsTabComponent,\r\n KtxUnitFullscreenPopupComponent,\r\n KtxTemperatureRangesComponent,\r\n KtxCurrentDataExportReportPopupComponent,\r\n BtxLiveDataEquipmentViewTabComponent,\r\n BtxEquipmentSensorsGridComponent,\r\n BtxEquipmentSchemaComponent,\r\n EmailServiceAddEditPopupComponent,\r\n EmailServiceDeletePopupComponent,\r\n BtxLiveDataExportReportPopupComponent,\r\n UploadCancellationPopupComponent,\r\n UploadEquipmentMenuComponent,\r\n UploadEquipmentPopupComponent,\r\n DeleteEquipmentConfirmationPopupComponent,\r\n UploadEquipmentViewDataPopupComponent,\r\n UploadEquipmentSensorDeletePopupComponent,\r\n UploadSuccessPopupComponent,\r\n UploadEquipmentSchemeEditorComponent,\r\n TutorialPopupComponent,\r\n TutorialComponent,\r\n ExportNotificationPopupComponent,\r\n BtxEquipmentDetailsPopupComponent,\r\n DeviceUpdateManagementTabComponent,\r\n UpdateFirmwarePopupComponent,\r\n UpdaterDeletePopupComponent,\r\n UpdaterAddEditPopupComponent,\r\n FirmwareManagementPopupComponent,\r\n UploadFirmwarePopupComponent,\r\n UploadFirmwareRebasePopupComponent,\r\n UpdateVersionsManagementPopupComponent,\r\n ConfirmationPopupComponent,\r\n UploadFirmwareInstallPopupComponent,\r\n KtxLocationDetailsTabComponent,\r\n} from './components';\r\nimport {\r\n LocationsDataSourceService,\r\n LocationsBtxDataSourceService,\r\n LocationsApiService,\r\n CompaniesDataSourceService,\r\n CompaniesApiService,\r\n CompanyAdminsApiService,\r\n CompanyUsersApiService,\r\n CompanyUsersDataSourceService,\r\n CompanyAdminsDataSourceService,\r\n EquipmentApiService,\r\n ServiceUsersDataSourceService,\r\n ServiceUsersApiService,\r\n HubService,\r\n LocationsBtxApiService,\r\n LocationsKtxDataSourceService,\r\n LocationsKtxApiService,\r\n BinApiService,\r\n LocationsItxDatasourceService,\r\n LocationsItxApiService,\r\n VendorDataSourceService,\r\n VendorApiService,\r\n ItxBinApiService,\r\n ItxBinDataSourceService,\r\n EventDatasourceService,\r\n EventApiService,\r\n AccountApiService,\r\n AccountDatasourceService,\r\n SalesUsersApiService,\r\n SalesUsersDatasourceService,\r\n AqsCommoditiesDatasourceService,\r\n AqsCommoditiesApiService,\r\n AqsReportApiService,\r\n AqsReportDatasourceService,\r\n AqsAirflowDatasourceService,\r\n AqsAirflowApiService,\r\n AqsQuoteStorageApiService,\r\n AqsQuoteStorageDataSourceService,\r\n DeviceLogApiService,\r\n DeviceLogDatasourceService,\r\n RoleService,\r\n EquipmentDataSourceService,\r\n EmailServiceApiService,\r\n EmailServiceDataSourceService,\r\n} from './services';\r\nimport {\r\n TouchOnFocusDirective,\r\n ClickOutsideDirective,\r\n IpMaskFixDirective,\r\n} from './directives';\r\nimport { SafePipe } from './pipes';\r\nimport {\r\n companyAdminRoutes,\r\n companyUserRoutes,\r\n salesUserRoutes,\r\n serviceUserRoutes,\r\n vendorRoutes,\r\n} from './main.routes';\r\n\r\n@NgModule({\r\n declarations: [\r\n MainComponent,\r\n LocationsTabComponent,\r\n LocationsGridComponent,\r\n NavigationBarComponent,\r\n HeaderComponent,\r\n CompaniesGridComponent,\r\n CompaniesTabComponent,\r\n CompanyAdminsGridComponent,\r\n CompanyAdminsTabComponent,\r\n CompanyUsersGridComponent,\r\n CompanyUsersTabComponent,\r\n ServiceUsersTabComponent,\r\n ServiceUsersGridComponent,\r\n BasePopupComponent,\r\n LocationDeletePopupComponent,\r\n LocationEditPopupComponent,\r\n BtxLocationEditPopupComponent,\r\n CompaniesAddEditPopupComponent,\r\n CompaniesDeletePopupComponent,\r\n CompanyAdminDeletePopupComponent,\r\n CompanyAdminEditPopupComponent,\r\n CompanyAdminAddPopupComponent,\r\n CompanyUserEditPopupComponent,\r\n CompanyUserDeletePopupComponent,\r\n CompanyUserAddPopupComponent,\r\n ServiceUserAddPopupComponent,\r\n ServiceUserEditPopupComponent,\r\n ServiceUserDeletePopupComponent,\r\n DeleteEquipmentConfirmationPopupComponent,\r\n UploadSuccessPopupComponent,\r\n EquipmentPopupComponent,\r\n EquipmentSchemeEditorComponent,\r\n EditSensorPopupComponent,\r\n EquipmentViewDataPopupComponent,\r\n ViewSensorPopupComponent,\r\n AddEditEquipmentPopupComponent,\r\n UploadAddEditEquipmentPopupComponent,\r\n EquipmentSensorDeletePopupComponent,\r\n EquipmentMenuComponent,\r\n UploadEquipmentPopupComponent,\r\n UploadEquipmentSchemeEditorComponent,\r\n UploadEquipmentViewDataPopupComponent,\r\n UploadEquipmentSensorDeletePopupComponent,\r\n UploadCancellationPopupComponent,\r\n UploadEquipmentMenuComponent,\r\n TouchOnFocusDirective,\r\n ClickOutsideDirective,\r\n IpMaskFixDirective,\r\n LocationChangedPopupComponent,\r\n BtxGridComponent,\r\n BtxTabComponent,\r\n KtxTabComponent,\r\n KtxGridComponent,\r\n KtxLocationAddEditPopupComponent,\r\n LocationBtxKtxDeletePopupComponent,\r\n SafePipe,\r\n KtxLocationBinsPopupComponent,\r\n KtxBinDetailsPopupComponent,\r\n KtxListCablesPopupComponent,\r\n KtxTemperatureRangesPopupComponent,\r\n UploadConfigurationFilePopupComponent,\r\n UploadBtxLocationConfigurationFilePopupComponent,\r\n UploadConfigurationCloseConfirmationPopupComponent,\r\n SuccessOperationPopupComponent,\r\n KtxUnitDetailsPopupComponent,\r\n KtxRangeDeletePopupComponent,\r\n ItxTabComponent,\r\n VendorsTabComponent,\r\n ITXGridComponent,\r\n ItxBinsTabComponent,\r\n ItxReportsTabComponent,\r\n ItxAlertTabComponent,\r\n VendorsGridComponent,\r\n VendorDeletePopupComponent,\r\n ItxAddEditPopupComponent,\r\n ItxBinGridComponent,\r\n VendorAddPopupComponent,\r\n VendorEditPopupComponent,\r\n VendorAddPopupComponent,\r\n ItxManageColorPopupComponent,\r\n ItxRangeDeletePopupComponent,\r\n ItxBinAddEditPopupComponent,\r\n ItxBinDeletePopupComponent,\r\n ItxListAddRadarPopupComponent,\r\n ItxEditRadarPopupComponent,\r\n ItxDeleteRadarPopupComponent,\r\n ItxExportReportPopupComponent,\r\n ItxLiveDataTabComponent,\r\n ItxLiveDataSettingPopupComponent,\r\n ItxStorageRadarsPopupComponent,\r\n UserProfilePopupComponent,\r\n ItxQuickEditPopupComponent,\r\n AqsRoundStorageTabComponent,\r\n AqsFlatStorageTabComponent,\r\n AqsComputationSheetTabComponent,\r\n SalesUsersTabComponent,\r\n ComputationSheetTableComponent,\r\n AqsRoundConfigurationTabComponent,\r\n AqsConfirmPopupComponent,\r\n AqsRoundViewTabComponent,\r\n AqsFlatStorageParamsComponent,\r\n AqsCommoditiesComponent,\r\n ComputationSheetReportPopupComponent,\r\n AqsFlatViewTabComponent,\r\n ComputationSheetShareReportPopupComponent,\r\n AqsComputationSheetConfirmPopupComponent,\r\n AqsCoverSheetComponent,\r\n AqsTargetAirflowComponent,\r\n AqsRoundDuctDesignComponent,\r\n AqsExhausterRecommendationsComponent,\r\n AqsComputationSheetResavePopupComponent,\r\n AqsRoundDuctDesignViewTabComponent,\r\n AqsFlatDuctDesignComponent,\r\n AqsRoundFlushDesignTabComponent,\r\n AqsRoundFlushDesignDoubleHComponent,\r\n AqsRoundFlushDesignDoubleTwoRunsComponent,\r\n AqsRoundFlushDesignDoubleTComponent,\r\n AqsRoundFlushDesignFourLaneSpecialComponent,\r\n AqsRoundFlushDesignSixLaneSpecialComponent,\r\n AqsRoundFlushDesignDoubleTSpecialComponent,\r\n AqsFlatDuctViewTabComponent,\r\n AqsQuotesTabComponent,\r\n AqsNewQuotePopupComponent,\r\n KtxConnectionPopupComponent,\r\n DeviceCommunicationPopupComponent,\r\n KtxCurrentDataTabComponent,\r\n BtxLiveDataTabComponent,\r\n BtxHistoricalDataTabComponent,\r\n BtxNotificationsTabComponent,\r\n KtxHistoricalDataTabComponent,\r\n KtxNotificationsTabComponent,\r\n EmailManagementTabComponent,\r\n KtxBinDetailsTabComponent,\r\n KtxUnitFullscreenPopupComponent,\r\n KtxTemperatureRangesComponent,\r\n KtxCurrentDataExportReportPopupComponent,\r\n BtxLiveDataEquipmentViewTabComponent,\r\n BtxEquipmentSensorsGridComponent,\r\n BtxEquipmentSchemaComponent,\r\n EmailServiceAddEditPopupComponent,\r\n EmailServiceDeletePopupComponent,\r\n BtxLiveDataExportReportPopupComponent,\r\n TutorialPopupComponent,\r\n TutorialComponent,\r\n ExportNotificationPopupComponent,\r\n BtxEquipmentDetailsPopupComponent,\r\n DeviceUpdateManagementTabComponent,\r\n UpdaterDeletePopupComponent,\r\n UpdaterAddEditPopupComponent,\r\n FirmwareManagementPopupComponent,\r\n UploadFirmwarePopupComponent,\r\n UploadFirmwareRebasePopupComponent,\r\n UpdateFirmwarePopupComponent,\r\n UpdaterDeletePopupComponent,\r\n UpdaterAddEditPopupComponent,\r\n UploadFirmwareRebasePopupComponent,\r\n UpdateVersionsManagementPopupComponent,\r\n ConfirmationPopupComponent,\r\n UploadFirmwareInstallPopupComponent,\r\n KtxLocationDetailsTabComponent,\r\n ],\r\n imports: [\r\n FormsModule,\r\n AngularCommonModule,\r\n ReactiveFormsModule,\r\n BrowserAnimationsModule,\r\n TableModule,\r\n MultiSelectModule,\r\n DropdownModule,\r\n InputNumberModule,\r\n ListboxModule,\r\n TreeModule,\r\n CalendarModule,\r\n ToastModule,\r\n RadioButtonModule,\r\n MenuModule,\r\n CheckboxModule,\r\n OverlayPanelModule,\r\n AccordionModule,\r\n SpinnerModule,\r\n MessagesModule,\r\n InputTextareaModule,\r\n InputSwitchModule,\r\n MessageModule,\r\n InputNumberModule,\r\n ColorPickerModule,\r\n ProgressSpinnerModule,\r\n FileUploadModule,\r\n InputPriceFormatModule,\r\n ChipsModule,\r\n NgxMaskModule.forRoot(),\r\n RouterModule.forChild([\r\n {\r\n path: RoutePaths.MAIN_ADMIN,\r\n component: MainComponent,\r\n canActivate: [AuthGuard],\r\n data: { expectedRole: UserRoleEnum.CompanyAdmin },\r\n children: companyAdminRoutes,\r\n },\r\n ]),\r\n RouterModule.forChild([\r\n {\r\n path: RoutePaths.MAIN_USER,\r\n component: MainComponent,\r\n canActivate: [AuthGuard],\r\n data: { expectedRole: UserRoleEnum.ServiceUser },\r\n children: serviceUserRoutes,\r\n },\r\n ]),\r\n RouterModule.forChild([\r\n {\r\n path: RoutePaths.VENDOR,\r\n component: MainComponent,\r\n canActivate: [AuthGuard],\r\n data: { expectedRole: UserRoleEnum.Vendor },\r\n children: vendorRoutes,\r\n },\r\n ]),\r\n RouterModule.forChild([\r\n {\r\n path: RoutePaths.COMPANY_USER,\r\n component: MainComponent,\r\n canActivate: [AuthGuard],\r\n data: { expectedRole: UserRoleEnum.CompanyUser },\r\n children: companyUserRoutes,\r\n },\r\n ]),\r\n RouterModule.forChild([\r\n {\r\n path: RoutePaths.SALES_USER,\r\n component: MainComponent,\r\n canActivate: [AuthGuard],\r\n data: { expectedRole: UserRoleEnum.SalesUser },\r\n children: salesUserRoutes,\r\n },\r\n ]),\r\n RouterModule.forChild([\r\n {\r\n path: 'back-door',\r\n component: MainComponent,\r\n children: serviceUserRoutes,\r\n },\r\n ]),\r\n RouterModule.forChild([\r\n {\r\n path: 'back-door/admin',\r\n component: MainComponent,\r\n children: companyAdminRoutes,\r\n },\r\n ]),\r\n RouterModule.forChild([\r\n {\r\n path: 'back-door/company-user',\r\n component: MainComponent,\r\n children: companyUserRoutes,\r\n },\r\n ]),\r\n RouterModule.forChild([\r\n {\r\n path: 'back-door/user',\r\n component: MainComponent,\r\n children: serviceUserRoutes,\r\n },\r\n ]),\r\n RouterModule.forChild([\r\n {\r\n path: 'back-door/vendor',\r\n component: MainComponent,\r\n children: vendorRoutes,\r\n },\r\n ]),\r\n RouterModule.forChild([\r\n {\r\n path: 'back-door/aqs',\r\n component: MainComponent,\r\n children: salesUserRoutes,\r\n },\r\n ]),\r\n ],\r\n\r\n providers: [\r\n AuthGuard,\r\n LocationsDataSourceService,\r\n LocationsBtxDataSourceService,\r\n LocationsBtxApiService,\r\n LocationsKtxDataSourceService,\r\n LocationsKtxApiService,\r\n LocationsApiService,\r\n CompaniesApiService,\r\n CompaniesDataSourceService,\r\n CompanyAdminsApiService,\r\n CompanyAdminsDataSourceService,\r\n CompanyUsersApiService,\r\n CompanyUsersDataSourceService,\r\n ServiceUsersApiService,\r\n ServiceUsersDataSourceService,\r\n EquipmentApiService,\r\n HubService,\r\n AccessTokenFactory,\r\n VendorApiService,\r\n VendorDataSourceService,\r\n LocationsItxDatasourceService,\r\n LocationsItxApiService,\r\n ItxBinApiService,\r\n ItxBinDataSourceService,\r\n BinApiService,\r\n EventDatasourceService,\r\n EventApiService,\r\n AccountApiService,\r\n SalesUsersApiService,\r\n SalesUsersDatasourceService,\r\n AccountDatasourceService,\r\n AqsCommoditiesDatasourceService,\r\n AqsCommoditiesApiService,\r\n AqsReportDatasourceService,\r\n AqsReportApiService,\r\n AqsAirflowDatasourceService,\r\n AqsAirflowApiService,\r\n AqsQuoteStorageApiService,\r\n AqsQuoteStorageDataSourceService,\r\n DeviceLogApiService,\r\n DeviceLogDatasourceService,\r\n EmailServiceApiService,\r\n EmailServiceDataSourceService,\r\n RoleService,\r\n EquipmentDataSourceService,\r\n ],\r\n})\r\nexport class MainModule { }\r\n","import { Routes } from '@angular/router';\r\nimport { MainRoutePaths } from './constants';\r\nimport {\r\n AqsComputationSheetTabComponent,\r\n AqsFlatStorageTabComponent,\r\n AqsQuotesTabComponent,\r\n AqsRoundStorageTabComponent,\r\n BtxHistoricalDataTabComponent,\r\n BtxLiveDataEquipmentViewTabComponent,\r\n BtxLiveDataTabComponent,\r\n BtxNotificationsTabComponent,\r\n BtxTabComponent,\r\n CompaniesTabComponent,\r\n CompanyAdminsTabComponent,\r\n CompanyUsersTabComponent,\r\n EmailManagementTabComponent,\r\n ItxAlertTabComponent,\r\n ItxBinsTabComponent,\r\n ItxLiveDataTabComponent,\r\n ItxReportsTabComponent,\r\n ItxTabComponent,\r\n KtxBinDetailsTabComponent,\r\n KtxCurrentDataTabComponent,\r\n KtxHistoricalDataTabComponent,\r\n KtxNotificationsTabComponent,\r\n KtxTabComponent,\r\n LocationsTabComponent,\r\n SalesUsersTabComponent,\r\n ServiceUsersTabComponent,\r\n VendorsTabComponent,\r\n DeviceUpdateManagementTabComponent,\r\n KtxLocationDetailsTabComponent,\r\n} from './components';\r\n\r\nexport const serviceUserRoutes: Routes = [\r\n {\r\n path: '',\r\n redirectTo: MainRoutePaths.COMPANIES,\r\n pathMatch: 'full',\r\n },\r\n {\r\n path: MainRoutePaths.COMPANIES,\r\n component: CompaniesTabComponent,\r\n },\r\n {\r\n path: MainRoutePaths.LOCATIONS,\r\n component: LocationsTabComponent,\r\n },\r\n {\r\n path: MainRoutePaths.FIRMWARE_MANAGEMENT,\r\n component: DeviceUpdateManagementTabComponent,\r\n },\r\n {\r\n path: MainRoutePaths.BTX_MANAGEMENT,\r\n component: BtxTabComponent,\r\n },\r\n {\r\n path: MainRoutePaths.BTX_LIVE_DATA,\r\n component: BtxLiveDataTabComponent,\r\n },\r\n {\r\n path: MainRoutePaths.BTX_LIVE_DATA_EQUIPMENT_VIEW,\r\n component: BtxLiveDataEquipmentViewTabComponent,\r\n },\r\n {\r\n path: MainRoutePaths.BTX_HISTORICAL_DATA,\r\n component: BtxHistoricalDataTabComponent,\r\n },\r\n {\r\n path: MainRoutePaths.BTX_NOTIFICATIONS,\r\n component: BtxNotificationsTabComponent,\r\n },\r\n {\r\n path: MainRoutePaths.KTX_MANAGEMENT,\r\n component: KtxTabComponent,\r\n },\r\n {\r\n path: MainRoutePaths.KTX_LOCATION_VIEW,\r\n component: KtxCurrentDataTabComponent,\r\n },\r\n {\r\n path: MainRoutePaths.KTX_LOCATION_DETAILS,\r\n component: KtxLocationDetailsTabComponent,\r\n },\r\n {\r\n path: `${MainRoutePaths.KTX_BIN_DETAILS}/:id`,\r\n component: KtxBinDetailsTabComponent,\r\n },\r\n {\r\n path: MainRoutePaths.KTX_HISTORICAL_DATA,\r\n component: KtxHistoricalDataTabComponent,\r\n },\r\n {\r\n path: MainRoutePaths.KTX_NOTIFICATIONS,\r\n component: KtxNotificationsTabComponent,\r\n },\r\n {\r\n path: MainRoutePaths.COMPANY_ADMINS,\r\n component: CompanyAdminsTabComponent,\r\n },\r\n {\r\n path: MainRoutePaths.SERVICE_USERS,\r\n component: ServiceUsersTabComponent,\r\n },\r\n {\r\n path: MainRoutePaths.SALES_USERS,\r\n component: SalesUsersTabComponent,\r\n },\r\n {\r\n path: MainRoutePaths.ITX_MANAGEMENT,\r\n component: ItxTabComponent,\r\n },\r\n {\r\n path: `${MainRoutePaths.ITX_STORAGES_MANAGEMENT}/:id`,\r\n component: ItxBinsTabComponent,\r\n },\r\n {\r\n path: MainRoutePaths.ITX_VIEWS,\r\n component: ItxLiveDataTabComponent,\r\n },\r\n {\r\n path: MainRoutePaths.ITX_REPORTS,\r\n component: ItxReportsTabComponent,\r\n },\r\n {\r\n path: MainRoutePaths.ITX_ALERT,\r\n component: ItxAlertTabComponent,\r\n },\r\n];\r\n\r\nexport const companyAdminRoutes: Routes = [\r\n {\r\n path: '',\r\n redirectTo: MainRoutePaths.COMPANY_ADMINS,\r\n pathMatch: 'full',\r\n },\r\n {\r\n path: MainRoutePaths.COMPANY_USERS,\r\n component: CompanyUsersTabComponent,\r\n },\r\n {\r\n path: MainRoutePaths.COMPANY_ADMINS,\r\n component: CompanyAdminsTabComponent,\r\n },\r\n {\r\n path: MainRoutePaths.SERVICE_USERS,\r\n component: ServiceUsersTabComponent,\r\n },\r\n {\r\n path: MainRoutePaths.VENDORS,\r\n component: VendorsTabComponent,\r\n },\r\n {\r\n path: MainRoutePaths.EMAIL_MANAGEMENT,\r\n component: EmailManagementTabComponent,\r\n },\r\n {\r\n path: MainRoutePaths.LOCATIONS,\r\n component: LocationsTabComponent,\r\n },\r\n {\r\n path: MainRoutePaths.BTX_LIVE_DATA,\r\n component: BtxLiveDataTabComponent,\r\n },\r\n {\r\n path: MainRoutePaths.BTX_LIVE_DATA_EQUIPMENT_VIEW,\r\n component: BtxLiveDataEquipmentViewTabComponent,\r\n },\r\n {\r\n path: MainRoutePaths.BTX_HISTORICAL_DATA,\r\n component: BtxHistoricalDataTabComponent,\r\n },\r\n {\r\n path: MainRoutePaths.BTX_NOTIFICATIONS,\r\n component: BtxNotificationsTabComponent,\r\n },\r\n {\r\n path: MainRoutePaths.KTX_LOCATION_VIEW,\r\n component: KtxCurrentDataTabComponent,\r\n },\r\n {\r\n path: MainRoutePaths.KTX_LOCATION_DETAILS,\r\n component: KtxLocationDetailsTabComponent,\r\n },\r\n {\r\n path: `${MainRoutePaths.KTX_BIN_DETAILS}/:id`,\r\n component: KtxBinDetailsTabComponent,\r\n },\r\n {\r\n path: MainRoutePaths.KTX_HISTORICAL_DATA,\r\n component: KtxHistoricalDataTabComponent,\r\n },\r\n {\r\n path: MainRoutePaths.KTX_NOTIFICATIONS,\r\n component: KtxNotificationsTabComponent,\r\n },\r\n {\r\n path: MainRoutePaths.ITX_VIEWS,\r\n component: ItxLiveDataTabComponent,\r\n },\r\n {\r\n path: MainRoutePaths.ITX_REPORTS,\r\n component: ItxReportsTabComponent,\r\n },\r\n {\r\n path: MainRoutePaths.ITX_ALERT,\r\n component: ItxAlertTabComponent,\r\n },\r\n];\r\n\r\nexport const companyUserRoutes: Routes = [\r\n {\r\n path: MainRoutePaths.BTX_LIVE_DATA,\r\n component: BtxLiveDataTabComponent,\r\n },\r\n {\r\n path: MainRoutePaths.BTX_LIVE_DATA_EQUIPMENT_VIEW,\r\n component: BtxLiveDataEquipmentViewTabComponent,\r\n },\r\n {\r\n path: MainRoutePaths.BTX_HISTORICAL_DATA,\r\n component: BtxHistoricalDataTabComponent,\r\n },\r\n {\r\n path: MainRoutePaths.BTX_NOTIFICATIONS,\r\n component: BtxNotificationsTabComponent,\r\n },\r\n {\r\n path: MainRoutePaths.KTX_LOCATION_VIEW,\r\n component: KtxCurrentDataTabComponent,\r\n },\r\n {\r\n path: MainRoutePaths.KTX_LOCATION_DETAILS,\r\n component: KtxLocationDetailsTabComponent,\r\n },\r\n {\r\n path: `${MainRoutePaths.KTX_BIN_DETAILS}/:id`,\r\n component: KtxBinDetailsTabComponent,\r\n },\r\n {\r\n path: MainRoutePaths.KTX_HISTORICAL_DATA,\r\n component: KtxHistoricalDataTabComponent,\r\n },\r\n {\r\n path: MainRoutePaths.KTX_NOTIFICATIONS,\r\n component: KtxNotificationsTabComponent,\r\n },\r\n {\r\n path: MainRoutePaths.ITX_VIEWS,\r\n component: ItxLiveDataTabComponent,\r\n },\r\n {\r\n path: MainRoutePaths.ITX_REPORTS,\r\n component: ItxReportsTabComponent,\r\n },\r\n {\r\n path: MainRoutePaths.ITX_ALERT,\r\n component: ItxAlertTabComponent,\r\n },\r\n];\r\nexport const vendorRoutes: Routes = [\r\n {\r\n path: '',\r\n redirectTo: MainRoutePaths.ITX_VIEWS,\r\n pathMatch: 'full',\r\n },\r\n {\r\n path: MainRoutePaths.ITX_VIEWS,\r\n component: ItxLiveDataTabComponent,\r\n },\r\n {\r\n path: MainRoutePaths.ITX_REPORTS,\r\n component: ItxReportsTabComponent,\r\n },\r\n];\r\n\r\nexport const salesUserRoutes: Routes = [\r\n {\r\n path: '',\r\n redirectTo: MainRoutePaths.AQS_QUOTES,\r\n pathMatch: 'full',\r\n },\r\n {\r\n path: MainRoutePaths.AQS_QUOTES,\r\n component: AqsQuotesTabComponent,\r\n },\r\n {\r\n path: MainRoutePaths.AQS_ROUND_STORAGE,\r\n component: AqsRoundStorageTabComponent,\r\n },\r\n {\r\n path: MainRoutePaths.AQS_FLAT_STORAGE,\r\n component: AqsFlatStorageTabComponent,\r\n },\r\n {\r\n path: MainRoutePaths.AQS_COMPUTATION_SHEET,\r\n component: AqsComputationSheetTabComponent,\r\n },\r\n];\r\n","export class AccountProfileModel {\r\n userId: number;\r\n firstName: string;\r\n lastName: string;\r\n companyName: string;\r\n}","import { AqsDuctTypeEnum } from \"../enums\";\r\nimport { AqsRoundDuctDesignType } from \"../enums\";\r\n\r\nexport class AqsRoundStorageDuctDesignModel {\r\n id: number;\r\n ductsPerFan: number;\r\n degreesBetweenFans: number;\r\n degreesBetweenDucts: number;\r\n distanceBetweenDuctsFt: number;\r\n distanceBetweenDuctsIn: number;\r\n openingDiameter: number;\r\n ductDiameter: number;\r\n solidDuctLengthFt: number;\r\n solidDuctLengthIn: number;\r\n perforatedDuctLengthFt: number;\r\n perforatedDuctLengthIn: number;\r\n perforatedCDuctLengthFt: number;\r\n perforatedCDuctLengthIn: number;\r\n ductType: AqsDuctTypeEnum;\r\n\r\n constructor() {\r\n this.ductType = AqsDuctTypeEnum.FullRoundDuct;\r\n }\r\n}\r\n\r\nexport class AqsRoundStorageDuctDesignViewModel {\r\n roundStorageDiameter: number;\r\n numberOfFans: number;\r\n\r\n numberOfDucts: number;\r\n ductsPerFan: number;\r\n\r\n degreesBetweenFans: number;\r\n degreesBetweenDucts: number;\r\n\r\n distanceBetweenDuctsFt: number;\r\n distanceBetweenDuctsIn: number;\r\n\r\n openingDiameter: number;\r\n ductDiameter: number;\r\n\r\n solidDuctLengthFt: number;\r\n solidDuctLengthIn: number;\r\n\r\n perforatedDuctLengthFt: number;\r\n perforatedDuctLengthIn: number;\r\n\r\n perforatedCDuctLengthFt: number;\r\n perforatedCDuctLengthIn: number;\r\n\r\n solidDuctLengthNoSingle: number = null;\r\n letterSolidDuctLengthNoSingle: string;\r\n\r\n solidDuctCLengthNoSingle: number = null;\r\n letterSolidDuctCLengthNoSingle: string;\r\n\r\n ductType: AqsDuctTypeEnum;\r\n\r\n maxVelocities: Velocities;\r\n actVelocities: Velocities;\r\n\r\n roundDuctDesignType: AqsRoundDuctDesignType\r\n\r\n hopperPitch: number;\r\n perfDMax: number;\r\n perfCMax: number;\r\n\r\n outletDiameter: number;\r\n\r\n innerDegree: number;\r\n innerFanDegree: number;\r\n innerDuctDegree: number;\r\n outerDegree: number;\r\n coneHeight: number;\r\n steamwall: number;\r\n ledge: number;\r\n\r\n constructor() {\r\n this.maxVelocities = new Velocities();\r\n this.actVelocities = new Velocities();\r\n this.ductType = AqsDuctTypeEnum.FullRoundDuct;\r\n }\r\n}\r\n\r\nexport class Velocities {\r\n crossSec: number;\r\n surface: number;\r\n}","import { AqsAirflowFanTypeEnum, AqsAirflowLevelEnum, AqsFlushDuctDesignEnum } from '../../enums';\r\n\r\nexport class AqsAirflowViewModel {\r\n id: number;\r\n airflowData: AqsAirFlowDataViewModel[];\r\n level: AqsAirflowLevelEnum;\r\n packingFactor: number;\r\n numberfans: number;\r\n systemStep: number;\r\n fanType: AqsAirflowFanTypeEnum;\r\n selectedFan: AqsSelectedFanModel;\r\n\r\n constructor() {\r\n this.id = 0;\r\n this.airflowData = [];\r\n this.selectedFan = new AqsSelectedFanModel();\r\n }\r\n\r\n clearModel() {\r\n this.airflowData = [];\r\n this.level = null;\r\n this.packingFactor = null;\r\n this.numberfans = null;\r\n this.systemStep = 0;\r\n this.fanType = null;\r\n this.selectedFan.fanId = null;\r\n this.selectedFan.fanName = null;\r\n }\r\n}\r\n\r\nexport class AqsSelectedFanModel {\r\n fanId: number;\r\n fanName: string;\r\n modelName: string;\r\n\r\n clearModel() {\r\n this.fanId = null;\r\n this.fanName = null;\r\n this.modelName=null;\r\n }\r\n}\r\n\r\nexport class AqsAirFlowDataViewModel {\r\n id: number;\r\n commodityId: number;\r\n bupercfm: number;\r\n actpress: number;\r\n actbupercfm: number;\r\n kcfm: number;\r\n}\r\n\r\nexport class AqsAirflowFanTypeViewModel {\r\n id: number;\r\n name: string;\r\n type: AqsAirflowFanTypeEnum;\r\n fans: AqsAirflowFanViewModel[];\r\n}\r\n\r\nexport class AqsAirflowFanViewModel {\r\n id: number;\r\n name: string;\r\n fanPoints: AqsAirflowFanPointModel[];\r\n modelName: string;\r\n}\r\n\r\nexport class AqsAirflowFanPointModel {\r\n x: number;\r\n y: number;\r\n}\r\n\r\nexport class IncludeFlowOption {\r\n id: number;\r\n includeExhauster: boolean;\r\n includeDesign: AqsFlushDuctDesignEnum;\r\n constructor() {\r\n this.id = 0;\r\n }\r\n}\r\n","export class AqsCommoditiesViewModel {\r\n id: number;\r\n name: string;\r\n aa: number;\r\n bb: number;\r\n}","import { AqsCoverSheetTypeEnum } from \"../../enums\";\r\n\r\nexport class AqsCoverSheetModel {\r\n id: number;\r\n type: AqsCoverSheetTypeEnum;\r\n numberTypical: number;\r\n customerName: string;\r\n companyName: string;\r\n city: string;\r\n contact: string;\r\n quoteNumber: string;\r\n locationName: string;\r\n locationCity: string;\r\n comment: string;\r\n\r\n constructor() {\r\n this.id = 0;\r\n this.numberTypical = 1;\r\n }\r\n}\r\n","export class AqsExhausterViewModel {\r\n id: number;\r\n code: number;\r\n qty: number;\r\n\r\n clearModel() {\r\n this.code = 0;\r\n this.qty = 0;\r\n }\r\n}\r\n\r\nexport class AqsExhausterFanModel {\r\n code: number;\r\n fanType: string;\r\n model: string;\r\n qty1: number;\r\n qty2: number;\r\n safety1: number;\r\n safety2: number;\r\n mgva1: number;\r\n mgva2: number;\r\n\r\n constructor() {}\r\n}\r\n\r\nexport class AqsExhausterFanDataBaseModel {\r\n code: number;\r\n qty: number;\r\n}\r\n\r\nexport class AqsExhausterModel {\r\n name: string;\r\n exhauster: number;\r\n fanType:string;\r\n\r\n constructor() {\r\n // { name: '14 in 1 hp', exhauster: 2500 },\r\n // { name: '16 in 1.5 hp', exhauster: 3780 },\r\n // { name: '18 in 1.5 hp', exhauster: 4975 },\r\n // { name: '18 in 3 hp', exhauster: 6225 },\r\n // { name: '24 in 5 hp', exhauster: 10725 },\r\n // { name: '24 in 7.5 hp', exhauster: 13450 },\r\n // { name: '28 in 10 hp', exhauster: 17450 },\r\n // { name: '20 in 0.75 hp', exhauster: 6800 },\r\n // { name: '24 in 2 hp', exhauster: 10200},\r\n // { name: '40 in 5 hp', exhauster: 27450 },\r\n // { name: '20 in 0.75 hp', exhauster: 6800 },\r\n //{ name: '24 in 2 hp', exhauster: 10200 },\r\n }\r\n}\r\n\r\nexport class AqsExhausterSelectedFanModel {\r\n code: number;\r\n model: string;\r\n qty: number;\r\n safety: number;\r\n gva: number;\r\n\r\n constructor() {}\r\n}\r\n","import { AqsSessionTypeEnum, AqsStorageTypeEnum } from \"../../enums\";\r\n\r\nexport class AqsSavedQuoteModel {\r\n public isSelected: boolean;\r\n public quoteNumber: string;\r\n public createdDate: Date;\r\n public sessionType: AqsSessionTypeEnum;\r\n public storageType: AqsStorageTypeEnum;\r\n public customerName: string;\r\n public companyName: string;\r\n public quoteId: number;\r\n}\r\n","import { PartTypeEnum } from \"../../../enums\";\r\n\r\nexport class PartInfoModel {\r\n public id: number;\r\n public partNumber: string;\r\n public quantity: number;\r\n public description: string;\r\n public weight: number;\r\n public unitPriceMaterial: number;\r\n public unitPriceLabor: number;\r\n public totalPriceMaterial: number;\r\n public totalPriceLabor: number;\r\n public partType: PartTypeEnum;\r\n}\r\n\r\nexport class PartInfoAddEditModel {\r\n public id: number;\r\n public partNumber: string;\r\n public quantity: number;\r\n public description: string;\r\n public weight: number;\r\n public unitPriceMaterial: number;\r\n public unitPriceLabor: number;\r\n public partType: PartTypeEnum;\r\n public position: number;\r\n public computationSheetId: number;\r\n}\r\n\r\nexport class PartInfoResponseModel {\r\n public id: number;\r\n public partNumber: string;\r\n public quantity: number;\r\n public description: string;\r\n public weight: number;\r\n public unitPriceMaterial: number;\r\n public unitPriceLabor: number;\r\n public partType: PartTypeEnum;\r\n public position: number;\r\n}","import { PartInfoModel, PartInfoAddEditModel, PartInfoResponseModel, AqsCoverSheetModel } from \"@models\";\r\nimport { ReportFormatEnum } from \"../../../enums\";\r\n\r\nexport class ComputationSheetModel {\r\n public id: number;\r\n public customerCompany: CustomerCompany;\r\n public customerStorageLocation: CustomerStorageLocation;\r\n public description: ComputationSheetDescription;\r\n public crewTravelNetPrice: number;\r\n public freightNetPrice: number;\r\n public materialDiscountPercentage: number;\r\n public laborDiscountPercentage: number;\r\n public materialTaxPercentage: number;\r\n public laborTaxPercentage: number;\r\n public crewTravelTaxPercentage: number;\r\n public freightTaxPercentage: number;\r\n public preparedBy: string;\r\n public ductTable: PartInfoModel[];\r\n public fansTable: PartInfoModel[];\r\n public manifoldTable: PartInfoModel[];\r\n public miscellaneousEquipmentTable: PartInfoModel[];\r\n public totalFreightWeight: number;\r\n public totalPriceAllMaterials: number;\r\n public totalPriceAllLabors: number;\r\n public materialPriceWithDiscountAndTax: number;\r\n public laborPriceWithDiscountAndTax: number;\r\n public crewTravelNetWithTax: number;\r\n public freightNetWithTax: number;\r\n public grandTotal: number;\r\n public leadTime: string;\r\n}\r\n\r\nexport class ComputationSheetAddEditModel {\r\n public id: number;\r\n public customerCompany: CustomerCompany;\r\n public customerStorageLocation: CustomerStorageLocation;\r\n public description: ComputationSheetDescription;\r\n public crewTravelNetPrice: number;\r\n public freightNetPrice: number;\r\n public materialDiscountPercentage: number;\r\n public laborDiscountPercentage: number;\r\n public materialTaxPercentage: number;\r\n public laborTaxPercentage: number;\r\n public crewTravelTaxPercentage: number;\r\n public freightTaxPercentage: number;\r\n public preparedBy: string;\r\n public partInfos: PartInfoAddEditModel[];\r\n public partsInfoIdsForDelete: number[];\r\n public leadTime: string;\r\n}\r\n\r\nexport class ComputationSheetResponseModel {\r\n public id: number;\r\n public customerCompany: CustomerCompany;\r\n public customerStorageLocation: CustomerStorageLocation;\r\n public description: ComputationSheetDescription;\r\n public crewTravelNetPrice: number;\r\n public freightNetPrice: number;\r\n public materialDiscountPercentage: number;\r\n public laborDiscountPercentage: number;\r\n public materialTaxPercentage: number;\r\n public laborTaxPercentage: number;\r\n public crewTravelTaxPercentage: number;\r\n public freightTaxPercentage: number;\r\n public preparedBy: string;\r\n public partInfos: PartInfoResponseModel[];\r\n public userId: number;\r\n public leadTime: string;\r\n}\r\n\r\nexport class ReportComputationSheetModel {\r\n public id: number;\r\n public customerCompany: CustomerCompany;\r\n public customerStorageLocation: CustomerStorageLocation;\r\n public description: ComputationSheetDescription;\r\n public crewTravelNetPrice: number;\r\n public freightNetPrice: number;\r\n public materialDiscountPercentage: number;\r\n public laborDiscountPercentage: number;\r\n public materialTaxPercentage: number;\r\n public laborTaxPercentage: number;\r\n public crewTravelTaxPercentage: number;\r\n public freightTaxPercentage: number;\r\n public preparedBy: string;\r\n public partInfos: PartInfoModel[];\r\n public totalFreightWeight: number;\r\n public totalPriceAllMaterials: number;\r\n public totalPriceAllLabors: number;\r\n public materialPriceWithDiscountAndTax: number;\r\n public laborPriceWithDiscountAndTax: number;\r\n public crewTravelNetWithTax: number;\r\n public freightNetWithTax: number;\r\n public grandTotal: number;\r\n public reportFormat: ReportFormatEnum\r\n public timeZone: string;\r\n public printDate: Date;\r\n public leadTime: string;\r\n}\r\n\r\nexport class CustomerCompany {\r\n name: string;\r\n companyName: string;\r\n city: string;\r\n contact: string;\r\n}\r\n\r\nexport class CustomerStorageLocation {\r\n quoteNumber: string;\r\n name: string;\r\n city: string;\r\n description: string;\r\n}\r\n\r\nexport class ComputationSheetDescription {\r\n descriptionOfStorage: string;\r\n descriptionOfSystem: string;\r\n}\r\n\r\nexport class BindingComputationSheets{\r\n id:number;\r\n coverSheet:AqsCoverSheetModel;\r\n}","export * from './computation-sheet.model';\r\nexport * from './computation-item.model';","import { AqsFlatDuctingShapeTypeEnum } from \"../../../enums\";\r\n\r\nexport class AqsFlatDuctModel {\r\n id: number;\r\n ductType: AqsFlatDuctingShapeTypeEnum;\r\n near: AqsFlatDuctSideParamsModel;\r\n far: AqsFlatDuctSideParamsModel;\r\n front: AqsFlatDuctSideParamsModel;\r\n rear: AqsFlatDuctSideParamsModel;\r\n ductDiameter: number; //DUCTDIA\r\n openingDiameter: number; //OPENDIA\r\n\r\n constructor() {\r\n this.ductType = AqsFlatDuctingShapeTypeEnum.FullRound;\r\n this.near = new AqsFlatDuctSideParamsModel();\r\n this.near.name = 'Near';\r\n this.far = new AqsFlatDuctSideParamsModel();\r\n this.far.name = 'Far';\r\n this.front = new AqsFlatDuctSideParamsModel();\r\n this.front.name = 'Front';\r\n this.rear = new AqsFlatDuctSideParamsModel();\r\n this.rear.name = 'Rear';\r\n this.id = 0;\r\n }\r\n\r\n clearModel() {\r\n this.ductType = AqsFlatDuctingShapeTypeEnum.FullRound;\r\n this.near = new AqsFlatDuctSideParamsModel();\r\n this.near.name = 'Near';\r\n this.far = new AqsFlatDuctSideParamsModel();\r\n this.far.name = 'Far';\r\n this.front = new AqsFlatDuctSideParamsModel();\r\n this.front.name = 'Front';\r\n this.rear = new AqsFlatDuctSideParamsModel();\r\n this.rear.name = 'Rear';\r\n }\r\n}\r\n\r\nexport class AqsFlatDuctSideParamsModel {\r\n id: number;\r\n name: string;\r\n numberFansPerSide: number;\r\n ctroctr: number;\r\n perfPerRun: number;\r\n solidPerRun: number;\r\n distanceFromEdge: number;\r\n maxDuctLenght: number;\r\n idealDuctLenght: number;\r\n}\r\n","import {\r\n AqsAirflowViewModel, AqsCommoditiesViewModel,\r\n AqsCoverSheetModel, AqsExhausterViewModel, IncludeFlowOption\r\n} from \"@models\";\r\nimport { AQSFlatStorageTypesEnum, AqsSessionTypeEnum, ReportFormatEnum } from \"./../../../enums\";\r\nimport { AqsFlatDuctModel } from \"./aqs-flat-duct.model\";\r\n\r\nexport class QuoteFlatStorageViewModel {\r\n public id: number;\r\n public coverSheet: AqsCoverSheetModel;\r\n public flatStorage: FlatStorageParams;\r\n public commodities: AqsCommoditiesViewModel[];\r\n public exhausterSheet: AqsExhausterViewModel;\r\n public session: AqsSessionTypeEnum;\r\n public airflowConfiguration: AqsAirflowViewModel;\r\n public includeFlowOption: IncludeFlowOption;\r\n public flatDuctModel: AqsFlatDuctModel;\r\n public userId: number;\r\n public linkComputationSheetId: number;\r\n\r\n constructor() {\r\n this.linkComputationSheetId = null;\r\n }\r\n}\r\n\r\nexport class QuoteFlatStorageReportModel {\r\n public coverSheet: AqsCoverSheetModel;\r\n public flatStorage: FlatStorageParams;\r\n public commodities: AqsCommoditiesViewModel[];\r\n public airflowConfiguration: AqsAirflowViewModel;\r\n public includeFlowOption: IncludeFlowOption;\r\n public exhausterSheet: AqsExhausterViewModel;\r\n public ductDesign: AqsFlatDuctModel;\r\n public reportFormat: ReportFormatEnum;\r\n public timeZone: string;\r\n public printDate: Date;\r\n}\r\n\r\nexport class FlatStorageParams {\r\n public id: number;\r\n public storageType: AQSFlatStorageTypesEnum;\r\n\r\n public width: number;\r\n public lenght: number;\r\n public height: number;\r\n\r\n //capacity\r\n public effectiveDepth: number;\r\n public buCapacityPile: number;\r\n\r\n //flat peaked storage\r\n public repose?: number;\r\n public rise?: number;\r\n\r\n //flat sloped and trunced\r\n public qAllHeight?: number\r\n\r\n //roof parameters for 2-4 types\r\n public offsetLenght: number;\r\n public offsetWidth: number;\r\n public roof: number;\r\n\r\n commodities: AqsCommoditiesViewModel[];\r\n\r\n constructor() {\r\n this.id = 0;\r\n this.storageType = AQSFlatStorageTypesEnum.Flat;\r\n\r\n this.width = 50;\r\n this.lenght = 100;\r\n this.height = 10;\r\n\r\n this.repose = 0;\r\n this.rise = 0;\r\n\r\n this.qAllHeight = 20;\r\n\r\n this.offsetLenght = 12.5;\r\n this.offsetWidth = this.offsetLenght;\r\n this.roof = 0;\r\n this.commodities = [];\r\n\r\n this.getCalculateCapacity();\r\n }\r\n\r\n onChangeStorageType() {\r\n this.width = 50;\r\n this.lenght = 100;\r\n this.height = 10;\r\n\r\n this.offsetLenght = 12.5;\r\n this.offsetWidth = this.offsetLenght;\r\n this.roof = 10;\r\n this.qAllHeight = this.height + this.roof;\r\n this.onChangeQAllHeight();\r\n this.getCalculateCapacity();\r\n }\r\n\r\n getCalculateRoofParams() {\r\n this._getParametersByType();\r\n this.getCalcualteRiseRepose();\r\n }\r\n\r\n private getCalcualteRiseRepose() {\r\n this.rise = (this.roof * 12) / this.offsetWidth;\r\n this.repose =\r\n (Math.atan(this.rise / 12) * 180) / Math.PI;\r\n }\r\n\r\n // FAUTODIM 2830 ZINITIAL=PILEWIDTH:Y=9:GOSUB 3620:IF FLAG$=\"M\" OR FLAG$=\"C\" OR FLAG$=\"D\" THEN RETURN\r\n onChangeWidth() {\r\n if (this.storageType !== AQSFlatStorageTypesEnum.Flat) {\r\n if (this.storageType == AQSFlatStorageTypesEnum.Sloped || this.storageType == AQSFlatStorageTypesEnum.Peaked) {\r\n if (this.width < this.lenght || this.storageType == AQSFlatStorageTypesEnum.Peaked) {\r\n this.qAllHeight = this.rise * (this.width / 2) / 12 + this.height\r\n } else {\r\n this.qAllHeight = this.rise * (this.lenght / 2) / 12 + this.height;\r\n }\r\n }\r\n else {\r\n this.offsetWidth = this.width / 4;\r\n this.offsetLenght = this.offsetWidth;\r\n if (this.offsetLenght * 4 > this.lenght) {\r\n this.offsetLenght = this.lenght / 4;\r\n this.offsetWidth = this.offsetLenght;\r\n }\r\n\r\n this.qAllHeight = this.height + this.offsetWidth * this.rise / 12;\r\n this.roof = this.qAllHeight - this.height;\r\n }\r\n }\r\n }\r\n\r\n //FAUTODIM 2980 ZINITIAL=PILELENGTH:Y=10:GOSUB 3620:IF FLAG$=\"M\" OR FLAG$=\"C\" OR FLAG$=\"D\" THEN RETURN\r\n onChangeLenght() {\r\n if (this.storageType === AQSFlatStorageTypesEnum.Sloped) {\r\n if (this.lenght < this.width) {\r\n this.qAllHeight = this.rise * (this.lenght / 2) / 12 + this.height;\r\n } else {\r\n this.qAllHeight = this.rise * (this.width / 2) / 12 + this.height;\r\n }\r\n }\r\n\r\n if (this.storageType === AQSFlatStorageTypesEnum.Truncated) {\r\n this.offsetWidth = this.width / 4;\r\n this.offsetLenght = this.offsetWidth;\r\n\r\n if (this.offsetLenght * 4 > this.lenght) {\r\n this.offsetLenght = this.lenght / 4;\r\n this.offsetWidth = this.offsetLenght;\r\n }\r\n\r\n this.qAllHeight = this.height + this.offsetWidth * this.rise / 12;\r\n this.roof = this.qAllHeight - this.height;\r\n }\r\n }\r\n\r\n //FAUTODIM 3210 ZINITIAL=OVERALLHEIGHT:Y=12:GOSUB 3620:IF FLAG$=\"C\" OR FLAG$=\"M\" OR FLAG$=\"D\" THEN RETURN\r\n onChangeQAllHeight() {\r\n if (this.storageType == AQSFlatStorageTypesEnum.Flat) {\r\n this.roof = 0;\r\n } else {\r\n this.roof = this.qAllHeight - this.height;\r\n\r\n if (this.storageType == AQSFlatStorageTypesEnum.Peaked) {\r\n this.offsetLenght = 0;\r\n this.offsetWidth = this.width / 2;\r\n }\r\n else if (this.storageType == AQSFlatStorageTypesEnum.Sloped) {\r\n this.offsetWidth = this.width / 2;\r\n this.offsetLenght = this.offsetWidth;\r\n }\r\n else {\r\n let offset = this.roof * 12 / this.rise;\r\n if (offset + 1 < this.width / 2 || offset + 1 < this.lenght / 2) {\r\n this.offsetLenght = offset;\r\n this.offsetWidth = offset;\r\n }\r\n }\r\n }\r\n\r\n let pitch = 0;\r\n this.rise = (this.roof * 12) / this.offsetWidth;\r\n this.repose =\r\n (Math.atan(this.rise / 12) * 180) / Math.PI;\r\n\r\n\r\n if (this.storageType === AQSFlatStorageTypesEnum.Truncated) {\r\n if (this.width < this.lenght) {\r\n pitch = (this.qAllHeight - this.height) / (this.width / 2);\r\n } else {\r\n pitch = (this.qAllHeight - this.height) / (this.lenght / 2);\r\n }\r\n\r\n if (pitch < 60 / 12 && pitch > this.rise / 12) {\r\n this.rise = pitch * 12 + 4;\r\n this.repose = Math.atan(this.rise / 12) * 180 / Math.PI;\r\n }\r\n\r\n } else {\r\n if (this.storageType === AQSFlatStorageTypesEnum.Peaked ||\r\n (this.storageType === AQSFlatStorageTypesEnum.Sloped && this.width > this.lenght)) {\r\n this.rise = ((this.qAllHeight - this.height) * 12) / (this.width / 2);\r\n } else {\r\n this.rise = ((this.qAllHeight - this.height) * 12) / (this.lenght / 2);\r\n }\r\n\r\n this.repose = Math.atan(this.rise / 12) * 180 / Math.PI;\r\n }\r\n }\r\n\r\n //FAUTODIM 3480 ZINITIAL=RISE:Y=19:GOSUB 3620:IF FLAG$=\"M\" OR FLAG$=\"C\" OR FLAG$=\"D\" THEN RETURN\r\n onChangeRise() {\r\n this.repose = Math.atan(this.rise / 12) * 180 / Math.PI;\r\n //3530 REPOSE=ATN(RISE/12)*180/PI\r\n\r\n if (this.storageType !== AQSFlatStorageTypesEnum.Truncated) {\r\n if (\r\n this.storageType === AQSFlatStorageTypesEnum.Peaked ||\r\n (this.storageType === AQSFlatStorageTypesEnum.Sloped && this.lenght > this.width)\r\n ) {\r\n this.qAllHeight = this.rise * this.width / 24 + this.height;\r\n } else {\r\n this.qAllHeight = this.rise * this.lenght / 24 + this.height;\r\n }\r\n }\r\n this.roof = this.qAllHeight - this.height;\r\n }\r\n\r\n //AUTODIM 3360 ZINITIAL=REPOSE:Y=17:GOSUB 3620:IF FLAG$=\"M\" OR FLAG$=\"C\" OR FLAG$=\"D\" THEN RETURN\r\n onChangeRepose() {\r\n this.rise = Math.tan(this.repose * Math.PI / 180) * 12;\r\n\r\n if (this.storageType !== AQSFlatStorageTypesEnum.Truncated) {\r\n if (\r\n this.storageType === AQSFlatStorageTypesEnum.Peaked ||\r\n (this.storageType === AQSFlatStorageTypesEnum.Sloped && this.lenght > this.width)\r\n ) {\r\n this.qAllHeight = this.rise * this.width / 24 + this.height;\r\n } else {\r\n this.qAllHeight = this.rise * this.lenght / 24 + this.height;\r\n }\r\n }\r\n }\r\n\r\n getCalculateCapacity() {\r\n this._getParametersByType();\r\n if (\r\n this.width > 0 &&\r\n this.height > 0 &&\r\n this.lenght > 0\r\n ) {\r\n let width = this.width;\r\n let height = this.height;\r\n let lenght = this.lenght;\r\n let offsetLenght = this.offsetLenght;\r\n let offsetWidth = this.offsetWidth;\r\n let roof = this.roof;\r\n\r\n //Lower rectangle capacity to follow\r\n let capacity = width * height * lenght;\r\n //Peak internal rectangle\r\n capacity += (lenght - 2 * offsetLenght) * (width - 2 * offsetWidth) * roof;\r\n //4 corner pieces together form a pyramid\r\n capacity += (offsetWidth * 2 * offsetLenght * 2 * roof) / 3;\r\n //Each side piece as a gableroof\r\n capacity += offsetWidth * (lenght - offsetLenght * 2) * roof;\r\n //Each end piece as a gableroof\r\n capacity += (width - offsetWidth * 2) * offsetLenght * roof;\r\n\r\n this.effectiveDepth = capacity / (lenght * width);\r\n this.buCapacityPile = capacity * 0.8036;\r\n }\r\n }\r\n\r\n private _getParametersByType() {\r\n switch (this.storageType) {\r\n case 1: {\r\n this.roof = 0;\r\n break;\r\n }\r\n case 2: {\r\n this.offsetLenght = 0;\r\n this.offsetWidth = this.width / 2;\r\n this.roof = this.qAllHeight - this.height;\r\n break;\r\n }\r\n case 3: {\r\n this.offsetWidth = this.width / 2;\r\n this.offsetLenght = this.offsetWidth;\r\n this.roof = this.qAllHeight - this.height;\r\n break;\r\n }\r\n case 4: {\r\n let offset = this.roof * 12 / this.rise;\r\n if (offset + 1 < this.width / 2 || offset + 1 < this.lenght / 2) {\r\n this.offsetLenght = offset;\r\n this.offsetWidth = offset;\r\n }\r\n break;\r\n }\r\n }\r\n }\r\n}\r\n","export * from './aqs-flat-duct.model';\r\nexport * from './flat-storage-param.model';\r\n","export * from './computation-sheet';\r\nexport * from './round-storage';\r\nexport * from './aqs-commodities.model';\r\nexport * from './aqs-airflow.models';\r\nexport * from './aqs-coversheet.model';\r\nexport * from './flat-storage';\r\nexport * from './aqs-exhauster-fan.model';\r\nexport * from './aqs-saved-quote.model';\r\n","import { AqsFlushFloorTunnelDesignEnum } from './../../../enums';\r\n\r\nexport class AqsFlushFloorViewModel {\r\n id: number;\r\n tunnelChoice: AqsFlushFloorTunnelDesignEnum;\r\n aa: number;\r\n bb: number;\r\n cc: number;\r\n dd: number;\r\n ee: number;\r\n ff: number;\r\n gg: number;\r\n hh: number;\r\n ii: number;\r\n jj: number;\r\n kk: number;\r\n ll: number;\r\n supportHeight1: number;\r\n supportHeight2: number;\r\n supportHeight3: number;\r\n totalTunnelSupport1: number;\r\n totalTunnelSupport2: number;\r\n totalTunnelSupport3: number;\r\n totalTunnelSupport4: number;\r\n totalTunnelSupportSpan1: number;\r\n totalTunnelSupportSpan2: number;\r\n totalTunnelSupportSpan3: number;\r\n totalTunnelSupportSpan4: number;\r\n constructor() {\r\n this.id = 0;\r\n this.aa = null;\r\n this.bb = null;\r\n this.cc = null;\r\n this.ee = null;\r\n this.ff = null;\r\n this.gg = null;\r\n this.hh = null;\r\n this.ii = null;\r\n this.jj = null;\r\n this.kk = null;\r\n this.supportHeight1 = null;\r\n this.supportHeight2 = null;\r\n this.supportHeight3 = null;\r\n this.tunnelChoice = null;\r\n this.totalTunnelSupport1 = null;\r\n this.totalTunnelSupport2 = null;\r\n this.totalTunnelSupport3 = null;\r\n this.totalTunnelSupport4 = null;\r\n this.totalTunnelSupportSpan1 = null;\r\n this.totalTunnelSupportSpan2 = null;\r\n this.totalTunnelSupportSpan3 = null;\r\n this.totalTunnelSupportSpan4 = null;\r\n }\r\n}\r\n\r\nexport class AqsFlushFloorCalculatedValues {\r\n rad: number;\r\n lowerLarge: number;\r\n mcsv: number;\r\n msv: number;\r\n csa: number;\r\n maxSpan: number;\r\n minSpan: number = 7;\r\n maxTunnelWidth: number = 120;\r\n maxWideTunnelWidth: number = 144;\r\n crossec: ReadonlyArray = [\r\n 24, 30, 36, 40, 48, 60, 72, 78, 84, 90, 96, 102, 108, 114, 120, 126, 132, 138, 144\r\n ]\r\n\r\n supportHeights: ReadonlyArray = [7.25, 11.25];\r\n //50 DIM CROSSSEC(3,11): FOR I = 0 TO 2: FOR J = 0 TO 10: READ CROSSSEC(I, J): NEXT J, I\r\n //560 DATA -1, 24, 30, 36, 40, 48, 60, 72, 84, 96, 120\r\n //570 DATA 7.25, .9063, 1.2083, 1.5104, 1.7118, 2.1146, 2.7188, 3.3229, 3.9271, 4.5313, 5.7396\r\n //580 DATA 11.25, 1.4063, 1.8750, 2.3438, 2.6563, 3.2813, 4.2188, 5.1563, 6.0938, 7.0313, 8.9063\r\n\r\n public calcMainTunnelWidth(max: number): [number, number] {\r\n let i = 0;\r\n let j = 0;\r\n let maxIndex = this.crossec.indexOf(max);\r\n if (maxIndex == -1) return;\r\n for (i = 0; i < this.supportHeights.length; i++) {\r\n for (j = 0; j <= maxIndex; j++) {\r\n let widthCsa = this.supportHeights[i] * (this.crossec[j] - 6) / 144;\r\n if (widthCsa >= this.csa) {\r\n return [this.supportHeights[i], this.crossec[j]];\r\n }\r\n }\r\n }\r\n\r\n return [this.supportHeights[1], this.crossec[maxIndex]];\r\n }\r\n\r\n public calcSupportTunnelFan(width: number, maxTunnelWidth: number = 120): number {\r\n let item: number;\r\n for (item of this.crossec) {\r\n if (item >= width) break;\r\n }\r\n if (item > maxTunnelWidth) item = maxTunnelWidth;\r\n return item;\r\n }\r\n\r\n\r\n public checkValueByCrossSec(value: number, max: number): number {\r\n let i: number;\r\n let maxIndex = this.crossec.indexOf(max);\r\n for (i = 0; i <= maxIndex; i++) {\r\n if (value <= this.crossec[i]) break;\r\n }\r\n if (i > maxIndex) i = maxIndex;\r\n return this.crossec[i];\r\n }\r\n\r\n public calcCSVelocityFans(sHeight: number, tWidth: number, tunnelCoef: number = 1): number {\r\n let actualTWidth = tWidth - 6;\r\n return Math.round(this.lowerLarge / (sHeight * actualTWidth / 144) / (2 * tunnelCoef));\r\n }\r\n}","import { AqsSessionTypeEnum, AqsRoundStorageHopperTypeEnum, ReportFormatEnum } from './../../../enums';\r\nimport {\r\n AqsAirflowViewModel, AqsCommoditiesViewModel, AqsCoverSheetModel, AqsExhausterViewModel,\r\n AqsFlushFloorViewModel, AqsRoundStorageDuctDesignModel, IncludeFlowOption\r\n} from '@models';\r\n\r\nexport class QuoteRoundStorageViewModel {\r\n id: number;\r\n coverSheet: AqsCoverSheetModel;\r\n roundStorage: AqsRoundStorageWiewModel;\r\n commodities: AqsCommoditiesViewModel[];\r\n session: AqsSessionTypeEnum;\r\n airflowConfiguration: AqsAirflowViewModel;\r\n includeFlowOption: IncludeFlowOption;\r\n exhausterSheet: AqsExhausterViewModel;\r\n flushFloorDesign: AqsFlushFloorViewModel;\r\n userId: number;\r\n ductDesign: AqsRoundStorageDuctDesignModel;\r\n linkComputationSheetId: number;\r\n constructor() {\r\n this.id = 0;\r\n this.linkComputationSheetId = null;\r\n }\r\n}\r\n\r\nexport class QuoteRoundStorageReportModel {\r\n coverSheet: AqsCoverSheetModel;\r\n roundStorage: AqsRoundStorageWiewModel;\r\n commodities: AqsCommoditiesViewModel[];\r\n airflowConfiguration: AqsAirflowViewModel;\r\n includeFlowOption: IncludeFlowOption;\r\n exhausterSheet: AqsExhausterViewModel;\r\n flushFloorDesign: AqsFlushFloorViewModel;\r\n ductDesign: AqsRoundStorageDuctDesignModel;\r\n reportFormat: ReportFormatEnum;\r\n timeZone: string;\r\n printDate: Date;\r\n}\r\n\r\nexport class AqsRoundStorageWiewModel {\r\n id: number;\r\n diameter: number; //DIA\r\n eaveHeight: number; //HEIGHT\r\n capDiameter: number; //CAP\r\n steamwall: number; //SW\r\n ledge: number; //LEDGE\r\n roofPitch: number; //PITCH\r\n hopperPitch: number; //HOPPITCH\r\n outletDiameter: number; //OUTLET\r\n ovlHeight: number; //OHEIGHT\r\n reposeAngle: number; //REPOSE\r\n hopperType: AqsRoundStorageHopperTypeEnum; //HOPPERTYPE\r\n effDepth: number; //EFFDEPTH\r\n capacity: number; //CAPACITY\r\n\r\n constructor() {\r\n this.id = 0;\r\n this.diameter = 40;\r\n this.eaveHeight = 30;\r\n this.capDiameter = 2;\r\n this.steamwall = 0;\r\n this.ledge = 0;\r\n this.roofPitch = 30;\r\n this.hopperPitch = 0;\r\n this.outletDiameter = 0;\r\n this.calculateAndSetOvlHeight();\r\n //CINT(((TAN(PITCH * PI / 180) * (DIA / 2 - CAP / 2)) + HEIGHT) * 10)/10\r\n this.reposeAngle = 27;\r\n this.hopperType = AqsRoundStorageHopperTypeEnum.Conical;\r\n this.calculateAndSetDepthAndCapacity();\r\n }\r\n\r\n public calculateAndSetOvlHeight() {\r\n this.ovlHeight = Math.round(((Math.tan(this.roofPitch * Math.PI / 180) * (this.diameter / 2 - this.capDiameter / 2)) + this.eaveHeight) * 10) / 10;\r\n //CINT(( (TAN(PITCH * PI / 180) * (DIA / 2 - CAP / 2)) + HEIGHT) * 10)/10\r\n }\r\n\r\n public calculateAndSetRoofPich() {\r\n this.roofPitch = Math.round(Math.atan((this.ovlHeight - this.eaveHeight) / (this.diameter / 2 - this.capDiameter / 2)) * 180 / Math.PI * 10) / 10\r\n //CINT( ATN((OHEIGHT - HEIGHT) / (DIA / 2 - CAP / 2)) * 180 / PI * 10 ) / 10\r\n if (this.roofPitch < this.reposeAngle || this.reposeAngle < 0) {\r\n this.reposeAngle = this.roofPitch;\r\n }\r\n }\r\n\r\n public calculateAndSetDepthAndCapacity() {\r\n [this.effDepth, this.capacity] = this.getCalulatedDepthAndCapacity();\r\n }\r\n\r\n public getCalulatedDepthAndCapacity(): [number, number] {\r\n let effDepth: number;\r\n let capacity: number;\r\n if (this.hopperType == AqsRoundStorageHopperTypeEnum.Conical) {\r\n capacity = .6311 / 3 * Math.pow(this.diameter - this.ledge * 2, 2) * (Math.tan(this.hopperPitch * Math.PI / 180) * (this.diameter / 2 - this.ledge));\r\n //CAPACITY = (.6311 / 3 * (DIA - LEDGE * 2) ^ 2 * (TAN(HOPPITCH * PI / 180) * (DIA / 2 - LEDGE)))\r\n capacity = capacity - (.6311 / 3 * Math.pow(this.outletDiameter, 2) * (Math.tan(this.hopperPitch * Math.PI / 180) * this.outletDiameter / 2));\r\n //CAPACITY = CAPACITY - (.6311 / 3 * OUTLET ^ 2 * (TAN(HOPPITCH * PI / 180) * OUTLET / 2))\r\n\r\n effDepth = Math.tan(this.hopperPitch * Math.PI / 180) * (this.diameter / 2 - this.ledge - this.outletDiameter / 2);\r\n //EFFDEPTH = (TAN(HOPPITCH * PI / 180)) * (DIA / 2 - LEDGE - OUTLET / 2)\r\n effDepth = effDepth * ((this.outletDiameter / this.diameter) + ((this.diameter - 2 * this.ledge - this.outletDiameter) / (this.diameter * 3)));\r\n //EFFDEPTH = EFFDEPTH * ((OUTLET / DIA) + ((DIA - 2 * LEDGE - OUTLET) / (3 * DIA)))\r\n }\r\n else {\r\n capacity = .6311 / 2 * Math.pow(this.diameter - this.ledge * 2, 2) * (Math.tan(this.hopperPitch * Math.PI / 180) * (this.diameter - this.ledge * 2));\r\n // CAPACITY = (.6311 / 2 * (DIA - LEDGE * 2) ^ 2 * (TAN(HOPPITCH * PI / 180) * (DIA - LEDGE * 2)))\r\n capacity = capacity - (.6311 / 2 * Math.pow(this.outletDiameter, 2) * (Math.tan(this.hopperPitch * Math.PI / 180) * this.outletDiameter));\r\n //CAPACITY = CAPACITY - (.6311 / 2 * OUTLET ^ 2 * (TAN(HOPPITCH * PI / 180) * OUTLET))\r\n\r\n effDepth = Math.tan(this.hopperPitch * Math.PI / 180) * (this.diameter - 2 * this.ledge - this.outletDiameter);\r\n //EFFDEPTH = (TAN(HOPPITCH * PI / 180)) * (DIA - 2 * LEDGE - OUTLET)\r\n effDepth = effDepth * (this.outletDiameter / this.diameter + ((this.diameter - 2 * this.ledge - this.outletDiameter) / (this.diameter * 2)));\r\n //EFFDEPTH = EFFDEPTH * ((OUTLET / DIA) + ((DIA - 2 * LEDGE - OUTLET) / (2 * DIA)))\r\n }\r\n capacity = capacity + .6311 * Math.pow(this.diameter, 2) * this.eaveHeight + (.6311 / 3 * Math.pow(this.diameter, 2) * (Math.tan(this.reposeAngle * Math.PI / 180) * this.diameter / 2)) - ((Math.tan(this.reposeAngle * Math.PI / 180) * this.capDiameter / 2) * .6311 / 3 * Math.pow(this.capDiameter, 2));\r\n //CAPACITY = CAPACITY + (.6311 * DIA ^ 2 * HEIGHT) + (.6311 / 3 * DIA ^ 2 * (TAN(REPOSE * PI / 180) * DIA / 2)) - ((TAN(REPOSE * PI / 180) * CAP / 2) * .6311 / 3 * CAP ^ 2)\r\n capacity = capacity + (.6311 * Math.pow(this.diameter, 2) * this.steamwall);\r\n //CAPACITY = (.6311 * DIA ^ 2 * SW) + CAPACITY\r\n let ghght = Math.tan(this.reposeAngle * Math.PI / 180) * this.diameter / 2;\r\n //GHGHT =TAN(REPOSE * PI / 180) * (DIA / 2)\r\n let ohght = Math.tan(this.roofPitch * Math.PI / 180) * (this.diameter - this.capDiameter) / 2;\r\n // OHGHT = TAN(PITCH * PI / 180) * ((DIA - CAP) / 2)\r\n let gcap = ghght > ohght ? (1 / Math.tan(this.reposeAngle * Math.PI / 180)) * (ghght - ohght) * 2 : 0;\r\n //IF GHGHT > OHGHT THEN GCAP = (1 / TAN(REPOSE * PI / 180)) * (GHGHT - OHGHT) * 2 ELSE GCAP = 0\r\n if (gcap > this.capDiameter) gcap = this.capDiameter;\r\n //IF GCAP > CAP THEN GCAP = CAP\r\n if (gcap != 0) capacity = capacity - (.6311 / 3 * Math.pow(gcap, 2) * (Math.tan(this.reposeAngle * Math.PI) * gcap / 2));\r\n // IF GCAP <> 0 THEN CAPACITY = CAPACITY - (.6311 / 3 * GCAP ^ 2 * (TAN(REPOSE * PI / 180) * GCAP / 2))\r\n effDepth = effDepth + this.eaveHeight + this.steamwall;\r\n // EFFDEPTH = EFFDEPTH + HEIGHT + SW\r\n effDepth = effDepth + (((this.diameter - gcap) / (this.diameter * 3)) + (gcap / this.diameter)) * (Math.tan(this.reposeAngle * Math.PI / 180) * ((this.diameter - gcap) / 2));\r\n // EFFDEPTH = EFFDEPTH + (((DIA - GCAP) / (3 * DIA)) + (GCAP / DIA)) * (TAN(REPOSE * PI / 180) * ((DIA - GCAP) / 2))\r\n effDepth = Math.round(effDepth * 10) / 10;\r\n // EFFDEPTH = INT(EFFDEPTH * 10 + .5) / 10\r\n capacity = Math.round(capacity * 10) / 10;\r\n // CAPACITY = INT(CAPACITY * 10 + .5) / 10\r\n if (isNaN(effDepth)) effDepth = 0;\r\n if (isNaN(capacity)) capacity = 0;\r\n return [effDepth, capacity];\r\n }\r\n}\r\n","export * from './aqs-round.models';\r\nexport * from './aqs-flush-floor-design.model';","import { TreeNode } from 'primeng';\r\nimport { BinTypeEnum, SensorStatusEnum, SwitchTypeEnum } from \"../enums\";\r\nimport { AlarmViewModel, TemperatureRangeViewModel } from './temperature-range.model';\r\nimport { CableViewModel, CableSchemeViewModel, CableGetModel, AddEditCableSchemePostModel } from './cable.model';\r\nimport { KtxNotificationFilterNodeTypeEnum } from '../enums/ktx-notification-filter-type.enum';\r\nimport { NotificationFilterTreeNodeData } from './notifications.model';\r\nimport { CommonFunctions } from '../../common';\r\n\r\nexport class BinSchemeViewModel {\r\n public alarm: AlarmViewModel;\r\n public locationId: number;\r\n public id: number;\r\n public connectionId: number;\r\n public name: string;\r\n public binWithinUnitName: number;\r\n public binType: BinTypeEnum;\r\n public displaySchemes: boolean;\r\n public height: number;\r\n public width: number;\r\n public depth: number;\r\n public zIndex: number;\r\n public xPosition: number;\r\n public yPosition: number;\r\n public switchType: SwitchTypeEnum;\r\n public cables: CableSchemeViewModel[];\r\n public temperatureRanges: TemperatureRangeViewModel[];\r\n public wasDeviceInitialized: boolean;\r\n public isDeviceInitialized: boolean;\r\n public bins: BinSchemeViewModel[];\r\n public isDecorBin: boolean;\r\n public binColor: string;\r\n public averageBinTemperature: number;\r\n public cablesAverageAlarm: SensorStatusEnum;\r\n}\r\n\r\nexport class BinSchemeGetModel {\r\n public alarm: AlarmViewModel;\r\n public locationId: number;\r\n public id: number;\r\n public name: string;\r\n public binType: BinTypeEnum;\r\n public displaySchemes: boolean;\r\n public height: number;\r\n public width: number;\r\n public depth: number;\r\n public zIndex: number;\r\n public xPosition: number;\r\n public yPosition: number;\r\n public cables: CableSchemeViewModel[];\r\n public temperatureRanges: TemperatureRangeViewModel[];\r\n public wasDeviceInitialized: boolean;\r\n public isDeviceInitialized: boolean;\r\n\r\n public static toViewMode(getModel: BinSchemeGetModel): BinSchemeViewModel {\r\n const viewModel = new BinSchemeViewModel();\r\n viewModel.alarm = getModel.alarm;\r\n viewModel.binType = getModel.binType;\r\n viewModel.cables = getModel.cables;\r\n viewModel.name = getModel.name;\r\n viewModel.locationId = getModel.locationId;\r\n viewModel.id = getModel.id;\r\n viewModel.zIndex = getModel.zIndex;\r\n viewModel.height = getModel.height;\r\n viewModel.width = getModel.width;\r\n viewModel.depth = getModel.depth;\r\n viewModel.displaySchemes = getModel.displaySchemes;\r\n viewModel.xPosition = getModel.xPosition;\r\n viewModel.yPosition = getModel.yPosition\r\n viewModel.temperatureRanges = getModel.temperatureRanges;\r\n viewModel.wasDeviceInitialized = getModel.wasDeviceInitialized;\r\n viewModel.isDeviceInitialized = getModel.isDeviceInitialized;\r\n return viewModel;\r\n }\r\n}\r\n\r\nexport class BinViewModel {\r\n public locationId: number;\r\n public id: number;\r\n public name: string;\r\n public binWithinUnitName: number;\r\n public binType: BinTypeEnum;\r\n public displaySchemes: boolean;\r\n public height: number;\r\n public width: number;\r\n public depth: number;\r\n public zIndex: number;\r\n public xPosition: number;\r\n public yPosition: number;\r\n public wasDeviceInitialized: boolean;\r\n public isDeviceInitialized: boolean;\r\n public multiplexerId: number;\r\n public sysId: number;\r\n public ipAddress: string;\r\n public port: number;\r\n public portRemote: number;\r\n public switchType: SwitchTypeEnum;\r\n public cables: CableViewModel[];\r\n public bins: BinViewModel[];\r\n public isDecorBin: boolean;\r\n public averageBinTemperature: number;\r\n public cablesAverageAlarm: SensorStatusEnum;\r\n public binColor: string;\r\n\r\n public static toSchemeViewModel(viewModel: BinViewModel): BinSchemeViewModel {\r\n const schemeViewModel = new BinSchemeViewModel();\r\n\r\n schemeViewModel.locationId = viewModel.locationId;\r\n schemeViewModel.id = viewModel.id;\r\n schemeViewModel.name = viewModel.name;\r\n schemeViewModel.binWithinUnitName = viewModel.binWithinUnitName;\r\n schemeViewModel.binType = viewModel.binType;\r\n schemeViewModel.displaySchemes = viewModel.displaySchemes;\r\n schemeViewModel.height = viewModel.height;\r\n schemeViewModel.width = viewModel.width;\r\n schemeViewModel.depth = viewModel.depth;\r\n schemeViewModel.zIndex = viewModel.zIndex;\r\n schemeViewModel.xPosition = viewModel.xPosition;\r\n schemeViewModel.yPosition = viewModel.yPosition;\r\n schemeViewModel.wasDeviceInitialized = viewModel.wasDeviceInitialized;\r\n schemeViewModel.isDeviceInitialized = viewModel.isDeviceInitialized;\r\n schemeViewModel.switchType = viewModel.switchType;\r\n schemeViewModel.isDecorBin = viewModel.isDecorBin;\r\n schemeViewModel.binColor = viewModel.binColor;\r\n schemeViewModel.averageBinTemperature = viewModel.averageBinTemperature;\r\n schemeViewModel.cablesAverageAlarm = viewModel.cablesAverageAlarm;\r\n\r\n if (viewModel.cables) {\r\n schemeViewModel.cables = viewModel.cables.map(s => CableViewModel.toSchemeViewModel(s));\r\n }\r\n\r\n if (viewModel.bins) {\r\n schemeViewModel.bins = viewModel.bins.map(s => BinViewModel.toSchemeViewModel(s));\r\n }\r\n\r\n return schemeViewModel;\r\n }\r\n}\r\n\r\nexport class BinGetModel {\r\n public locationId: number;\r\n public id: number;\r\n public name: string;\r\n public binWithinUnitName: number;\r\n public binType: BinTypeEnum;\r\n public displaySchemes: boolean;\r\n public height: number;\r\n public width: number;\r\n public depth: number;\r\n public zIndex: number;\r\n public xPosition: number;\r\n public yPosition: number;\r\n public wasDeviceInitialized: boolean;\r\n public isDeviceInitialized: boolean;\r\n public multiplexerId: number;\r\n public sysId: number;\r\n public ipAddress: string;\r\n public port: number;\r\n public remotePort: number;\r\n public switchType: SwitchTypeEnum;\r\n public cables: CableGetModel[];\r\n public bins: BinGetModel[];\r\n public isDecorBin: boolean;\r\n\r\n public static toViewModel(getModel: BinGetModel) {\r\n const viewModel = new BinViewModel();\r\n\r\n viewModel.locationId = getModel.locationId;\r\n viewModel.id = getModel.id;\r\n viewModel.name = getModel.name;\r\n viewModel.binWithinUnitName = getModel.binWithinUnitName;\r\n viewModel.binType = getModel.binType;\r\n viewModel.displaySchemes = getModel.displaySchemes;\r\n viewModel.height = getModel.height;\r\n viewModel.width = getModel.width;\r\n viewModel.depth = getModel.depth;\r\n viewModel.zIndex = getModel.zIndex;\r\n viewModel.xPosition = getModel.xPosition;\r\n viewModel.yPosition = getModel.yPosition;\r\n viewModel.wasDeviceInitialized = getModel.wasDeviceInitialized;\r\n viewModel.isDeviceInitialized = getModel.isDeviceInitialized;\r\n viewModel.multiplexerId = getModel.multiplexerId;\r\n viewModel.sysId = getModel.sysId;\r\n viewModel.ipAddress = getModel.ipAddress;\r\n viewModel.port = getModel.port;\r\n viewModel.portRemote = getModel.remotePort;\r\n viewModel.switchType = getModel.switchType;\r\n viewModel.isDecorBin = getModel.isDecorBin;\r\n\r\n if (getModel.cables) {\r\n viewModel.cables = getModel.cables.map(c => CableGetModel.toViewModel(c));\r\n }\r\n\r\n if (getModel.bins) {\r\n viewModel.bins = getModel.bins.map(b => BinGetModel.toViewModel(b));\r\n }\r\n\r\n return viewModel;\r\n }\r\n}\r\n\r\nexport class AddEditBinSchemePostModel {\r\n public name: string;\r\n public binType: BinTypeEnum;\r\n public height: number;\r\n public width: number;\r\n public depth: number;\r\n public zIndex: number;\r\n public xPosition: number;\r\n public yPosition: number;\r\n public ipAddress: string;\r\n public port: number;\r\n public portRemote: number;\r\n public switchType: SwitchTypeEnum;\r\n public sysId: number;\r\n public cables: AddEditCableSchemePostModel[];\r\n public bins: AddEditBinSchemePostModel[];\r\n public isDecorBin: boolean;\r\n\r\n constructor(viewModel: BinViewModel) {\r\n this.name = viewModel.name;\r\n this.binType = viewModel.binType;\r\n this.height = viewModel.height;\r\n this.width = viewModel.width;\r\n this.depth = viewModel.depth;\r\n this.zIndex = viewModel.zIndex;\r\n this.ipAddress = viewModel.ipAddress;\r\n this.port = +viewModel.port;\r\n this.portRemote = +viewModel.portRemote;\r\n this.switchType = viewModel.switchType;\r\n this.yPosition = viewModel.yPosition;\r\n this.xPosition = viewModel.xPosition;\r\n this.zIndex = viewModel.zIndex;\r\n this.sysId = viewModel.sysId;\r\n this.isDecorBin = viewModel.isDecorBin;\r\n\r\n if (viewModel.bins) {\r\n this.bins = viewModel.bins.map(b => new AddEditBinSchemePostModel(b));\r\n }\r\n\r\n if (viewModel.cables) {\r\n this.cables = viewModel.cables.map(c => new AddEditCableSchemePostModel(c));\r\n }\r\n }\r\n}\r\n\r\nexport class BinConnectionPostModel {\r\n public sysId: number;\r\n public binIds: number[];\r\n public ipAddress: string;\r\n public port: number;\r\n public portRemote: number;\r\n}\r\n\r\nexport class BinConnectionViewModel extends BinConnectionPostModel {\r\n public binListLabels: string;\r\n public withRemotePort: boolean;\r\n}\r\n\r\nexport class EditBinConnectionPostModel {\r\n locationId: number;\r\n binConnections: BinConnectionPostModel[];\r\n constructor(locationId: number, binConnection: BinConnectionViewModel[]) {\r\n this.locationId = locationId;\r\n this.binConnections = binConnection;\r\n }\r\n}\r\n\r\nexport class BinNameViewModel {\r\n id: number;\r\n name: string;\r\n bins: BinNameViewModel[];\r\n\r\n static toKtxTreeNode(bin: BinNameViewModel, locationId: number): TreeNode {\r\n const hasBins = !!bin.bins;\r\n const data: NotificationFilterTreeNodeData = {\r\n id: bin.id,\r\n nodeType: hasBins ? KtxNotificationFilterNodeTypeEnum.Unit : KtxNotificationFilterNodeTypeEnum.Bin,\r\n locationId: locationId,\r\n };\r\n\r\n const binNodes: TreeNode = {\r\n label: bin.name,\r\n data,\r\n selectable: true,\r\n key: data.nodeType + '_' + bin.id,\r\n children: hasBins && bin.bins\r\n .map(x => BinNameViewModel.toKtxTreeNode(x, locationId))\r\n .sort(CommonFunctions.compareTreeNodeLabels)\r\n };\r\n\r\n return binNodes;\r\n }\r\n}\r\n\r\nexport class BinNameGetModel {\r\n id: number;\r\n name: string;\r\n bins: BinNameGetModel[];\r\n\r\n public static toViewModel(getModel: BinNameGetModel): BinNameViewModel {\r\n const viewModel = new BinNameViewModel();\r\n\r\n viewModel.id = getModel.id;\r\n viewModel.name = getModel.name;\r\n\r\n if (getModel.bins) {\r\n viewModel.bins = getModel.bins.map(BinNameGetModel.toViewModel);\r\n }\r\n\r\n return viewModel;\r\n }\r\n}\r\n","import { CalendarDefaultValues } from '../constants';\r\nimport { BtxEventTypeEnum } from '../enums';\r\n\r\nexport class BtxEventViewModel {\r\n public eventId: number;\r\n public title: string;\r\n public body: string;\r\n public firstNotificationTimeStamp: number;\r\n public lastNotificationTimeStamp: number;\r\n public btxAlertType: BtxEventTypeEnum;\r\n public locationId: number;\r\n public equipmentId: number;\r\n public equipmentName: string;\r\n}\r\n\r\nexport class BtxEventGetModel {\r\n public eventId: number;\r\n public title: string;\r\n public body: string;\r\n public firstNotificationTimeStamp: number;\r\n public lastNotificationTimeStamp: number;\r\n public isAlarm: boolean;\r\n public locationId: number;\r\n public btxOptions: BtxOptions;\r\n\r\n public static toViewModel(getModel: BtxEventGetModel): BtxEventViewModel {\r\n const viewModel = new BtxEventViewModel();\r\n viewModel.eventId = getModel.eventId;\r\n viewModel.title = getModel.title;\r\n viewModel.body = getModel.body;\r\n viewModel.firstNotificationTimeStamp =\r\n getModel.firstNotificationTimeStamp *\r\n CalendarDefaultValues.defaultOneSecondMilliseconds;\r\n viewModel.lastNotificationTimeStamp =\r\n getModel.lastNotificationTimeStamp *\r\n CalendarDefaultValues.defaultOneSecondMilliseconds;\r\n viewModel.btxAlertType = getModel.isAlarm ? BtxEventTypeEnum.Alarm : BtxEventTypeEnum.Warning;\r\n viewModel.locationId = getModel.locationId;\r\n if (getModel.btxOptions) {\r\n viewModel.equipmentId = getModel.btxOptions.equipmentId;\r\n viewModel.equipmentName = getModel.btxOptions.equipmentName;\r\n }\r\n return viewModel;\r\n }\r\n}\r\n\r\nexport class BtxOptions {\r\n public equipmentId: number;\r\n public equipmentName: string;\r\n}\r\n\r\nexport class BtxEventsRequestModel {\r\n public events: Array;\r\n public totalCount: number;\r\n public itemsPerPage: number;\r\n}\r\n\r\nexport class BtxEventByPeriodPostModel {\r\n public locationIds: Array;\r\n public equipmentIds: Array;\r\n public dateTimeFrom: number;\r\n public dateTimeTo: number;\r\n public currentPage: number;\r\n public eventTypes: Array;\r\n public isWeb: boolean = true;\r\n\r\n public get countSelectedFilter() {\r\n let count = 0;\r\n count += this.eventTypes.length;\r\n count += this.locationIds.length;\r\n count += this.equipmentIds.length;\r\n return count;\r\n }\r\n\r\n constructor(public eventsPerPage: number) {\r\n this.locationIds = [];\r\n this.equipmentIds = [];\r\n this.eventTypes = [];\r\n this.currentPage = 1;\r\n }\r\n}\r\n","export class BtxReportLiveDataFilter {\r\n public equipmentIds: number[];\r\n public timeZone: string;\r\n}\r\n\r\nexport class BtxHistoricalDataReportFilterRequest {\r\n equipmentId: number;\r\n sensorIds: number[];\r\n timeStampFrom: number;\r\n timeStampTo: number;\r\n timeZone: string;\r\n}","import { SensorKtxSchemeViewModel, SensorKtxGetModel, SensorKtxViewModel } from './sensors';\r\n\r\nexport class CableSchemeViewModel {\r\n public id: number;\r\n public connectionId: number;\r\n public firstThermocoupleId: number;\r\n public thermocoupleCount: number;\r\n public length: number;\r\n public angle: number;\r\n public radius: number;\r\n public xPosition: number;\r\n public yPosition: number;\r\n public name: number;\r\n public multiplexerId: number;\r\n public sensors: SensorKtxSchemeViewModel[];\r\n}\r\n\r\nexport class CableLocationSchemeViewModel {\r\n public binName: string;\r\n public cableName: string;\r\n public sensors: SensorKtxSchemeViewModel[];\r\n}\r\n\r\nexport class CableViewModel {\r\n public id: number;\r\n public connectionId: number;\r\n public firstThermocoupleId: number;\r\n public thermocoupleCount: number;\r\n public length: number;\r\n public angle: number;\r\n public radius: number;\r\n public xPosition: number;\r\n public yPosition: number;\r\n public name: number;\r\n public multiplexerId: number;\r\n public sensors: SensorKtxViewModel[];\r\n\r\n public static toSchemeViewModel(viewModel: CableViewModel): CableSchemeViewModel {\r\n const schemeViewModel = new CableSchemeViewModel();\r\n\r\n schemeViewModel.id = viewModel.id;\r\n schemeViewModel.connectionId = viewModel.connectionId;\r\n schemeViewModel.firstThermocoupleId = viewModel.firstThermocoupleId;\r\n schemeViewModel.thermocoupleCount = viewModel.thermocoupleCount;\r\n schemeViewModel.length = viewModel.length;\r\n schemeViewModel.angle = viewModel.angle;\r\n schemeViewModel.radius = viewModel.radius;\r\n schemeViewModel.xPosition = viewModel.xPosition;\r\n schemeViewModel.yPosition = viewModel.yPosition;\r\n schemeViewModel.name = viewModel.name;\r\n schemeViewModel.multiplexerId = viewModel.multiplexerId;\r\n\r\n if (viewModel.sensors) {\r\n schemeViewModel.sensors = viewModel.sensors.map(s => SensorKtxViewModel.toSchemeViewModel(s));\r\n }\r\n\r\n return schemeViewModel;\r\n }\r\n}\r\n\r\nexport class CableGetModel {\r\n public id: number;\r\n public connectionId: number;\r\n public firstThermocoupleId: number;\r\n public thermocoupleCount: number;\r\n public length: number;\r\n public angle: number;\r\n public radius: number;\r\n public xPosition: number;\r\n public yPosition: number;\r\n public name: number;\r\n public multiplexerId: number\r\n public sensors: SensorKtxGetModel[];\r\n\r\n public static toViewModel(getModel: CableGetModel) {\r\n const viewModel = new CableViewModel();\r\n\r\n viewModel.id = getModel.id;\r\n viewModel.connectionId = getModel.connectionId;\r\n viewModel.firstThermocoupleId = getModel.firstThermocoupleId;\r\n viewModel.thermocoupleCount = getModel.thermocoupleCount;\r\n viewModel.length = getModel.length;\r\n viewModel.angle = getModel.angle;\r\n viewModel.radius = getModel.radius;\r\n viewModel.xPosition = getModel.xPosition;\r\n viewModel.yPosition = getModel.yPosition;\r\n viewModel.name = getModel.name;\r\n viewModel.multiplexerId = getModel.multiplexerId;\r\n\r\n if (getModel.sensors) {\r\n viewModel.sensors = getModel.sensors.map(s => SensorKtxGetModel.toViewModel(s));\r\n }\r\n\r\n return viewModel;\r\n }\r\n}\r\n\r\nexport class AddEditCableSchemePostModel {\r\n public connectionId: number;\r\n public firstThermocoupleId: number;\r\n public thermocoupleCount: number;\r\n public length: number;\r\n public angle: number;\r\n public radius: number;\r\n public xPosition: number;\r\n public yPosition: number;\r\n public name: number;\r\n public multiplexerId: number;\r\n\r\n constructor(viewModel: CableViewModel) {\r\n this.connectionId = viewModel.connectionId;\r\n this.firstThermocoupleId = viewModel.firstThermocoupleId;\r\n this.thermocoupleCount = viewModel.thermocoupleCount;\r\n this.length = viewModel.length;\r\n this.angle = viewModel.angle;\r\n this.radius = viewModel.radius;\r\n this.xPosition = viewModel.xPosition;\r\n this.yPosition = viewModel.yPosition;\r\n this.name = viewModel.name;\r\n this.multiplexerId = viewModel.multiplexerId;\r\n }\r\n}","export class NameViewModel {\r\n id: number;\r\n name: string;\r\n}\r\n\r\n\r\n","import { TreeNode } from 'primeng';\r\nimport { LocationNameGetModel, LocationNameViewModel } from './locations/location.model';\r\nimport { KtxNotificationFilterNodeTypeEnum } from '../enums/ktx-notification-filter-type.enum';\r\nimport { NotificationFilterTreeNodeData } from './notifications.model';\r\nimport { BtxNotificationFilterNodeTypeEnum } from '../enums';\r\nimport { CommonFunctions } from '../../common';\r\n\r\nexport class CompanyViewModel {\r\n id: number;\r\n name: string;\r\n locations: LocationNameViewModel[];\r\n\r\n //User behavior lock fields\r\n public isSomeoneUpdateCompany: boolean;\r\n\r\n static toKtxTreeNode(company: CompanyViewModel): TreeNode {\r\n const data: NotificationFilterTreeNodeData = {\r\n id: company.id,\r\n nodeType: KtxNotificationFilterNodeTypeEnum.Company,\r\n locationId: null,\r\n };\r\n\r\n const companyWithLocationNodes: TreeNode = {\r\n label: company.name,\r\n data,\r\n selectable: true,\r\n key: data.nodeType + '_' + company.id,\r\n children: company.locations && company.locations\r\n .map(LocationNameViewModel.toKtxTreeNode)\r\n .filter(l => l.children && l.children.length > 0)\r\n .sort(CommonFunctions.compareTreeNodeLabels)\r\n };\r\n\r\n return companyWithLocationNodes;\r\n }\r\n\r\n static toBtxTreeNode(company: CompanyViewModel): TreeNode {\r\n const data: NotificationFilterTreeNodeData = {\r\n id: company.id,\r\n nodeType: BtxNotificationFilterNodeTypeEnum.Company,\r\n locationId: null,\r\n };\r\n\r\n const companyWithLocationNodes: TreeNode = {\r\n label: company.name,\r\n data,\r\n selectable: true,\r\n children: company.locations && company.locations\r\n .filter(l => l.equipments && l.equipments.length > 0)\r\n .map(LocationNameViewModel.toBtxTreeNode)\r\n .sort((a, b) => a.label.localeCompare(b.label)),\r\n };\r\n\r\n return companyWithLocationNodes;\r\n }\r\n}\r\n\r\nexport class CompanyGetModel {\r\n id: number;\r\n name: string;\r\n locations: LocationNameGetModel[];\r\n\r\n public static toViewModel(getModel: CompanyGetModel): CompanyViewModel {\r\n const viewModel = new CompanyViewModel();\r\n\r\n viewModel.id = getModel.id;\r\n viewModel.name = getModel.name;\r\n\r\n if (getModel.locations) {\r\n viewModel.locations = getModel.locations.map(LocationNameGetModel.toViewModel);\r\n }\r\n\r\n return viewModel;\r\n }\r\n}\r\n\r\nexport class CompanyPostModel {\r\n id: number;\r\n name: string;\r\n}\r\n","export class CompanyAdminViewModel {\r\n public id: number;\r\n public firstName: string;\r\n public lastName: string;\r\n public companyId: number;\r\n public companyName: string;\r\n public email: string;\r\n public lastLoginDate: Date;\r\n\r\n //User behavior lock fields\r\n public isSomeoneUpdateCompanyAdmin: boolean;\r\n}\r\n\r\nexport class CompanyAdminInviteModel {\r\n email: string;\r\n companyId?: number;\r\n}\r\n\r\nexport class CompanyAdminPostModel {\r\n id: number;\r\n firstName: string;\r\n lastName: string;\r\n companyId?: number;\r\n companyName?: string;\r\n}\r\n\r\nexport class CompanyAdminGetModel {\r\n id: number;\r\n firstName: string;\r\n lastName: string;\r\n companyId: number;\r\n companyName: string;\r\n email: string;\r\n lastLoginDate: Date;\r\n\r\n public static toViewModel(getModel: CompanyAdminGetModel): CompanyAdminViewModel {\r\n const viewModel = new CompanyAdminViewModel();\r\n viewModel.id = getModel.id;\r\n viewModel.firstName = getModel.firstName;\r\n viewModel.lastName = getModel.lastName;\r\n viewModel.companyId = getModel.companyId;\r\n viewModel.companyName = getModel.companyName;\r\n viewModel.email = getModel.email;\r\n viewModel.lastLoginDate = getModel.lastLoginDate;\r\n\r\n return viewModel;\r\n }\r\n}","import { UserStatusEnum } from \"../enums\";\r\n\r\nexport class CompanyUserViewModel {\r\n public id: number;\r\n public firstName: string;\r\n public lastName: string;\r\n public arduinoLocations: Array;\r\n public arduinoLocationNames: string[];\r\n public raspberryLocations: Array;\r\n public raspberryLocationNames: string[];\r\n public itxLocations: Array;\r\n public itxLocationsNames: string[];\r\n public email: string;\r\n public status: UserStatusEnum;\r\n public lastLoginDate: Date;\r\n\r\n //User behavior lock fields\r\n public isSomeoneUpdateCompanyUser: boolean;\r\n}\r\n\r\nexport class UserLocation {\r\n id: number;\r\n name: string;\r\n}\r\n\r\nexport class CompanyUserInviteModel {\r\n email: string;\r\n ktxLocationIds: Array;\r\n btxLocationIds: Array;\r\n itxLocationIds: Array;\r\n\r\n}\r\n\r\nexport class CompanyUserPostModel {\r\n id: number;\r\n firstName: string;\r\n lastName: string;\r\n ktxLocationIds: Array;\r\n btxLocationIds: Array;\r\n itxLocationIds: Array;\r\n status: UserStatusEnum;\r\n}\r\n\r\n\r\nexport class CompanyUserGetModel {\r\n id: number;\r\n firstName: string;\r\n lastName: string;\r\n arduinoLocations: Array;\r\n raspberryLocations: Array;\r\n itxLocations: Array;\r\n email: string;\r\n status: UserStatusEnum;\r\n lastLoginDate: Date;\r\n\r\n public static toViewModel(getModel: CompanyUserGetModel): CompanyUserViewModel {\r\n const viewModel = new CompanyUserViewModel();\r\n viewModel.id = getModel.id;\r\n viewModel.firstName = getModel.firstName;\r\n viewModel.lastName = getModel.lastName;\r\n viewModel.arduinoLocations = getModel.arduinoLocations;\r\n viewModel.raspberryLocations = getModel.raspberryLocations;\r\n viewModel.itxLocations= getModel.itxLocations;\r\n viewModel.email = getModel.email;\r\n viewModel.status = getModel.status;\r\n viewModel.lastLoginDate = getModel.lastLoginDate;\r\n\r\n viewModel.arduinoLocationNames = viewModel.arduinoLocations.map(l => l.name);\r\n viewModel.raspberryLocationNames = viewModel.raspberryLocations.map(l => l.name);\r\n viewModel.itxLocationsNames=viewModel.itxLocations.map(l=>l.name);\r\n\r\n return viewModel;\r\n }\r\n}","export class DeviceFileLogInfoViewModel {\r\n fullFileName: string;\r\n fileName: string;\r\n fileNameWithoutDeviceId: string;\r\n createdDate: Date;\r\n lastModifiedDate: Date;\r\n size: number;\r\n sizeLabel: string;\r\n}\r\n\r\nexport class DeviceLogInfoViewModel {\r\n isTwinHasLogLink: boolean;\r\n deviceFileLogInfo: DeviceFileLogInfoViewModel[];\r\n}","import { BtxEventTypeEnum, EmailServiceScheduleEnum, ItxEventTypeEnum, KtxEventTypeEnum } from \"../enums\";\r\nimport { UserLocation } from \"./company-users.model\";\r\n\r\nexport class EmailServiceViewModel {\r\n public id: number;\r\n public emails: Array;\r\n public btxLocations: Array;\r\n public btxLocationNames: string[];\r\n public ktxLocations: Array;\r\n public ktxLocationNames: string[];\r\n public itxLocations: Array;\r\n public itxLocationNames: string[];\r\n\r\n public scheduleType: EmailServiceScheduleEnum;\r\n public scheduleTime: number;\r\n public btxEventTypes: Array\r\n public ktxEventTypes: Array\r\n public itxEventTypes: Array\r\n public companyId: number;\r\n}\r\n\r\n\r\n\r\nexport class EmailServiceGetModel {\r\n public id: number;\r\n public emails: string;\r\n public btxLocations: Array;\r\n public ktxLocations: Array;\r\n public itxLocations: Array;\r\n public scheduleType: EmailServiceScheduleEnum;\r\n public scheduleTime: number;\r\n public btxEventTypes: Array;\r\n public ktxEventTypes: Array;\r\n public itxEventTypes: Array;\r\n public companyId: number;\r\n\r\n public static toViewModel(getModel: EmailServiceGetModel): EmailServiceViewModel {\r\n const viewModel = new EmailServiceViewModel();\r\n viewModel.id = getModel.id;\r\n viewModel.btxLocations = getModel.btxLocations;\r\n viewModel.ktxLocations = getModel.ktxLocations;\r\n viewModel.itxLocations = getModel.itxLocations;\r\n viewModel.emails = JSON.parse(getModel.emails);\r\n viewModel.companyId = getModel.companyId;\r\n viewModel.scheduleTime = getModel.scheduleTime;\r\n viewModel.scheduleType = getModel.scheduleType;\r\n viewModel.btxEventTypes = getModel.btxEventTypes;\r\n viewModel.ktxEventTypes = getModel.ktxEventTypes;\r\n viewModel.itxEventTypes = getModel.itxEventTypes;\r\n\r\n viewModel.btxLocationNames = viewModel.btxLocations.map(l => l.name);\r\n viewModel.ktxLocationNames = viewModel.ktxLocations.map(l => l.name);\r\n viewModel.itxLocationNames = viewModel.itxLocations.map(l => l.name);\r\n\r\n return viewModel;\r\n }\r\n}\r\n\r\nexport class EmailServicePostModel {\r\n public id: number;\r\n public emails: string;\r\n public btxLocations: Array;\r\n public ktxLocations: Array;\r\n public itxLocations: Array;\r\n public scheduleType: EmailServiceScheduleEnum;\r\n public scheduleTime: number;\r\n public btxEventTypes: Array;\r\n public ktxEventTypes: Array;\r\n public itxEventTypes: Array;\r\n public companyId: number;\r\n public timeZone: string;\r\n}\r\n","import { TreeNode } from \"primeng\";\r\nimport { EquipmentTypeEnum, EquipmentSubTypeEnum, BtxNotificationFilterNodeTypeEnum, AcquisitionRateEnum } from \"../enums\";\r\nimport { ModelsTypes, equipmentSubTypeLabels, equipmentTypeLabels } from '../constants';\r\nimport { BtxSensorWithTelemetryGetModel, BtxSensorWithTelemetryViewModel, SensorGetModel, SensorPostModel, SensorSchemaViewModel, SensorViewModel } from \"./sensors\";\r\nimport { NotificationFilterTreeNodeData } from \"./notifications.model\";\r\nimport { NameViewModel } from './common.model';\r\nimport { BtxLocationEquipmentConfiguration } from \"./locations\";\r\n\r\nexport class EquipmentViewModel {\r\n constructor() {\r\n this.id = 0;\r\n this.sensors = [];\r\n }\r\n\r\n id: number;\r\n type: EquipmentTypeEnum;\r\n subType: EquipmentSubTypeEnum;\r\n name: string;\r\n totalRunHoursFirstRegisterAddress: number;\r\n totalRunHoursSecondRegisterAddress: number;\r\n timeTillMaintenanceAddress: number;\r\n shutDownAlarmAddress: number;\r\n shutDownAlarmAddressBit: number;\r\n maintenanceRequiredWarningAddress: number;\r\n maintenanceRequiredWarningAddressBit: number;\r\n sensors: SensorViewModel[];\r\n maintenanceCountDownValue: number;\r\n totalRunHoursValue: number;\r\n isMaintenanceRequired: boolean;\r\n maintenaceCountDown: number;\r\n timestamp: number;\r\n shutdownAlarm:boolean;\r\n\r\n //Infrastructure fields\r\n modelType = ModelsTypes.equipmentViewModel;\r\n\r\n public static toViewModel(equipment: BtxLocationEquipmentConfiguration): EquipmentViewModel {\r\n const viewModel = new EquipmentViewModel;\r\n viewModel.id = equipment.index;\r\n viewModel.type = equipment.type;\r\n viewModel.subType = equipment.subType;\r\n viewModel.name = equipment.name;\r\n viewModel.maintenaceCountDown = equipment.maintenaceCountDown;\r\n viewModel.totalRunHoursFirstRegisterAddress = equipment.totalRunHoursFirstRegisterAddress;\r\n viewModel.totalRunHoursSecondRegisterAddress = equipment.totalRunHoursSecondRegisterAddress;\r\n viewModel.timeTillMaintenanceAddress = equipment.timeTillMaintenanceAddress;\r\n viewModel.shutDownAlarmAddress = equipment.shutDownAlarmAddress;\r\n viewModel.shutDownAlarmAddressBit = equipment.shutDownAlarmAddressBit;\r\n viewModel.maintenanceRequiredWarningAddress = equipment.maintenanceRequiredWarningAddress;\r\n viewModel.maintenanceRequiredWarningAddressBit = equipment.maintenanceRequiredWarningAddressBit;\r\n if (equipment.sensors && equipment.sensors.length > 0) {\r\n viewModel.sensors = equipment.sensors.map(sensor => SensorViewModel.toViewModel(sensor));\r\n }\r\n\r\n return viewModel;\r\n }\r\n}\r\n\r\nexport class EquipmentGetModel {\r\n id: number;\r\n type: EquipmentTypeEnum;\r\n subType: EquipmentSubTypeEnum;\r\n name: string;\r\n totalRunHoursFirstRegisterAddress: number;\r\n totalRunHoursSecondRegisterAddress: number;\r\n timeTillMaintenanceAddress: number;\r\n shutDownAlarmAddress: number;\r\n shutDownAlarmAddressBit: number;\r\n maintenanceRequiredWarningAddress: number;\r\n maintenanceRequiredWarningAddressBit: number;\r\n maintenanceCountDownValue: number;\r\n totalRunHoursValue: number;\r\n isMaintenanceRequired: boolean;\r\n sensors: SensorGetModel[];\r\n\r\n public static toViewModel(getModel: EquipmentGetModel): EquipmentViewModel {\r\n const viewModel = new EquipmentViewModel();\r\n viewModel.id = getModel.id;\r\n viewModel.type = getModel.type;\r\n viewModel.subType = getModel.subType;\r\n viewModel.name = getModel.name;\r\n viewModel.totalRunHoursFirstRegisterAddress = getModel.totalRunHoursFirstRegisterAddress;\r\n viewModel.totalRunHoursSecondRegisterAddress = getModel.totalRunHoursSecondRegisterAddress;\r\n viewModel.timeTillMaintenanceAddress = getModel.timeTillMaintenanceAddress;\r\n viewModel.shutDownAlarmAddress = getModel.shutDownAlarmAddress;\r\n viewModel.shutDownAlarmAddressBit = getModel.shutDownAlarmAddressBit;\r\n viewModel.maintenanceRequiredWarningAddress = getModel.maintenanceRequiredWarningAddress;\r\n viewModel.maintenanceRequiredWarningAddressBit = getModel.maintenanceRequiredWarningAddressBit;\r\n viewModel.maintenanceCountDownValue = getModel.maintenanceCountDownValue;\r\n viewModel.totalRunHoursValue = getModel.totalRunHoursValue;\r\n viewModel.isMaintenanceRequired = getModel.isMaintenanceRequired;\r\n\r\n if (getModel.sensors) {\r\n viewModel.sensors = getModel.sensors.map(s => SensorGetModel.toViewModel(s));\r\n }\r\n\r\n return viewModel;\r\n }\r\n}\r\n\r\nexport class EquipmentPostModel {\r\n id: number;\r\n type: EquipmentTypeEnum;\r\n subType: EquipmentSubTypeEnum;\r\n name: string;\r\n totalRunHoursFirstRegisterAddress: number;\r\n totalRunHoursSecondRegisterAddress: number;\r\n timeTillMaintenanceAddress: number;\r\n shutDownAlarmAddress: number;\r\n shutDownAlarmAddressBit: number;\r\n maintenanceRequiredWarningAddress: number;\r\n maintenanceRequiredWarningAddressBit: number;\r\n sensors: SensorPostModel[];\r\n\r\n constructor(viewModel: EquipmentViewModel) {\r\n this.id = viewModel.id;\r\n this.type = viewModel.type;\r\n this.subType = viewModel.subType;\r\n this.name = viewModel.name;\r\n this.totalRunHoursFirstRegisterAddress = Number(viewModel.totalRunHoursFirstRegisterAddress);//field is string after input form\r\n this.totalRunHoursSecondRegisterAddress = Number(viewModel.totalRunHoursSecondRegisterAddress);//field is string after input form\r\n this.timeTillMaintenanceAddress = viewModel.timeTillMaintenanceAddress\r\n ? Number(viewModel.timeTillMaintenanceAddress)\r\n : viewModel.timeTillMaintenanceAddress;//field is string after input form\r\n this.shutDownAlarmAddress = Number(viewModel.shutDownAlarmAddress);//field is string after input form\r\n this.shutDownAlarmAddressBit = viewModel.shutDownAlarmAddressBit;\r\n this.maintenanceRequiredWarningAddress = Number(viewModel.maintenanceRequiredWarningAddress);//field is string after input form\r\n this.maintenanceRequiredWarningAddressBit = viewModel.maintenanceRequiredWarningAddressBit;\r\n\r\n if (viewModel.sensors) {\r\n this.sensors = viewModel.sensors.map(s => new SensorPostModel(s));\r\n }\r\n }\r\n}\r\n\r\nexport class EquipmentNameViewModel {\r\n id: number;\r\n name: string;\r\n\r\n static toBtxTreeNode(equipment: EquipmentNameViewModel, locationId: number): TreeNode {\r\n const data: NotificationFilterTreeNodeData = {\r\n id: equipment.id,\r\n nodeType: BtxNotificationFilterNodeTypeEnum.Equipment,\r\n locationId: locationId,\r\n };\r\n\r\n const locationWithEquipmentNodes: TreeNode = {\r\n label: equipment.name,\r\n data,\r\n selectable: true,\r\n };\r\n\r\n return locationWithEquipmentNodes;\r\n }\r\n}\r\n\r\nexport class EquipmentNameGetModel {\r\n id: number;\r\n name: string;\r\n\r\n public static toViewModel(getModel: EquipmentNameGetModel): EquipmentNameViewModel {\r\n const viewModel = new EquipmentNameViewModel();\r\n\r\n viewModel.id = getModel.id;\r\n viewModel.name = getModel.name;\r\n\r\n return viewModel;\r\n }\r\n}\r\n\r\nexport class BtxLiveDataEquipmentViewModel {\r\n id: number;\r\n name: string;\r\n type: NameViewModel;\r\n subType: NameViewModel;\r\n alarms: number;\r\n warnings: number;\r\n\r\n public static toReportEquipmentTreeNode(equipmentViewModel: BtxLiveDataEquipmentViewModel): TreeNode {\r\n const equipmentTreeNode: TreeNode = {\r\n label: equipmentViewModel.name,\r\n data: equipmentViewModel.id,\r\n selectable: true,\r\n key: equipmentViewModel.id.toString()\r\n };\r\n\r\n return equipmentTreeNode;\r\n }\r\n}\r\n\r\nexport class BtxLiveDataEquipmentGetModel {\r\n id: number;\r\n name: string;\r\n type: EquipmentTypeEnum;\r\n subType: EquipmentSubTypeEnum;\r\n alarms: number;\r\n warnings: number;\r\n\r\n public static toViewModel(getModel: BtxLiveDataEquipmentGetModel): BtxLiveDataEquipmentViewModel {\r\n const viewModel = new BtxLiveDataEquipmentViewModel();\r\n\r\n viewModel.id = getModel.id;\r\n viewModel.name = getModel.name;\r\n viewModel.type = BtxLiveDataEquipmentGetModel.getEquipmentTypeNameViewModel(getModel.type);\r\n viewModel.subType = BtxLiveDataEquipmentGetModel.getEquipmentSubTypeNameViewModel(getModel.subType);\r\n viewModel.alarms = getModel.alarms;\r\n viewModel.warnings = getModel.warnings;\r\n\r\n return viewModel;\r\n }\r\n\r\n private static getEquipmentTypeNameViewModel(type: EquipmentTypeEnum): NameViewModel {\r\n const nameViewModel = new NameViewModel();\r\n\r\n nameViewModel.id = type;\r\n nameViewModel.name = equipmentTypeLabels[type];\r\n\r\n return nameViewModel;\r\n }\r\n\r\n private static getEquipmentSubTypeNameViewModel(subType: EquipmentSubTypeEnum): NameViewModel {\r\n const nameViewModel = new NameViewModel();\r\n\r\n nameViewModel.id = subType;\r\n nameViewModel.name = equipmentSubTypeLabels[subType];\r\n\r\n return nameViewModel;\r\n }\r\n}\r\n\r\nexport class BtxEquipmentWithTelemetryViewModel {\r\n id: number;\r\n name: string;\r\n type: EquipmentTypeEnum;\r\n subType: EquipmentSubTypeEnum;\r\n locationId: number;\r\n locationName: string;\r\n maintenanceCountDownValue: number;\r\n totalRunHoursValue: number;\r\n timestamp: number;\r\n acquisitionRate: AcquisitionRateEnum;\r\n sensors: BtxSensorWithTelemetryViewModel[];\r\n isMaintenanceRequired: boolean;\r\n shutdownAlarm: boolean;\r\n\r\n public static toEquipmentViewModel(equipmentWithTelemetry: BtxEquipmentWithTelemetryViewModel): EquipmentViewModel {\r\n const equipmentViewModel = new EquipmentViewModel();\r\n\r\n equipmentViewModel.id = equipmentWithTelemetry.id;\r\n equipmentViewModel.type = equipmentWithTelemetry.type;\r\n equipmentViewModel.subType = equipmentWithTelemetry.subType;\r\n equipmentViewModel.name = equipmentWithTelemetry.name;\r\n equipmentViewModel.maintenanceCountDownValue = equipmentWithTelemetry.maintenanceCountDownValue;\r\n equipmentViewModel.totalRunHoursValue = equipmentWithTelemetry.totalRunHoursValue;\r\n equipmentViewModel.timestamp = equipmentWithTelemetry.timestamp;\r\n equipmentViewModel.isMaintenanceRequired = equipmentWithTelemetry.isMaintenanceRequired;\r\n equipmentViewModel.shutdownAlarm=equipmentWithTelemetry.shutdownAlarm;\r\n\r\n if (equipmentWithTelemetry.sensors) {\r\n equipmentViewModel.sensors = equipmentWithTelemetry.sensors.map(s => BtxSensorWithTelemetryViewModel.toSensorViewModel(s));\r\n }\r\n\r\n return equipmentViewModel;\r\n }\r\n}\r\n\r\nexport class BtxEquipmentWithTelemetryGetModel {\r\n id: number;\r\n name: string;\r\n type: EquipmentTypeEnum;\r\n subType: EquipmentSubTypeEnum;\r\n locationId: number;\r\n locationName: string;\r\n maintenanceCountDownValue: number;\r\n totalRunHoursValue: number;\r\n timestamp: number;\r\n acquisitionRate: AcquisitionRateEnum;\r\n sensors: BtxSensorWithTelemetryGetModel[];\r\n isMaintenanceRequired: boolean;\r\n shutdownAlarm: boolean;\r\n\r\n public static toViewModel(getModel: BtxEquipmentWithTelemetryGetModel): BtxEquipmentWithTelemetryViewModel {\r\n const viewModel = new BtxEquipmentWithTelemetryViewModel();\r\n\r\n viewModel.id = getModel.id;\r\n viewModel.name = getModel.name;\r\n viewModel.type = getModel.type;\r\n viewModel.subType = getModel.subType;\r\n viewModel.locationName = getModel.locationName;\r\n viewModel.locationId = getModel.locationId;\r\n viewModel.maintenanceCountDownValue = getModel.maintenanceCountDownValue;\r\n viewModel.totalRunHoursValue = getModel.totalRunHoursValue;\r\n viewModel.timestamp = getModel.timestamp;\r\n viewModel.acquisitionRate = getModel.acquisitionRate;\r\n viewModel.isMaintenanceRequired = getModel.isMaintenanceRequired;\r\n viewModel.shutdownAlarm = getModel.shutdownAlarm;\r\n\r\n if (getModel.sensors) {\r\n viewModel.sensors = getModel.sensors.map((s) => BtxSensorWithTelemetryGetModel.toViewModel(s));\r\n }\r\n\r\n return viewModel;\r\n }\r\n}\r\n\r\nexport class EquipmentSchemaViewModel {\r\n className: string;\r\n markers: SensorSchemaViewModel[];\r\n}","export class FullnessRangeViewModel {\r\n id: number;\r\n from: number;\r\n to: number;\r\n colorHex: string;\r\n}\r\n\r\nexport class FullnessRangePostModel {\r\n public locationId: number;\r\n public ranges: FullnessRangeViewModel[];\r\n}\r\nexport class FullnessRangesGetModel {\r\n public locationId: number;\r\n public fullnessRanges: FullnessRangeViewModel[];\r\n public canDeviceBeInitialized: boolean;\r\n public isInitialized: boolean;\r\n}\r\n\r\n","import { SensorValuesStatusEnum } from \"../enums\";\r\n\r\nexport class HistoricalDataTelemetryResponse {\r\n sensorId: number;\r\n telemetries: TelemetryDomain[];\r\n firstTelemetryTimeStamp: number;\r\n lastTelemetryTimeStamp: number;\r\n}\r\n\r\nexport class TelemetryDomain {\r\n id: number;\r\n value: number;\r\n status: SensorValuesStatusEnum;\r\n timestamp: number;\r\n}\r\n\r\nexport class HistoricalDataFilter {\r\n equipmentId: number;\r\n sensorIds: number[];\r\n timeStampFrom: number;\r\n timeStampTo: number;\r\n}","import { CompanyViewModel } from '../companies.model';\r\n\r\nexport class CompanyAddedHubMessage {\r\n constructor(\r\n public newCompany: CompanyViewModel\r\n ) \r\n { }\r\n}\r\n","import { CompanyAdminViewModel } from '../company-admins.model';\r\n\r\nexport class CompanyAdminAddedHubMessage {\r\n constructor(\r\n public newCompanyAdmin: CompanyAdminViewModel\r\n ) \r\n { }\r\n}\r\n","export class CompanyAdminDeletedHubMessage {\r\n constructor(\r\n public companyAdminId: number\r\n ) \r\n { }\r\n}\r\n","export class CompanyAdminInUpdateHubMessage {\r\n constructor(\r\n public companyAdminId: number\r\n ) \r\n { }\r\n }\r\n ","import { CompanyAdminViewModel } from '../company-admins.model';\r\n\r\nexport class CompanyAdminUpdatedHubMessage {\r\n constructor(\r\n public updatedCompanyAdmin: CompanyAdminViewModel,\r\n public withChanges: boolean,\r\n ) \r\n { }\r\n}\r\n","export class CompanyDeletedHubMessage {\r\n constructor(\r\n public companyId: number\r\n ) \r\n { }\r\n}\r\n","export class CompanyInUpdateHubMessage {\r\n constructor(\r\n public companyId: number\r\n ) \r\n { }\r\n }\r\n ","import { CompanyViewModel } from '../companies.model';\r\n\r\nexport class CompanyUpdatedHubMessage {\r\n constructor(\r\n public updatedCompany: CompanyViewModel,\r\n public withChanges: boolean,\r\n ) \r\n { }\r\n}\r\n","import { CompanyUserViewModel } from '../company-users.model';\r\n\r\nexport class CompanyUserAddedHubMessage {\r\n constructor(\r\n public newCompanyUser: CompanyUserViewModel\r\n ) \r\n { }\r\n}\r\n","export class CompanyUserDeletedHubMessage {\r\n constructor(\r\n public companyUserId: number\r\n ) \r\n { }\r\n}\r\n","export class CompanyUserInUpdateHubMessage {\r\n constructor(\r\n public companyUserId: number\r\n ) \r\n { }\r\n }\r\n ","import { CompanyUserViewModel } from '../company-users.model';\r\n\r\nexport class CompanyUserUpdatedHubMessage {\r\n constructor(\r\n public updatedCompanyUser: CompanyUserViewModel,\r\n public withChanges: boolean,\r\n ) \r\n { }\r\n}\r\n","export * from './location-added.hub-message';\r\nexport * from './location-btx-added.hub-message';\r\nexport * from './location-deleted.hub-message';\r\nexport * from './location-in-update.hub-message';\r\nexport * from './location-itx-updated.hub-message';\r\nexport * from './location-updated.hub-message';\r\nexport * from './location-equipments-in-update.hub-message';\r\nexport * from './location-equipments-updated.hub-message';\r\nexport * from './location-device-in-initialization.hub-message';\r\nexport * from './location-device-initialized.hub-message';\r\nexport * from './company-updated.hub-message';\r\nexport * from './company-in-update.hub-message';\r\nexport * from './company-deleted.hub-message';\r\nexport * from './company-added.hub-message';\r\nexport * from './service-user-added.hub-message';\r\nexport * from './service-user-deleted.hub-message';\r\nexport * from './service-user-in-update.hub-message';\r\nexport * from './service-user-updated.hub-message';\r\nexport * from './company-admin-added.hub-message';\r\nexport * from './company-admin-deleted.hub-message';\r\nexport * from './company-admin-in-update.hub-message';\r\nexport * from './company-admin-updated.hub-message';\r\nexport * from './company-user-added.hub-message';\r\nexport * from './company-user-deleted.hub-message';\r\nexport * from './company-user-in-update.hub-message';\r\nexport * from './company-user-updated.hub-message';\r\nexport * from './location-btx-updated.hub-message';\r\nexport * from './location-btx-in-update.hub-message';\r\nexport * from './location-btx-updated.hub-message';\r\nexport * from './location-btx-deleted.hub-message';\r\nexport * from './location-ktx-added.hub-message';\r\nexport * from './location-ktx-in-update.hub-message';\r\nexport * from './location-ktx-updated.hub-message';\r\nexport * from './location-ktx-deleted.hub-message';\r\nexport * from './location-ktx-device-in-initialization.hub-message';\r\nexport * from './location-ktx-device-initialized.hub-message';\r\nexport * from './location-ktx-bins-in-update.hub-message';\r\nexport * from './location-ktx-bins-updated.hub-message';\r\nexport * from './location-ktx-temperature-range-updated-message';\r\nexport * from './vendor-delete.hub-message';\r\nexport * from './vendor-added.hub-message';\r\nexport * from './vendor-in-update.hub-message';\r\nexport * from './vendor-updated.hub-message';\r\nexport * from './location-itx-updated.hub-message';\r\nexport * from './location-itx-added.hub-message';\r\nexport * from './location-itx-in-update.hub-message';\r\nexport * from './location-itx-deleted.hub.message';\r\nexport * from './location-itx-fullness-range-updated-hub-message';\r\nexport * from './location-itx-storages-in-view';\r\nexport * from './itx-bin-added.hub-message';\r\nexport * from './itx-bin-updated.hub-message';\r\nexport * from './itx-bin-in-update.hub-message';\r\nexport * from './itx-bin-deleted.hub-message';\r\nexport * from './itx-bin-radar-added.hub-message';\r\nexport * from './itx-bin-radar-in-update.hub-message';\r\nexport * from './itx-bin-radar-updated.hub-message';\r\nexport * from './itx-bin-radar-deleted.hub-message';\r\nexport * from './location-itx-device-in-initialization.hub-message';\r\nexport * from './location-itx-device-initialized.hub-message';\r\nexport * from './sales-user-added.hub-message';\r\nexport * from './sales-user-deleted.hub-message';\r\nexport * from './sales-user-in-update.hub-message';\r\nexport * from './sales-user-updated.hub-message';\r\nexport * from './updater-update-project.hub-message';","import { ItxBinViewModel } from './../../models';\r\nexport class ItxBinAddedHubMessage {\r\n constructor(\r\n public newItxbin: ItxBinViewModel\r\n ) { }\r\n}","export class ItxBinDeletedHubMessage {\r\n constructor(\r\n public itxBinId: number,\r\n public itxLocationId:number\r\n ) { }\r\n}","export class ItxBinInUpdateHubMessage {\r\n constructor(\r\n public itxBinId: number\r\n ) { }\r\n}","import { RadarViewModel } from \"../itx-bin.model\";\r\n\r\nexport class ItxBinRadarAddedHubMessage{\r\n constructor(\r\n public newRadar: RadarViewModel\r\n ) { }\r\n}","import { RadarViewModel } from \"../itx-bin.model\";\r\nexport class ItxBinRadarDeletedHubMessage {\r\n constructor(public deletedRadar: RadarViewModel) { }\r\n}","export class ItxBinRadarInUpdateHubMessage {\r\n constructor(public itxBinId:number,\r\n public inUpdate: boolean) {\r\n\r\n }\r\n}","import { RadarViewModel } from \"../itx-bin.model\";\r\nexport class ItxBinRadarUpdatedHubMessage {\r\n constructor(public radar: RadarViewModel) {\r\n\r\n }\r\n}","import { ItxBinViewModel } from './../../models';\r\nexport class ItxBinUpdatedHubMessage {\r\n constructor(\r\n public updatedItxBin: ItxBinViewModel,\r\n public withChanges: boolean,\r\n ) { }\r\n}","import { LocationViewModel } from '../../models';\r\n\r\nexport class LocationAddedHubMessage {\r\n constructor(\r\n public newLocation: LocationViewModel\r\n ) \r\n { }\r\n}\r\n","import { LocationBtxViewModel } from \"../locations\";\r\n\r\nexport class LocationBtxAddedHubMessage {\r\n constructor(\r\n public newLocation: LocationBtxViewModel\r\n ) \r\n { }\r\n}","export class LocationBtxDeletedHubMessage {\r\n constructor(\r\n public locationId: number\r\n ) \r\n { }\r\n}\r\n","export class LocationBtxInUpdateHubMessage {\r\n constructor(\r\n public locationId: number\r\n ) \r\n { }\r\n }\r\n ","import { LocationBtxViewModel } from \"../locations\";\r\n\r\nexport class LocationBtxUpdatedHubMessage {\r\n constructor(\r\n public updatedLocation: LocationBtxViewModel,\r\n public withChanges: boolean,\r\n ) \r\n { }\r\n }","export class LocationDeletedHubMessage {\r\n constructor(\r\n public locationId: number\r\n ) \r\n { }\r\n}\r\n","export class LocationDeviceInInitializationHubMessage {\r\n constructor(\r\n public locationId: number,\r\n public isConfigFileUpdated?: boolean,\r\n ) \r\n { }\r\n }\r\n ","export class LocationDeviceInitializedHubMessage {\r\n constructor(\r\n public locationId: number\r\n ) \r\n { }\r\n }\r\n ","export class LocationEquipmentsInUpdateHubMessage {\r\n constructor(\r\n public locationId: number\r\n ) \r\n { }\r\n }\r\n ","export class LocationEquipmentsUpdatedHubMessage {\r\n constructor(\r\n public locationId: number\r\n ) \r\n { }\r\n }\r\n ","export class LocationInUpdateHubMessage {\r\n constructor(\r\n public locationId: number\r\n ) \r\n { }\r\n }\r\n ","import { LocationItxViewModel } from './../locations';\r\nexport class LocationItxAddedHubMessage {\r\n constructor(\r\n public newLocationItx: LocationItxViewModel\r\n ) \r\n { }\r\n }\r\n ","export class LocationItxDeletedHubMessage {\r\n constructor(\r\n public locationId: number\r\n ) \r\n { }\r\n}\r\n","export class LocationItxDeviceInInitializationHubMessage {\r\n constructor(\r\n public locationId: number\r\n ) { }\r\n}","export class LocationItxDeviceInitializedHubMessage {\r\n constructor(\r\n public locationId: number,\r\n public isInitialized: boolean,\r\n )\r\n { }\r\n}","import { FullnessRangePostModel } from \"../fullness-range.model\";\r\n\r\n\r\nexport class LocationItxFullnessRangeUpdatedHubMessage {\r\n constructor (public updatedRanges: FullnessRangePostModel)\r\n {}\r\n\r\n}\r\n","export class LocationItxInUpdateHubMessage {\r\n constructor(\r\n public locationId: number\r\n ) \r\n { }\r\n}\r\n","export class LocationItxStoragesInViewHubMessage {\r\n constructor(\r\n public locationId: number,\r\n public isView: boolean,\r\n ) { }\r\n}","import { LocationItxViewModel } from './../locations/';\r\n\r\nexport class LocationItxUpdatedHubMessage {\r\n constructor(\r\n public updatedLocationItx: LocationItxViewModel,\r\n public withCahnges: boolean,\r\n ) \r\n { }\r\n}","import { LocationKtxViewModel } from './../locations';\r\nexport class LocationKtxAddedHubMessage {\r\n constructor(\r\n public newLocationKtx: LocationKtxViewModel\r\n ) \r\n { }\r\n }\r\n ","export class LocationKtxBinsInUpdateHubMessage {\r\n constructor(\r\n public deviceId: string\r\n ) \r\n { }\r\n}\r\n","export class LocationKtxBinsUpdatedHubMessage {\r\n constructor(\r\n public locationId: number\r\n ) \r\n { }\r\n}\r\n","export class LocationKtxDeletedHubMessage {\r\n constructor(\r\n public locationId: number\r\n ) \r\n { }\r\n}\r\n","export class LocationKtxDeviceInInitializationHubMessage {\r\n constructor(\r\n public locationId: number,\r\n public isConfigFileUpdated?: boolean,\r\n ) \r\n { }\r\n}\r\n","export class LocationKtxDeviceInitializedHubMessage {\r\n constructor(\r\n public locationId: number\r\n ) \r\n { }\r\n}\r\n","export class LocationKtxInUpdateHubMessage {\r\n constructor(\r\n public locationId: number\r\n ) \r\n { }\r\n}\r\n","import { TemperatureRangePostModel } from '../temperature-range.model';\r\n\r\nexport class LocationKtxTemperatureRangeUpdatedHubMessage {\r\n constructor (public updatedRanges: TemperatureRangePostModel)\r\n {}\r\n\r\n}\r\n","import { LocationKtxViewModel } from './../locations/';\r\n\r\nexport class LocationKtxUpdatedHubMessage {\r\n constructor(\r\n public updatedLocationKtx: LocationKtxViewModel,\r\n public withCahnges: boolean,\r\n ) \r\n { }\r\n}\r\n","import { LocationViewModel } from \"../locations\";\r\n\r\nexport class LocationUpdatedHubMessage {\r\n constructor(\r\n public updatedLocation: LocationViewModel,\r\n public withCahnges: boolean,\r\n ) \r\n { }\r\n }\r\n ","import { SalesUserViewModel } from \"@models\";\r\n\r\nexport class SalesUserAddedHubMessage {\r\n constructor(\r\n public newSalesUser: SalesUserViewModel\r\n ) { }\r\n}","export class SalesUserDeletedHubMessage {\r\n constructor(\r\n public salesUserId: number\r\n ) { }\r\n}","export class SalesUserInUpdateHubMessage {\r\n constructor(\r\n public salesUserId: number\r\n ) { }\r\n}","import { SalesUserViewModel } from \"@models\";\r\n\r\nexport class SalesUserUpdatedHubMessage {\r\n constructor(\r\n public updatedSalesUser: SalesUserViewModel,\r\n public withChanges: boolean,\r\n ) { }\r\n}","import { ServiceUserViewModel } from '../service-users.model';\r\n\r\nexport class ServiceUserAddedHubMessage {\r\n constructor(\r\n public newServiceUser: ServiceUserViewModel\r\n ) \r\n { }\r\n}\r\n","export class ServiceUserDeletedHubMessage {\r\n constructor(\r\n public serviceUserId: number\r\n ) \r\n { }\r\n}\r\n","export class ServiceUserInUpdateHubMessage {\r\n constructor(\r\n public serviceUserId: number\r\n ) \r\n { }\r\n }\r\n ","import { ServiceUserViewModel } from '../service-users.model';\r\n\r\nexport class ServiceUserUpdatedHubMessage {\r\n constructor(\r\n public updatedServiceUser: ServiceUserViewModel,\r\n public withChanges: boolean,\r\n ) \r\n { }\r\n}\r\n","import { UpdateFirmwareResultModel } from \"../updater-device\";\r\n\r\nexport class UpdaterProjectUpdateFirmwareHubMessage {\r\n constructor(\r\n public projectsUpdateState: UpdateFirmwareResultModel[]\r\n ) { }\r\n}","import { VendorViewModel } from '../vendor.model';\r\n\r\nexport class VendorAddedHubMessage {\r\n constructor(\r\n public newVendor: VendorViewModel\r\n ) { }\r\n}","export class VendorDeletedHubMessage {\r\n constructor(\r\n public vendorId: number\r\n )\r\n { }\r\n }","export class VendorInUpdateHubMessage {\r\n constructor(\r\n public vendorId: number\r\n ) { }\r\n}","import { VendorViewModel } from \"../vendor.model\";\r\n\r\nexport class VendorUpdatedHubMessage {\r\n constructor(\r\n public updatedVendor: VendorViewModel,\r\n public withChanges: boolean,\r\n ) { }\r\n}","export * from './locations';\r\nexport * from './companies.model';\r\nexport * from './company-admins.model';\r\nexport * from './companies.model';\r\nexport * from './sensors';\r\nexport * from './equipment-btx.model';\r\nexport * from './company-users.model';\r\nexport * from './service-users.model';\r\nexport * from './hub-messages';\r\nexport * from './temperature-range.model';\r\nexport * from './telemetry-snapshot.model';\r\nexport * from './bin.model';\r\nexport * from './cable.model';\r\nexport * from './vendor.model';\r\nexport * from './fullness-range.model';\r\nexport * from './itx-bin.model';\r\nexport * from './fullness-range.model';\r\nexport * from './itx-events.model';\r\nexport * from './itx-reports.model';\r\nexport * from './account.model';\r\nexport * from './sales-users.model';\r\nexport * from './aqs/flat-storage/flat-storage-param.model';\r\nexport * from './aqs/computation-sheet';\r\nexport * from './aqs/round-storage/aqs-round.models';\r\nexport * from './aqs/aqs-commodities.model';\r\nexport * from './aqs/aqs-coversheet.model';\r\nexport * from './aqs/aqs-airflow.models';\r\nexport * from './aqs-round-storage-duct-design.model';\r\nexport * from './aqs/aqs-exhauster-fan.model';\r\nexport * from './aqs';\r\nexport * from './aqs/aqs-exhauster-fan.model';\r\nexport * from './aqs/flat-storage/aqs-flat-duct.model';\r\nexport * from './device-log.model';\r\nexport * from './navigation-bar.model';\r\nexport * from './ktx-bin.model';\r\nexport * from './ktx-reports.model';\r\nexport * from './ktx-events.model';\r\nexport * from './btx-events.model';\r\nexport * from './btx-reports.model';\r\nexport * from './email-service.model';\r\nexport * from './btx-reports.model';\r\nexport * from './notification-report.model';\r\nexport * from './updater-device';\r\n","import { CapacityUnitEnum, ItxBinTypeEnum, ItxRadarLocationEnum, ItxStorageSortingEnum, SizeMeasureEnum, TemperatureMeasureEnum } from \"../enums\";\r\nimport { FullnessRangeViewModel, ItxBinNameModel } from '../models';\r\nimport { PileShale } from './../enums';\r\n\r\nexport class ItxBinViewModel {\r\n id: number;\r\n name: string;\r\n locationId: number;\r\n height: number;\r\n width: number;\r\n depth: number;\r\n material: string;\r\n totalCapacity: number;\r\n countOfRadars: number;\r\n binType: ItxBinTypeEnum;\r\n sizeMeasure: SizeMeasureEnum;\r\n capacityUnit: CapacityUnitEnum;\r\n tiltAngle: number;\r\n roofAngle: number;\r\n roofCap: number;\r\n radars: Array;\r\n\r\n isSomeoneUpdateStorage: boolean;\r\n isSomeoneUpdateRadar: boolean;\r\n\r\n public static ToItxBinRadarViewModel(itxBinViewModel: ItxBinViewModel): ItxBinRadarViewModel {\r\n const viewModel = new ItxBinRadarViewModel();\r\n viewModel.id = itxBinViewModel.id;\r\n viewModel.locationId = itxBinViewModel.locationId;\r\n viewModel.name = itxBinViewModel.name;\r\n viewModel.radars = itxBinViewModel.radars;\r\n\r\n return viewModel;\r\n }\r\n\r\n public static ToNewViewModel(sourceModel: ItxBinViewModel): ItxBinViewModel {\r\n let viewModel = new ItxBinViewModel();\r\n viewModel.id = sourceModel.id;\r\n viewModel.binType = sourceModel.binType;\r\n viewModel.capacityUnit = sourceModel.capacityUnit;\r\n viewModel.countOfRadars = sourceModel.countOfRadars;\r\n viewModel.depth = sourceModel.depth;\r\n viewModel.height = sourceModel.height;\r\n viewModel.isSomeoneUpdateRadar = sourceModel.isSomeoneUpdateRadar;\r\n viewModel.isSomeoneUpdateStorage = sourceModel.isSomeoneUpdateStorage;\r\n viewModel.locationId = sourceModel.locationId;\r\n viewModel.material = sourceModel.material;\r\n viewModel.name = sourceModel.name;\r\n viewModel.radars = sourceModel.radars;\r\n viewModel.roofAngle = sourceModel.roofAngle;\r\n viewModel.roofCap = sourceModel.roofCap;\r\n viewModel.sizeMeasure = sourceModel.sizeMeasure;\r\n viewModel.tiltAngle = sourceModel.tiltAngle;\r\n viewModel.totalCapacity = sourceModel.totalCapacity;\r\n viewModel.width = sourceModel.width;\r\n return viewModel;\r\n }\r\n}\r\n\r\nexport class ItxBinRadarViewModel {\r\n id: number;\r\n name: string;\r\n locationId: number;\r\n radars: Array;\r\n}\r\n\r\nexport class ItxBinGetModel {\r\n id: number;\r\n name: string;\r\n locationId: number;\r\n height: number;\r\n width: number;\r\n depth: number;\r\n material: string;\r\n totalCapacity: number;\r\n countOfRadars: number;\r\n binType: ItxBinTypeEnum;\r\n sizeMeasure: SizeMeasureEnum;\r\n capacityUnit: CapacityUnitEnum;\r\n tiltAngle: number;\r\n roofAngle: number;\r\n roofCap: number;\r\n radars: Array;\r\n\r\n public static toViewModel(getModel: ItxBinGetModel): ItxBinViewModel {\r\n const viewModel = new ItxBinViewModel();\r\n viewModel.id = getModel.id;\r\n viewModel.name = getModel.name;\r\n viewModel.locationId = getModel.locationId;\r\n viewModel.binType = getModel.binType;\r\n viewModel.height = getModel.height;\r\n viewModel.width = getModel.width;\r\n viewModel.depth = getModel.depth;\r\n viewModel.sizeMeasure = getModel.sizeMeasure;\r\n viewModel.material = getModel.material;\r\n viewModel.totalCapacity = getModel.totalCapacity;\r\n viewModel.capacityUnit = getModel.capacityUnit;\r\n viewModel.countOfRadars = getModel.radars.length;\r\n viewModel.radars = getModel.radars;\r\n viewModel.tiltAngle = getModel.tiltAngle;\r\n viewModel.roofAngle = getModel.roofAngle;\r\n viewModel.roofCap = getModel.roofCap;\r\n return viewModel;\r\n }\r\n}\r\n\r\nexport class AddItxBinModel {\r\n locationId: number;\r\n name: string;\r\n height: number;\r\n width: number;\r\n depth: number;\r\n material: string;\r\n totalCapacity: number;\r\n binType: ItxBinTypeEnum;\r\n sizeMeasure: SizeMeasureEnum;\r\n capacityUnit: CapacityUnitEnum;\r\n tiltAngle: number;\r\n roofAngle: number;\r\n roofCap: number;\r\n constructor(viewModel: AddItxBinModel) {\r\n this.locationId = viewModel.locationId;\r\n this.name = viewModel.name;\r\n this.height = Number(viewModel.height);\r\n this.width = Number(viewModel.width);\r\n this.material = viewModel.material;\r\n this.totalCapacity = Number(viewModel.totalCapacity);\r\n this.binType = viewModel.binType;\r\n this.sizeMeasure = viewModel.sizeMeasure;\r\n this.capacityUnit = viewModel.capacityUnit;\r\n this.tiltAngle = Number(viewModel.tiltAngle);\r\n this.depth = viewModel.depth == undefined ? null : Number(viewModel.depth);\r\n this.roofAngle = viewModel.roofAngle == undefined ? null : Number(viewModel.roofAngle);\r\n this.roofCap = viewModel.roofCap == undefined ? null : Number(viewModel.roofCap);\r\n }\r\n}\r\n\r\nexport class EditItxBinModel {\r\n id: number;\r\n name: string;\r\n height: number;\r\n width: number;\r\n depth: number;\r\n material: string;\r\n totalCapacity: number;\r\n binType: ItxBinTypeEnum;\r\n sizeMeasure: SizeMeasureEnum;\r\n capacityUnit: CapacityUnitEnum;\r\n tiltAngle: number;\r\n roofAngle: number;\r\n roofCap: number;\r\n constructor(viewModel: EditItxBinModel) {\r\n this.id = viewModel.id;\r\n this.name = viewModel.name;\r\n this.height = Number(viewModel.height);\r\n this.width = Number(viewModel.width);\r\n this.material = viewModel.material;\r\n this.totalCapacity = Number(viewModel.totalCapacity);\r\n this.binType = viewModel.binType;\r\n this.sizeMeasure = viewModel.sizeMeasure;\r\n this.capacityUnit = viewModel.capacityUnit;\r\n this.tiltAngle = Number(viewModel.tiltAngle);\r\n this.depth = viewModel.depth == null ? null : Number(viewModel.depth);\r\n this.roofAngle = viewModel.roofAngle == null ? null : Number(viewModel.roofAngle);\r\n this.roofCap = viewModel.roofCap == null ? null : Number(viewModel.roofCap);\r\n }\r\n}\r\nexport class ItxBinStaticMembersResponse {\r\n locationId: number;\r\n locationName: string;\r\n companyId: number;\r\n companyName: string;\r\n acquisitionRate: number;\r\n fullnessRangeResponses: FullnessRangeViewModel[];\r\n bins: Array\r\n}\r\n\r\nexport class PeriodToGetliveDataForLocations {\r\n locationId: number;\r\n acquisitionRate: number;\r\n}\r\n\r\nexport class ItxStaticScemeData {\r\n locationsLiveData: ItxBinStaticMembersResponse[];\r\n userMeasurePreferences: UserPreferences;\r\n periodToGetDataForLocations: PeriodToGetliveDataForLocations[]\r\n\r\n}\r\nexport class ItxSchemeLiveData {\r\n itxBinSchemeResponses: ItxBinLiveDataViewModel[];\r\n totalFilteredCount: number;\r\n}\r\nexport class LiveDataModel {\r\n name: string;\r\n value: number;\r\n constructor(name: string, value: number) {\r\n this.name = name;\r\n this.value = value;\r\n }\r\n}\r\n\r\nexport class ItxBinRadarsLiveDataViewModel {\r\n name: string;\r\n radars: RadarLiveDataModel[];\r\n}\r\n\r\nexport class ItxBinTelemetryWithPreference {\r\n userPreference: UserPreferences;\r\n telemetry: ItxBinLiveDataModel;\r\n itxBin: ItxBinGetModel;\r\n public static toBinLiveDataViewModel(getModel: ItxBinTelemetryWithPreference): ItxBinLiveDataViewModel {\r\n const viewModel = new ItxBinLiveDataViewModel();\r\n viewModel.id = getModel.itxBin.id;\r\n viewModel.locationId = getModel.itxBin.locationId;\r\n viewModel.binType = getModel.itxBin.binType;\r\n viewModel.height = getModel.itxBin.height;\r\n viewModel.sizeUnit = getModel.userPreference.sizeMeasure;\r\n viewModel.name = getModel.itxBin.name;\r\n viewModel.material = getModel.itxBin.material;\r\n viewModel.totalCapacity = getModel.itxBin.totalCapacity;\r\n viewModel.capacityUnit = getModel.itxBin.capacityUnit;\r\n viewModel.temperatureUnit = getModel.userPreference.temperatureMeasure;\r\n viewModel.binPercentFullness = getModel.telemetry.binPercentFullness;\r\n viewModel.binHeadSpace = getModel.telemetry.binHeadSpace;\r\n viewModel.binFullnessCapacity = getModel.telemetry.binFullnessCapacity;\r\n viewModel.binTemperature = getModel.telemetry.binTemperature;\r\n viewModel.calculatedAvailableCapacity = getModel.telemetry.calculatedAvailableCapacity;\r\n viewModel.calculatedErrorBound = getModel.telemetry.calculatedErrorBound;\r\n viewModel.calculatedUsedCapacity = getModel.telemetry.calculatedUsedCapacity;\r\n viewModel.radars = getModel.telemetry.radars;\r\n return viewModel;\r\n }\r\n}\r\n\r\nexport class ItxBinLiveDataViewModel {\r\n id: number;\r\n locationId: number;\r\n binType: number;\r\n companyId: number;\r\n height: number;\r\n sizeUnit: SizeMeasureEnum;\r\n name: string;\r\n locationName: string;\r\n companyName: string;\r\n material: string;\r\n totalCapacity: number;\r\n capacityUnit: number;\r\n temperatureUnit: TemperatureMeasureEnum = TemperatureMeasureEnum.Fahrenheit;\r\n binPercentFullness: number;\r\n binHeadSpace: number;\r\n binFullnessCapacity: number;\r\n binTemperature: number;\r\n hasNoValue: boolean;\r\n colorHex: string;\r\n radars: RadarLiveDataModel[];\r\n hasRadarError: boolean;\r\n timestamp: string;\r\n calculatedUsedCapacity: number;\r\n calculatedAvailableCapacity: number;\r\n calculatedErrorBound: number;\r\n}\r\n\r\nexport class ItxBinLiveDataModel {\r\n id: number;\r\n locationId: number;\r\n radars: RadarLiveDataModel[];\r\n binPercentFullness: number;\r\n binHeadSpace: number;\r\n binFullnessCapacity: number;\r\n binTemperature: number;\r\n calculatedUsedCapacity: number;\r\n calculatedAvailableCapacity: number;\r\n calculatedErrorBound: number;\r\n hasRadarError: boolean;\r\n timestamp: string;\r\n}\r\nexport class UserPreferencesPost {\r\n capacityLoosUnit: CapacityUnitEnum;\r\n capacityLiquidUnit: CapacityUnitEnum;\r\n temperatureMeasure: TemperatureMeasureEnum;\r\n sizeMeasure: SizeMeasureEnum;\r\n}\r\nexport class UserPreferences {\r\n id: number;\r\n capacityLoosUnit: CapacityUnitEnum;\r\n capacityLiquidUnit: CapacityUnitEnum;\r\n temperatureMeasure: TemperatureMeasureEnum;\r\n sizeMeasure: SizeMeasureEnum;\r\n}\r\n\r\nexport class RadarViewModel {\r\n id: number;\r\n radarId: number;\r\n itxBinId: number;\r\n radarIdAddress: number;\r\n radarLocation: ItxRadarLocationEnum;\r\n distanceFromBinCenter: number;\r\n constructor() { }\r\n\r\n public static ToPostModel(model: RadarViewModel): RadarPostModel {\r\n let postModel = new RadarPostModel();\r\n postModel.id = model.id;\r\n postModel.itxBinId = model.itxBinId;\r\n postModel.radarId = model.radarId;\r\n postModel.radarIdAddress = model.radarIdAddress;\r\n postModel.distanceFromBinCenter = model.distanceFromBinCenter;\r\n postModel.radarLocation = model.radarLocation;\r\n return postModel;\r\n }\r\n\r\n public static CreateNewInstance(radarViewModel: RadarViewModel) {\r\n let postModel = new RadarViewModel();\r\n postModel.id = Number(radarViewModel.id);\r\n postModel.itxBinId = Number(radarViewModel.itxBinId);\r\n postModel.radarIdAddress = Number(radarViewModel.radarIdAddress);\r\n postModel.radarId = Number(radarViewModel.radarId);\r\n postModel.distanceFromBinCenter = radarViewModel.distanceFromBinCenter;\r\n postModel.radarLocation = radarViewModel.radarLocation;\r\n return postModel;\r\n }\r\n}\r\n\r\nexport class RadarLiveDataModel {\r\n radarId: number;\r\n temperature: number;\r\n headSpace: number;\r\n percentFull: number;\r\n capacity: number;\r\n radarLocation: ItxRadarLocationEnum;\r\n distanceFromBinCenter: number;\r\n isRadarTelemetryError: boolean;\r\n pileShape: PileShale;\r\n fillingStatus: boolean;\r\n}\r\n\r\nexport class RadarPostModel extends RadarViewModel {\r\n locationId: number;\r\n constructor() {\r\n super();\r\n }\r\n\r\n public static CreateNewInstance(radarViewModel: RadarPostModel) {\r\n let postModel = new RadarPostModel();\r\n postModel.id = Number(radarViewModel.id);\r\n postModel.itxBinId = Number(radarViewModel.itxBinId);\r\n postModel.radarIdAddress = Number(radarViewModel.radarIdAddress);\r\n postModel.radarId = Number(radarViewModel.radarId);\r\n postModel.locationId = Number(radarViewModel.locationId);\r\n postModel.distanceFromBinCenter = radarViewModel.distanceFromBinCenter != null ? Number(radarViewModel.distanceFromBinCenter) : null;\r\n postModel.radarLocation = radarViewModel.radarLocation;\r\n return postModel;\r\n }\r\n\r\n ToRadarPostModel(viewModel: RadarViewModel): RadarPostModel {\r\n let model = new RadarPostModel();\r\n\r\n return model;\r\n }\r\n\r\n}\r\n\r\nexport class ItxBinFilterParametersRequest {\r\n constructor(filterLocation: number[], filterCompany: number[], searchBinByName: string, filterStorages: number[]) {\r\n this.searchBinByName = searchBinByName;\r\n this.locationIdsToFilter = filterLocation;\r\n this.companyIdsToFilter = filterCompany;\r\n this.storageIdsToFilter = filterStorages;\r\n }\r\n\r\n searchBinByName: string;\r\n locationIdsToFilter: number[];\r\n companyIdsToFilter: number[];\r\n storageIdsToFilter: number[];\r\n}\r\n\r\nexport class ItxBinFilterParameters {\r\n constructor() {\r\n this.searchBinByName = '';\r\n this.storageIdsToFilter = [];\r\n }\r\n\r\n searchBinByName: string = '';\r\n storageIdsToFilter: number[] = [];\r\n public static toItxBinFilterParametersRequest(itxBinFilterParameters: ItxBinFilterParameters): ItxBinFilterParametersRequest {\r\n const itxBinFilterParametersRequest = new ItxBinFilterParametersRequest([], [], itxBinFilterParameters.searchBinByName, itxBinFilterParameters.storageIdsToFilter);\r\n return itxBinFilterParametersRequest;\r\n }\r\n}\r\n\r\nexport class ItxBinParametersRequest {\r\n constructor(itxBinFilterParametersRequest: ItxBinFilterParametersRequest, pagenumber: number, sortParameter: ItxStorageSortingEnum) {\r\n this.itxBinFilterParametersRequest = itxBinFilterParametersRequest;\r\n this.itxBinSortParameter = sortParameter;\r\n this.pageNumber = pagenumber;\r\n }\r\n\r\n itxBinFilterParametersRequest: ItxBinFilterParametersRequest;\r\n pageNumber: number;\r\n itxBinSortParameter: ItxStorageSortingEnum;\r\n}\r\n\r\nexport class ItxBinQuickEditPostModel {\r\n id: number;\r\n material: string;\r\n name: string;\r\n}\r\n\r\nexport class ItxLocationReportFilter {\r\n locationId: number;\r\n locationName: string;\r\n companyId: number;\r\n companyName: string;\r\n itxBins: ItxBinReportFilter[];\r\n}\r\n\r\nexport class ItxBinReportFilter {\r\n id: number;\r\n name: string;\r\n material: string;\r\n binType: ItxBinTypeEnum;\r\n radars: ItxRadarReportFilter[];\r\n}\r\n\r\nexport class ItxRadarReportFilter {\r\n id: number;\r\n radarId: number;\r\n radarIdAddress: number;\r\n radarLocation: ItxRadarLocationEnum;\r\n distanceFromBinCenter: number;\r\n}","import { CalendarDefaultValues } from '../constants';\r\nimport { ItxEventTypeEnum } from '../enums';\r\n\r\nexport class ItxEventViewModel {\r\n public eventId: number;\r\n public title: string;\r\n public body: string;\r\n public firstNotificationTimeStamp: number;\r\n public lastNotificationTimeStamp: number;\r\n public itxAlertType: ItxEventTypeEnum;\r\n public itxBinId: number;\r\n public locationId: number;\r\n}\r\n\r\nexport class ItxEventGetModel {\r\n public eventId: number;\r\n public title: string;\r\n public body: string;\r\n public locationId: number;\r\n public firstNotificationTimeStamp: number;\r\n public lastNotificationTimeStamp: number;\r\n public itxOptions: ItxOptions;\r\n\r\n public static toViewModel(getModel: ItxEventGetModel): ItxEventViewModel {\r\n const viewModel = new ItxEventViewModel();\r\n viewModel.eventId = getModel.eventId;\r\n viewModel.title = getModel.title;\r\n viewModel.body = getModel.body;\r\n viewModel.firstNotificationTimeStamp = getModel.firstNotificationTimeStamp * CalendarDefaultValues.defaultOneSecondMilliseconds;\r\n viewModel.lastNotificationTimeStamp = getModel.lastNotificationTimeStamp * CalendarDefaultValues.defaultOneSecondMilliseconds;\r\n viewModel.locationId = getModel.itxOptions.locationId;\r\n viewModel.locationId = getModel.locationId;\r\n if (getModel.itxOptions) {\r\n viewModel.itxAlertType = getModel.itxOptions.itxAlertType;\r\n viewModel.itxBinId = getModel.itxOptions.itxBinId;\r\n }\r\n return viewModel;\r\n }\r\n}\r\n\r\nexport class ItxOptions {\r\n public itxAlertType: ItxEventTypeEnum;\r\n public itxBinId: number;\r\n public locationId: number;\r\n}\r\n\r\nexport class ItxEventsRequestModel {\r\n public events: Array;\r\n public totalCount: number;\r\n public itemsPerPage: number;\r\n}\r\n\r\nexport class ItxEventByPeriodPostModel {\r\n public locationIds: Array;\r\n public itxBinIds: Array;\r\n public dateTimeFrom: number;\r\n public dateTimeTo: number;\r\n public currentPage: number;\r\n public eventTypes: Array;\r\n public isWeb: boolean=true;\r\n\r\n public get countSelectedFilter() {\r\n let count = 0;\r\n count += this.eventTypes.length;\r\n count += this.locationIds.length;\r\n count += this.itxBinIds.length;\r\n return count;\r\n }\r\n\r\n constructor(public eventsPerPage: number) {\r\n this.locationIds = [];\r\n this.itxBinIds = [];\r\n this.eventTypes = [];\r\n this.currentPage = 1;\r\n }\r\n}","import { ItxStorageSortingEnum } from './../enums/itx-bin.enum';\r\nimport { ItxReportsReadingUnitEnum, ReportFormatEnum } from \"../enums\";\r\n\r\nexport class ItxTelemetryDataResponse {\r\n public reportDataTelemetry: ItxTelemetry[];\r\n public radarId:number;\r\n}\r\n\r\nexport class ItxTelemetry {\r\n public timestamp: number;\r\n public value: number;\r\n}\r\n\r\nexport class ReportDataFilterPost {\r\n public dateFrom: number;\r\n public dateTo: number;\r\n public locationId: number;\r\n public itxBinId: number;\r\n public radarIds: number[];\r\n public reportsReadingUnit: ItxReportsReadingUnitEnum;\r\n public reportsRadarReadingUnit: ItxReportsReadingUnitEnum;\r\n public unit: number;\r\n}\r\n\r\nexport class ReportHistoricalDataResponse {\r\n reportData: ItxTelemetryDataResponse[];\r\n isAverageValues: boolean;\r\n}\r\n\r\nexport class ReportDataFileFilterPost extends ReportDataFilterPost {\r\n public reportFormat: ReportFormatEnum;\r\n public timeZone: string;\r\n}\r\n\r\nexport class ReportLiveDataFilterPost {\r\n public itxBinIds: number[];\r\n public itxBinSortParameter: ItxStorageSortingEnum;\r\n public reportFormat: ReportFormatEnum;\r\n public timeZone: string;\r\n}\r\n","export class KtxWeeksRangeModel {\r\n id: number;\r\n weekFrom: Date;\r\n weekTo: Date;\r\n\r\n constructor(id: number, weekFrom: Date, weekTo: Date) {\r\n this.id = id;\r\n this.weekFrom = weekFrom;\r\n this.weekTo = weekTo;\r\n }\r\n}","import { CalendarDefaultValues } from '../constants';\r\nimport { KtxEventTypeEnum } from '../enums';\r\n\r\nexport class KtxEventViewModel {\r\n public eventId: number;\r\n public title: string;\r\n public body: string;\r\n public firstNotificationTimeStamp: number;\r\n public lastNotificationTimeStamp: number;\r\n public ktxAlertType: KtxEventTypeEnum;\r\n public binId: number;\r\n public locationId: number;\r\n}\r\n\r\nexport class KtxEventGetModel {\r\n public eventId: number;\r\n public title: string;\r\n public body: string;\r\n public locationId: number;\r\n public firstNotificationTimeStamp: number;\r\n public lastNotificationTimeStamp: number;\r\n public isAlarm: boolean;\r\n public ktxOptions: KtxOptions;\r\n\r\n public static toViewModel(getModel: KtxEventGetModel): KtxEventViewModel {\r\n const viewModel = new KtxEventViewModel();\r\n const { defaultOneSecondMilliseconds } = CalendarDefaultValues;\r\n\r\n const correctBody = KtxEventGetModel.getCorrectBody(\r\n getModel.body,\r\n getModel.ktxOptions.nextReadTimeStamp * defaultOneSecondMilliseconds,\r\n getModel.isAlarm\r\n );\r\n\r\n viewModel.eventId = getModel.eventId;\r\n viewModel.title = getModel.title;\r\n viewModel.body = correctBody;\r\n viewModel.locationId = getModel.locationId;\r\n if (getModel.ktxOptions) {\r\n viewModel.binId = getModel.ktxOptions.binId;\r\n }\r\n viewModel.firstNotificationTimeStamp =\r\n getModel.firstNotificationTimeStamp * defaultOneSecondMilliseconds;\r\n\r\n viewModel.lastNotificationTimeStamp =\r\n getModel.lastNotificationTimeStamp * defaultOneSecondMilliseconds;\r\n\r\n viewModel.ktxAlertType = getModel.isAlarm\r\n ? KtxEventTypeEnum.Alarm\r\n : KtxEventTypeEnum.Info;\r\n\r\n return viewModel;\r\n }\r\n\r\n private static getCorrectBody(\r\n body: string,\r\n nextReadTimeStamp: number,\r\n isAlarm: boolean\r\n ) {\r\n if (!isAlarm && body.startsWith('A new reading is available for')) {\r\n const localTime = new Date(nextReadTimeStamp).toLocaleString();\r\n return `${body} ${localTime}`;\r\n }\r\n\r\n return body;\r\n }\r\n}\r\n\r\nexport class KtxOptions {\r\n public binName: string;\r\n public unitName: string;\r\n public locationName: string;\r\n public nextReadTimeStamp: number;\r\n public binId: number;\r\n}\r\n\r\nexport class KtxEventsRequestModel {\r\n public events: Array;\r\n public totalCount: number;\r\n public itemsPerPage: number;\r\n}\r\n\r\nexport class KtxEventByPeriodPostModel {\r\n public locationIds: Array;\r\n public binIds: Array;\r\n public dateTimeFrom: number;\r\n public dateTimeTo: number;\r\n public currentPage: number;\r\n public eventTypes: Array;\r\n public isWeb: boolean=true;\r\n\r\n public get countSelectedFilter() {\r\n let count = 0;\r\n count += this.eventTypes.length;\r\n count += this.locationIds.length;\r\n count += this.binIds.length;\r\n return count;\r\n }\r\n\r\n constructor(public eventsPerPage: number) {\r\n this.locationIds = [];\r\n this.binIds = [];\r\n this.eventTypes = [];\r\n this.currentPage = 1;\r\n }\r\n}\r\n","import { HistoricalBinSnapshots } from \"./telemetry-snapshot.model\";\r\n\r\nexport class KtxReportHistoricalDataFilterForPeriod {\r\n public locationId: number;\r\n public binIds: number[];\r\n public timestampFrom: number;\r\n public timestampTo: number;\r\n public temperatureMeasureType: number;\r\n public timeZone: string;\r\n public historySnapshots: HistoricalBinSnapshots[]\r\n}\r\n\r\nexport class KtxReportFormat {\r\n label: string;\r\n value: number;\r\n}\r\n\r\nexport class KtxReportCurrentDataFilter {\r\n public locationId: number;\r\n public binIds: number[];\r\n public temperatureMeasureType: number;\r\n public timeZone: string;\r\n}","export * from './location.model';\r\nexport * from './location-btx.model';\r\nexport * from './location-btx-ktx-itx.model';\r\nexport * from './location-ktx.model';\r\nexport * from './location-itx.model';","import { LocationBtxGetModel } from \"./location-btx.model\";\r\nimport { LocationItxGetModel } from \"./location-itx.model\";\r\nimport { LocationKtxGetModel } from \"./location-ktx.model\";\r\n\r\nexport class BtxKtxItxLocationsViewModel {\r\n public btxLocations: LocationBtxGetModel[];\r\n public ktxLocations: LocationKtxGetModel[];\r\n public itxLocations: LocationItxGetModel[];\r\n}\r\n\r\nexport class BtxKtxItxLocationsGetModel {\r\n public btxLocations: LocationBtxGetModel[];\r\n public ktxLocations: LocationKtxGetModel[];\r\n public itxLocations: LocationItxGetModel[];\r\n\r\n public static toViewModel(getModel: BtxKtxItxLocationsGetModel) {\r\n const viewModel = new BtxKtxItxLocationsViewModel();\r\n viewModel.btxLocations = getModel.btxLocations;\r\n viewModel.ktxLocations = getModel.ktxLocations;\r\n viewModel.itxLocations = getModel.itxLocations;\r\n\r\n return viewModel;\r\n }\r\n}","import { TreeNode } from 'primeng';\r\nimport { PLCDeviceEnum } from './../../enums/equipment.enum';\r\nimport { AcquisitionRateEnum } from \"../../enums\";\r\nimport { ModelsTypes } from \"../../constants\";\r\nimport { EquipmentViewModel, EquipmentGetModel, EquipmentPostModel, BtxLiveDataEquipmentViewModel, BtxLiveDataEquipmentGetModel } from \"../equipment-btx.model\";\r\nimport { BTXLocationConfiguration, BtxLocationEquipmentConfiguration } from './location.model';\r\n\r\nexport class LocationBtxViewModel {\r\n public deviceId: string;\r\n public id: number;\r\n public locationName: string;\r\n public companyName: string;\r\n\r\n //Device fields\r\n public btxIp: string;\r\n public btxPort: number = 502;\r\n public deviceIp: string;\r\n public deviceMacAddress: string;\r\n public acquisitionRate: AcquisitionRateEnum;\r\n public batteryAlarmAddress: number;\r\n public batteryAlarmAddressBit: number;\r\n public suppressorAlarmAddress: number;\r\n public suppressorAlarmAddressBit: number;\r\n public communicationAlarmAddress: number;\r\n public communicationAlarmAddressBit: number;\r\n public isInitialized: boolean;\r\n public isConnectionFileUpdated: boolean;\r\n public plcDeviceConnection: PLCDeviceEnum;\r\n\r\n //User behavior lock fields\r\n public isSomeoneUpdateLocation: boolean;\r\n public isDeviceInInitialization: boolean;\r\n\r\n //Infrastructure fields\r\n modelType = ModelsTypes.locationBtxViewModel;\r\n}\r\n\r\nexport class LocationBtxGetModel {\r\n public deviceId: string;\r\n public locationId: number;\r\n public locationName: string;\r\n public companyName: string;\r\n\r\n // Device fields\r\n public btxIp: string;\r\n public btxPort: number;\r\n public deviceIp: string;\r\n public deviceMacAddress: string;\r\n public acquisitionRate: AcquisitionRateEnum;\r\n public batteryAlarmAddress: number;\r\n public batteryAlarmAddressBit: number;\r\n public suppressorAlarmAddress: number;\r\n public suppressorAlarmAddressBit: number;\r\n public communicationAlarmAddress: number;\r\n public communicationAlarmAddressBit: number;\r\n public isInitialized: boolean;\r\n public isConnectionFileUpdated: boolean;\r\n public plcDeviceConnection: PLCDeviceEnum;\r\n\r\n public static toViewModel(getModel: LocationBtxGetModel): LocationBtxViewModel {\r\n const viewModel = new LocationBtxViewModel();\r\n viewModel.deviceId = getModel.deviceId;\r\n viewModel.id = getModel.locationId;\r\n viewModel.locationName = getModel.locationName;\r\n viewModel.companyName = getModel.companyName;\r\n\r\n viewModel.btxIp = getModel.btxIp;\r\n viewModel.btxPort = getModel.btxPort;\r\n viewModel.deviceIp = getModel.deviceIp;\r\n viewModel.deviceMacAddress = getModel.deviceMacAddress;\r\n viewModel.acquisitionRate = getModel.acquisitionRate;\r\n viewModel.batteryAlarmAddress = getModel.batteryAlarmAddress;\r\n viewModel.batteryAlarmAddressBit = getModel.batteryAlarmAddressBit;\r\n viewModel.suppressorAlarmAddress = getModel.suppressorAlarmAddress;\r\n viewModel.suppressorAlarmAddressBit = getModel.suppressorAlarmAddressBit;\r\n viewModel.communicationAlarmAddress = getModel.communicationAlarmAddress;\r\n viewModel.communicationAlarmAddressBit = getModel.communicationAlarmAddressBit;\r\n viewModel.isInitialized = getModel.isInitialized;\r\n viewModel.isConnectionFileUpdated = getModel.isConnectionFileUpdated;\r\n viewModel.plcDeviceConnection = getModel.plcDeviceConnection;\r\n\r\n return viewModel;\r\n }\r\n}\r\n\r\nexport class LocationBtxPostModel {\r\n public deviceId: string;\r\n public id: number;\r\n\r\n //Device fields\r\n public btxIp: string;\r\n public btxPort: number;\r\n public deviceIp: string;\r\n public deviceMacAddress: string;\r\n public acquisitionRate: AcquisitionRateEnum;\r\n public batteryAlarmAddress: number;\r\n public batteryAlarmAddressBit: number;\r\n public suppressorAlarmAddress: number;\r\n public suppressorAlarmAddressBit: number;\r\n public communicationAlarmAddress: number;\r\n public communicationAlarmAddressBit: number;\r\n public plcDeviceConnection: PLCDeviceEnum;\r\n\r\n constructor(viewModel: LocationBtxViewModel) {\r\n this.deviceId = viewModel.deviceId;\r\n this.id = viewModel.id;\r\n\r\n this.btxIp = viewModel.btxIp;\r\n this.btxPort = Number(viewModel.btxPort);//field is string after input form \r\n this.deviceIp = viewModel.deviceIp;\r\n this.deviceMacAddress = viewModel.deviceMacAddress;\r\n this.acquisitionRate = viewModel.acquisitionRate;\r\n this.batteryAlarmAddress = Number(viewModel.batteryAlarmAddress);//field is string after input form\r\n this.batteryAlarmAddressBit = viewModel.batteryAlarmAddressBit;\r\n this.suppressorAlarmAddress = Number(viewModel.suppressorAlarmAddress);//field is string after input form\r\n this.suppressorAlarmAddressBit = viewModel.suppressorAlarmAddressBit;\r\n this.communicationAlarmAddress = Number(viewModel.communicationAlarmAddress);//field is string after input form\r\n this.communicationAlarmAddressBit = viewModel.communicationAlarmAddressBit;\r\n this.plcDeviceConnection = viewModel.plcDeviceConnection;\r\n }\r\n}\r\n\r\nexport class LocationBtxEquipmentViewModel extends LocationBtxViewModel {\r\n equipments: EquipmentViewModel[];\r\n\r\n public static toViewModel(location: LocationBtxViewModel, equipments: BtxLocationEquipmentConfiguration[]) : LocationBtxEquipmentViewModel {\r\n const viewModel = new LocationBtxEquipmentViewModel;\r\n viewModel.id = location.id;\r\n viewModel.locationName = location.locationName;\r\n viewModel.batteryAlarmAddress = location.batteryAlarmAddress;\r\n viewModel.batteryAlarmAddressBit = location.batteryAlarmAddressBit;\r\n viewModel.suppressorAlarmAddress = location.suppressorAlarmAddress;\r\n viewModel.suppressorAlarmAddressBit = location.suppressorAlarmAddressBit;\r\n viewModel.communicationAlarmAddress = location.communicationAlarmAddress;\r\n viewModel.communicationAlarmAddressBit = location.communicationAlarmAddressBit;\r\n viewModel.equipments = equipments.map(equipment => EquipmentViewModel.toViewModel(equipment));\r\n\r\n return viewModel;\r\n }\r\n}\r\n\r\nexport class LocationBtxEquipmentGetModel {\r\n deviceId: string;\r\n id: number;\r\n equipments: EquipmentGetModel[];\r\n\r\n public static toViewModel(getModel: LocationBtxEquipmentGetModel): LocationBtxEquipmentViewModel {\r\n const viewModel = new LocationBtxEquipmentViewModel();\r\n viewModel.deviceId = getModel.deviceId;\r\n viewModel.id = getModel.id;\r\n\r\n if (getModel.equipments) {\r\n viewModel.equipments = getModel.equipments.map(eq => EquipmentGetModel.toViewModel(eq));\r\n }\r\n\r\n return viewModel;\r\n }\r\n}\r\n\r\nexport class LocationBtxEquipmentPostModel {\r\n deviceId: string;\r\n Id: number;\r\n equipments: EquipmentPostModel[];\r\n\r\n constructor(viewModel: LocationBtxEquipmentViewModel) {\r\n this.deviceId = viewModel.deviceId;\r\n this.Id = viewModel.id;\r\n this.equipments = viewModel.equipments.map(eq => new EquipmentPostModel(eq));\r\n }\r\n}\r\n\r\nexport class BtxLiveDataLocationViewModel {\r\n id: number;\r\n name: string;\r\n equipments: BtxLiveDataEquipmentViewModel[];\r\n\r\n public static toReportLocationTreeNode(locationViewModel: BtxLiveDataLocationViewModel): TreeNode {\r\n const locationTreeNode: TreeNode = {\r\n label: locationViewModel.name,\r\n data: locationViewModel.id,\r\n selectable: true,\r\n key: locationViewModel.id.toString(),\r\n children: locationViewModel.equipments.map(BtxLiveDataEquipmentViewModel.toReportEquipmentTreeNode)\r\n };\r\n\r\n return locationTreeNode;\r\n }\r\n}\r\n\r\nexport class BtxLiveDataLocationGetModel {\r\n id: number;\r\n name: string;\r\n equipments: BtxLiveDataEquipmentGetModel[];\r\n\r\n public static toViewModel(getModel: BtxLiveDataLocationGetModel): BtxLiveDataLocationViewModel {\r\n const viewModel = new BtxLiveDataLocationViewModel();\r\n\r\n viewModel.id = getModel.id;\r\n viewModel.name = getModel.name;\r\n\r\n if (getModel.equipments) {\r\n viewModel.equipments = getModel.equipments.map(eq => BtxLiveDataEquipmentGetModel.toViewModel(eq));\r\n }\r\n\r\n return viewModel;\r\n }\r\n}\r\n\r\nexport class BtxAccordionLocationItemViewModel extends BtxLiveDataLocationViewModel {\r\n isActive: boolean;\r\n}\r\n","\r\nimport { ModelsTypes } from \"../../constants\";\r\nimport { FullnessRangeViewModel } from \"src/app/main/models/fullness-range.model\";\r\nimport { ItxBinTypeEnum } from \"../../enums\";\r\n\r\nexport class LocationItxViewModel {\r\n public deviceId: string;\r\n public id: number;\r\n public locationName: string;\r\n public companyName: string;\r\n public port: number;\r\n public ipAddress: string;\r\n public itxBins: LocationItxBinNameModel[];\r\n public fullnessRanges: FullnessRangeViewModel[];\r\n\r\n //Device fields\r\n public isInitialized: boolean;\r\n public countOfBins: number;\r\n public acquisitionRate: number;\r\n\r\n //User behavior lock fields\r\n public isSomeoneUpdateLocation: boolean;\r\n\r\n //Infrastructure fields\r\n modelType = ModelsTypes.LocationItxViewModel;\r\n canDeviceBeInitialized: boolean;\r\n\r\n isSomeoneInViewStorages:boolean;\r\n isDeviceInInitialization: boolean;\r\n}\r\n\r\nexport class LocationItxBinNameModel {\r\n public id: number;\r\n public name: string;\r\n}\r\n\r\nexport class LocationItxGetModel {\r\n public deviceId: string;\r\n public id: number;\r\n public locationName: string;\r\n public companyName: string;\r\n public itxBins: LocationItxBinNameModel[];\r\n //Device fields\r\n public isInitialized: boolean;\r\n public countOfBins: number;\r\n public acquisitionRate: number;\r\n public port: number;\r\n public ipAddress: string;\r\n\r\n public static toViewModel(getModel: LocationItxGetModel): LocationItxViewModel {\r\n const viewModel = new LocationItxViewModel();\r\n viewModel.deviceId = getModel.deviceId;\r\n viewModel.id = getModel.id;\r\n viewModel.locationName = getModel.locationName;\r\n viewModel.companyName = getModel.companyName;\r\n viewModel.countOfBins = getModel.countOfBins;\r\n viewModel.acquisitionRate = getModel.acquisitionRate;\r\n viewModel.itxBins = getModel.itxBins;\r\n viewModel.port = getModel.port;\r\n viewModel.ipAddress = getModel.ipAddress;\r\n viewModel.isInitialized=getModel.isInitialized;\r\n\r\n return viewModel;\r\n }\r\n}\r\n\r\nexport class LocationItxPostModel {\r\n public locationId: number;\r\n\r\n public ipAddress: string;\r\n public port: number;\r\n public acquisitionRate: number;\r\n\r\n constructor(location: LocationItxViewModel) {\r\n this.locationId = location.id;\r\n this.port = Number(location.port);\r\n this.ipAddress = location.ipAddress;\r\n this.acquisitionRate = Number(location.acquisitionRate);\r\n }\r\n}\r\n\r\nexport class ItxLocationNameModel {\r\n id: number;\r\n name: string;\r\n bins: Array\r\n}\r\n\r\nexport class ItxBinNameModel {\r\n id: number;\r\n name: string;\r\n binType: ItxBinTypeEnum;\r\n material: string;\r\n}","import { ReadingScheduleType } from '../../enums';\r\nimport { ModelsTypes } from '../../constants';\r\nimport { CommonFunctions, ConvertDataFunctions } from '../../../common';\r\nimport {\r\n BinViewModel,\r\n BinGetModel,\r\n AddEditBinSchemePostModel,\r\n BinSchemeViewModel,\r\n} from '../bin.model';\r\nimport {\r\n TemperatureRangeViewModel,\r\n AlarmViewModel,\r\n} from '../temperature-range.model';\r\nimport { TreeNode } from 'primeng';\r\nimport { TelemetryViewModel } from '../telemetry-snapshot.model';\r\nimport { SensorKtxSchemeViewModel } from '../sensors';\r\n\r\nexport class LocationKtxViewModel {\r\n public deviceId: string;\r\n public id: number;\r\n public locationName: string;\r\n public companyName: string;\r\n\r\n //Device fields\r\n public isConnectionFileUpdated: boolean;\r\n public isInitialized: boolean;\r\n public readingScheduleType: ReadingScheduleType;\r\n public scheduleTime: string;\r\n public countOfBins: number;\r\n public displaySchemes: boolean;\r\n public canDeviceBeInitialized: boolean;\r\n public temperatureRanges: TemperatureRangeViewModel[];\r\n public alarm: AlarmViewModel;\r\n\r\n //User behavior lock fields\r\n public isSomeoneUpdateLocation: boolean;\r\n public isDeviceInInitialization: boolean;\r\n\r\n //Infrastructure fields\r\n modelType = ModelsTypes.locationKtxViewModel;\r\n}\r\n\r\nexport class LocationKtxGetModel {\r\n public deviceId: string;\r\n public id: number;\r\n public locationName: string;\r\n public companyName: string;\r\n\r\n // Device fields\r\n public isInitialized: boolean;\r\n public isConnectionFileUpdated: boolean;\r\n public readingScheduleType: ReadingScheduleType;\r\n public scheduleTime: number;\r\n public countOfBins: number;\r\n public displaySchemes: boolean;\r\n public canDeviceBeInitialized: boolean;\r\n\r\n public static toViewModel(\r\n getModel: LocationKtxGetModel\r\n ): LocationKtxViewModel {\r\n const viewModel = new LocationKtxViewModel();\r\n viewModel.deviceId = getModel.deviceId;\r\n viewModel.id = getModel.id;\r\n viewModel.locationName = getModel.locationName;\r\n viewModel.companyName = getModel.companyName;\r\n viewModel.isInitialized = getModel.isInitialized;\r\n viewModel.isConnectionFileUpdated = getModel.isConnectionFileUpdated;\r\n viewModel.displaySchemes = getModel.displaySchemes;\r\n viewModel.canDeviceBeInitialized = getModel.canDeviceBeInitialized;\r\n viewModel.readingScheduleType = getModel.readingScheduleType;\r\n viewModel.scheduleTime =\r\n getModel.readingScheduleType === ReadingScheduleType.None\r\n ? ConvertDataFunctions.secondsToString(getModel.scheduleTime, true)\r\n : ConvertDataFunctions.secondsToString(getModel.scheduleTime);\r\n\r\n viewModel.countOfBins = getModel.countOfBins;\r\n\r\n return viewModel;\r\n }\r\n}\r\n\r\nexport class LocationKtxPostModel {\r\n public locationId: number;\r\n public readingScheduleType: ReadingScheduleType;\r\n public scheduleTime: number;\r\n\r\n constructor(location: LocationKtxViewModel) {\r\n this.locationId = location.id;\r\n this.readingScheduleType = location.readingScheduleType;\r\n this.scheduleTime = ConvertDataFunctions.stringToSeconds(\r\n location.scheduleTime\r\n );\r\n }\r\n}\r\n\r\nexport class LocationKtxSchemeViewModel {\r\n public locationId: number;\r\n public binSchemes: BinSchemeViewModel[];\r\n public wasDeviceInitialized: boolean;\r\n public height: number;\r\n public width: number;\r\n public depth: number;\r\n public locationName: string;\r\n public displayScheme: boolean;\r\n public forLocationView: boolean;\r\n\r\n public temperatureRanges: TemperatureRangeViewModel[];\r\n public alarm: AlarmViewModel;\r\n //Infrastructure fields\r\n public modelType = ModelsTypes.locationKtxSchemeViewModel;\r\n\r\n public static toBinsTreeNode(\r\n locationScheme: LocationKtxSchemeViewModel\r\n ): TreeNode[] {\r\n if (!locationScheme) {\r\n return;\r\n }\r\n\r\n const { binSchemes } = locationScheme;\r\n const locationBinsNodes =\r\n binSchemes &&\r\n binSchemes\r\n .map((binScheme) => {\r\n let isSelectable = true;\r\n\r\n const locationBinsNode: TreeNode = {\r\n label: binScheme.name,\r\n data: binScheme.id,\r\n };\r\n\r\n if (binScheme.bins) {\r\n locationBinsNode.children = binScheme.bins\r\n .filter((b) => !b.isDecorBin)\r\n .map((bin) => {\r\n const locationNode: TreeNode = {\r\n label: bin.name,\r\n data: bin.id,\r\n selectable: true,\r\n parent: locationBinsNode,\r\n };\r\n\r\n return locationNode;\r\n })\r\n .sort(CommonFunctions.compareTreeNodeLabels);\r\n\r\n isSelectable = false;\r\n }\r\n\r\n locationBinsNode.selectable = isSelectable;\r\n\r\n return locationBinsNode;\r\n })\r\n .sort(CommonFunctions.compareTreeNodeLabels);\r\n\r\n return locationBinsNodes;\r\n }\r\n\r\n public static toReportsBinsTreeNode(\r\n locationScheme: LocationKtxSchemeViewModel\r\n ): TreeNode[] {\r\n if (!locationScheme) {\r\n return;\r\n }\r\n const { binSchemes } = locationScheme;\r\n\r\n const locationBinsNodes =\r\n binSchemes &&\r\n binSchemes\r\n .map((binScheme) => {\r\n const locationBinsNode: TreeNode = {\r\n label: binScheme.name,\r\n data: binScheme.id,\r\n selectable: true,\r\n key: binScheme.id.toString(),\r\n };\r\n\r\n if (binScheme.bins) {\r\n locationBinsNode.children = binScheme.bins\r\n .filter((b) => !b.isDecorBin)\r\n .map((bin) => {\r\n const locationNode: TreeNode = {\r\n label: bin.name,\r\n data: bin.id,\r\n selectable: true,\r\n key: bin.id.toString(),\r\n };\r\n\r\n return locationNode;\r\n })\r\n .sort(CommonFunctions.compareTreeNodeLabels);\r\n }\r\n\r\n return locationBinsNode;\r\n })\r\n .sort(CommonFunctions.compareTreeNodeLabels);\r\n\r\n return locationBinsNodes;\r\n }\r\n}\r\n\r\nexport class LocationKtxSchemeGetModel {\r\n public locationId: number;\r\n public binSchemes: BinViewModel[];\r\n public wasDeviceInitialized: boolean;\r\n public height: number;\r\n public width: number;\r\n public depth: number;\r\n public locationName: string;\r\n public displayScheme: boolean;\r\n public forLocationView: boolean;\r\n\r\n public temperatureRanges: TemperatureRangeViewModel[];\r\n public alarm: AlarmViewModel;\r\n\r\n //Infrastructure fields\r\n public modelType = ModelsTypes.locationKtxSchemeViewModel;\r\n\r\n public static toViewModel(\r\n getModel: LocationKtxSchemeGetModel\r\n ): LocationKtxSchemeViewModel {\r\n const viewModel = new LocationKtxSchemeViewModel();\r\n viewModel.locationId = getModel.locationId;\r\n viewModel.binSchemes = getModel.binSchemes.map((b) =>\r\n BinViewModel.toSchemeViewModel(b)\r\n );\r\n viewModel.wasDeviceInitialized = getModel.wasDeviceInitialized;\r\n viewModel.height = getModel.height;\r\n viewModel.width = getModel.width;\r\n viewModel.depth = getModel.depth;\r\n viewModel.locationName = getModel.locationName;\r\n viewModel.displayScheme = getModel.displayScheme;\r\n viewModel.forLocationView = getModel.forLocationView;\r\n viewModel.alarm = getModel.alarm;\r\n viewModel.temperatureRanges = getModel.temperatureRanges;\r\n\r\n return viewModel;\r\n }\r\n}\r\n\r\nexport class AddEditLocationKtxSchemeViewModel {\r\n public locationAddress: string;\r\n public locationName: string;\r\n public displayScheme: boolean;\r\n public height: number;\r\n public width: number;\r\n public depth: number;\r\n public bins: BinViewModel[];\r\n}\r\n\r\nexport class AddEditLocationKtxSchemeGetModel {\r\n public locationAddress: string;\r\n public locationName: string;\r\n public displayScheme: boolean;\r\n public height: number;\r\n public width: number;\r\n public depth: number;\r\n public bins: BinGetModel[];\r\n\r\n public static toViewModel(\r\n getModel: AddEditLocationKtxSchemeGetModel\r\n ): AddEditLocationKtxSchemeViewModel {\r\n const viewModel = new AddEditLocationKtxSchemeViewModel();\r\n viewModel.locationAddress = getModel.locationAddress;\r\n viewModel.locationName = getModel.locationName;\r\n viewModel.displayScheme = getModel.displayScheme;\r\n viewModel.height = getModel.height;\r\n viewModel.width = getModel.width;\r\n viewModel.depth = getModel.depth;\r\n\r\n if (getModel.bins) {\r\n viewModel.bins = getModel.bins.map((b) => BinGetModel.toViewModel(b));\r\n }\r\n\r\n return viewModel;\r\n }\r\n}\r\n\r\nexport class AddEditLocationKtxSchemePostModel {\r\n public locationId: number;\r\n public locationAddress: string;\r\n public locationName: string;\r\n public displayScheme: boolean;\r\n public height: number;\r\n public width: number;\r\n public depth: number;\r\n public bins: AddEditBinSchemePostModel[];\r\n\r\n constructor(\r\n locationId: number,\r\n locationScheme: AddEditLocationKtxSchemeViewModel\r\n ) {\r\n this.locationId = locationId;\r\n this.locationAddress = locationScheme.locationAddress;\r\n this.locationName = locationScheme.locationName;\r\n this.displayScheme = locationScheme.displayScheme;\r\n this.height = locationScheme.height;\r\n this.width = locationScheme.width;\r\n this.depth = locationScheme.depth;\r\n\r\n if (locationScheme.bins) {\r\n this.bins = locationScheme.bins.map(\r\n (b) => new AddEditBinSchemePostModel(b)\r\n );\r\n }\r\n }\r\n}\r\n\r\nexport class AddEditLocationKtxSchemeResultModel {\r\n public isNeedToInitializeDevice: boolean;\r\n public isBinsOrCablesWereAddedOrRemoved: boolean;\r\n public locationName: string;\r\n public locationAddress: string;\r\n public displayScheme: boolean;\r\n public countOfBins: number;\r\n public canDeviceBeInitialized: boolean;\r\n}\r\n","import { TreeNode } from 'primeng';\r\nimport { BinNameGetModel, BinNameViewModel } from '../bin.model';\r\nimport { ModelsTypes } from '../../constants';\r\nimport { BtxNotificationFilterNodeTypeEnum, EquipmentSideEnum, EquipmentSubTypeEnum, EquipmentTypeEnum, KtxNotificationFilterNodeTypeEnum, SensorPositionEnum, SensorTypeEnum } from '../../enums';\r\nimport { NotificationFilterTreeNodeData } from '../notifications.model';\r\nimport { CommonFunctions } from '../../../common';\r\nimport { EquipmentNameGetModel, EquipmentNameViewModel } from '../equipment-btx.model';\r\nimport { ModbussAddress } from '../../components';\r\n\r\nexport class LocationViewModel {\r\n public id: number;\r\n public name: string;\r\n public companyId: number;\r\n public companyName: string;\r\n public serviceEmail: string;\r\n public servicePhone: string;\r\n public emergencyPhone: string;\r\n public sitePhone: string;\r\n public siteEmail: string;\r\n public address: string;\r\n public hasActiveDevice: boolean;\r\n\r\n //User behavior lock fields\r\n public isSomeoneUpdateLocation: boolean;\r\n public isDeviceInInitialization: boolean;\r\n\r\n //Infrastructure fields\r\n modelType = ModelsTypes.locationViewModel;\r\n}\r\n\r\nexport class LocationGetModel {\r\n public id: number;\r\n public name: string;\r\n public companyId: number;\r\n public companyName: string;\r\n public serviceEmail: string;\r\n public servicePhone: string;\r\n public emergencyPhone: string;\r\n public sitePhone: string;\r\n public siteEmail: string;\r\n public address: string;\r\n public hasActiveDevice: boolean;\r\n\r\n public static toViewModel(getModel: LocationGetModel): LocationViewModel {\r\n const viewModel = new LocationViewModel();\r\n viewModel.id = getModel.id;\r\n viewModel.name = getModel.name;\r\n viewModel.companyId = getModel.companyId;\r\n viewModel.companyName = getModel.companyName;\r\n viewModel.serviceEmail = getModel.serviceEmail;\r\n viewModel.servicePhone = getModel.servicePhone;\r\n viewModel.emergencyPhone = getModel.emergencyPhone;\r\n viewModel.sitePhone = getModel.sitePhone;\r\n viewModel.siteEmail = getModel.siteEmail;\r\n viewModel.address = getModel.address;\r\n viewModel.hasActiveDevice = getModel.hasActiveDevice;\r\n\r\n return viewModel;\r\n }\r\n}\r\n\r\nexport class LocationPostModel {\r\n public id: number;\r\n public name: string;\r\n public companyId: number;\r\n public companyName: string;\r\n public serviceEmail: string;\r\n public servicePhone: string;\r\n public emergencyPhone: string;\r\n public sitePhone: string;\r\n public siteEmail: string;\r\n public address: string;\r\n public hasActiveDevice: boolean;\r\n\r\n constructor(viewModel: LocationViewModel) {\r\n this.id = viewModel.id;\r\n this.name = viewModel.name;\r\n this.companyId = viewModel.companyId;\r\n this.serviceEmail = viewModel.serviceEmail;\r\n this.servicePhone = viewModel.servicePhone;\r\n this.emergencyPhone = viewModel.emergencyPhone;\r\n this.sitePhone = viewModel.sitePhone;\r\n this.siteEmail = viewModel.siteEmail;\r\n this.address = viewModel.address;\r\n this.hasActiveDevice = viewModel.hasActiveDevice;\r\n }\r\n}\r\n\r\nexport class LocationNameViewModel {\r\n id: number;\r\n name: string;\r\n bins: BinNameViewModel[];\r\n equipments: EquipmentNameViewModel[];\r\n\r\n static toKtxTreeNode(location: LocationNameViewModel): TreeNode {\r\n const data: NotificationFilterTreeNodeData = {\r\n id: location.id,\r\n nodeType: KtxNotificationFilterNodeTypeEnum.Location,\r\n locationId: location.id,\r\n };\r\n\r\n const locationWithBinNodes: TreeNode = {\r\n label: location.name,\r\n data,\r\n selectable: true,\r\n key: data.nodeType + '_' + location.id,\r\n children: location.bins && location.bins\r\n .map(x => BinNameViewModel.toKtxTreeNode(x, location.id))\r\n .sort(CommonFunctions.compareTreeNodeLabels)\r\n };\r\n\r\n return locationWithBinNodes;\r\n }\r\n\r\n static toBtxTreeNode(location: LocationNameViewModel): TreeNode {\r\n const data: NotificationFilterTreeNodeData = {\r\n id: location.id,\r\n nodeType: BtxNotificationFilterNodeTypeEnum.Location,\r\n locationId: location.id,\r\n };\r\n\r\n const locationWithEquipmentNodes: TreeNode = {\r\n label: location.name,\r\n data,\r\n selectable: true,\r\n children: location.equipments && location.equipments\r\n .map(x => EquipmentNameViewModel.toBtxTreeNode(x, location.id))\r\n .sort((a, b) => a.label.localeCompare(b.label)),\r\n };\r\n\r\n return locationWithEquipmentNodes;\r\n }\r\n}\r\n\r\nexport class LocationNameGetModel {\r\n id: number;\r\n name: string;\r\n bins: BinNameGetModel[];\r\n equipments: EquipmentNameGetModel[];\r\n\r\n public static toViewModel(getModel: LocationNameGetModel): LocationNameViewModel {\r\n const viewModel = new LocationNameViewModel();\r\n\r\n viewModel.id = getModel.id;\r\n viewModel.name = getModel.name;\r\n\r\n if (getModel.bins) {\r\n viewModel.bins = getModel.bins.map(BinNameGetModel.toViewModel);\r\n }\r\n\r\n if (getModel.equipments) {\r\n viewModel.equipments = getModel.equipments.map(EquipmentNameGetModel.toViewModel);\r\n }\r\n\r\n return viewModel;\r\n }\r\n}\r\n\r\nexport class BTXLocationConfiguration {\r\n locationId: number;\r\n isAnyEquipmentAlreadyExist: boolean;\r\n deviceId: string;\r\n equipments: BtxLocationEquipmentConfiguration[];\r\n}\r\n\r\nexport class BtxLocationEquipmentConfiguration {\r\n index: number;\r\n type: EquipmentTypeEnum;\r\n subType: EquipmentSubTypeEnum;\r\n name: string;\r\n totalRunHoursFirstRegisterAddress: number;\r\n totalRunHoursSecondRegisterAddress: number;\r\n timeTillMaintenanceAddress: number;\r\n shutDownAlarmAddress: number;\r\n shutDownAlarmAddressBit: number;\r\n maintenanceRequiredWarningAddress: number;\r\n maintenanceRequiredWarningAddressBit: number;\r\n maintenaceCountDown: number;\r\n totalRunHours: number;\r\n validation: ModbussAddress[];\r\n isAnyValidationIssuesActive: boolean;\r\n sensors: BtxLocationSensorConfiguration[];\r\n}\r\n\r\nexport class BtxLocationSensorConfiguration {\r\n index: number;\r\n type: SensorTypeEnum;\r\n position: SensorPositionEnum;\r\n side: EquipmentSideEnum;\r\n modbusAddress: number;\r\n warningAddress: number;\r\n warningAddressBit: number;\r\n alarmAddress: number;\r\n alarmAddressBit: number;\r\n rateOfChangeWarningAddress: number;\r\n rateOfChangeWarningAddressBit: number;\r\n rateOfChangeAlarmAddress: number;\r\n rateOfChangeAlarmAddressBit: number;\r\n validation: ModbussAddress[];\r\n}","import { UserRoleEnum } from '../../common';\r\nimport { ProjectEnum } from '../enums';\r\n\r\nexport class MenuItem {\r\n route: string;\r\n label: string;\r\n icon?: string;\r\n isDisabled?: boolean;\r\n isExpanded?: boolean;\r\n children?: Array;\r\n project?: ProjectEnum;\r\n}\r\n\r\nexport class NavigationUser {\r\n role: UserRoleEnum;\r\n projects: number | null;\r\n}\r\n\r\nexport class NavigationItemInfo {\r\n label: string;\r\n icon?: string;\r\n childrenRoutes?: Array;\r\n dependentRoutes?: Array;\r\n}\r\n\r\nexport class RoleRouteInfo {\r\n route: string;\r\n project?: ProjectEnum;\r\n isDisabled?: boolean;\r\n}\r\n\r\nexport interface RouteToRoleMapInterface {\r\n [key: string]: UserRoleEnum;\r\n}\r\n\r\nexport interface NavigationItemsInfoInterface {\r\n [key: string]: NavigationItemInfo;\r\n}\r\n\r\nexport interface RoutesForRolesInterface {\r\n [key: string]: Array;\r\n}\r\n","import { ProjectEnum } from \"../enums\";\r\n\r\nexport class NotificationReportPostModel {\r\n public locationIds: number[];\r\n public equipmentIds: number[];\r\n public eventTypes: number[];\r\n public dateTimeFromSeconds: number;\r\n public dateTimeToSeconds: number;\r\n public project: ProjectEnum;\r\n public timeZone: string;\r\n}","import { UserStatusEnum } from \"../enums\";\r\n\r\nexport class SalesUserViewModel {\r\n public id: number;\r\n public firstName: string;\r\n public lastName: string;\r\n public email: string;\r\n public lastLoginDate: Date;\r\n public status: UserStatusEnum;\r\n\r\n //User behavior lock fields\r\n public isSomeoneUpdateSalesUser: boolean;\r\n}\r\n\r\nexport class SalesUserGetModel {\r\n id: number;\r\n firstName: string;\r\n lastName: string;\r\n email: string;\r\n lastLoginDate: Date;\r\n public status: UserStatusEnum;\r\n\r\n public static toViewModel(getModel: SalesUserGetModel): SalesUserViewModel {\r\n const viewModel = new SalesUserViewModel();\r\n viewModel.id = getModel.id;\r\n viewModel.firstName = getModel.firstName;\r\n viewModel.lastName = getModel.lastName;\r\n viewModel.email = getModel.email;\r\n viewModel.lastLoginDate = getModel.lastLoginDate;\r\n viewModel.status = getModel.status;\r\n\r\n return viewModel;\r\n }\r\n}\r\n\r\nexport class SalesUserPostModel {\r\n public id: number;\r\n public firstName: string;\r\n public lastName: string;\r\n public status: UserStatusEnum;\r\n}","export * from './sensor-btx.model';\r\nexport * from './sensor-ktx.model';","import { CommonFunctions } from \"../../../common\";\r\nimport { BtxNotificationTypeLabel, ModelsTypes, equipmentSideLabels, sensorPositionLabels, sensorTypeLabels } from '../../constants';\r\nimport { BtxSensorEventTypeEnum, EquipmentSideEnum, SensorPositionEnum, SensorSideEnum, SensorTypeEnum, SensorValuesStatusEnum } from \"../../enums\";\r\nimport { NameViewModel } from '../common.model';\r\nimport { BtxLocationSensorConfiguration } from \"../locations\";\r\n\r\nexport class SensorViewModel {\r\n id: number;\r\n type: SensorTypeEnum;\r\n position: SensorPositionEnum;\r\n side: EquipmentSideEnum;\r\n modbusAddress: number;\r\n warningAddress: number;\r\n warningAddressBit: number;\r\n alarmAddress: number;\r\n alarmAddressBit: number;\r\n rateOfChangeWarningAddress: number;\r\n rateOfChangeWarningAddressBit: number;\r\n rateOfChangeAlarmAddress: number;\r\n rateOfChangeAlarmAddressBit: number;\r\n\r\n //Infrastructure fields\r\n modelType = ModelsTypes.sensorViewModel;\r\n\r\n public static toViewModel(sensor: BtxLocationSensorConfiguration) : SensorViewModel {\r\n const viewModel = new SensorViewModel;\r\n viewModel.id = sensor.index;\r\n viewModel.type = sensor.type;\r\n viewModel.position = sensor.position;\r\n viewModel.side = sensor.side;\r\n viewModel.modbusAddress = sensor.modbusAddress;\r\n viewModel.warningAddress = sensor.warningAddress;\r\n viewModel.warningAddressBit = sensor.warningAddressBit;\r\n viewModel.alarmAddress = sensor.alarmAddress;\r\n viewModel.alarmAddressBit = sensor.alarmAddressBit;\r\n viewModel.rateOfChangeWarningAddress = sensor.rateOfChangeWarningAddress;\r\n viewModel.rateOfChangeWarningAddressBit = sensor.rateOfChangeWarningAddressBit;\r\n viewModel.rateOfChangeAlarmAddress = sensor.rateOfChangeAlarmAddress;\r\n viewModel.rateOfChangeAlarmAddressBit = sensor.rateOfChangeAlarmAddressBit;\r\n\r\n return viewModel;\r\n }\r\n public static getViewModel(getModel: SensorGetModel): SensorViewModel {\r\n const viewModel = new SensorViewModel();\r\n viewModel.id = getModel.id == undefined ? 0 : getModel.id;\r\n viewModel.type = getModel.type;\r\n viewModel.position = getModel.position;\r\n viewModel.side = getModel.side;\r\n viewModel.modbusAddress = Number(getModel.modbusAddress);\r\n viewModel.warningAddress = Number(getModel.warningAddress);\r\n viewModel.warningAddressBit = Number(getModel.warningAddressBit);\r\n viewModel.alarmAddress = Number(getModel.alarmAddress);\r\n viewModel.alarmAddressBit = Number(getModel.alarmAddressBit);\r\n viewModel.rateOfChangeWarningAddress = isNaN(Number(getModel.rateOfChangeWarningAddress)) || getModel.rateOfChangeWarningAddress == null ? null : Number(getModel.rateOfChangeWarningAddress);\r\n viewModel.rateOfChangeWarningAddressBit = getModel.rateOfChangeWarningAddressBit == undefined ? null : getModel.rateOfChangeWarningAddressBit;\r\n viewModel.rateOfChangeAlarmAddress = isNaN(Number(getModel.rateOfChangeAlarmAddress)) || getModel.rateOfChangeAlarmAddress == null ? null : Number(getModel.rateOfChangeAlarmAddress);\r\n viewModel.rateOfChangeAlarmAddressBit = getModel.rateOfChangeAlarmAddressBit == undefined ? null : getModel.rateOfChangeAlarmAddressBit;\r\n return viewModel;\r\n }\r\n}\r\n\r\nexport class SensorGetModel {\r\n id: number;\r\n type: SensorTypeEnum;\r\n position: SensorPositionEnum;\r\n side: EquipmentSideEnum;\r\n modbusAddress: number;\r\n warningAddress: number;\r\n warningAddressBit: number;\r\n alarmAddress: number;\r\n alarmAddressBit: number;\r\n rateOfChangeWarningAddress: number;\r\n rateOfChangeWarningAddressBit: number;\r\n rateOfChangeAlarmAddress: number;\r\n rateOfChangeAlarmAddressBit: number;\r\n\r\n public static toViewModel(getModel: SensorGetModel): SensorViewModel {\r\n return SensorViewModel.getViewModel(getModel);\r\n }\r\n}\r\n\r\nexport class SensorPostModel {\r\n id: number;\r\n type: SensorTypeEnum;\r\n position: SensorPositionEnum;\r\n side: EquipmentSideEnum;\r\n modbusAddress: number;\r\n warningAddress: number;\r\n warningAddressBit: number;\r\n alarmAddress: number;\r\n alarmAddressBit: number;\r\n rateOfChangeWarningAddress: number;\r\n rateOfChangeWarningAddressBit: number;\r\n rateOfChangeAlarmAddress: number;\r\n rateOfChangeAlarmAddressBit: number;\r\n\r\n constructor(viewModel: SensorViewModel) {\r\n this.id = viewModel.id;\r\n this.type = viewModel.type;\r\n this.position = viewModel.position;\r\n this.side = viewModel.side;\r\n this.modbusAddress = Number(viewModel.modbusAddress);//field is string after input form\r\n this.warningAddress = Number(viewModel.warningAddress);//field is string after input form\r\n this.warningAddressBit = viewModel.warningAddressBit;\r\n this.alarmAddress = Number(viewModel.alarmAddress);//field is string after input form\r\n this.alarmAddressBit = viewModel.alarmAddressBit;\r\n this.rateOfChangeWarningAddress = viewModel.rateOfChangeWarningAddress == null ? null : Number(viewModel.rateOfChangeWarningAddress);\r\n this.rateOfChangeWarningAddressBit = viewModel.rateOfChangeWarningAddressBit == null ? null : viewModel.rateOfChangeWarningAddressBit;\r\n this.rateOfChangeAlarmAddress = viewModel.rateOfChangeAlarmAddress == null ? null : Number(viewModel.rateOfChangeAlarmAddress);\r\n this.rateOfChangeAlarmAddressBit = viewModel.rateOfChangeAlarmAddressBit == null ? null : viewModel.rateOfChangeAlarmAddressBit;\r\n }\r\n}\r\n\r\nexport class BtxSensorWithTelemetryViewModel {\r\n id: number;\r\n index: number;\r\n type: NameViewModel;\r\n position: NameViewModel;\r\n side: NameViewModel;\r\n value: number;\r\n status: NameViewModel;\r\n eventType: NameViewModel;\r\n sensorMeasure: string;\r\n\r\n public static toSensorViewModel(sensorWithTelemetry: BtxSensorWithTelemetryViewModel): SensorViewModel {\r\n const sensorViewModel = new SensorViewModel();\r\n\r\n sensorViewModel.id = sensorWithTelemetry.id;\r\n sensorViewModel.type = sensorWithTelemetry.type.id;\r\n sensorViewModel.position = sensorWithTelemetry.position.id;\r\n sensorViewModel.side = sensorWithTelemetry.side.id;\r\n\r\n return sensorViewModel;\r\n }\r\n}\r\n\r\nexport class BtxSensorWithTelemetryGetModel {\r\n id: number;\r\n type: SensorTypeEnum;\r\n position: SensorPositionEnum;\r\n side: EquipmentSideEnum;\r\n value: number;\r\n status: SensorValuesStatusEnum;\r\n eventType: BtxSensorEventTypeEnum;\r\n\r\n public static toViewModel(getModel: BtxSensorWithTelemetryGetModel): BtxSensorWithTelemetryViewModel {\r\n const viewModel = new BtxSensorWithTelemetryViewModel();\r\n viewModel.id = getModel.id;\r\n viewModel.type = BtxSensorWithTelemetryGetModel.getSensorTypeEnumViewModel(getModel.type);\r\n viewModel.position = BtxSensorWithTelemetryGetModel.getSensorPositionEnumViewModel(getModel.position);\r\n viewModel.side = BtxSensorWithTelemetryGetModel.getEquipmentSideEnumViewModel(getModel.side);\r\n viewModel.value = getModel.value;\r\n viewModel.status = BtxSensorWithTelemetryGetModel.getSensorValuesStatusEnumViewModel(getModel.status);\r\n viewModel.eventType = BtxSensorWithTelemetryGetModel.getBtxNotificationTypeEnumViewModel(getModel.eventType);\r\n viewModel.sensorMeasure = CommonFunctions.btxGetSensorMeasure(getModel.type);\r\n\r\n return viewModel;\r\n }\r\n\r\n private static getSensorTypeEnumViewModel(type: SensorTypeEnum): NameViewModel {\r\n const nameViewModel = new NameViewModel();\r\n\r\n nameViewModel.id = type;\r\n nameViewModel.name = sensorTypeLabels[type];\r\n\r\n return nameViewModel;\r\n }\r\n\r\n private static getSensorPositionEnumViewModel(type: SensorPositionEnum): NameViewModel {\r\n const nameViewModel = new NameViewModel();\r\n\r\n nameViewModel.id = type;\r\n nameViewModel.name = sensorPositionLabels[type];\r\n\r\n return nameViewModel;\r\n }\r\n\r\n private static getEquipmentSideEnumViewModel(type: EquipmentSideEnum): NameViewModel {\r\n const nameViewModel = new NameViewModel();\r\n\r\n nameViewModel.id = type;\r\n nameViewModel.name = equipmentSideLabels[type];\r\n\r\n return nameViewModel;\r\n }\r\n\r\n private static getSensorValuesStatusEnumViewModel(status: SensorValuesStatusEnum) {\r\n const nameViewModel = new NameViewModel();\r\n\r\n nameViewModel.id = status;\r\n\r\n switch (status) {\r\n case SensorValuesStatusEnum.Norm:\r\n nameViewModel.name = 'Normal';\r\n break;\r\n case SensorValuesStatusEnum.Alarm:\r\n nameViewModel.name = 'Alarm';\r\n break;\r\n case SensorValuesStatusEnum.Warning:\r\n nameViewModel.name = 'Warning';\r\n break;\r\n case SensorValuesStatusEnum.Error:\r\n nameViewModel.name = 'Error';\r\n break;\r\n default:\r\n nameViewModel.name = 'No Data';\r\n break;\r\n }\r\n\r\n return nameViewModel;\r\n }\r\n\r\n private static getBtxNotificationTypeEnumViewModel(type: BtxSensorEventTypeEnum): NameViewModel {\r\n if (!type) {\r\n return null;\r\n }\r\n\r\n const nameViewModel = new NameViewModel();\r\n\r\n nameViewModel.id = type;\r\n nameViewModel.name = BtxNotificationTypeLabel[type];\r\n\r\n return nameViewModel;\r\n }\r\n}\r\n\r\nexport class SensorSchemaViewModel {\r\n className: string;\r\n index: number;\r\n tooltip: string;\r\n}\r\n\r\nexport class SensorInfo {\r\n id: number;\r\n type: SensorTypeEnum;\r\n position: SensorPositionEnum;\r\n side: SensorSideEnum;\r\n}","import { SensorStatusEnum } from \"../../enums\";\r\n\r\nexport class SensorKtxViewModel {\r\n id: number;\r\n status: SensorStatusEnum;\r\n value: number;\r\n\r\n public static toSchemeViewModel(getModel: SensorKtxGetModel): SensorKtxSchemeViewModel {\r\n const viewModel = new SensorKtxSchemeViewModel();\r\n\r\n viewModel.id = getModel.id;\r\n viewModel.status = getModel.status;\r\n viewModel.value = getModel.value;\r\n\r\n return viewModel;\r\n }\r\n}\r\n\r\nexport class SensorKtxSchemeViewModel {\r\n id: number;\r\n status: SensorStatusEnum;\r\n value: number;\r\n}\r\n\r\nexport class SensorKtxGetModel {\r\n id: number;\r\n status: SensorStatusEnum;\r\n value: number;\r\n\r\n public static toViewModel(getModel: SensorKtxGetModel): SensorKtxViewModel {\r\n const viewModel = new SensorKtxViewModel();\r\n\r\n viewModel.id = getModel.id;\r\n viewModel.status = getModel.status;\r\n viewModel.value = getModel.value;\r\n\r\n return viewModel;\r\n }\r\n}","export class ServiceUserViewModel {\r\n public id: number;\r\n public firstName: string;\r\n public lastName: string;\r\n public email: string;\r\n public lastLoginDate: Date;\r\n\r\n //User behavior lock fields\r\n public isSomeoneUpdateServiceUser: boolean;\r\n}\r\n\r\nexport class ServiceUserInviteModel {\r\n email: string;\r\n\r\n public static toViewModel(inviteModel: ServiceUserInviteModel): ServiceUserViewModel {\r\n const viewModel = new ServiceUserViewModel();\r\n viewModel.email = inviteModel.email;\r\n\r\n return viewModel;\r\n }\r\n}\r\n\r\nexport class ServiceUserPostModel {\r\n id: number;\r\n firstName: string;\r\n lastName: string;\r\n}\r\n\r\nexport class ServiceUserDeleteModel {\r\n id: number;\r\n}\r\n\r\nexport class ServiceUserGetModel {\r\n id: number;\r\n firstName: string;\r\n lastName: string;\r\n email: string;\r\n lastLoginDate: Date;\r\n\r\n public static toViewModel(getModel: ServiceUserGetModel): ServiceUserViewModel {\r\n const viewModel = new ServiceUserViewModel();\r\n viewModel.id = getModel.id;\r\n viewModel.firstName = getModel.firstName;\r\n viewModel.lastName = getModel.lastName;\r\n viewModel.email = getModel.email;\r\n viewModel.lastLoginDate = getModel.lastLoginDate;\r\n\r\n return viewModel;\r\n }\r\n}","import { MeasureEnum, SensorStatusEnum } from \"../enums\";\r\nimport { SensorKtxSchemeViewModel } from './sensors';\r\n\r\nexport class TelemetrySnapshotViewModel {\r\n binId: number;\r\n recievingTimestamp: number;\r\n snapshot: TelemetryViewModel[];\r\n measureType: MeasureEnum;\r\n}\r\n\r\nexport class TelemetryViewModel {\r\n cableId: number;\r\n state: number;\r\n sensors: SensorKtxSchemeViewModel[]\r\n}\r\n\r\nexport class CableSnapshotResponse {\r\n id: number;\r\n name: number;\r\n sensors: SensorSnapshotResponse[];\r\n}\r\n\r\nexport class SensorSnapshotResponse {\r\n id: number;\r\n status: SensorStatusEnum;\r\n value: number;\r\n}\r\n\r\nexport class TelemetryBinsGetModel {\r\n binId: number;\r\n listOfCableIds: number[];\r\n}\r\n\r\nexport class HistoricalBinsSnapshots {\r\n timeStamps: number[];\r\n binSnapshots: HistoricalBinSnapshots[];\r\n}\r\n\r\nexport class HistoricalBinSnapshots {\r\n binId: number;\r\n cableSnapshotsByPeriods: SnapshotByPeriod[];\r\n}\r\n\r\nexport class SnapshotByPeriod {\r\n timeStamp: number;\r\n cableSnapshots: CableSnapshotResponse[];\r\n}","export class TemperatureRangePostModel {\r\n locationId: number;\r\n ranges: TemperatureRangeViewModel[];\r\n alarm: AlarmViewModel;\r\n public static toTemperatureRangeAlarmViewModel(postModel: TemperatureRangePostModel): TemperatureRangeAlarmViewModel {\r\n const temperatureAlarmViewModel = new TemperatureRangeAlarmViewModel();\r\n temperatureAlarmViewModel.alarm = postModel.alarm;\r\n temperatureAlarmViewModel.temperatureRanges = postModel.ranges;\r\n temperatureAlarmViewModel.locationId = postModel.locationId;\r\n return temperatureAlarmViewModel;\r\n }\r\n}\r\n\r\nexport class TemperatureRangeGetModel {\r\n public locationId: number;\r\n public temperatureRanges: TemperatureRangeViewModel[];\r\n public alarm: AlarmViewModel;\r\n public canDeviceBeInitialized: boolean;\r\n public isInitialized: boolean;\r\n\r\n public static toTemperatureRangeAlarmViewModel(getModel: TemperatureRangeGetModel): TemperatureRangeAlarmViewModel {\r\n const viewModel = new TemperatureRangeAlarmViewModel();\r\n viewModel.locationId = getModel.locationId;\r\n viewModel.temperatureRanges = getModel.temperatureRanges;\r\n viewModel.alarm = getModel.alarm;\r\n\r\n return viewModel;\r\n }\r\n}\r\n\r\nexport class TemperatureRangeViewModel {\r\n id: number;\r\n from: number;\r\n to: number;\r\n colorHex: string;\r\n public static toTemperatureColorViewModels(postModels: TemperatureRangeViewModel[]): TemperatureColorViewModel[] {\r\n\r\n return postModels.map((postModel) => {\r\n const temperatureColorViewModel = new TemperatureColorViewModel();\r\n temperatureColorViewModel.value = postModel.to.toString();\r\n temperatureColorViewModel.colorHex = postModel.colorHex;\r\n return temperatureColorViewModel;\r\n });\r\n }\r\n}\r\n\r\nexport class AlarmViewModel {\r\n maxRiseValue: number;\r\n maxRiseColorHex: string = '';\r\n highTemperatureValue: number;\r\n highTemperatureColorHex: string = '';\r\n highResistanceValue: number;\r\n highResistanceColorHex: string = '';\r\n normalResistanceColorHex: string = '';\r\n openTcColorHex: string;\r\n noResponseColorHex: string;\r\n}\r\n\r\nexport class TemperatureRangeAlarmViewModel {\r\n public locationId: number;\r\n public temperatureRanges: TemperatureRangeViewModel[];\r\n public alarm: AlarmViewModel;\r\n}\r\n\r\nexport class TemperatureColorViewModel {\r\n value: string;\r\n colorHex: string;\r\n}","export * from './updater-device.models';","import { ProjectEnum, UpdateProjectStateEnum, UpdateProjectStatusEnum } from \"../../enums\";\r\n\r\nexport class LocationUpdaterViewModel {\r\n id: number;\r\n name: string;\r\n companyName: string;\r\n projectsAvailable: number;\r\n projectUpdaterAvailable: number;\r\n updaterDevices: UpdateDeviceViewModel[];\r\n locationDevices: LocationDevicesViewModel[];\r\n}\r\n\r\nexport class LocationDevicesViewModel {\r\n deviceId: string;\r\n project: ProjectEnum;\r\n isInitialized: boolean;\r\n}\r\n\r\nexport class UpdateDeviceViewModel {\r\n id: string;\r\n locationId: number;\r\n projectsAvailable: number;\r\n isInitialized: boolean;\r\n isDeviceInInitialization: boolean = false;\r\n projectDevices: ProjectUpdaterDeviceViewModel[];\r\n}\r\n\r\nexport class ProjectUpdaterDeviceViewModel {\r\n deviceId: string;\r\n project: ProjectEnum;\r\n currentVersion: string;\r\n lastUpdate: number;\r\n state: UpdateProjectStateEnum;\r\n errorMessage: string;\r\n}\r\n\r\nexport class ProjectFirmwareViewModel {\r\n name: string;\r\n lastModified: Date;\r\n createdOn: Date;\r\n size: number;\r\n sizeLabel: string\r\n}\r\n\r\nexport class ProjectFirmwareUpdateViewModel {\r\n isSelected: boolean;\r\n locationId: number\r\n locationName: string;\r\n project: string;\r\n currentVersion: string;\r\n lastUpdated: number;\r\n updaterDeviceId: string;\r\n projectDeviceId: string;\r\n sendCommand: boolean = false;\r\n state: UpdateProjectStateEnum;\r\n errorMessage: string;\r\n}\r\n\r\nexport class UpdateFirmwarePostModel {\r\n project: ProjectEnum;\r\n fileName: string;\r\n fileFolder: string;\r\n updaterDeviceId: string;\r\n locationId: number;\r\n projectDeviceId: string;\r\n}\r\n\r\nexport class CancelUpdateFirmwarePostModel {\r\n updaterDeviceId: string;\r\n locationId: number;\r\n projectDeviceId: string;\r\n}\r\n\r\nexport class UpdateFirmwareResultModel {\r\n updaterDeviceId: string;\r\n locationId: number;\r\n projectDeviceId: string;\r\n status: UpdateProjectStatusEnum;\r\n payLoadMessage: string;\r\n payLoadSuccess: boolean;\r\n}\r\n\r\nexport class UpdateFirmwaresPostModel {\r\n project: ProjectEnum;\r\n fileName: string;\r\n fileFolder: string;\r\n devices: UpdateFirmwaresDevicePostModel[];\r\n}\r\n\r\nexport class UpdateFirmwaresDevicePostModel {\r\n updaterDeviceId: string;\r\n locationId: number;\r\n projectDeviceId: string;\r\n}\r\n\r\nexport class CancelUpdateModel {\r\n status: UpdateProjectStatusEnum;\r\n payLoadMessage: string;\r\n payLoadSuccess: boolean;\r\n}\r\n\r\nexport class VersionHistoryResponseModel {\r\n realUpdateTime: Date;\r\n currentVersion: string;\r\n targetVersion: string;\r\n status: string;\r\n lastErrorMessage: string;\r\n}\r\n\r\nexport class UpdateFirmwareTriggerModel {\r\n updaterDeviceId: string;\r\n locationId: number;\r\n projectDeviceId: string;\r\n}\r\n\r\nexport class UpdateProjectDeviceState {\r\n currentVersion: string;\r\n projectDeviceId: string;\r\n state: UpdateProjectStateEnum;\r\n errorMessage: string;\r\n lastUpdate: number;\r\n}\r\n\r\nexport class GetLocationUpdatersFilterModel {\r\n projects: ProjectEnum[];\r\n companies: number[];\r\n}\r\n\r\nexport class InstallProjectModel {\r\n project: ProjectEnum;\r\n locationId: number;\r\n locationName: string;\r\n projectDeviceId: string;\r\n updaterDeviceId: string;\r\n}\r\n\r\nexport class InstallProjectPostModel {\r\n file: File;\r\n project: ProjectEnum;\r\n locationId: number;\r\n projectDeviceId: string;\r\n updaterDeviceId: string;\r\n overwriteConfig: boolean;\r\n}\r\n\r\nexport class CheckProjectsGetModel {\r\n updaterDeviceId: string;\r\n project: ProjectEnum;\r\n}\r\n\r\nexport class GetInstalledProjectFirmwareInfo {\r\n status: UpdateProjectStatusEnum;\r\n version: string;\r\n isInstalled: boolean;\r\n}","import { ItxLocationNameModel } from \"@models\";\r\nimport { UserStatusEnum } from \"../enums\";\r\n\r\nexport class VendorViewModel {\r\n public id: number;\r\n public firstName: string;\r\n public lastName: string;\r\n public itxLocations: Array;\r\n public itxLocationsNames: string[];\r\n public email: string;\r\n public status: UserStatusEnum;\r\n public lastLoginDate: Date;\r\n public countOfBins: number;\r\n public companyName: string;\r\n\r\n //User behavior lock fields\r\n public isSomeoneUpdateVendor: boolean;\r\n}\r\n\r\nexport class VendorGetModel {\r\n public id: number;\r\n public firstName: string;\r\n public lastName: string;\r\n public itxLocations: Array;\r\n public email: string;\r\n public status: UserStatusEnum;\r\n public lastLoginDate: Date;\r\n public companyName: string;\r\n\r\n public static toViewModel(getModel: VendorGetModel): VendorViewModel {\r\n const viewModel = new VendorViewModel();\r\n viewModel.id = getModel.id;\r\n viewModel.firstName = getModel.firstName;\r\n viewModel.lastName = getModel.lastName;\r\n viewModel.itxLocations = getModel.itxLocations;\r\n viewModel.email = getModel.email;\r\n viewModel.status = getModel.status;\r\n viewModel.lastLoginDate = getModel.lastLoginDate;\r\n viewModel.companyName = getModel.companyName;\r\n viewModel.countOfBins = 0;\r\n viewModel.itxLocations.forEach(i => { viewModel.countOfBins += i.bins.length });\r\n viewModel.itxLocationsNames = getModel.itxLocations.map(l => l.name);\r\n\r\n return viewModel;\r\n }\r\n}\r\n\r\nexport class VendorInviteModel {\r\n email: string;\r\n itxStorageIds: Array;\r\n}\r\n\r\nexport class VendorEditModel {\r\n id: number;\r\n status: UserStatusEnum;\r\n itxStorageIds: Array;\r\n\r\n constructor() {\r\n this.itxStorageIds = [];\r\n }\r\n}","export * from './safe.pipe';","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { DomSanitizer} from '@angular/platform-browser';\r\n\r\n@Pipe({ name: 'safe' })\r\nexport class SafePipe implements PipeTransform {\r\n constructor(private sanitizer: DomSanitizer) {}\r\n transform(url) {\r\n return this.sanitizer.bypassSecurityTrustResourceUrl(url);\r\n }\r\n} ","import { Injectable } from '@angular/core';\r\nimport { BehaviorSubject } from 'rxjs';\r\n\r\nimport { AccountApiService } from '../http';\r\nimport { ErrorModel } from './../../../common';\r\nimport { AccountProfileModel } from './../../models';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class AccountDatasourceService {\r\n public errors$: BehaviorSubject = new BehaviorSubject(null);\r\n constructor(private _accountApi: AccountApiService) { }\r\n\r\n public getProfile() {\r\n try {\r\n let result = this._accountApi.getProfile();\r\n if (result) {\r\n this.errors$.next(null);\r\n return result;\r\n }\r\n } catch (error) {\r\n this.errors$.next(error);\r\n }\r\n }\r\n\r\n public async editProfile(profile: AccountProfileModel) {\r\n try {\r\n let result = this._accountApi.editProfile(profile);\r\n this.errors$.next(null);\r\n return result;\r\n } catch (error) {\r\n this.errors$.next(error);\r\n }\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { BehaviorSubject } from 'rxjs';\r\n\r\nimport { AqsAirflowFanTypeViewModel } from '../../models';\r\nimport { AqsAirflowApiService } from '../http';\r\nimport { ErrorModel } from './../../../common';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class AqsAirflowDatasourceService {\r\n public aqsFanTypesWithFans$: BehaviorSubject = new BehaviorSubject([]);\r\n public errors$: BehaviorSubject = new BehaviorSubject(null);\r\n \r\n constructor(private _aqsAirflowApi: AqsAirflowApiService) { }\r\n\r\n public async getAllFanTypesWithFans() {\r\n try {\r\n let aqsFanTypes = this.aqsFanTypesWithFans$.getValue();\r\n if (!aqsFanTypes || aqsFanTypes && aqsFanTypes.length == 0) {\r\n const data = await this._aqsAirflowApi.getAllFanTypesWithFans() as AqsAirflowFanTypeViewModel[];\r\n if (data) {\r\n this.aqsFanTypesWithFans$.next(data);\r\n this.errors$.next(null);\r\n }\r\n }\r\n } catch (error) {\r\n if (error instanceof ErrorModel) {\r\n return error;\r\n } else {\r\n this.errors$.next(error);\r\n }\r\n }\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\n\r\nimport { BehaviorSubject } from 'rxjs';\r\n\r\nimport { ErrorModel } from './../../../common';\r\nimport { AqsCommoditiesApiService } from './../http';\r\nimport { AqsCommoditiesViewModel } from '@models';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class AqsCommoditiesDatasourceService {\r\n public commodities$: BehaviorSubject = new BehaviorSubject([]);\r\n public errors$: BehaviorSubject = new BehaviorSubject(null);\r\n\r\n constructor(private _aqsCommoditiesApi: AqsCommoditiesApiService) { }\r\n\r\n public async getAll() {\r\n try {\r\n let commodities = this.commodities$.getValue();\r\n if (!commodities || commodities && commodities.length == 0) {\r\n const data = await this._aqsCommoditiesApi.getAll() as AqsCommoditiesViewModel[];\r\n if (data) {\r\n this.commodities$.next(data);\r\n this.errors$.next(null);\r\n }\r\n }\r\n } catch (error) {\r\n if (error instanceof ErrorModel) {\r\n return error;\r\n } else {\r\n this.errors$.next(error);\r\n }\r\n }\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { BehaviorSubject } from 'rxjs';\r\n\r\nimport { ComputationSheetAddEditModel, ComputationSheetResponseModel, AqsSavedQuoteModel, QuoteFlatStorageViewModel, QuoteRoundStorageViewModel, BindingComputationSheets } from '../../models';\r\nimport { AqsQuoteStorageApiService } from '../http';\r\nimport { ErrorModel } from '../../../common';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class AqsQuoteStorageDataSourceService {\r\n public errors$: BehaviorSubject = new BehaviorSubject(null);\r\n public quotes$: BehaviorSubject = new BehaviorSubject([]);\r\n public bindingComputationSheets$: BehaviorSubject = new BehaviorSubject([]);\r\n\r\n constructor(private _aqsQuoteStorageApi: AqsQuoteStorageApiService) { }\r\n\r\n public async getQuoteFlatStorage(id: number): Promise {\r\n try {\r\n const result = await this._aqsQuoteStorageApi.getFlatById(id);\r\n return Promise.resolve(result);\r\n } catch (error) {\r\n if (error instanceof ErrorModel) {\r\n return error;\r\n }\r\n }\r\n }\r\n\r\n public async getRoundFlatStorage(id: number): Promise {\r\n try {\r\n const result = await this._aqsQuoteStorageApi.getRoundById(id);\r\n return Promise.resolve(result);\r\n } catch (error) {\r\n if (error instanceof ErrorModel) {\r\n return error;\r\n }\r\n }\r\n }\r\n\r\n public async editFlatStorage(quoteFlatStorage: QuoteFlatStorageViewModel): Promise {\r\n try {\r\n const result = await this._aqsQuoteStorageApi.editQuoteFlatStorage(quoteFlatStorage);\r\n return Promise.resolve(result);\r\n } catch (error) {\r\n if (error instanceof ErrorModel) {\r\n return error;\r\n }\r\n }\r\n }\r\n\r\n public async editRoundStorage(quoteRoundStorage: QuoteRoundStorageViewModel): Promise {\r\n try {\r\n const result = await this._aqsQuoteStorageApi.editQuoteRoundStorage(quoteRoundStorage);\r\n return Promise.resolve(result);\r\n } catch (error) {\r\n if (error instanceof ErrorModel) {\r\n return error;\r\n }\r\n }\r\n }\r\n\r\n public async addQuoteFlatStorage(quoteFlatStorage: QuoteFlatStorageViewModel): Promise {\r\n try {\r\n const result = await this._aqsQuoteStorageApi.addQuoteFlatStorage(quoteFlatStorage);\r\n return Promise.resolve(result);\r\n } catch (error) {\r\n if (error instanceof ErrorModel) {\r\n return error;\r\n }\r\n }\r\n }\r\n\r\n public async addQuoteRoundStorage(quoteRoundStorage: QuoteRoundStorageViewModel): Promise {\r\n try {\r\n const result = await this._aqsQuoteStorageApi.addQuoteRoundStorage(quoteRoundStorage);\r\n return Promise.resolve(result);\r\n } catch (error) {\r\n if (error instanceof ErrorModel) {\r\n return error;\r\n }\r\n }\r\n }\r\n\r\n public async deleteQuoteStorage(quoteId: number): Promise {\r\n try {\r\n const result = await this._aqsQuoteStorageApi.deleteQuoteStorage(quoteId);\r\n return Promise.resolve(result);\r\n } catch (error) {\r\n if (error instanceof ErrorModel) {\r\n return error;\r\n }\r\n }\r\n }\r\n\r\n public async getAllSavedQuotes() {\r\n try {\r\n const result = await this._aqsQuoteStorageApi.GetAllQuotes();\r\n this.quotes$.next(result as AqsSavedQuoteModel[]);\r\n } catch (error) {\r\n if (error) {\r\n this.errors$.next(error);\r\n }\r\n }\r\n }\r\n\r\n public async addComputationSheet(computationSheet: ComputationSheetAddEditModel): Promise {\r\n try {\r\n const result = await this._aqsQuoteStorageApi.addComputationSheet(computationSheet);\r\n return Promise.resolve(result);\r\n } catch (error) {\r\n if (error instanceof ErrorModel) {\r\n return error;\r\n }\r\n }\r\n }\r\n\r\n public async editComputationSheet(computationSheet: ComputationSheetAddEditModel): Promise {\r\n try {\r\n const result = await this._aqsQuoteStorageApi.editComputationSheet(computationSheet);\r\n return Promise.resolve(result);\r\n } catch (error) {\r\n if (error instanceof ErrorModel) {\r\n return error;\r\n }\r\n }\r\n }\r\n\r\n public async getComputationSheetById(id: number): Promise {\r\n try {\r\n const result = await this._aqsQuoteStorageApi.getComputationSheetById(id);\r\n return Promise.resolve(result);\r\n } catch (error) {\r\n if (error instanceof ErrorModel) {\r\n return error;\r\n }\r\n }\r\n }\r\n\r\n public async getAllComputationSheetForBinding(): Promise {\r\n try {\r\n const result = await this._aqsQuoteStorageApi.getAllComputationSheetForBinding();\r\n if(result){\r\n this.bindingComputationSheets$.next(result as BindingComputationSheets[]);\r\n }\r\n } catch (error) {\r\n if (error instanceof ErrorModel) {\r\n return error;\r\n }\r\n }\r\n }\r\n\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { BehaviorSubject } from 'rxjs';\r\n\r\nimport { ErrorModel } from '../../../common';\r\nimport { AqsReportApiService } from '../http';\r\nimport { AqsReportFormatFileLabel } from '../../constants';\r\nimport { QuoteFlatStorageReportModel, QuoteRoundStorageReportModel, ReportComputationSheetModel } from '@models';\r\nimport { ReportFormatEnum } from '../../enums';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class AqsReportDatasourceService {\r\n public errors$: BehaviorSubject = new BehaviorSubject(null);\r\n\r\n constructor(private _aqsReportApi: AqsReportApiService) { }\r\n\r\n public async downloadReportComputationSheetFile(model: ReportComputationSheetModel): Promise {\r\n try {\r\n const result = await this._aqsReportApi.downloadReportComputationSheetFile(model);\r\n return Promise.resolve(new Blob([result as BinaryType], { type: `application/${AqsReportFormatFileLabel[model.reportFormat]}` }));\r\n } catch (error) {\r\n if (error instanceof ErrorModel) {\r\n return error;\r\n } else {\r\n this.errors$.next(error);\r\n }\r\n }\r\n }\r\n\r\n public async getComputationSheetReportInBlob(model: ReportComputationSheetModel): Promise {\r\n try {\r\n const result = await this._aqsReportApi.getComputationSheetReportInBlob(model);\r\n return Promise.resolve(result);\r\n } catch (error) {\r\n if (error instanceof ErrorModel) {\r\n return error;\r\n }\r\n }\r\n }\r\n\r\n public async downloadReportQuoteRoundStorageFile(model: QuoteRoundStorageReportModel): Promise {\r\n try {\r\n const result = await this._aqsReportApi.downloadReportQuoteRoundStorageFile(model);\r\n return Promise.resolve(new Blob([result as BinaryType], { type: `application/${AqsReportFormatFileLabel[model.reportFormat]}` }));\r\n } catch (error) {\r\n if (error instanceof ErrorModel) {\r\n return error;\r\n } else {\r\n this.errors$.next(error);\r\n }\r\n }\r\n }\r\n\r\n public async getQuoteRoundStorageReportInBlob(model: QuoteRoundStorageReportModel): Promise {\r\n try {\r\n const result = await this._aqsReportApi.getQuoteRoundStorageReportInBlob(model);\r\n return Promise.resolve(result);\r\n } catch (error) {\r\n if (error instanceof ErrorModel) {\r\n return error;\r\n }\r\n }\r\n }\r\n\r\n public async downloadReportQuoteFlatStorageFile(model: QuoteFlatStorageReportModel): Promise {\r\n try {\r\n const result = await this._aqsReportApi.downloadReportQuoteFlatStorageFile(model);\r\n return Promise.resolve(new Blob([result as BinaryType], { type: `application/${AqsReportFormatFileLabel[model.reportFormat]}` }));\r\n } catch (error) {\r\n if (error instanceof ErrorModel) {\r\n return error;\r\n } else {\r\n this.errors$.next(error);\r\n }\r\n }\r\n }\r\n\r\n public async getQuoteFlatStorageReportInBlob(model: QuoteFlatStorageReportModel): Promise {\r\n try {\r\n const result = await this._aqsReportApi.getQuoteFlatStorageReportInBlob(model);\r\n return Promise.resolve(result);\r\n } catch (error) {\r\n if (error instanceof ErrorModel) {\r\n return error;\r\n }\r\n }\r\n }\r\n\r\n public async downloadReportListOfQuoteFile(\r\n quoteStoragesIds: number[],\r\n reportFormat: ReportFormatEnum,\r\n timeZone: string,\r\n printDate: Date): Promise {\r\n try {\r\n const result = await this._aqsReportApi.downloadReportListOfQuoteFile(\r\n quoteStoragesIds,\r\n reportFormat,\r\n timeZone,\r\n printDate);\r\n return Promise.resolve(new Blob([result as BinaryType], { type: `application/${AqsReportFormatFileLabel[reportFormat]}` }));\r\n } catch (error) {\r\n if (error instanceof ErrorModel) {\r\n return error;\r\n } else {\r\n this.errors$.next(error);\r\n }\r\n }\r\n }\r\n\r\n public async getListOfQuoteReportInBlob(\r\n quoteStoragesIds: number[],\r\n reportFormat: ReportFormatEnum,\r\n timeZone: string,\r\n printDate: Date): Promise {\r\n try {\r\n const result = await this._aqsReportApi.getListOFQuoteReportInBlob(\r\n quoteStoragesIds,\r\n reportFormat,\r\n timeZone,\r\n printDate);\r\n return Promise.resolve(result);\r\n } catch (error) {\r\n if (error instanceof ErrorModel) {\r\n return error;\r\n }\r\n }\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { BehaviorSubject } from 'rxjs';\r\n\r\nimport { ErrorModel } from '../../../common';\r\nimport {\r\n CompanyViewModel,\r\n CompanyPostModel,\r\n LocationUpdatedHubMessage,\r\n CompanyAddedHubMessage,\r\n CompanyDeletedHubMessage,\r\n CompanyInUpdateHubMessage,\r\n CompanyUpdatedHubMessage,\r\n} from '../../models';\r\nimport { CompaniesApiService, HubService } from '../http';\r\nimport { HubMethods } from '../../constants';\r\n\r\n@Injectable()\r\nexport class CompaniesDataSourceService {\r\n public companies$: BehaviorSubject = new BehaviorSubject([]);\r\n public errors$: BehaviorSubject = new BehaviorSubject(null);\r\n\r\n constructor(\r\n private _companiesApi: CompaniesApiService,\r\n private _hubService: HubService,) {\r\n this.subscribeToHubService();\r\n }\r\n\r\n public async get() {\r\n try {\r\n const data = await this._companiesApi.loadAll();\r\n this.companies$.next(data as CompanyViewModel[]);\r\n this.errors$.next(null);\r\n } catch (error) {\r\n this.errors$.next(error);\r\n }\r\n }\r\n\r\n public async add(companyname: string): Promise {\r\n try {\r\n const result = await this._companiesApi.add(companyname) as CompanyViewModel;\r\n if (result) {\r\n this._hubService.sendToAll(HubMethods.Company.companyAdded, new CompanyAddedHubMessage(result));\r\n this.companies$.next([\r\n ...this.companies$.getValue(),\r\n result\r\n ]);\r\n return Promise.resolve(result);\r\n }\r\n this.errors$.next(null);\r\n } catch (error) {\r\n if (error instanceof ErrorModel) {\r\n return error;\r\n }\r\n }\r\n }\r\n\r\n public async edit(companyModel: CompanyPostModel): Promise {\r\n try {\r\n const result = await this._companiesApi.edit(companyModel) as CompanyViewModel;\r\n if (result) {\r\n this._hubService.sendToAll(HubMethods.Company.companyUpdated, new CompanyUpdatedHubMessage(result, true));\r\n const companies = this.companies$.getValue().map(l => l.id === result.id ? { ...l, ...result } : l);\r\n this.companies$.next(companies);\r\n return Promise.resolve(result);\r\n }\r\n this.errors$.next(null);\r\n } catch (error) {\r\n if (error instanceof ErrorModel) {\r\n return error;\r\n }\r\n }\r\n }\r\n public async delete(companyId: number) {\r\n try {\r\n const result = await this._companiesApi.delete(companyId);\r\n if (result) {\r\n this._hubService.sendToAll(HubMethods.Company.companyDeleted, new CompanyDeletedHubMessage(companyId));\r\n const companies = this.companies$.getValue().filter(l => l.id !== result);\r\n this.companies$.next(companies);\r\n return Promise.resolve(true);\r\n }\r\n } catch (error) {\r\n this.errors$.next(error);\r\n }\r\n }\r\n\r\n public async markCompanyForOthersAsInUpdate(companyId: number): Promise {\r\n this._hubService.sendToAllServiceUsers(HubMethods.Company.companyInUpdate, new CompanyInUpdateHubMessage(companyId));\r\n }\r\n\r\n public async markCompanyForOthersAsUpdated(company: CompanyViewModel, withChanges: boolean): Promise {\r\n this._hubService.sendToAllServiceUsers(HubMethods.Company.companyUpdated, new CompanyUpdatedHubMessage(company, withChanges));\r\n }\r\n\r\n public async getCompaniesForUpdaterFilter(): Promise {\r\n try {\r\n var result = await this._companiesApi.getCompaniesForUpdaterFilter() as CompanyViewModel[];\r\n this.errors$.next(null);\r\n return result;\r\n } catch (error) {\r\n this.errors$.next(error);\r\n }\r\n }\r\n\r\n private subscribeToHubService() {\r\n this._hubService.locationUpdated.subscribe((hubMessage: LocationUpdatedHubMessage) => {\r\n if (hubMessage && hubMessage.updatedLocation) {\r\n const companies = this.companies$.getValue();\r\n for (let company of companies) {\r\n const locationToUpdate = company.locations ? company.locations.find(l => l.id === hubMessage.updatedLocation.id) : null;\r\n if (locationToUpdate) {\r\n locationToUpdate.name = hubMessage.updatedLocation.name;\r\n break;\r\n }\r\n };\r\n }\r\n });\r\n this._hubService.companyAdded.subscribe((hubMessage: CompanyAddedHubMessage) => {\r\n if (hubMessage && hubMessage.newCompany) {\r\n this.companies$.next([\r\n ...this.companies$.getValue(),\r\n hubMessage.newCompany\r\n ]);\r\n }\r\n });\r\n this._hubService.companyDeleted.subscribe((hubMessage: CompanyDeletedHubMessage) => {\r\n if (hubMessage) {\r\n const companies = this.companies$.getValue().filter(l => l.id !== hubMessage.companyId);\r\n this.companies$.next(companies);\r\n }\r\n });\r\n this._hubService.companyInUpdate.subscribe((hubMessage: CompanyInUpdateHubMessage) => {\r\n if (hubMessage) {\r\n const company = this.companies$.getValue().find(l => l.id === hubMessage.companyId);\r\n if (company) {\r\n company.isSomeoneUpdateCompany = true;\r\n }\r\n }\r\n });\r\n this._hubService.companyUpdated.subscribe((hubMessage: CompanyUpdatedHubMessage) => {\r\n if (hubMessage && hubMessage.updatedCompany) {\r\n if (hubMessage.withChanges) {\r\n hubMessage.updatedCompany.isSomeoneUpdateCompany = undefined;\r\n this.companies$.next(this.companies$.getValue().map(c => c.id === hubMessage.updatedCompany.id ? hubMessage.updatedCompany : c));\r\n } else {\r\n const company = this.companies$.getValue().find(l => l.id == hubMessage.updatedCompany.id);\r\n company.isSomeoneUpdateCompany = false;\r\n }\r\n }\r\n });\r\n }\r\n}","import { Injectable } from '@angular/core';\r\nimport { BehaviorSubject } from 'rxjs';\r\n\r\nimport { ErrorModel } from '../../../common';\r\nimport { HubMethods } from '../../constants';\r\nimport {\r\n CompanyAdminViewModel,\r\n CompanyAdminPostModel,\r\n CompanyAdminInviteModel,\r\n CompanyAdminAddedHubMessage,\r\n CompanyAdminDeletedHubMessage,\r\n CompanyAdminInUpdateHubMessage,\r\n CompanyAdminUpdatedHubMessage,\r\n} from '../../models';\r\nimport { CompanyAdminsApiService, HubService } from '../http';\r\n\r\n@Injectable()\r\nexport class CompanyAdminsDataSourceService {\r\n public companyAdmins$: BehaviorSubject = new BehaviorSubject([]);\r\n public errors$: BehaviorSubject = new BehaviorSubject(null);\r\n\r\n constructor(\r\n private _companyAdminsApi: CompanyAdminsApiService,\r\n private _hubService: HubService,\r\n ) {\r\n this.subscribeToHubService();\r\n }\r\n\r\n public async get(companyId: number) {\r\n try {\r\n if (companyId != null) {\r\n const data = await this._companyAdminsApi.loadAllForCompany(companyId);\r\n this.companyAdmins$.next(data as CompanyAdminViewModel[]);\r\n }\r\n else {\r\n const data = await this._companyAdminsApi.loadAll();\r\n this.companyAdmins$.next(data as CompanyAdminViewModel[]);\r\n }\r\n\r\n this.errors$.next(null);\r\n } catch (error) {\r\n this.errors$.next(error);\r\n }\r\n }\r\n\r\n public async invite(companyAdmin: CompanyAdminInviteModel): Promise {\r\n try {\r\n const result = await this._companyAdminsApi.invite(companyAdmin) as CompanyAdminViewModel;\r\n if (result) {\r\n this._hubService.sendToCompanyAdminsAndAllServiceUsers(HubMethods.CompanyAdmin.companyAdminAdded, result.companyId, new CompanyAdminAddedHubMessage(result));\r\n if (this.companyAdmins$.getValue().find(x => x.email == result.email)) {\r\n const companyAdmins = this.companyAdmins$.getValue().map(l => l.email === result.email ? { ...l, ...result} : l);\r\n this.companyAdmins$.next(companyAdmins);\r\n } else {\r\n this.companyAdmins$.next([\r\n ...this.companyAdmins$.getValue(),\r\n result\r\n ]);\r\n }\r\n return result;\r\n }\r\n } catch (error) {\r\n if (error instanceof ErrorModel) {\r\n return error;\r\n }\r\n }\r\n }\r\n\r\n public async edit(companyAdmin: CompanyAdminPostModel) : Promise {\r\n try\r\n {\r\n const result = await this._companyAdminsApi.edit(companyAdmin) as CompanyAdminViewModel;\r\n if (result) {\r\n const companyAdmins = this.companyAdmins$.getValue().map(l => l.id === result.id ? { ...l, ...result} : l);\r\n this.companyAdmins$.next(companyAdmins);\r\n return Promise.resolve(true);\r\n }\r\n\r\n return false;\r\n } catch (error) {\r\n return error instanceof ErrorModel ? error : false;\r\n }\r\n }\r\n\r\n public async delete(companyAdminId: number, companyId: number) : Promise {\r\n try\r\n {\r\n const result = await this._companyAdminsApi.delete(companyAdminId);\r\n if (result) {\r\n this._hubService.sendToCompanyAdminsAndAllServiceUsers(HubMethods.CompanyAdmin.companyAdminDeleted, companyId, new CompanyAdminDeletedHubMessage(companyAdminId));\r\n const companyAdmins = this.companyAdmins$.getValue().filter(l => l.id !== result);\r\n this.companyAdmins$.next(companyAdmins);\r\n return Promise.resolve(true);\r\n }\r\n\r\n return false;\r\n } catch (error) {\r\n return error instanceof ErrorModel ? error : false;\r\n }\r\n }\r\n\r\n public async markCompanyAdminForOthersAsInUpdate(userId: number, companyId: number): Promise {\r\n this._hubService.sendToCompanyAdminsAndAllServiceUsers(HubMethods.CompanyAdmin.companyAdminInUpdate, companyId, new CompanyAdminInUpdateHubMessage(userId));\r\n }\r\n\r\n public async markCompanyAdminForOthersAsUpdated(companyAdmin: CompanyAdminViewModel, withChanges: boolean): Promise {\r\n this._hubService.sendToCompanyAdminsAndAllServiceUsers(HubMethods.CompanyAdmin.companyAdminUpdated, companyAdmin.companyId, new CompanyAdminUpdatedHubMessage(companyAdmin, withChanges));\r\n }\r\n\r\n private subscribeToHubService() {\r\n this._hubService.companyAdminAdded.subscribe((hubMessage: CompanyAdminAddedHubMessage) => {\r\n if (hubMessage && hubMessage.newCompanyAdmin) {\r\n this.companyAdmins$.next([\r\n ...this.companyAdmins$.getValue(),\r\n hubMessage.newCompanyAdmin\r\n ]);\r\n }\r\n });\r\n this._hubService.companyAdminDeleted.subscribe((hubMessage: CompanyAdminDeletedHubMessage) => {\r\n if (hubMessage) {\r\n const users = this.companyAdmins$.getValue().filter(l => l.id !== hubMessage.companyAdminId);\r\n this.companyAdmins$.next(users);\r\n }\r\n });\r\n this._hubService.companyAdminInUpdate.subscribe((hubMessage: CompanyAdminInUpdateHubMessage) => {\r\n if (hubMessage) {\r\n const companyAdmin = this.companyAdmins$.getValue().find(l => l.id === hubMessage.companyAdminId);\r\n if (companyAdmin) {\r\n companyAdmin.isSomeoneUpdateCompanyAdmin = true;\r\n }\r\n }\r\n });\r\n this._hubService.companyAdminUpdated.subscribe((hubMessage: CompanyAdminUpdatedHubMessage) => {\r\n if (hubMessage && hubMessage.updatedCompanyAdmin) {\r\n if (hubMessage.withChanges) {\r\n hubMessage.updatedCompanyAdmin.isSomeoneUpdateCompanyAdmin = undefined;\r\n this.companyAdmins$.next(this.companyAdmins$.getValue().map(l => l.id === hubMessage.updatedCompanyAdmin.id ? hubMessage.updatedCompanyAdmin : l));\r\n } else {\r\n const companyAdmin = this.companyAdmins$.getValue().find(l => l.id == hubMessage.updatedCompanyAdmin.id);\r\n companyAdmin.isSomeoneUpdateCompanyAdmin = false;\r\n }\r\n }\r\n });\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { BehaviorSubject } from 'rxjs';\r\n\r\nimport { ErrorModel } from '../../../common';\r\nimport {\r\n CompanyUserViewModel,\r\n CompanyUserPostModel,\r\n CompanyUserInviteModel,\r\n CompanyUserAddedHubMessage,\r\n CompanyUserDeletedHubMessage,\r\n CompanyUserInUpdateHubMessage,\r\n CompanyUserUpdatedHubMessage,\r\n} from '../../models';\r\nimport { CompanyUsersApiService, HubService } from '../http';\r\nimport { HubMethods } from '../../constants';\r\n\r\n@Injectable()\r\nexport class CompanyUsersDataSourceService {\r\n public companyUsers$: BehaviorSubject = new BehaviorSubject([]);\r\n public errors$: BehaviorSubject = new BehaviorSubject(null);\r\n\r\n constructor(\r\n private _companyUsersApi: CompanyUsersApiService,\r\n private _hubService: HubService,) {\r\n this.subscribeToHubService();\r\n }\r\n\r\n public async get(userCompanyId: number) {\r\n try {\r\n const data = await this._companyUsersApi.loadAll(userCompanyId);\r\n if (data) {\r\n this.companyUsers$.next(data as CompanyUserViewModel[]);\r\n this.errors$.next(null);\r\n }\r\n } catch (error) {\r\n this.errors$.next(error);\r\n }\r\n }\r\n\r\n public async invite(companyUser: CompanyUserInviteModel) : Promise {\r\n try {\r\n const result = await this._companyUsersApi.invite(companyUser) as CompanyUserViewModel;\r\n if (result) {\r\n this._hubService.sendFromCompanyAdminToCompanyAdmins(HubMethods.CompanyUser.companyUserAdded, new CompanyUserAddedHubMessage(result));\r\n return result;\r\n }\r\n } catch (error) {\r\n if (error instanceof ErrorModel) {\r\n return error;\r\n }\r\n }\r\n }\r\n \r\n public async edit(companyUser: CompanyUserPostModel) : Promise {\r\n try\r\n {\r\n const result = await this._companyUsersApi.edit(companyUser) as CompanyUserViewModel;\r\n if (result) {\r\n this._hubService.sendFromCompanyAdminToCompanyAdmins(HubMethods.CompanyUser.companyUserUpdated, new CompanyUserUpdatedHubMessage(result, true));\r\n const companyUsers = this.companyUsers$.getValue().map(l => l.id === result.id ? { ...l, ...result} : l);\r\n this.companyUsers$.next(companyUsers);\r\n return Promise.resolve(true);\r\n }\r\n\r\n return false;\r\n } catch (error) {\r\n return error instanceof ErrorModel ? error : false;\r\n }\r\n }\r\n\r\n public async delete(companyUserId: number) : Promise {\r\n try\r\n {\r\n const result = await this._companyUsersApi.delete(companyUserId);\r\n if (result) {\r\n this._hubService.sendFromCompanyAdminToCompanyAdmins(HubMethods.CompanyUser.companyUserDeleted, new CompanyUserDeletedHubMessage(companyUserId));\r\n const companyUsers = this.companyUsers$.getValue().filter(l => l.id !== result);\r\n this.companyUsers$.next(companyUsers);\r\n return Promise.resolve(true);\r\n }\r\n\r\n return false;\r\n } catch (error) {\r\n return error instanceof ErrorModel ? error : false;\r\n }\r\n }\r\n\r\n public async markCompanyUserForOthersAsInUpdate(userId: number): Promise {\r\n this._hubService.sendFromCompanyAdminToCompanyAdmins(HubMethods.CompanyUser.companyUserInUpdate, new CompanyUserInUpdateHubMessage(userId));\r\n }\r\n\r\n public async markCompanyUserForOthersAsUpdated(companyUser: CompanyUserViewModel, isWithChanges: boolean): Promise {\r\n this._hubService.sendFromCompanyAdminToCompanyAdmins(HubMethods.CompanyUser.companyUserUpdated, new CompanyUserUpdatedHubMessage(companyUser, isWithChanges));\r\n }\r\n\r\n private subscribeToHubService() {\r\n this._hubService.companyUserAdded.subscribe((hubMessage: CompanyUserAddedHubMessage) => {\r\n if (hubMessage && hubMessage.newCompanyUser) {\r\n this.companyUsers$.next([\r\n ...this.companyUsers$.getValue(),\r\n hubMessage.newCompanyUser\r\n ]);\r\n }\r\n });\r\n this._hubService.companyUserDeleted.subscribe((hubMessage: CompanyUserDeletedHubMessage) => {\r\n if (hubMessage) {\r\n const users = this.companyUsers$.getValue().filter(l => l.id !== hubMessage.companyUserId);\r\n this.companyUsers$.next(users);\r\n }\r\n });\r\n this._hubService.companyUserInUpdate.subscribe((hubMessage: CompanyUserInUpdateHubMessage) => {\r\n if (hubMessage) {\r\n const companyUser = this.companyUsers$.getValue().find(l => l.id === hubMessage.companyUserId);\r\n if (companyUser) {\r\n companyUser.isSomeoneUpdateCompanyUser = true;\r\n }\r\n }\r\n });\r\n this._hubService.companyUserUpdated.subscribe((hubMessage: CompanyUserUpdatedHubMessage) => {\r\n if (hubMessage && hubMessage.updatedCompanyUser) {\r\n if (hubMessage.withChanges) {\r\n hubMessage.updatedCompanyUser.isSomeoneUpdateCompanyUser = undefined;\r\n this.companyUsers$.next(this.companyUsers$.getValue().map(l => l.id === hubMessage.updatedCompanyUser.id ? hubMessage.updatedCompanyUser : l));\r\n } else {\r\n const companyUser = this.companyUsers$.getValue().find(c => c.id == hubMessage.updatedCompanyUser.id);\r\n companyUser.isSomeoneUpdateCompanyUser = false;\r\n }\r\n }\r\n });\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { BehaviorSubject } from 'rxjs';\r\n\r\nimport { DeviceLogInfoViewModel } from '../../models';\r\nimport { DeviceLogApiService } from '../http';\r\nimport { ErrorModel } from './../../../common';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class DeviceLogDatasourceService {\r\n public deviceLogInfo$: BehaviorSubject = new BehaviorSubject(new DeviceLogInfoViewModel());\r\n public errors$: BehaviorSubject = new BehaviorSubject(null);\r\n\r\n constructor(private _deiveLogApi: DeviceLogApiService) { }\r\n\r\n public async getLogsInfoList(deiviceId: string) {\r\n try {\r\n let result = await this._deiveLogApi.getLogsInfoList(deiviceId) as DeviceLogInfoViewModel;\r\n this.deviceLogInfo$.next(result);\r\n this.errors$.next(null);\r\n } catch (error) {\r\n this.errors$.next(error);\r\n }\r\n }\r\n\r\n public async downloadLogFile(deiviceId: string, fileName: string): Promise {\r\n try {\r\n const result = await this._deiveLogApi.downloadLogFile(deiviceId, fileName);\r\n return Promise.resolve(new Blob([result as BinaryType], { type: \"application/txt\" }));\r\n } catch (error) {\r\n if (error instanceof ErrorModel) {\r\n return error;\r\n } else {\r\n this.errors$.next(error);\r\n }\r\n }\r\n }\r\n\r\n public async downloadLogFiles(deiviceId: string, fileNames: string[]): Promise {\r\n try {\r\n const result = await this._deiveLogApi.downloadLogFiles(deiviceId, fileNames);\r\n return Promise.resolve(new Blob([result as BinaryType], { type: \"application/zip\" }));\r\n } catch (error) {\r\n if (error instanceof ErrorModel) {\r\n return error;\r\n } else {\r\n this.errors$.next(error);\r\n }\r\n }\r\n }\r\n\r\n public async addLogLinkToDeviceTwin(deviceId: string): Promise {\r\n try {\r\n const result = await this._deiveLogApi.addLogLinkToDeviceTwin(deviceId);\r\n return result as boolean;\r\n } catch (error) {\r\n if (error instanceof ErrorModel) {\r\n return false;\r\n } else {\r\n this.errors$.next(error);\r\n return false;\r\n }\r\n }\r\n }\r\n}\r\n","import { Injectable } from \"@angular/core\";\r\nimport { BehaviorSubject } from \"rxjs\";\r\n\r\nimport { ErrorModel } from '../../../common';\r\nimport { EmailServicePostModel, EmailServiceViewModel } from \"../../models\";\r\nimport { EmailServiceApiService } from \"../http\";\r\n\r\n@Injectable()\r\nexport class EmailServiceDataSourceService {\r\n public emailServices$: BehaviorSubject = new BehaviorSubject(null);\r\n public errors$: BehaviorSubject = new BehaviorSubject(null);\r\n constructor(\r\n private _emailServiceApi: EmailServiceApiService) { }\r\n\r\n public async getAll(userCompanyId: number) {\r\n try {\r\n const data = await this._emailServiceApi.loadAll(userCompanyId);\r\n if (data) {\r\n this.emailServices$.next(data as EmailServiceViewModel[]);\r\n this.errors$.next(null);\r\n }\r\n } catch (error) {\r\n this.errors$.next(error);\r\n }\r\n }\r\n\r\n public async addEditSevice(emailService: EmailServicePostModel): Promise {\r\n try {\r\n const result = await this._emailServiceApi.addEdit(emailService) as EmailServiceViewModel;\r\n if (result) {\r\n let emailServices = this.emailServices$.getValue();\r\n if (emailService.id == 0) {\r\n emailServices.push(result);\r\n }\r\n else {\r\n emailServices = emailServices.map(l => l.id === result.id ? { ...l, ...result } : l)\r\n }\r\n this.emailServices$.next(emailServices);\r\n return Promise.resolve(true);\r\n }\r\n return Promise.resolve(false);\r\n }\r\n catch (error) {\r\n return error instanceof ErrorModel ? error : false;\r\n }\r\n }\r\n\r\n public async delete(id: number, companyId: number): Promise {\r\n try {\r\n const result = await this._emailServiceApi.delete(id, companyId);\r\n if (result) {\r\n const emailServices = this.emailServices$.getValue().filter(x => x.id != id);\r\n this.emailServices$.next(emailServices);\r\n Promise.resolve(true)\r\n }\r\n return Promise.resolve(false);\r\n }\r\n catch (error) {\r\n return error instanceof ErrorModel ? error : false;\r\n }\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { BehaviorSubject } from 'rxjs';\r\n\r\nimport { EquipmentApiService } from '../http';\r\n\r\nimport { ErrorModel } from '../../../common/models';\r\nimport { BtxEquipmentWithTelemetryViewModel } from '../../models/equipment-btx.model';\r\n\r\n@Injectable()\r\nexport class EquipmentDataSourceService {\r\n public errors$: BehaviorSubject = new BehaviorSubject(null);\r\n public equipmentWithTelemetry$: BehaviorSubject =\r\n new BehaviorSubject(null);\r\n\r\n constructor(private _equipmentApi: EquipmentApiService) {}\r\n\r\n public async getEquipmentWithTelemetry(equipmentId: number) {\r\n try {\r\n const data = await this._equipmentApi.getEquipmentWithTelemetry(\r\n equipmentId,\r\n );\r\n\r\n this.equipmentWithTelemetry$.next(\r\n data as BtxEquipmentWithTelemetryViewModel,\r\n );\r\n\r\n this.errors$.next(null);\r\n } catch (error) {\r\n this.errors$.next(error);\r\n }\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { BehaviorSubject } from 'rxjs';\r\n\r\nimport {\r\n BtxEventByPeriodPostModel,\r\n BtxEventsRequestModel,\r\n ItxEventByPeriodPostModel,\r\n ItxEventsRequestModel,\r\n KtxEventByPeriodPostModel,\r\n KtxEventsRequestModel,\r\n} from '@models';\r\nimport { EventApiService } from '../http';\r\nimport { ErrorModel } from './../../../common';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class EventDatasourceService {\r\n public errors$: BehaviorSubject = new BehaviorSubject(null);\r\n constructor(private _eventApi: EventApiService) { }\r\n\r\n public async getItxEventsByFilter(\r\n query: ItxEventByPeriodPostModel\r\n ): Promise {\r\n try {\r\n const result = (await this._eventApi.getItxByFilter(\r\n query\r\n )) as ItxEventsRequestModel;\r\n return result;\r\n } catch (error) {\r\n this.errors$.next(error);\r\n }\r\n }\r\n\r\n public async getKtxEventsByFilter(\r\n query: KtxEventByPeriodPostModel\r\n ): Promise {\r\n try {\r\n const result = (await this._eventApi.getKtxByFilter(\r\n query\r\n )) as KtxEventsRequestModel;\r\n return result;\r\n } catch (error) {\r\n this.errors$.next(error);\r\n }\r\n }\r\n\r\n public async getBtxEventsByFilter(\r\n query: BtxEventByPeriodPostModel\r\n ): Promise {\r\n try {\r\n const result = (await this._eventApi.getBtxByFilter(\r\n query\r\n )) as BtxEventsRequestModel;\r\n return result;\r\n } catch (error) {\r\n this.errors$.next(error);\r\n }\r\n }\r\n}\r\n","export * from './locations.datasource.service';\r\nexport * from './companies.datasource.service';\r\nexport * from './company-admins.datasource.service';\r\nexport * from './company-users.datasource.service';\r\nexport * from './service-users.datasource.service';\r\nexport * from './locations-btx.datasource.service';\r\nexport * from './locations-ktx.datasource.service';\r\nexport * from './vendor.datasource.service';\r\nexport * from './locations-itx.datasource.service';\r\nexport * from './itx-bin.datasource.service';\r\nexport * from './event.datasource.service';\r\nexport * from './report.datasource.service';\r\nexport * from './account.datasource.service';\r\nexport * from './sales-users.datasource.service';\r\nexport * from './aqs-commodities.datasource.service';\r\nexport * from './aqs-report.datasource.service';\r\nexport * from './aqs-airflow.datasource.service';\r\nexport * from './aqs-quote-storage.datasource.service';\r\nexport * from './device-log.datasource.service';\r\nexport * from './equipment.datasource.service';\r\nexport * from './email-service.datasource.service';\r\nexport * from './updater-device.datasource.service';\r\n","import { BehaviorSubject } from 'rxjs';\r\nimport { Injectable } from '@angular/core';\r\n\r\nimport { ItxBinApiService, HubService } from '../http';\r\nimport { ErrorModel } from '../../../common';\r\nimport {\r\n ItxBinViewModel, AddItxBinModel, ItxBinAddedHubMessage, EditItxBinModel, ItxBinInUpdateHubMessage, ItxBinUpdatedHubMessage,\r\n ItxBinDeletedHubMessage, RadarPostModel, RadarViewModel, ItxBinRadarInUpdateHubMessage, ItxBinRadarDeletedHubMessage, ItxBinRadarAddedHubMessage, ItxBinRadarUpdatedHubMessage\r\n , ItxBinLiveDataModel, ItxSchemeLiveData, ItxStaticScemeData, UserPreferences, UserPreferencesPost, ItxBinFilterParameters, ItxBinParametersRequest, ReportDataFilterPost, ReportHistoricalDataResponse, ItxBinQuickEditPostModel, ItxLocationReportFilter, ItxBinLiveDataViewModel,\r\n} from '../../models';\r\nimport { HubMethods } from './../../constants';\r\nimport { ItxStorageSortingEnum } from '../../enums';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class ItxBinDataSourceService {\r\n public itxBin$: BehaviorSubject = new BehaviorSubject([]);\r\n public itxBinLiveData$: BehaviorSubject = new BehaviorSubject([]);\r\n\r\n public errors$: BehaviorSubject = new BehaviorSubject(null);\r\n public userPreference$: BehaviorSubject = new BehaviorSubject(null);\r\n private _lastLocationId: number;\r\n constructor(\r\n private _itxBinApi: ItxBinApiService,\r\n private _hubService: HubService,\r\n ) {\r\n this.subscribeToHubService();\r\n }\r\n async getSchemeForLiveData(filterParameters: ItxBinFilterParameters, pageNumber: number, sortParameters: ItxStorageSortingEnum): Promise {\r\n try {\r\n const filterParametersRequest = ItxBinFilterParameters.toItxBinFilterParametersRequest(filterParameters);\r\n const requestParameters = new ItxBinParametersRequest(filterParametersRequest, pageNumber, sortParameters);\r\n const result = await this._itxBinApi.getSchemeForLiveData(requestParameters);\r\n let data = result as ItxSchemeLiveData;\r\n return data;\r\n } catch (error) {\r\n this.errors$.next(error);\r\n }\r\n }\r\n\r\n async setUserPreferences(userPreferences: UserPreferencesPost) {\r\n try {\r\n const data = await this._itxBinApi.setUserPreferences(userPreferences);\r\n this.userPreference$.next(data as UserPreferences);\r\n }\r\n catch (error) {\r\n this.errors$.next(error);\r\n }\r\n }\r\n\r\n async getStaticItxBinSchemeData(): Promise {\r\n try {\r\n const data = await this._itxBinApi.getStaticItxBinSchemeData();\r\n return data;\r\n }\r\n catch (error) {\r\n this.errors$.next(error);\r\n }\r\n }\r\n\r\n async getLocationReportFilters(): Promise {\r\n try {\r\n const data = await this._itxBinApi.getLocationReportFilters();\r\n return data;\r\n }\r\n catch (error) {\r\n this.errors$.next(error);\r\n }\r\n }\r\n\r\n\r\n public async getRadarTelemetryWithReferences(binId: number): Promise {\r\n try {\r\n const data = await this._itxBinApi.getItxBinLiveData(binId);\r\n return data;\r\n }\r\n catch (error) {\r\n this.errors$.next(error);\r\n return error;\r\n }\r\n }\r\n\r\n\r\n async getItxBinsByLocationId(locationId: number) {\r\n this._lastLocationId = locationId;\r\n try {\r\n const data = await this._itxBinApi.getItxBinsByLocationId(locationId);\r\n if (data) {\r\n this.itxBin$.next(data as ItxBinViewModel[]);\r\n }\r\n }\r\n catch (error) {\r\n this.errors$.next(error);\r\n }\r\n }\r\n\r\n async getDataForLiveData(bins: number[]) {\r\n try {\r\n const result = await this._itxBinApi.getDataForLiveData(bins);\r\n const data = result as ItxBinLiveDataModel[];\r\n this.itxBinLiveData$.next(data);\r\n } catch (error) {\r\n this.errors$.next(error);\r\n }\r\n }\r\n\r\n async add(addItxBin: AddItxBinModel): Promise {\r\n try {\r\n const result = await this._itxBinApi.add(addItxBin) as ItxBinViewModel;\r\n if (result) {\r\n this._hubService.sendToAllServiceUsers(HubMethods.ItxBin.itxBinAdded, new ItxBinAddedHubMessage(result));\r\n this.itxBin$.next([\r\n ...this.itxBin$.getValue(),\r\n result\r\n ]);\r\n return Promise.resolve(result);\r\n }\r\n return null;\r\n } catch (error) {\r\n if (error instanceof ErrorModel) {\r\n return error;\r\n } else {\r\n this.errors$.next(error);\r\n }\r\n }\r\n }\r\n\r\n async edit(editItxBin: EditItxBinModel) {\r\n try {\r\n const result = await this._itxBinApi.edit(editItxBin) as ItxBinViewModel;\r\n if (result) {\r\n this._hubService.sendToAllServiceUsers(HubMethods.ItxBin.itxBinUpdated, new ItxBinUpdatedHubMessage(result, true));\r\n this.itxBin$.next(\r\n this.itxBin$.getValue().map((l) => (l.id === result.id ? result : l)),\r\n );\r\n return Promise.resolve(result);\r\n }\r\n return null;\r\n } catch (error) {\r\n if (error instanceof ErrorModel) {\r\n return error;\r\n } else {\r\n this.errors$.next(error);\r\n }\r\n }\r\n }\r\n\r\n async quickEdit(editItxBin: ItxBinQuickEditPostModel): Promise {\r\n try {\r\n const result = await this._itxBinApi.quickEdit(editItxBin) as ItxBinViewModel;\r\n if (result) {\r\n this._hubService.sendToAllServiceUsers(HubMethods.ItxBin.itxBinUpdated, new ItxBinUpdatedHubMessage(result, true));\r\n this.itxBin$.next(\r\n this.itxBin$.getValue().map((l) => (l.id === result.id ? result : l)),\r\n );\r\n return true;\r\n }\r\n return false;\r\n } catch (error) {\r\n if (error instanceof ErrorModel) {\r\n return error;\r\n } else {\r\n this.errors$.next(error);\r\n }\r\n }\r\n }\r\n\r\n public async markItxBinForOthersAsInUpdate(\r\n itxBinId: number\r\n ): Promise {\r\n this._hubService.sendToAllServiceUsers(\r\n HubMethods.ItxBin.itxBinInUpdate,\r\n new ItxBinInUpdateHubMessage(itxBinId)\r\n );\r\n }\r\n\r\n public async markItxBinRadarForOthersAsInUpdate(\r\n itxBinId: number, inUpdate: boolean\r\n ): Promise {\r\n this._hubService.sendToAllServiceUsers(\r\n HubMethods.ItxBin.itxBinRadarInUpdate,\r\n new ItxBinRadarInUpdateHubMessage(itxBinId, inUpdate)\r\n );\r\n }\r\n\r\n public async markItxBinForOthersAsUpdated(\r\n itxBin: ItxBinViewModel,\r\n withChanges: boolean\r\n ): Promise {\r\n this._hubService.sendToAllServiceUsers(\r\n HubMethods.ItxBin.itxBinUpdated,\r\n new ItxBinUpdatedHubMessage(itxBin, withChanges)\r\n );\r\n }\r\n\r\n public async delete(itxBin: ItxBinViewModel): Promise {\r\n try {\r\n const result = await this._itxBinApi.delete(itxBin.id);\r\n if (result) {\r\n this._hubService.sendToAllServiceUsers(HubMethods.ItxBin.itxBinDeleted, new ItxBinDeletedHubMessage(itxBin.id, itxBin.locationId));\r\n const itxBins = this.itxBin$.getValue().filter(l => l.id !== itxBin.id);\r\n this.itxBin$.next(itxBins);\r\n return Promise.resolve(true);\r\n }\r\n\r\n return false;\r\n } catch (error) {\r\n if (error instanceof ErrorModel) {\r\n return error;\r\n } else {\r\n this.errors$.next(error);\r\n }\r\n }\r\n }\r\n\r\n private subscribeToHubService() {\r\n this._hubService.itxBinAdded.subscribe(\r\n (hubMessage: ItxBinAddedHubMessage) => {\r\n if (hubMessage && hubMessage.newItxbin) {\r\n const itxBins = this.itxBin$.getValue();\r\n const newItxBin = hubMessage.newItxbin;\r\n if (this._lastLocationId == newItxBin.locationId) {\r\n this.itxBin$.next([...itxBins, newItxBin]);\r\n }\r\n }\r\n }\r\n );\r\n this._hubService.itxBinInUpdate.subscribe(\r\n (hubMessage: ItxBinInUpdateHubMessage) => {\r\n if (hubMessage) {\r\n const itxBin = this.itxBin$.getValue().find(i => i.id == hubMessage.itxBinId);\r\n if (itxBin) {\r\n itxBin.isSomeoneUpdateStorage = true;\r\n }\r\n }\r\n }\r\n );\r\n this._hubService.itxBinUpdated.subscribe(\r\n (hubMessage: ItxBinUpdatedHubMessage) => {\r\n if (hubMessage && hubMessage.updatedItxBin) {\r\n if (hubMessage.withChanges) {\r\n hubMessage.updatedItxBin.isSomeoneUpdateStorage = undefined;\r\n this.itxBin$.next(\r\n this.itxBin$.getValue().map((l) => {\r\n if (l.id === hubMessage.updatedItxBin.id) {\r\n return hubMessage.updatedItxBin;\r\n } else {\r\n return l;\r\n }\r\n })\r\n );\r\n } else {\r\n const itxBin = this.itxBin$\r\n .getValue()\r\n .find((l) => l.id == hubMessage.updatedItxBin.id);\r\n itxBin.isSomeoneUpdateStorage = false;\r\n }\r\n }\r\n }\r\n );\r\n this._hubService.itxBinDeleted.subscribe((hubMessage: ItxBinDeletedHubMessage) => {\r\n if (hubMessage) {\r\n const itxBins = this.itxBin$.getValue().filter(l => l.id !== hubMessage.itxBinId);\r\n this.itxBin$.next(itxBins);\r\n }\r\n });\r\n this._hubService.itxBinRadarInUpdate.subscribe((hubMessage: ItxBinRadarInUpdateHubMessage) => {\r\n if (hubMessage) {\r\n const itxBin = this.itxBin$.getValue().find(l => l.id == hubMessage.itxBinId);\r\n if (itxBin) {\r\n itxBin.isSomeoneUpdateRadar = hubMessage.inUpdate;\r\n this.itxBin$.next(this.itxBin$.getValue());\r\n }\r\n }\r\n });\r\n this._hubService.itxBinRadarDeleted.subscribe((hubMessage: ItxBinRadarDeletedHubMessage) => {\r\n if (hubMessage) {\r\n const itxBin = this.itxBin$.getValue().find((l) => l.id == hubMessage.deletedRadar.itxBinId);\r\n if (itxBin) {\r\n itxBin.radars = itxBin.radars.filter(r => r.id != hubMessage.deletedRadar.id);\r\n itxBin.countOfRadars = itxBin.radars.length;\r\n this.itxBin$.next(this.itxBin$.getValue());\r\n }\r\n }\r\n });\r\n this._hubService.itxBinRadarUpdated.subscribe((hubMessage: ItxBinRadarUpdatedHubMessage) => {\r\n if (hubMessage) {\r\n let itxBin = this.itxBin$.getValue().find(i => i.id == hubMessage.radar.itxBinId);\r\n if (itxBin) {\r\n let radar = itxBin.radars.find(r => r.id == hubMessage.radar.id);\r\n if (radar) {\r\n radar.radarId = hubMessage.radar.radarId;\r\n radar.radarIdAddress = hubMessage.radar.radarIdAddress;\r\n this.itxBin$.next(this.itxBin$.getValue());\r\n }\r\n }\r\n }\r\n });\r\n this._hubService.itxBinRadarAdded.subscribe((hubMessage: ItxBinRadarAddedHubMessage) => {\r\n if (hubMessage) {\r\n let itxBin = this.itxBin$.getValue().find(i => i.id == hubMessage.newRadar.itxBinId);\r\n if (itxBin) {\r\n itxBin.radars.push(hubMessage.newRadar);\r\n itxBin.countOfRadars = itxBin.radars.length;\r\n this.itxBin$.next(this.itxBin$.getValue());\r\n }\r\n }\r\n });\r\n }\r\n\r\n async addRadar(model: RadarPostModel): Promise {\r\n\r\n let newInstance = RadarPostModel.CreateNewInstance(model);\r\n try {\r\n const result = await this._itxBinApi.addRadar(newInstance) as RadarViewModel;\r\n if (result instanceof ErrorModel) {\r\n return result;\r\n } else {\r\n this._hubService.sendToAllServiceUsers(HubMethods.ItxBin.itxBinRadarAdded, new ItxBinRadarAddedHubMessage(result));\r\n let itxBinModel = await this.itxBin$.getValue().find(i => i.id == result.itxBinId);\r\n if (itxBinModel) {\r\n itxBinModel.radars.push(result);\r\n itxBinModel.countOfRadars = itxBinModel.radars.length;\r\n }\r\n\r\n this.itxBin$.next([...this.itxBin$.getValue()]);\r\n return result;\r\n }\r\n }\r\n catch (error) {\r\n let errorModel = error as ErrorModel\r\n return errorModel\r\n }\r\n }\r\n\r\n async editRadar(model: RadarPostModel): Promise {\r\n let newInstance = RadarPostModel.CreateNewInstance(model);\r\n try {\r\n const result = await this._itxBinApi.editRadar(newInstance) as RadarViewModel\r\n if (result instanceof ErrorModel) {\r\n return result;\r\n } else {\r\n this._hubService.sendToAllServiceUsers(HubMethods.ItxBin.itxBinRadarUpdated, new ItxBinRadarUpdatedHubMessage(result));\r\n let itxBinModel = await this.itxBin$.getValue().find(i => i.id == result.itxBinId);\r\n let radar = itxBinModel.radars.find(r => r.id == result.id);\r\n radar.radarId = result.radarId;\r\n radar.radarIdAddress = result.radarIdAddress;\r\n radar.radarLocation = result.radarLocation;\r\n radar.distanceFromBinCenter = result.distanceFromBinCenter;\r\n this.itxBin$.next([...this.itxBin$.getValue()]);\r\n }\r\n } catch (error) {\r\n let errorModel = error as ErrorModel;\r\n return errorModel;\r\n }\r\n }\r\n\r\n public async deleteRadar(radar: RadarViewModel): Promise {\r\n try {\r\n const result = await this._itxBinApi.deleteRadar(radar.id);\r\n if (result) {\r\n this._hubService.sendToAllServiceUsers(HubMethods.ItxBin.itxBinRadarDeleted, new ItxBinRadarDeletedHubMessage(radar));\r\n const itxBin = this.itxBin$.getValue().find((l) => l.id == radar.itxBinId);\r\n if (itxBin) {\r\n itxBin.radars = itxBin.radars.filter(r => r.id != radar.id);\r\n itxBin.countOfRadars = itxBin.radars.length;\r\n this.itxBin$.next(this.itxBin$.getValue());\r\n }\r\n return Promise.resolve(true);\r\n }\r\n return false;\r\n } catch (error) {\r\n if (error instanceof ErrorModel) {\r\n return error;\r\n } else {\r\n this.errors$.next(error);\r\n }\r\n }\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { BehaviorSubject } from 'rxjs';\r\n\r\nimport { ErrorModel } from '../../../common';\r\nimport {\r\n LocationEquipmentsInUpdateHubMessage, LocationEquipmentsUpdatedHubMessage, LocationDeviceInInitializationHubMessage, LocationDeviceInitializedHubMessage, LocationBtxDeletedHubMessage, LocationBtxInUpdateHubMessage, LocationBtxAddedHubMessage, LocationBtxViewModel, LocationBtxPostModel, LocationBtxUpdatedHubMessage, LocationBtxEquipmentViewModel, LocationBtxEquipmentPostModel, CompanyViewModel, BtxLiveDataLocationViewModel, SensorInfo, BTXLocationConfiguration\r\n} from '../../models';\r\nimport { EquipmentApiService, HubService, LocationsBtxApiService } from '../http';\r\nimport { HubMethods } from '../../constants';\r\nimport { LastTelemetrySensorResponse } from '../../models/lastTelemetrySensorResponse.model';\r\nimport { HistoricalDataFilter, HistoricalDataTelemetryResponse } from '../../models/historicalDataTelemetryResponse.model';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class LocationsBtxDataSourceService {\r\n public locationsBtx$: BehaviorSubject = new BehaviorSubject([]);\r\n public locationsBtxForCompany$: BehaviorSubject = new BehaviorSubject([]);\r\n public errors$: BehaviorSubject = new BehaviorSubject(null);\r\n public companiesWithLocations$: BehaviorSubject = new BehaviorSubject([]);\r\n public liveDataLocations$: BehaviorSubject = new BehaviorSubject([]);\r\n public selectedEquipmentId$: BehaviorSubject = new BehaviorSubject(null);\r\n\r\n constructor(\r\n private _locationsBtxApi: LocationsBtxApiService,\r\n private _equipmentApi: EquipmentApiService,\r\n private _hubService: HubService,) {\r\n this.subscribeToHubService();\r\n }\r\n\r\n public async get() {\r\n try {\r\n let data = this.locationsBtx$.getValue();\r\n if (!data || data && data.length == 0) {\r\n const data = await this._locationsBtxApi.getAll();\r\n this.locationsBtx$.next(data as LocationBtxViewModel[]);\r\n }\r\n else {\r\n this.locationsBtx$.next(data);\r\n }\r\n\r\n this.errors$.next(null);\r\n } catch (error) {\r\n this.errors$.next(error);\r\n }\r\n }\r\n\r\n public async getForCompany(companyId: number) {\r\n try {\r\n const data = await this._locationsBtxApi.getAllForCompany(companyId);\r\n if (data) {\r\n this.locationsBtxForCompany$.next(data as LocationBtxViewModel[]);\r\n this.errors$.next(null);\r\n }\r\n } catch (error) {\r\n this.errors$.next(error);\r\n }\r\n }\r\n\r\n public async add(location: LocationBtxViewModel): Promise {\r\n try {\r\n const locationPostModel = new LocationBtxPostModel(location);\r\n const result = await this._locationsBtxApi.add(locationPostModel) as LocationBtxViewModel;\r\n if (result) {\r\n this._hubService.sendToAllServiceUsers(HubMethods.LocationBtx.locationBtxAdded, new LocationBtxAddedHubMessage(result));\r\n this.locationsBtx$.next([\r\n ...this.locationsBtx$.getValue(),\r\n result\r\n ]);\r\n return Promise.resolve(result);\r\n }\r\n\r\n return null;\r\n } catch (error) {\r\n if (error instanceof ErrorModel) {\r\n return error;\r\n } else {\r\n this.errors$.next(error);\r\n }\r\n }\r\n }\r\n\r\n public async edit(location: LocationBtxViewModel): Promise {\r\n try {\r\n const locationPutModel = new LocationBtxPostModel(location);\r\n const result = await this._locationsBtxApi.edit(locationPutModel) as LocationBtxViewModel;\r\n if (result) {\r\n this._hubService.sendToAllServiceUsers(HubMethods.LocationBtx.locationBtxUpdated, new LocationBtxUpdatedHubMessage(result, true));\r\n this.locationsBtx$.next(this.locationsBtx$.getValue().map(l => l.deviceId === result.deviceId ? result : l));\r\n return Promise.resolve(result);\r\n }\r\n\r\n return null;\r\n } catch (error) {\r\n if (error instanceof ErrorModel) {\r\n return error;\r\n } else {\r\n this.errors$.next(error);\r\n }\r\n }\r\n }\r\n\r\n public async getEquipment(deviceId: string): Promise {\r\n let location = this.locationsBtx$.getValue().find(x => x.deviceId === deviceId);\r\n if (!location) {\r\n await this.get();\r\n location = this.locationsBtx$.getValue().find(x => x.deviceId === deviceId);\r\n }\r\n\r\n try {\r\n const equipment = await this._equipmentApi.get(deviceId) as LocationBtxEquipmentViewModel;\r\n\r\n return equipment;\r\n } catch (error) {\r\n return error;\r\n }\r\n }\r\n\r\n public async getSensors(equipmentId: number, locationId: number): Promise {\r\n try {\r\n const sensors = await this._equipmentApi.getSensors(equipmentId, locationId);\r\n return sensors;\r\n } catch (error) {\r\n return error;\r\n }\r\n }\r\n\r\n public async addOrUpdateEquipment(model: LocationBtxEquipmentPostModel): Promise {\r\n try {\r\n const result = await this._equipmentApi.addOrUpdate(model);\r\n\r\n if (result) {\r\n this._hubService.sendToAllServiceUsers(HubMethods.LocationBtx.locationBtxEquipmentsUpdated, new LocationEquipmentsUpdatedHubMessage(model.Id));\r\n const location = this.locationsBtx$.getValue().find(l => l.deviceId === model.deviceId);\r\n location.isInitialized = false;\r\n }\r\n\r\n return result;\r\n } catch (error) {\r\n return false;\r\n }\r\n }\r\n\r\n public async uploadToParseConfigurationFile(file: File, locationId: number): Promise {\r\n try {\r\n const uploadForm = new FormData();\r\n uploadForm.append('configurationFile', file, file.name);\r\n uploadForm.append('locationId', locationId.toString());\r\n const result = await this._locationsBtxApi.uploadToParseConfigurationFile(uploadForm) as BTXLocationConfiguration;\r\n if (result) {\r\n return result;\r\n }\r\n return null;\r\n } catch (error) {\r\n if (error instanceof ErrorModel) {\r\n return error;\r\n } else {\r\n this.errors$.next(error);\r\n }\r\n }\r\n }\r\n\r\n public async uploadBtxLocationEquipmentsConfigurationFile(locationConfiguration: BTXLocationConfiguration): Promise {\r\n try {\r\n const result = await this._locationsBtxApi.uploadBtxLocationEquipmentsConfigurationFile(locationConfiguration);\r\n if (result) {\r\n this._hubService.sendToAllServiceUsers(HubMethods.LocationBtx.locationBtxEquipmentsUpdated, new LocationEquipmentsUpdatedHubMessage(locationConfiguration.locationId));\r\n const location = this.locationsBtx$.getValue().find(l => l.deviceId === locationConfiguration.deviceId);\r\n location.isInitialized = false;\r\n }\r\n } catch (error) {\r\n if (error instanceof ErrorModel) {\r\n return error;\r\n } else {\r\n this.errors$.next(error);\r\n }\r\n }\r\n }\r\n\r\n public async initializeDeviceConfiguration(locationId: number): Promise {\r\n try {\r\n await this._hubService.sendToAllServiceUsers(HubMethods.LocationBtx.locationBtxDeviceInInitialization, new LocationDeviceInInitializationHubMessage(locationId));\r\n const result = await this._locationsBtxApi.initializeDeviceConfiguration(locationId);\r\n if (result) {\r\n this._hubService.sendToAllServiceUsers(HubMethods.LocationBtx.locationBtxDeviceInitialized, new LocationDeviceInitializedHubMessage(locationId));\r\n const location = this.locationsBtx$.getValue().find(l => l.id === locationId);\r\n location.isInitialized = true;\r\n return Promise.resolve(true);\r\n }\r\n\r\n return false;\r\n } catch (error) {\r\n if (error instanceof ErrorModel) {\r\n return error;\r\n } else {\r\n this.errors$.next(error);\r\n }\r\n }\r\n }\r\n\r\n public async downloadConnectionFile(locationId: number): Promise {\r\n try {\r\n const result = await this._locationsBtxApi.downloadConnectionFile(locationId);\r\n\r\n return Promise.resolve(new Blob([result as BinaryType], { type: 'application/zip' }));\r\n } catch (error) {\r\n if (error instanceof ErrorModel) {\r\n return error;\r\n } else {\r\n this.errors$.next(error);\r\n }\r\n }\r\n }\r\n\r\n public async delete(locationId: number): Promise {\r\n try {\r\n const result = await this._locationsBtxApi.delete(locationId);\r\n\r\n if (result) {\r\n this._hubService.sendToAllServiceUsers(HubMethods.LocationBtx.locationBtxDeleted, new LocationBtxDeletedHubMessage(locationId));\r\n const locations = this.locationsBtx$.getValue().filter(l => l.id !== locationId);\r\n this.locationsBtx$.next(locations);\r\n return Promise.resolve(true);\r\n }\r\n\r\n return false;\r\n } catch (error) {\r\n if (error instanceof ErrorModel) {\r\n return error;\r\n } else {\r\n this.errors$.next(error);\r\n }\r\n }\r\n }\r\n\r\n public async getLastData(locationId: number, equipmentId: number, equipmentSensorIDs: number[]): Promise {\r\n try {\r\n let data = await this._equipmentApi.getLastData(locationId, equipmentId, equipmentSensorIDs);\r\n return data;\r\n } catch (error) {\r\n this.errors$.next(error);\r\n }\r\n }\r\n\r\n public async getHistoricalDataForThePeriod(request: HistoricalDataFilter): Promise {\r\n try {\r\n let data = await this._equipmentApi.getHistoricalDataForThePeriod(request);\r\n return data;\r\n } catch (error) {\r\n this.errors$.next(error);\r\n }\r\n }\r\n\r\n public async markLocationForOthersAsInUpdate(locationId: number): Promise {\r\n this._hubService.sendToAllServiceUsers(HubMethods.LocationBtx.locationBtxInUpdate, new LocationBtxInUpdateHubMessage(locationId));\r\n }\r\n\r\n public async markLocationForOthersAsUpdated(location: LocationBtxViewModel, withChanges: boolean): Promise {\r\n this._hubService.sendToAllServiceUsers(HubMethods.LocationBtx.locationBtxUpdated, new LocationBtxUpdatedHubMessage(location, withChanges));\r\n }\r\n\r\n public async markLocationEquipmentsForOthersAsInUpdate(locationId: number): Promise {\r\n this._hubService.sendToAllServiceUsers(HubMethods.LocationBtx.locationBtxEquipmentsInUpdate, new LocationEquipmentsInUpdateHubMessage(locationId));\r\n }\r\n\r\n public async markLocationEquipmentsForOthersAsUpdated(locationId: number): Promise {\r\n this._hubService.sendToAllServiceUsers(HubMethods.LocationBtx.locationBtxEquipmentsUpdated, new LocationEquipmentsInUpdateHubMessage(locationId));\r\n }\r\n\r\n public async getCompaniesWithLocations(withEquipments = false) {\r\n try {\r\n const bihaveData = this.companiesWithLocations$.getValue();\r\n if (!bihaveData || bihaveData && bihaveData.length == 0) {\r\n const data = await this._locationsBtxApi.getCompaniesWithLocations(withEquipments);\r\n this.companiesWithLocations$.next(data as CompanyViewModel[]);\r\n this.errors$.next(null);\r\n } else this.companiesWithLocations$.next(bihaveData as CompanyViewModel[]);\r\n } catch (error) {\r\n this.errors$.next(error);\r\n }\r\n }\r\n\r\n public async getLiveDataLocations() {\r\n try {\r\n const cachData = this.liveDataLocations$.getValue();\r\n if (!cachData || cachData.length == 0) {\r\n const data = await this._locationsBtxApi.getLiveDataLocations();\r\n this.liveDataLocations$.next(data as BtxLiveDataLocationViewModel[]);\r\n this.errors$.next(null);\r\n }\r\n else {\r\n this.liveDataLocations$.next(cachData as BtxLiveDataLocationViewModel[]);\r\n }\r\n } catch (error) {\r\n this.errors$.next(error);\r\n }\r\n }\r\n\r\n private subscribeToHubService() {\r\n this._hubService.locationBtxAdded.subscribe((hubMessage: LocationBtxAddedHubMessage) => {\r\n if (hubMessage && hubMessage.newLocation) {\r\n this.locationsBtx$.next([\r\n ...this.locationsBtx$.getValue(),\r\n hubMessage.newLocation\r\n ]);\r\n }\r\n });\r\n this._hubService.locationBtxDeleted.subscribe((hubMessage: LocationBtxDeletedHubMessage) => {\r\n if (hubMessage) {\r\n const locations = this.locationsBtx$.getValue().filter(l => l.id !== hubMessage.locationId);\r\n this.locationsBtx$.next(locations);\r\n }\r\n });\r\n this._hubService.locationBtxInUpdate.subscribe((hubMessage: LocationBtxInUpdateHubMessage) => {\r\n if (hubMessage) {\r\n const location = this.locationsBtx$.getValue().find(l => l.id === hubMessage.locationId);\r\n if (location) {\r\n location.isSomeoneUpdateLocation = true;\r\n }\r\n }\r\n });\r\n this._hubService.locationBtxUpdated.subscribe((hubMessage: LocationBtxUpdatedHubMessage) => {\r\n if (hubMessage && hubMessage.updatedLocation) {\r\n if (hubMessage.withChanges) {\r\n hubMessage.updatedLocation.isSomeoneUpdateLocation = undefined;\r\n this.locationsBtx$.next(this.locationsBtx$.getValue().map(l => {\r\n if (l.id === hubMessage.updatedLocation.id) {\r\n return hubMessage.updatedLocation;\r\n } else {\r\n return l;\r\n }\r\n }));\r\n } else {\r\n const location = this.locationsBtx$.getValue().find(l => l.id == hubMessage.updatedLocation.id);\r\n location.isSomeoneUpdateLocation = false;\r\n }\r\n }\r\n });\r\n this._hubService.locationBtxEquipmentsInUpdate.subscribe((hubMessage: LocationEquipmentsInUpdateHubMessage) => {\r\n if (hubMessage) {\r\n const location = this.locationsBtx$.getValue().find(l => l.id === hubMessage.locationId);\r\n if (location) {\r\n location.isSomeoneUpdateLocation = true;\r\n }\r\n }\r\n });\r\n this._hubService.locationBtxEquipmentsUpdated.subscribe((hubMessage: LocationEquipmentsUpdatedHubMessage) => {\r\n if (hubMessage) {\r\n const location = this.locationsBtx$.getValue().find(l => l.id === hubMessage.locationId);\r\n if (location) {\r\n location.isSomeoneUpdateLocation = false;\r\n location.isInitialized = false;\r\n }\r\n }\r\n });\r\n this._hubService.locationBtxDeviceInInitialization.subscribe((hubMessage: LocationDeviceInInitializationHubMessage) => {\r\n if (hubMessage) {\r\n const location = this.locationsBtx$.getValue().find(l => l.id === hubMessage.locationId);\r\n if (location) {\r\n location.isDeviceInInitialization = true;\r\n }\r\n }\r\n });\r\n this._hubService.locationBtxDeviceInitialized.subscribe((hubMessage: LocationDeviceInitializedHubMessage) => {\r\n if (hubMessage) {\r\n const location = this.locationsBtx$.getValue().find(l => l.id === hubMessage.locationId);\r\n if (location) {\r\n location.isDeviceInInitialization = false;\r\n location.isInitialized = true;\r\n }\r\n }\r\n });\r\n }\r\n\r\n clearBehaveCache() {\r\n this.locationsBtx$.next([]);\r\n this.liveDataLocations$.next([]);\r\n this.companiesWithLocations$.next([]);\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { BehaviorSubject } from 'rxjs';\r\n\r\nimport { FullnessRangePostModel } from './../../models/fullness-range.model';\r\nimport { ErrorModel } from 'src/app/common';\r\nimport { HubService, LocationsItxApiService } from \"../http\";\r\nimport { HubMethods } from \"../../constants\";\r\nimport {\r\n LocationItxViewModel,\r\n FullnessRangesGetModel,\r\n LocationItxPostModel, LocationItxUpdatedHubMessage,\r\n LocationItxDeletedHubMessage,\r\n LocationItxAddedHubMessage,\r\n LocationItxInUpdateHubMessage,\r\n LocationItxStoragesInViewHubMessage,\r\n LocationItxFullnessRangeUpdatedHubMessage,\r\n ItxBinAddedHubMessage,\r\n ItxBinDeletedHubMessage,\r\n LocationItxDeviceInInitializationHubMessage,\r\n LocationItxDeviceInitializedHubMessage,\r\n ItxLocationNameModel,\r\n} from '../../models';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class LocationsItxDatasourceService {\r\n public locationsItx$: BehaviorSubject = new BehaviorSubject([]);\r\n public errors$: BehaviorSubject = new BehaviorSubject(null);\r\n\r\n constructor(\r\n private _locationsItxApi: LocationsItxApiService,\r\n private _hubService: HubService,\r\n ) {\r\n this.subscribeToHubService();\r\n }\r\n\r\n\r\n public async getLocationsWithBinsForCompany(companyId: number) {\r\n try {\r\n const data = await this._locationsItxApi.getItxLocationForCompany(companyId) as LocationItxViewModel[];\r\n if (data) {\r\n this.locationsItx$.next(data as LocationItxViewModel[]);\r\n }\r\n } catch (error) {\r\n this.errors$.next(error);\r\n }\r\n }\r\n\r\n public async get() {\r\n try {\r\n const data = await this._locationsItxApi.getAll();\r\n this.locationsItx$.next(data as LocationItxViewModel[]);\r\n this.errors$.next(null);\r\n } catch (error) {\r\n this.errors$.next(error);\r\n }\r\n }\r\n\r\n public async markLocationItxForOthersAsInUpdate(\r\n locationId: number\r\n ): Promise {\r\n this._hubService.sendToAllServiceUsers(\r\n HubMethods.LocationItx.locationItxInUpdate,\r\n new LocationItxInUpdateHubMessage(locationId)\r\n );\r\n }\r\n\r\n public async markLocationItxForOthersAsStoragesInView(\r\n locationId: number,\r\n isView: boolean\r\n ): Promise {\r\n this._hubService.sendToAllServiceUsers(\r\n HubMethods.LocationItx.locationItxStorageInView,\r\n new LocationItxStoragesInViewHubMessage(locationId, isView)\r\n );\r\n }\r\n\r\n public async markLocationItxForOthersAsUpdated(\r\n location: LocationItxViewModel,\r\n withChanges: boolean\r\n ): Promise {\r\n this._hubService.sendToAllServiceUsers(\r\n HubMethods.LocationItx.locationItxUpdated,\r\n new LocationItxUpdatedHubMessage(location, withChanges)\r\n );\r\n }\r\n\r\n public async add(location: LocationItxViewModel): Promise {\r\n try {\r\n const locationPostModel = new LocationItxPostModel(location);\r\n const result = (await this._locationsItxApi.add(\r\n locationPostModel\r\n )) as LocationItxViewModel;\r\n if (result) {\r\n this._hubService.sendToAllServiceUsers(\r\n HubMethods.LocationItx.locationItxAdded,\r\n new LocationItxAddedHubMessage(result)\r\n );\r\n this.locationsItx$.next([...this.locationsItx$.getValue(), result]);\r\n return Promise.resolve(result);\r\n }\r\n return null;\r\n } catch (error) {\r\n if (error instanceof ErrorModel) {\r\n return error;\r\n } else {\r\n this.errors$.next(error);\r\n }\r\n }\r\n }\r\n public async edit(\r\n location: LocationItxViewModel\r\n ): Promise {\r\n try {\r\n const locationPutModel = new LocationItxPostModel(location);\r\n const result = (await this._locationsItxApi.edit(\r\n locationPutModel\r\n )) as LocationItxViewModel;\r\n if (result) {\r\n this.locationsItx$.next(\r\n this.locationsItx$\r\n .getValue()\r\n .map((l) => (l.id === result.id ? result : l))\r\n );\r\n return Promise.resolve(result);\r\n }\r\n return null;\r\n } catch (error) {\r\n if (error instanceof ErrorModel) {\r\n return error;\r\n } else {\r\n this.errors$.next(error);\r\n }\r\n }\r\n }\r\n\r\n public async delete(locationId: number): Promise {\r\n try {\r\n const result = await this._locationsItxApi.delete(locationId);\r\n if (result) {\r\n this._hubService.sendToAllServiceUsers(\r\n HubMethods.LocationItx.locationItxDeleted,\r\n new LocationItxDeletedHubMessage(locationId)\r\n );\r\n const locations = this.locationsItx$\r\n .getValue()\r\n .filter((l) => l.id !== locationId);\r\n this.locationsItx$.next(locations);\r\n return Promise.resolve(true);\r\n }\r\n return false;\r\n } catch (error) {\r\n if (error instanceof ErrorModel) {\r\n return error;\r\n } else {\r\n this.errors$.next(error);\r\n }\r\n }\r\n }\r\n\r\n public async getFullnessRanges(locationId: number) {\r\n try {\r\n const result = await this._locationsItxApi.getFullnessRanges(locationId) as FullnessRangesGetModel;\r\n\r\n if (result) {\r\n const location = this.locationsItx$.getValue().find(x => x.id === result.locationId);\r\n location.fullnessRanges = result.fullnessRanges;\r\n }\r\n } catch (error) {\r\n if (error instanceof ErrorModel) {\r\n return error;\r\n } else {\r\n this.errors$.next(error);\r\n }\r\n }\r\n }\r\n\r\n public async editFullnessRange(editFullnessmodel: FullnessRangePostModel): Promise {\r\n try {\r\n const result = await this._locationsItxApi.editFullnessRange(editFullnessmodel) as FullnessRangesGetModel\r\n if (result) {\r\n const location = this.locationsItx$.getValue().find(l => l.id == result.locationId);\r\n if (location) {\r\n location.isInitialized = result.isInitialized;\r\n location.canDeviceBeInitialized = result.canDeviceBeInitialized;\r\n location.fullnessRanges = result.fullnessRanges;\r\n }\r\n\r\n await this._hubService.sendToAll(HubMethods.LocationItx.locationItxFullnessRangeUpdated, new LocationItxFullnessRangeUpdatedHubMessage(editFullnessmodel));\r\n }\r\n\r\n return result;\r\n } catch (error) {\r\n if (error instanceof ErrorModel) {\r\n return error;\r\n } else {\r\n this.errors$.next(error);\r\n }\r\n }\r\n }\r\n\r\n private subscribeToHubService() {\r\n this._hubService.locationItxAdded.subscribe(\r\n (hubMessage: LocationItxAddedHubMessage) => {\r\n if (hubMessage && hubMessage.newLocationItx) {\r\n this.locationsItx$.next([\r\n ...this.locationsItx$.getValue(),\r\n hubMessage.newLocationItx,\r\n ]);\r\n }\r\n }\r\n );\r\n\r\n this._hubService.locationItxStorageInView.subscribe(\r\n (hubMessage: LocationItxStoragesInViewHubMessage) => {\r\n if (hubMessage) {\r\n const location = this.locationsItx$\r\n .getValue()\r\n .find((l) => l.id === hubMessage.locationId);\r\n if (location) {\r\n location.isSomeoneInViewStorages = hubMessage.isView;\r\n }\r\n }\r\n }\r\n );\r\n\r\n this._hubService.locationItxInUpdate.subscribe(\r\n (hubMessage: LocationItxInUpdateHubMessage) => {\r\n if (hubMessage) {\r\n const location = this.locationsItx$\r\n .getValue()\r\n .find((l) => l.id === hubMessage.locationId);\r\n if (location) {\r\n location.isSomeoneUpdateLocation = true;\r\n }\r\n }\r\n }\r\n );\r\n this._hubService.locationItxUpdated.subscribe(\r\n (hubMessage: LocationItxUpdatedHubMessage) => {\r\n if (hubMessage && hubMessage.updatedLocationItx) {\r\n if (hubMessage.withCahnges) {\r\n hubMessage.updatedLocationItx.isSomeoneUpdateLocation = false;\r\n this.locationsItx$.next(\r\n this.locationsItx$.getValue().map((l) => {\r\n if (l.id == hubMessage.updatedLocationItx.id) {\r\n return hubMessage.updatedLocationItx;\r\n } else {\r\n return l;\r\n }\r\n })\r\n );\r\n } else {\r\n const location = this.locationsItx$\r\n .getValue()\r\n .find((l) => l.id == hubMessage.updatedLocationItx.id);\r\n location.isSomeoneUpdateLocation = false;\r\n console.log(location.isSomeoneUpdateLocation)\r\n }\r\n }\r\n }\r\n );\r\n this._hubService.locationItxDeleted.subscribe(\r\n (hubMessage: LocationItxDeletedHubMessage) => {\r\n if (hubMessage) {\r\n const locations = this.locationsItx$\r\n .getValue()\r\n .filter((l) => l.id !== hubMessage.locationId);\r\n this.locationsItx$.next(locations);\r\n }\r\n }\r\n );\r\n this._hubService.fullnessRangeUpdated.subscribe((hubMessage: LocationItxFullnessRangeUpdatedHubMessage) => {\r\n if (hubMessage) {\r\n const location = this.locationsItx$.getValue().find(x => x.id === hubMessage.updatedRanges.locationId);\r\n if (location) {\r\n location.fullnessRanges = hubMessage.updatedRanges.ranges;\r\n }\r\n }\r\n });\r\n this._hubService.itxBinAdded.subscribe((hubMessage: ItxBinAddedHubMessage) => {\r\n if (hubMessage) {\r\n const locations = this.locationsItx$.getValue();\r\n const location = locations.find(l => l.id === hubMessage.newItxbin.locationId);\r\n if (location) {\r\n location.countOfBins++;\r\n this.locationsItx$.next(locations);\r\n }\r\n }\r\n });\r\n this._hubService.itxBinDeleted.subscribe((hubMessage: ItxBinDeletedHubMessage) => {\r\n const locations = this.locationsItx$.getValue();\r\n const location = locations.find(l => l.id === hubMessage.itxLocationId);\r\n if (location) {\r\n location.countOfBins--;\r\n if (location.countOfBins < 0) {\r\n location.countOfBins = 0;\r\n }\r\n this.locationsItx$.next(locations);\r\n }\r\n });\r\n\r\n this._hubService.locationItxDeviceInInitialization.subscribe((hubMessage: LocationItxDeviceInInitializationHubMessage) => {\r\n const locations = this.locationsItx$.getValue();\r\n const location = locations.find(l => l.id == hubMessage.locationId);\r\n if (location) {\r\n location.isDeviceInInitialization = true;\r\n this.locationsItx$.next(locations);\r\n }\r\n });\r\n this._hubService.locationItxDeviceInitialized.subscribe((hubMessage: LocationItxDeviceInitializedHubMessage) => {\r\n const locations = this.locationsItx$.getValue();\r\n const location = locations.find(l => l.id == hubMessage.locationId);\r\n if (location) {\r\n location.isDeviceInInitialization = false;\r\n location.isInitialized = hubMessage.isInitialized;\r\n this.locationsItx$.next(locations);\r\n }\r\n });\r\n }\r\n\r\n public async initializeDeviceConfiguration(locationId: number): Promise {\r\n try {\r\n await this._hubService.sendToAllServiceUsers(HubMethods.LocationItx.locationItxDeviceInInitialization, new LocationItxDeviceInInitializationHubMessage(locationId));\r\n const result = await this._locationsItxApi.initializeDeviceConfiguration(locationId);\r\n await this._hubService.sendToAllServiceUsers(HubMethods.LocationItx.locationItxDeviceInitialized, new LocationItxDeviceInitializedHubMessage(locationId, result as boolean));\r\n if (result) {\r\n return Promise.resolve(true);\r\n }\r\n return false;\r\n } catch (error) {\r\n await this._hubService.sendToAllServiceUsers(HubMethods.LocationItx.locationItxDeviceInitialized, new LocationItxDeviceInitializedHubMessage(locationId, false));\r\n if (error instanceof ErrorModel) {\r\n return error;\r\n } else {\r\n this.errors$.next(error);\r\n }\r\n }\r\n }\r\n\r\n public async downloadConnectionFile(locationId: number): Promise {\r\n try {\r\n const result = await this._locationsItxApi.downloadConnectionFile(locationId);\r\n return Promise.resolve(new Blob([result as BinaryType], { type: \"application/zip\" }));\r\n } catch (error) {\r\n if (error instanceof ErrorModel) {\r\n return error;\r\n } else {\r\n this.errors$.next(error);\r\n }\r\n }\r\n }\r\n\r\n public async getListOfAssignedItxLocationsWithItxBins(): Promise< ItxLocationNameModel[] | ErrorModel> {\r\n try {\r\n const data = await this._locationsItxApi.getListOfAssignedItxLocationsWithItxBins() as ItxLocationNameModel[];\r\n return data;\r\n } catch (error) {\r\n this.errors$.next(error);\r\n }\r\n }\r\n}\r\n","import { Injectable } from \"@angular/core\";\r\nimport { BehaviorSubject } from \"rxjs\";\r\nimport { Router } from '@angular/router';\r\n\r\nimport { ErrorModel } from '../../../common';\r\nimport {\r\n LocationKtxDeletedHubMessage,\r\n LocationKtxInUpdateHubMessage,\r\n LocationKtxDeviceInInitializationHubMessage,\r\n LocationKtxDeviceInitializedHubMessage,\r\n LocationKtxBinsInUpdateHubMessage,\r\n LocationKtxBinsUpdatedHubMessage,\r\n LocationKtxAddedHubMessage,\r\n LocationKtxUpdatedHubMessage,\r\n TemperatureRangePostModel,\r\n LocationKtxSchemeViewModel,\r\n LocationKtxViewModel,\r\n LocationKtxPostModel,\r\n TelemetrySnapshotViewModel,\r\n AddEditLocationKtxSchemePostModel,\r\n AddEditLocationKtxSchemeResultModel,\r\n LocationKtxTemperatureRangeUpdatedHubMessage,\r\n TemperatureRangeAlarmViewModel,\r\n TemperatureRangeGetModel,\r\n AddEditLocationKtxSchemeViewModel,\r\n AddEditLocationKtxSchemeGetModel,\r\n BinConnectionViewModel,\r\n EditBinConnectionPostModel,\r\n CompanyViewModel,\r\n BinSchemeViewModel,\r\n TelemetryBinsGetModel,\r\n HistoricalBinsSnapshots,\r\n} from \"../../models\";\r\nimport { HubService, LocationsKtxApiService } from \"../http\";\r\nimport { HubMethods } from \"../../constants\";\r\nimport { BinTypeEnum, MeasureEnum, SwitchTypeEnum } from \"../../enums\";\r\n\r\n@Injectable()\r\nexport class LocationsKtxDataSourceService {\r\n public locationsKtx$: BehaviorSubject = new BehaviorSubject([]);\r\n public companiesWithLocations$: BehaviorSubject = new BehaviorSubject([]);\r\n public errors$: BehaviorSubject = new BehaviorSubject(null);\r\n public telemetry$: BehaviorSubject = new BehaviorSubject(null);\r\n public lastTelemetry$: BehaviorSubject = new BehaviorSubject(null);\r\n public readSiloDataTelemetry$: BehaviorSubject = new BehaviorSubject(null);\r\n public temperatureRanges$: BehaviorSubject = new BehaviorSubject(null);\r\n public binsConnections$: BehaviorSubject = new BehaviorSubject(null);\r\n public locationScheme$: BehaviorSubject = new BehaviorSubject(null);\r\n\r\n constructor(\r\n private _locationsKtxApi: LocationsKtxApiService,\r\n private _hubService: HubService,\r\n private _router: Router,\r\n ) {\r\n this.subscribeToHubService();\r\n }\r\n\r\n public async get() {\r\n try {\r\n const cacheData = this.locationsKtx$.getValue();\r\n if (!cacheData || cacheData.length == 0) {\r\n const data = await this._locationsKtxApi.getAll();\r\n this.locationsKtx$.next(data as LocationKtxViewModel[]);\r\n this.errors$.next(null);\r\n } else {\r\n this.locationsKtx$.next(cacheData as LocationKtxViewModel[]);\r\n }\r\n } catch (error) {\r\n this.errors$.next(error);\r\n }\r\n }\r\n\r\n public async getScheme(locationId: number, isLocationView: boolean = false): Promise {\r\n try {\r\n const schema = this.locationScheme$.getValue();\r\n if (!schema || schema.locationId != locationId || (!schema.forLocationView && isLocationView == true)) {\r\n const data = await this._locationsKtxApi.getScheme(locationId, isLocationView) as LocationKtxSchemeViewModel;\r\n\r\n if (data) {\r\n this.locationScheme$.next(data);\r\n this.errors$.next(null);\r\n\r\n return data;\r\n }\r\n } else {\r\n this.locationScheme$.next(schema);\r\n return schema;\r\n }\r\n\r\n return null;\r\n } catch (error) {\r\n this.errors$.next(error);\r\n }\r\n }\r\n\r\n public async getTemperatureRangesForLocation(locationId: number): Promise {\r\n try {\r\n const result = await this._locationsKtxApi.getTemperatureRanges(locationId) as TemperatureRangeAlarmViewModel;\r\n return result;\r\n } catch (error) {\r\n if (error instanceof ErrorModel) {\r\n return error;\r\n } else {\r\n this.errors$.next(error);\r\n }\r\n }\r\n }\r\n\r\n public async getHistoricalBinsSnapshotForThePeriod(binIds: number[], timestampFrom: number, timestampTo: number): Promise {\r\n try {\r\n const result = await this._locationsKtxApi.getHistoricalBinsSnapshotForThePeriod(binIds, timestampFrom, timestampTo) as HistoricalBinsSnapshots;\r\n return result;\r\n } catch (error) {\r\n if (error instanceof ErrorModel) {\r\n return error;\r\n } else {\r\n this.errors$.next(error);\r\n }\r\n }\r\n }\r\n\r\n public async getBinsTelemetry(getModel: TelemetryBinsGetModel[]): Promise {\r\n try {\r\n const result = await this._locationsKtxApi.getBinsTelemetry(getModel) as TelemetrySnapshotViewModel[];\r\n return result;\r\n } catch (error) {\r\n if (error instanceof ErrorModel) {\r\n return error;\r\n } else {\r\n this.errors$.next(error);\r\n }\r\n }\r\n }\r\n\r\n public async getTelemetry(binId: number, cablesIds: number[]) {\r\n try {\r\n const result = await this._locationsKtxApi.getTelemetry(binId, cablesIds) as TelemetrySnapshotViewModel;\r\n\r\n if (result) {\r\n this.lastTelemetry$.next(result);\r\n }\r\n } catch (error) {\r\n if (error instanceof ErrorModel) {\r\n return error;\r\n } else {\r\n this.errors$.next(error);\r\n }\r\n }\r\n }\r\n\r\n public async getBinSchema(locationId: number, binId: number): Promise {\r\n try {\r\n const result = await this._locationsKtxApi.getBinSchema(locationId, binId) as BinSchemeViewModel;\r\n return result;\r\n } catch (error) {\r\n if (error instanceof ErrorModel) {\r\n return error;\r\n } else {\r\n this.errors$.next(error);\r\n }\r\n }\r\n }\r\n\r\n public async ReadSiloData(binId: number, measure: MeasureEnum) {\r\n try {\r\n const result = await this._locationsKtxApi.readSiloData(binId, measure) as TelemetrySnapshotViewModel;\r\n\r\n if (result) {\r\n this.telemetry$.next(result);\r\n }\r\n } catch (error) {\r\n if (error instanceof ErrorModel) {\r\n return error;\r\n } else {\r\n this.errors$.next(error);\r\n }\r\n }\r\n }\r\n\r\n public async getTemperatureRanges(locationId: number) {\r\n try {\r\n const result = await this._locationsKtxApi.getTemperatureRanges(locationId) as TemperatureRangeAlarmViewModel;\r\n\r\n if (result) {\r\n const location = this.locationsKtx$.getValue().find(x => x.id === result.locationId);\r\n location.temperatureRanges = result.temperatureRanges;\r\n location.alarm = result.alarm;\r\n location.alarm.highResistanceColorHex = location.alarm.highTemperatureColorHex;\r\n }\r\n } catch (error) {\r\n if (error instanceof ErrorModel) {\r\n return error;\r\n } else {\r\n this.errors$.next(error);\r\n }\r\n }\r\n }\r\n\r\n public async add(location: LocationKtxViewModel): Promise {\r\n try {\r\n const locationPostModel = new LocationKtxPostModel(location);\r\n const result = (await this._locationsKtxApi.add(\r\n locationPostModel\r\n )) as LocationKtxViewModel;\r\n if (result) {\r\n this._hubService.sendToAllServiceUsers(\r\n HubMethods.LocationKtx.locationKtxAdded,\r\n new LocationKtxAddedHubMessage(result)\r\n );\r\n this.locationsKtx$.next([...this.locationsKtx$.getValue(), result]);\r\n return Promise.resolve(result);\r\n }\r\n return null;\r\n } catch (error) {\r\n if (error instanceof ErrorModel) {\r\n return error;\r\n } else {\r\n this.errors$.next(error);\r\n }\r\n }\r\n }\r\n\r\n public async edit(\r\n location: LocationKtxViewModel\r\n ): Promise {\r\n try {\r\n const locationPutModel = new LocationKtxPostModel(location);\r\n const result = (await this._locationsKtxApi.edit(\r\n locationPutModel\r\n )) as LocationKtxViewModel;\r\n if (result) {\r\n this._hubService.sendToAllServiceUsers(\r\n HubMethods.LocationKtx.locationKtxUpdated,\r\n new LocationKtxUpdatedHubMessage(result, true)\r\n );\r\n this.locationsKtx$.next(\r\n this.locationsKtx$\r\n .getValue()\r\n .map((l) => (l.id === result.id ? result : l))\r\n );\r\n return Promise.resolve(result);\r\n }\r\n return null;\r\n } catch (error) {\r\n if (error instanceof ErrorModel) {\r\n return error;\r\n } else {\r\n this.errors$.next(error);\r\n }\r\n }\r\n }\r\n\r\n public async editTemperatureRange(editTemperaturemodel: TemperatureRangePostModel): Promise {\r\n try {\r\n const result = await this._locationsKtxApi.editTemperatureRange(editTemperaturemodel) as TemperatureRangeGetModel\r\n if (result) {\r\n const location = this.locationsKtx$.getValue().find(l => l.id == result.locationId);\r\n if (location) {\r\n location.isInitialized = result.isInitialized;\r\n location.canDeviceBeInitialized = result.canDeviceBeInitialized;\r\n location.temperatureRanges = result.temperatureRanges;\r\n location.alarm = result.alarm;\r\n }\r\n const schema = this.locationScheme$.getValue();\r\n if (schema && schema.locationId == editTemperaturemodel.locationId && schema.forLocationView) {\r\n\r\n schema.alarm = result.alarm;\r\n schema.temperatureRanges = result.temperatureRanges;\r\n\r\n this.locationScheme$.next(schema);\r\n }\r\n await this._hubService.sendToAll(HubMethods.LocationKtx.locationKtxTemperatureRangeUpdated, new LocationKtxTemperatureRangeUpdatedHubMessage(editTemperaturemodel));\r\n }\r\n\r\n return result;\r\n } catch (error) {\r\n if (error instanceof ErrorModel) {\r\n return error;\r\n } else {\r\n this.errors$.next(error);\r\n }\r\n }\r\n }\r\n\r\n public async initializeDeviceConfiguration(\r\n locationId: number\r\n ): Promise {\r\n try {\r\n await this._hubService.sendToAllServiceUsers(\r\n HubMethods.LocationKtx.locationKtxDeviceInInitialization,\r\n new LocationKtxDeviceInInitializationHubMessage(locationId)\r\n );\r\n const result = await this._locationsKtxApi.initializeDeviceConfiguration(locationId);\r\n if (result) {\r\n this._hubService.sendToAllServiceUsers(\r\n HubMethods.LocationKtx.locationKtxDeviceInitialized,\r\n new LocationKtxDeviceInitializedHubMessage(locationId)\r\n );\r\n\r\n const location = this.locationsKtx$.getValue().find(x => x.id === locationId);\r\n if (location) {\r\n location.isInitialized = true;\r\n }\r\n\r\n return Promise.resolve(true);\r\n }\r\n\r\n return false;\r\n } catch (error) {\r\n if (error instanceof ErrorModel) {\r\n return error;\r\n } else {\r\n this.errors$.next(error);\r\n }\r\n }\r\n }\r\n\r\n public async downloadConnectionFile(\r\n locationId: number\r\n ): Promise {\r\n try {\r\n const result = await this._locationsKtxApi.downloadConnectionFile(\r\n locationId\r\n );\r\n\r\n return Promise.resolve(\r\n new Blob([result as BinaryType], { type: \"application/zip\" })\r\n );\r\n } catch (error) {\r\n if (error instanceof ErrorModel) {\r\n return error;\r\n } else {\r\n this.errors$.next(error);\r\n }\r\n }\r\n }\r\n\r\n public async delete(locationId: number): Promise {\r\n try {\r\n const result = await this._locationsKtxApi.delete(locationId);\r\n\r\n if (result) {\r\n this._hubService.sendToAllServiceUsers(\r\n HubMethods.LocationKtx.locationKtxDeleted,\r\n new LocationKtxDeletedHubMessage(locationId)\r\n );\r\n const locations = this.locationsKtx$\r\n .getValue()\r\n .filter((l) => l.id !== locationId);\r\n this.locationsKtx$.next(locations);\r\n return Promise.resolve(true);\r\n }\r\n return false;\r\n } catch (error) {\r\n if (error instanceof ErrorModel) {\r\n return error;\r\n } else {\r\n this.errors$.next(error);\r\n }\r\n }\r\n }\r\n\r\n public async uploadConfigurationFile(file: File, locationId: number): Promise {\r\n if (this._router.url.indexOf('/back-door') > -1) {\r\n return this.getFakeAddEditLocationKtxSchemeViewModel();\r\n }\r\n\r\n try {\r\n const uploadForm = new FormData();\r\n uploadForm.append('configurationFile', file, file.name);\r\n uploadForm.append('locationId', locationId.toString());\r\n\r\n const result = await this._locationsKtxApi.uploadConfigurationFile(uploadForm) as AddEditLocationKtxSchemeGetModel;\r\n if (result) {\r\n return AddEditLocationKtxSchemeGetModel.toViewModel(result);\r\n }\r\n return null;\r\n } catch (error) {\r\n if (error instanceof ErrorModel) {\r\n return error;\r\n } else {\r\n this.errors$.next(error);\r\n }\r\n }\r\n }\r\n\r\n public async updateLocationScheme(requestModel: AddEditLocationKtxSchemePostModel) {\r\n try {\r\n const result = await this._locationsKtxApi.addEditLocationScheme(requestModel) as AddEditLocationKtxSchemeResultModel;\r\n if (result) {\r\n const location = this.locationsKtx$\r\n .getValue()\r\n .find((l) => l.id === requestModel.locationId);\r\n if (location) {\r\n location.isInitialized = !result.isNeedToInitializeDevice;\r\n location.canDeviceBeInitialized = result.canDeviceBeInitialized;\r\n location.locationName = result.locationName;\r\n location.displaySchemes = result.displayScheme;\r\n location.countOfBins = result.countOfBins;\r\n }\r\n return result;\r\n }\r\n return null;\r\n } catch (error) {\r\n if (error instanceof ErrorModel) {\r\n return error;\r\n } else {\r\n this.errors$.next(error);\r\n }\r\n }\r\n }\r\n\r\n public async markLocationKtxForOthersAsInUpdate(\r\n locationId: number\r\n ): Promise {\r\n this._hubService.sendToAllServiceUsers(\r\n HubMethods.LocationKtx.locationKtxInUpdate,\r\n new LocationKtxInUpdateHubMessage(locationId)\r\n );\r\n }\r\n\r\n public async markLocationKtxForOthersAsUpdated(\r\n location: LocationKtxViewModel,\r\n withChanges: boolean\r\n ): Promise {\r\n this._hubService.sendToAllServiceUsers(\r\n HubMethods.LocationKtx.locationKtxUpdated,\r\n new LocationKtxUpdatedHubMessage(location, withChanges)\r\n );\r\n }\r\n\r\n public async markLocationKtxBinsForOthersAsInUpdate(\r\n deviceId: string\r\n ): Promise {\r\n this._hubService.sendToAllServiceUsers(\r\n HubMethods.LocationKtx.locationKtxBinsInUpdate,\r\n new LocationKtxBinsInUpdateHubMessage(deviceId)\r\n );\r\n }\r\n\r\n public async markLocationKtxBinsForOthersAsUpdated(\r\n deviceId: string\r\n ): Promise {\r\n this._hubService.sendToAllServiceUsers(\r\n HubMethods.LocationKtx.locationKtxBinsUpdated,\r\n new LocationKtxBinsInUpdateHubMessage(deviceId)\r\n );\r\n }\r\n\r\n public async getBinsForEditConnection(locationId: number) {\r\n try {\r\n const data = await this._locationsKtxApi.getBinsForEditConnection(locationId);\r\n this.binsConnections$.next(data as BinConnectionViewModel[]);\r\n this.errors$.next(null);\r\n } catch (error) {\r\n this.errors$.next(error);\r\n }\r\n }\r\n\r\n public async editConnections(locationid: number, binsConnections: BinConnectionViewModel[]) {\r\n try {\r\n let binConnectionsPost = new EditBinConnectionPostModel(locationid, binsConnections);\r\n const result = await this._locationsKtxApi.editConnections(binConnectionsPost);\r\n if (!(result instanceof ErrorModel)) {\r\n this.locationsKtx$.next([...this.locationsKtx$.getValue().filter(i => i.id != locationid), result]);\r\n this.markLocationKtxForOthersAsUpdated(result, true);\r\n }\r\n }\r\n catch (error) {\r\n if (error instanceof ErrorModel) {\r\n return error;\r\n } else {\r\n this.errors$.next(error);\r\n }\r\n }\r\n }\r\n\r\n public async getCompaniesWithLocations(withBins = false) {\r\n try {\r\n const locations = this.companiesWithLocations$.getValue();\r\n if (!locations || locations && locations.length == 0) {\r\n const data = await this._locationsKtxApi.getCompaniesWithLocations(withBins);\r\n this.companiesWithLocations$.next(data as CompanyViewModel[]);\r\n this.errors$.next(null);\r\n }\r\n else this.companiesWithLocations$.next(locations);\r\n } catch (error) {\r\n this.errors$.next(error);\r\n }\r\n }\r\n\r\n private subscribeToHubService() {\r\n this._hubService.locationKtxAdded.subscribe(\r\n (hubMessage: LocationKtxAddedHubMessage) => {\r\n if (hubMessage && hubMessage.newLocationKtx) {\r\n this.locationsKtx$.next([\r\n ...this.locationsKtx$.getValue(),\r\n hubMessage.newLocationKtx,\r\n ]);\r\n }\r\n }\r\n );\r\n\r\n this._hubService.locationKtxInUpdate.subscribe(\r\n (hubMessage: LocationKtxInUpdateHubMessage) => {\r\n if (hubMessage) {\r\n const location = this.locationsKtx$\r\n .getValue()\r\n .find((l) => l.id === hubMessage.locationId);\r\n if (location) {\r\n location.isSomeoneUpdateLocation = true;\r\n }\r\n }\r\n }\r\n );\r\n this._hubService.locationKtxUpdated.subscribe(\r\n (hubMessage: LocationKtxUpdatedHubMessage) => {\r\n if (hubMessage && hubMessage.updatedLocationKtx) {\r\n if (hubMessage.withCahnges) {\r\n hubMessage.updatedLocationKtx.isSomeoneUpdateLocation = undefined;\r\n this.locationsKtx$.next(\r\n this.locationsKtx$.getValue().map((l) => {\r\n if (l.id === hubMessage.updatedLocationKtx.id) {\r\n return hubMessage.updatedLocationKtx;\r\n } else {\r\n return l;\r\n }\r\n })\r\n );\r\n } else {\r\n const location = this.locationsKtx$\r\n .getValue()\r\n .find((l) => l.id == hubMessage.updatedLocationKtx.id);\r\n location.isSomeoneUpdateLocation = false;\r\n }\r\n }\r\n }\r\n );\r\n this._hubService.locationDeleted.subscribe(\r\n (hubMessage: LocationKtxDeletedHubMessage) => {\r\n if (hubMessage) {\r\n const locations = this.locationsKtx$\r\n .getValue()\r\n .filter((l) => l.id !== hubMessage.locationId);\r\n this.locationsKtx$.next(locations);\r\n }\r\n }\r\n );\r\n this._hubService.locationKtxBinsUpdated.subscribe(\r\n (hubMessage: LocationKtxBinsUpdatedHubMessage) => {\r\n if (hubMessage) {\r\n const location = this.locationsKtx$\r\n .getValue()\r\n .find((l) => l.id === hubMessage.locationId);\r\n if (location) {\r\n location.isSomeoneUpdateLocation = false;\r\n }\r\n }\r\n }\r\n );\r\n this._hubService.locationKtxDeviceInInitialization.subscribe(\r\n (hubMessage: LocationKtxDeviceInInitializationHubMessage) => {\r\n if (hubMessage) {\r\n const location = this.locationsKtx$\r\n .getValue()\r\n .find((l) => l.id === hubMessage.locationId);\r\n if (location) {\r\n location.isDeviceInInitialization = true;\r\n }\r\n }\r\n }\r\n );\r\n this._hubService.locationKtxDeviceInitialized.subscribe(\r\n (hubMessage: LocationKtxDeviceInitializedHubMessage) => {\r\n if (hubMessage) {\r\n const location = this.locationsKtx$\r\n .getValue()\r\n .find((l) => l.id === hubMessage.locationId);\r\n if (location) {\r\n location.isDeviceInInitialization = false;\r\n }\r\n }\r\n }\r\n );\r\n this._hubService.temperatureRangeUpdated.subscribe((hubMessage: LocationKtxTemperatureRangeUpdatedHubMessage) => {\r\n if (hubMessage) {\r\n const location = this.locationsKtx$.getValue().find(x => x.id === hubMessage.updatedRanges.locationId);\r\n if (location) {\r\n location.temperatureRanges = hubMessage.updatedRanges.ranges;\r\n location.alarm = hubMessage.updatedRanges.alarm;\r\n }\r\n }\r\n });\r\n }\r\n\r\n private getFakeAddEditLocationKtxSchemeViewModel(): AddEditLocationKtxSchemeViewModel {\r\n const binsSchemes = [\r\n {\r\n name: 'bin 1',\r\n sysId: 1,\r\n switchType: SwitchTypeEnum.MUX\r\n },\r\n {\r\n name: 'bin 2',\r\n sysId: 1,\r\n switchTypeEnum: SwitchTypeEnum.MUX\r\n },\r\n {\r\n name: 'bin 3',\r\n sysId: 2,\r\n switchTypeEnum: SwitchTypeEnum.BCS_RT\r\n },\r\n {\r\n name: 'bin 4',\r\n sysId: 2,\r\n switchTypeEnum: SwitchTypeEnum.BCS_IICS\r\n },\r\n {\r\n name: 'bin 5',\r\n sysId: 3,\r\n switchTypeEnum: SwitchTypeEnum.BCS_AR\r\n },\r\n ];\r\n\r\n const locationScheme = {\r\n bins: binsSchemes,\r\n } as AddEditLocationKtxSchemeViewModel;\r\n\r\n return locationScheme;\r\n }\r\n\r\n clearBehaveCache() {\r\n this.companiesWithLocations$.next([]);\r\n this.locationsKtx$.next([]);\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { BehaviorSubject } from 'rxjs';\r\n\r\nimport { ErrorModel } from '../../../common';\r\nimport {\r\n LocationViewModel,\r\n LocationPostModel,\r\n LocationAddedHubMessage,\r\n LocationDeletedHubMessage,\r\n LocationInUpdateHubMessage,\r\n LocationUpdatedHubMessage,\r\n LocationBtxViewModel, BtxKtxItxLocationsViewModel, LocationBtxGetModel,\r\n LocationKtxGetModel, LocationKtxViewModel,\r\n LocationItxViewModel, LocationItxGetModel\r\n} from '../../models';\r\nimport { LocationsApiService, HubService } from '../http';\r\nimport { HubMethods } from '../../constants';\r\n\r\n@Injectable()\r\nexport class LocationsDataSourceService {\r\n public locations$: BehaviorSubject = new BehaviorSubject([]);\r\n public locationsForCompany$: BehaviorSubject = new BehaviorSubject([]);\r\n public btxLocationsForCompany$: BehaviorSubject = new BehaviorSubject([]);\r\n public ktxLocationsForCompany$: BehaviorSubject = new BehaviorSubject([]);\r\n public itxLocationsForCompany$: BehaviorSubject = new BehaviorSubject([]);\r\n public errors$: BehaviorSubject = new BehaviorSubject(null);\r\n\r\n constructor(\r\n private _locationsApi: LocationsApiService,\r\n private _hubService: HubService,) {\r\n this.subscribeToHubService();\r\n }\r\n\r\n public async get() {\r\n try {\r\n const data = await this._locationsApi.getAll();\r\n this.locations$.next(data as LocationViewModel[]);\r\n this.errors$.next(null);\r\n } catch (error) {\r\n this.errors$.next(error);\r\n }\r\n }\r\n\r\n public async getForCompany(companyId: number) {\r\n try {\r\n const data = await this._locationsApi.getAllForCompany(companyId);\r\n if (data) {\r\n this.locationsForCompany$.next(data as LocationViewModel[]);\r\n this.errors$.next(null);\r\n }\r\n } catch (error) {\r\n this.errors$.next(error);\r\n }\r\n }\r\n\r\n public async getKtxBtxItxLocationForCompany(companyId: number) {\r\n try {\r\n const data = await this._locationsApi.getKtxBtxItxLocationForCompany(companyId) as BtxKtxItxLocationsViewModel;\r\n\r\n if (data) {\r\n if (data.btxLocations) {\r\n const btxLocationViewModels = data.btxLocations.map(l => LocationBtxGetModel.toViewModel(l));\r\n this.btxLocationsForCompany$.next(btxLocationViewModels);\r\n }\r\n if (data.ktxLocations) {\r\n const ktxLocationViewModels = data.ktxLocations.map(l => LocationKtxGetModel.toViewModel(l));\r\n this.ktxLocationsForCompany$.next(ktxLocationViewModels);\r\n }\r\n if (data.itxLocations) {\r\n const itxLocationViewModels = data.itxLocations.map(l => LocationItxGetModel.toViewModel(l));\r\n this.itxLocationsForCompany$.next(itxLocationViewModels);\r\n }\r\n this.errors$.next(null);\r\n }\r\n } catch (error) {\r\n this.errors$.next(error);\r\n }\r\n }\r\n\r\n public async add(location: LocationViewModel): Promise {\r\n try {\r\n const locationPostModel = new LocationPostModel(location);\r\n const result = await this._locationsApi.add(locationPostModel) as LocationViewModel;\r\n if (result) {\r\n this._hubService.sendToAllServiceUsers(HubMethods.Location.locationAdded, new LocationAddedHubMessage(result));\r\n this.locations$.next([\r\n ...this.locations$.getValue(),\r\n result\r\n ]);\r\n return Promise.resolve(result);\r\n }\r\n\r\n return null;\r\n } catch (error) {\r\n if (error instanceof ErrorModel) {\r\n return error;\r\n } else {\r\n this.errors$.next(error);\r\n }\r\n }\r\n }\r\n\r\n public async edit(location: LocationViewModel): Promise {\r\n try {\r\n const locationPutModel = new LocationPostModel(location);\r\n const result = await this._locationsApi.edit(locationPutModel) as LocationViewModel;\r\n if (result) {\r\n this._hubService.sendToAllServiceUsers(HubMethods.Location.locationUpdated, new LocationUpdatedHubMessage(result, true));\r\n this.locations$.next(this.locations$.getValue().map(l => l.id === result.id ? result : l));\r\n return Promise.resolve(result);\r\n }\r\n\r\n return null;\r\n } catch (error) {\r\n if (error instanceof ErrorModel) {\r\n return error;\r\n } else {\r\n this.errors$.next(error);\r\n }\r\n }\r\n }\r\n\r\n // TODO: will be moved to BTXLocation datasource\r\n public async getEquipment(locationId: number): Promise {\r\n let location = this.locations$.getValue().find(x => x.id === locationId);\r\n if (!location) {\r\n await this.get();\r\n location = this.locations$.getValue().find(x => x.id === locationId);\r\n }\r\n const locationName = location.name;\r\n try {\r\n return {\r\n name: locationName,\r\n } as LocationViewModel;\r\n } catch (error) {\r\n return {\r\n id: locationId,\r\n name: locationName,\r\n } as LocationViewModel;\r\n }\r\n }\r\n\r\n public async delete(locationId: number): Promise {\r\n try {\r\n const result = await this._locationsApi.delete(locationId);\r\n\r\n if (result) {\r\n this._hubService.sendToAllServiceUsers(HubMethods.Location.locationDeleted, new LocationDeletedHubMessage(locationId));\r\n const locations = this.locations$.getValue().filter(l => l.id !== locationId);\r\n this.locations$.next(locations);\r\n return Promise.resolve(true);\r\n }\r\n\r\n return false;\r\n } catch (error) {\r\n if (error instanceof ErrorModel) {\r\n return error;\r\n } else {\r\n this.errors$.next(error);\r\n }\r\n }\r\n }\r\n\r\n public async markLocationForOthersAsInUpdate(locationId: number): Promise {\r\n this._hubService.sendToAllServiceUsers(HubMethods.Location.locationInUpdate, new LocationInUpdateHubMessage(locationId));\r\n }\r\n\r\n public async markLocationForOthersAsUpdated(location: LocationViewModel, withChanges: boolean): Promise {\r\n this._hubService.sendToAllServiceUsers(HubMethods.Location.locationUpdated, new LocationUpdatedHubMessage(location, withChanges));\r\n }\r\n\r\n private subscribeToHubService() {\r\n this._hubService.locationAdded.subscribe((hubMessage: LocationAddedHubMessage) => {\r\n if (hubMessage && hubMessage.newLocation) {\r\n this.locations$.next([\r\n ...this.locations$.getValue(),\r\n hubMessage.newLocation\r\n ]);\r\n }\r\n });\r\n this._hubService.locationDeleted.subscribe((hubMessage: LocationDeletedHubMessage) => {\r\n if (hubMessage) {\r\n const locations = this.locations$.getValue().filter(l => l.id !== hubMessage.locationId);\r\n this.locations$.next(locations);\r\n }\r\n });\r\n this._hubService.locationInUpdate.subscribe((hubMessage: LocationInUpdateHubMessage) => {\r\n if (hubMessage) {\r\n const location = this.locations$.getValue().find(l => l.id === hubMessage.locationId);\r\n if (location) {\r\n location.isSomeoneUpdateLocation = true;\r\n }\r\n }\r\n });\r\n this._hubService.locationUpdated.subscribe((hubMessage: LocationUpdatedHubMessage) => {\r\n if (hubMessage && hubMessage.updatedLocation) {\r\n if (hubMessage.withCahnges) {\r\n\r\n hubMessage.updatedLocation.isSomeoneUpdateLocation = undefined;\r\n this.locations$.next(this.locations$.getValue().map(l => {\r\n if (l.id === hubMessage.updatedLocation.id) {\r\n return hubMessage.updatedLocation;\r\n } else {\r\n return l;\r\n }\r\n }));\r\n } else {\r\n const location = this.locations$.getValue().find(l => l.id == hubMessage.updatedLocation.id);\r\n location.isSomeoneUpdateLocation = false;\r\n }\r\n }\r\n });\r\n }\r\n}","import { Injectable } from '@angular/core';\r\nimport { BehaviorSubject } from 'rxjs';\r\n\r\nimport { BtxReportLiveDataFilter, NotificationReportPostModel, ReportDataFileFilterPost, ReportDataFilterPost, ReportHistoricalDataResponse, ReportLiveDataFilterPost } from '@models';\r\nimport { ReportApiService } from '../http';\r\nimport { ErrorModel } from '../../../common';\r\nimport { ReportFileFormatLabel } from '../../constants';\r\nimport { KtxReportCurrentDataFilter, KtxReportHistoricalDataFilterForPeriod } from '../../models/ktx-reports.model';\r\nimport { BtxHistoricalDataReportFilterRequest } from '../../models/btx-reports.model';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class ReportDatasourceService {\r\n public errors$: BehaviorSubject = new BehaviorSubject(null);\r\n constructor(\r\n private _reportApi: ReportApiService\r\n ) { }\r\n\r\n async getItxReportHistoricalDataByFilter(filter: ReportDataFilterPost): Promise {\r\n try {\r\n const data = await this._reportApi.getItxReportHistoricalDataByFilter(filter);\r\n return data;\r\n }\r\n catch (error) {\r\n this.errors$.next(error);\r\n if (error instanceof ErrorModel) {\r\n return error;\r\n }\r\n }\r\n }\r\n\r\n public async downloadKtxHistoricalReportFile(filter: KtxReportHistoricalDataFilterForPeriod): Promise {\r\n try {\r\n const result = await this._reportApi.downloadKtxHistoricalReportFile(filter);\r\n return Promise.resolve(new Blob([result as BinaryType], { type: `application/${ReportFileFormatLabel[0]}` }));\r\n } catch (error) {\r\n if (error instanceof ErrorModel) {\r\n return error;\r\n } else {\r\n this.errors$.next(error);\r\n }\r\n }\r\n }\r\n\r\n public async downloadBtxHistoricalDataReportFile(filter: BtxHistoricalDataReportFilterRequest): Promise {\r\n try {\r\n const result = await this._reportApi.downloadBtxHistoricalDataReportFile(filter);\r\n return Promise.resolve(new Blob([result as BinaryType], { type: `application/${ReportFileFormatLabel[0]}` }));\r\n } catch (error) {\r\n if (error instanceof ErrorModel) {\r\n return error;\r\n } else {\r\n this.errors$.next(error);\r\n }\r\n }\r\n }\r\n\r\n public async downloadKtxCurrentDataReportFile(filter: KtxReportCurrentDataFilter): Promise {\r\n try {\r\n const result = await this._reportApi.downloadKtxCurrentDataReportFile(filter);\r\n return Promise.resolve(new Blob([result as BinaryType], { type: `application/${ReportFileFormatLabel[0]}` }));\r\n } catch (error) {\r\n if (error instanceof ErrorModel) {\r\n return error;\r\n } else {\r\n this.errors$.next(error);\r\n }\r\n }\r\n }\r\n\r\n public async downloadItxHistoricalReportFile(filter: ReportDataFileFilterPost): Promise {\r\n try {\r\n const result = await this._reportApi.downloadItxHistoricalReportFile(filter);\r\n return Promise.resolve(new Blob([result as BinaryType], { type: `application/${ReportFileFormatLabel[filter.reportFormat]}` }));\r\n } catch (error) {\r\n if (error instanceof ErrorModel) {\r\n return error;\r\n } else {\r\n this.errors$.next(error);\r\n }\r\n }\r\n }\r\n\r\n public async downloadItxLiveDataReportFile(filter: ReportLiveDataFilterPost): Promise {\r\n try {\r\n const result = await this._reportApi.downloadItxLiveDataReportFile(filter);\r\n return Promise.resolve(new Blob([result as BinaryType], { type: `application/${ReportFileFormatLabel[filter.reportFormat]}` }));\r\n } catch (error) {\r\n if (error instanceof ErrorModel) {\r\n return error;\r\n } else {\r\n this.errors$.next(error);\r\n }\r\n }\r\n }\r\n\r\n public async downloadBtxLiveDataReportFile(filter: BtxReportLiveDataFilter): Promise {\r\n try {\r\n const result = await this._reportApi.downloadBtxLiveDataReportFile(filter);\r\n return Promise.resolve(new Blob([result as BinaryType], { type: `application/${ReportFileFormatLabel[0]}` }));\r\n } catch (error) {\r\n if (error instanceof ErrorModel) {\r\n return error;\r\n } else {\r\n this.errors$.next(error);\r\n }\r\n }\r\n }\r\n\r\n public async downloadNotificationReport(model: NotificationReportPostModel) {\r\n try {\r\n const result = await this._reportApi.downloadNotificationReport(model);\r\n return Promise.resolve(new Blob([result as BinaryType], { type: \"application/csv\" }));\r\n } catch (error) {\r\n if (error instanceof ErrorModel) {\r\n return error;\r\n } else {\r\n this.errors$.next(error);\r\n }\r\n }\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { BehaviorSubject } from 'rxjs';\r\n\r\nimport { ErrorModel } from '../../../common';\r\nimport { SalesUserAddedHubMessage, SalesUserDeletedHubMessage, SalesUserInUpdateHubMessage, SalesUserPostModel, SalesUserUpdatedHubMessage, SalesUserViewModel, ServiceUserInviteModel } from '../../models';\r\nimport { HubService, SalesUsersApiService } from '../http';\r\nimport { HubMethods } from '../../constants';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class SalesUsersDatasourceService {\r\n public salesUsers$: BehaviorSubject = new BehaviorSubject([]);\r\n public errors$: BehaviorSubject = new BehaviorSubject(null);\r\n\r\n constructor(private _salesUsersApi: SalesUsersApiService,\r\n private _hubService: HubService) {\r\n this.subscribeToHubService();\r\n }\r\n\r\n public async getAll() {\r\n try {\r\n const salesUsers = await this._salesUsersApi.loadAll();\r\n if (salesUsers) {\r\n this.salesUsers$.next(salesUsers as SalesUserViewModel[]);\r\n this.errors$.next(null);\r\n }\r\n } catch (error) {\r\n this.errors$.next(error);\r\n }\r\n }\r\n\r\n public async edit(salesUser: SalesUserPostModel): Promise {\r\n try {\r\n const result = await this._salesUsersApi.edit(salesUser) as SalesUserViewModel;\r\n if (result) {\r\n this._hubService.sendToAllServiceUsers(HubMethods.SalesUser.salesUserUpdated, new SalesUserUpdatedHubMessage(result, true));\r\n const salesUsers = this.salesUsers$.getValue().map(l => l.id === result.id ? { ...l, ...result } : l);\r\n this.salesUsers$.next(salesUsers);\r\n return Promise.resolve(true);\r\n }\r\n\r\n return false;\r\n } catch (error) {\r\n return error instanceof ErrorModel ? error : false;\r\n }\r\n }\r\n\r\n public async invite(salesUser: ServiceUserInviteModel): Promise {\r\n try {\r\n const result = await this._salesUsersApi.invite(salesUser) as SalesUserViewModel;\r\n if (result) {\r\n this._hubService.sendToAllServiceUsers(HubMethods.SalesUser.salesUserAdded, new SalesUserAddedHubMessage(result));\r\n this.salesUsers$.next([\r\n ...this.salesUsers$.getValue(),\r\n result\r\n ]);\r\n return result;\r\n }\r\n } catch (error) {\r\n if (error instanceof ErrorModel) {\r\n return error;\r\n }\r\n }\r\n }\r\n\r\n public async delete(salesUserId: number) : Promise {\r\n try\r\n {\r\n const result = await this._salesUsersApi.delete(salesUserId);\r\n if (result) {\r\n this._hubService.sendToAllServiceUsers(HubMethods.SalesUser.salesUserDeleted, new SalesUserDeletedHubMessage(salesUserId));\r\n const serviceUsers = this.salesUsers$.getValue().filter(l => l.id !== result);\r\n this.salesUsers$.next(serviceUsers);\r\n return Promise.resolve(true);\r\n }\r\n\r\n return false;\r\n } catch (error) {\r\n return error instanceof ErrorModel ? error : false;\r\n }\r\n }\r\n\r\n public async markServiceUserForOthersAsInUpdate(userId: number): Promise {\r\n this._hubService.sendToAllServiceUsers(HubMethods.SalesUser.salesUserInUpdate, new SalesUserInUpdateHubMessage(userId));\r\n }\r\n\r\n public async markServiceUserForOthersAsUpdated(salesUser: SalesUserViewModel, withChanges: boolean): Promise {\r\n this._hubService.sendToAllServiceUsers(HubMethods.SalesUser.salesUserUpdated, new SalesUserUpdatedHubMessage(salesUser, withChanges));\r\n }\r\n\r\n\r\n private subscribeToHubService() {\r\n this._hubService.salesUserInUpdate.subscribe((hubMessage: SalesUserInUpdateHubMessage) => {\r\n if (hubMessage) {\r\n const salesUser = this.salesUsers$.getValue().find(l => l.id === hubMessage.salesUserId);\r\n if (salesUser) {\r\n salesUser.isSomeoneUpdateSalesUser = true;\r\n }\r\n }\r\n });\r\n\r\n this._hubService.salesUserUpdated.subscribe((hubMessage: SalesUserUpdatedHubMessage) => {\r\n if (hubMessage && hubMessage.updatedSalesUser) {\r\n if (hubMessage.withChanges) {\r\n hubMessage.updatedSalesUser.isSomeoneUpdateSalesUser = undefined;\r\n this.salesUsers$.next(this.salesUsers$.getValue().map(l => l.id === hubMessage.updatedSalesUser.id ? hubMessage.updatedSalesUser : l));\r\n } else {\r\n const salesUser = this.salesUsers$.getValue().find(l => l.id == hubMessage.updatedSalesUser.id);\r\n salesUser.isSomeoneUpdateSalesUser = false;\r\n }\r\n }\r\n });\r\n\r\n this._hubService.salesUserAdded.subscribe((hubMessage: SalesUserAddedHubMessage) => {\r\n if (hubMessage && hubMessage.newSalesUser) {\r\n this.salesUsers$.next([\r\n ...this.salesUsers$.getValue(),\r\n hubMessage.newSalesUser\r\n ]);\r\n }\r\n });\r\n\r\n this._hubService.salesUserDeleted.subscribe((hubMessage: SalesUserDeletedHubMessage) => {\r\n if (hubMessage) {\r\n const users = this.salesUsers$.getValue().filter(l => l.id !== hubMessage.salesUserId);\r\n this.salesUsers$.next(users);\r\n }\r\n });\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { BehaviorSubject } from 'rxjs';\r\n\r\nimport { ErrorModel } from '../../../common';\r\nimport {\r\n ServiceUserViewModel,\r\n ServiceUserPostModel,\r\n ServiceUserInviteModel,\r\n ServiceUserAddedHubMessage,\r\n ServiceUserDeletedHubMessage,\r\n ServiceUserInUpdateHubMessage,\r\n ServiceUserUpdatedHubMessage,\r\n} from '../../models';\r\nimport { ServiceUsersApiService, HubService } from '../http';\r\nimport { HubMethods } from '../../constants';\r\n\r\n@Injectable()\r\nexport class ServiceUsersDataSourceService {\r\n public serviceUsers$: BehaviorSubject = new BehaviorSubject([]);\r\n public errors$: BehaviorSubject = new BehaviorSubject(null);\r\n\r\n constructor(\r\n private _serviceUsersApi: ServiceUsersApiService,\r\n private _hubService: HubService,) {\r\n this.subscribeToHubService();\r\n }\r\n\r\n public async get() {\r\n try {\r\n const serviceUsers = await this._serviceUsersApi.loadAll();\r\n if (serviceUsers) {\r\n this.serviceUsers$.next(serviceUsers as ServiceUserViewModel[]);\r\n this.errors$.next(null);\r\n }\r\n } catch (error) {\r\n this.errors$.next(error);\r\n }\r\n }\r\n\r\n public async invite(serviceUser: ServiceUserInviteModel) : Promise {\r\n try {\r\n const result = await this._serviceUsersApi.invite(serviceUser) as ServiceUserViewModel;\r\n if (result) {\r\n this._hubService.sendToAllServiceUsers(HubMethods.ServiceUser.serviceUserAdded, new ServiceUserAddedHubMessage(result));\r\n this.serviceUsers$.next([\r\n ...this.serviceUsers$.getValue(),\r\n result\r\n ]);\r\n return result;\r\n }\r\n } catch (error) {\r\n if (error instanceof ErrorModel) {\r\n return error;\r\n }\r\n }\r\n }\r\n\r\n public async edit(serviceUser: ServiceUserPostModel) : Promise {\r\n try\r\n {\r\n const result = await this._serviceUsersApi.edit(serviceUser) as ServiceUserViewModel;\r\n if (result) {\r\n this._hubService.sendToAllServiceUsers(HubMethods.ServiceUser.serviceUserUpdated, new ServiceUserUpdatedHubMessage(result, true));\r\n const serviceUsers = this.serviceUsers$.getValue().map(l => l.id === result.id ? { ...l, ...result} : l);\r\n this.serviceUsers$.next(serviceUsers);\r\n return Promise.resolve(true);\r\n }\r\n\r\n return false;\r\n } catch (error) {\r\n return error instanceof ErrorModel ? error : false;\r\n }\r\n }\r\n\r\n public async delete(serviceUserId: number) : Promise {\r\n try\r\n {\r\n const result = await this._serviceUsersApi.delete(serviceUserId);\r\n if (result) {\r\n this._hubService.sendToAllServiceUsers(HubMethods.ServiceUser.serviceUserDeleted, new ServiceUserDeletedHubMessage(serviceUserId));\r\n const serviceUsers = this.serviceUsers$.getValue().filter(l => l.id !== result);\r\n this.serviceUsers$.next(serviceUsers);\r\n return Promise.resolve(true);\r\n }\r\n\r\n return false;\r\n } catch (error) {\r\n return error instanceof ErrorModel ? error : false;\r\n }\r\n }\r\n\r\n public async markServiceUserForOthersAsInUpdate(userId: number): Promise {\r\n this._hubService.sendToAllServiceUsers(HubMethods.ServiceUser.serviceUserInUpdate, new ServiceUserInUpdateHubMessage(userId));\r\n }\r\n\r\n public async markServiceUserForOthersAsUpdated(serviceUser: ServiceUserViewModel, withChanges: boolean): Promise {\r\n this._hubService.sendToAllServiceUsers(HubMethods.ServiceUser.serviceUserUpdated, new ServiceUserUpdatedHubMessage(serviceUser, withChanges));\r\n }\r\n\r\n private subscribeToHubService() {\r\n this._hubService.serviceUserAdded.subscribe((hubMessage: ServiceUserAddedHubMessage) => {\r\n if (hubMessage && hubMessage.newServiceUser) {\r\n this.serviceUsers$.next([\r\n ...this.serviceUsers$.getValue(),\r\n hubMessage.newServiceUser\r\n ]);\r\n }\r\n });\r\n this._hubService.serviceUserDeleted.subscribe((hubMessage: ServiceUserDeletedHubMessage) => {\r\n if (hubMessage) {\r\n const users = this.serviceUsers$.getValue().filter(l => l.id !== hubMessage.serviceUserId);\r\n this.serviceUsers$.next(users);\r\n }\r\n });\r\n this._hubService.serviceUserInUpdate.subscribe((hubMessage: ServiceUserInUpdateHubMessage) => {\r\n if (hubMessage) {\r\n const serviceUser = this.serviceUsers$.getValue().find(l => l.id === hubMessage.serviceUserId);\r\n if (serviceUser) {\r\n serviceUser.isSomeoneUpdateServiceUser = true;\r\n }\r\n }\r\n });\r\n this._hubService.serviceUserUpdated.subscribe((hubMessage: ServiceUserUpdatedHubMessage) => {\r\n if (hubMessage && hubMessage.updatedServiceUser) {\r\n if (hubMessage.withChanges) {\r\n hubMessage.updatedServiceUser.isSomeoneUpdateServiceUser = undefined;\r\n this.serviceUsers$.next(this.serviceUsers$.getValue().map(l => l.id === hubMessage.updatedServiceUser.id ? hubMessage.updatedServiceUser : l));\r\n } else {\r\n const serviceUser = this.serviceUsers$.getValue().find(l => l.id == hubMessage.updatedServiceUser.id);\r\n serviceUser.isSomeoneUpdateServiceUser = false;\r\n }\r\n }\r\n });\r\n }\r\n}","import { Injectable } from '@angular/core';\r\nimport { BehaviorSubject } from 'rxjs';\r\n\r\nimport { ErrorModel } from '../../../common';\r\nimport { HubService, UpdaterDeviceService } from '../http';\r\nimport { CancelUpdateFirmwarePostModel, CancelUpdateModel, CheckProjectsGetModel, GetInstalledProjectFirmwareInfo, GetLocationUpdatersFilterModel, InstallProjectPostModel, LocationUpdaterViewModel, ProjectFirmwareViewModel, ProjectUpdaterDeviceViewModel, UpdateDeviceViewModel, UpdateFirmwarePostModel, UpdateFirmwareResultModel, UpdateFirmwaresPostModel, UpdateFirmwareTriggerModel, UpdateProjectDeviceState, UpdaterProjectUpdateFirmwareHubMessage, VersionHistoryResponseModel } from '../../models';\r\nimport { UpdateProjectStateEnum } from '../../enums';\r\nimport { HubMethods } from '../../constants';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class UpdaterDeviceDatasourceService {\r\n public locationsUpdaters$: BehaviorSubject = new BehaviorSubject([]);\r\n public firmwares$: BehaviorSubject = new BehaviorSubject([]);\r\n public errors$: BehaviorSubject = new BehaviorSubject(null);\r\n\r\n constructor(\r\n private _updateDeviceService: UpdaterDeviceService,\r\n private _hubService: HubService,\r\n ) {\r\n this.subscribeToHubService();\r\n }\r\n\r\n public async getByFilter(request: GetLocationUpdatersFilterModel) {\r\n try {\r\n const updaters = await this._updateDeviceService.getByFilter(request) as LocationUpdaterViewModel[];\r\n if (updaters) {\r\n updaters.forEach(x => {\r\n let projectsAvailable = 0;\r\n let projectUpdatersAvailable = 0;\r\n\r\n x.locationDevices.forEach(device => {\r\n projectsAvailable |= device.project;\r\n })\r\n x.projectsAvailable = projectsAvailable;\r\n\r\n x.updaterDevices.forEach(updater => {\r\n projectUpdatersAvailable |= updater.projectsAvailable;\r\n })\r\n x.projectUpdaterAvailable = projectUpdatersAvailable;\r\n })\r\n this.locationsUpdaters$.next(updaters as LocationUpdaterViewModel[]);\r\n this.errors$.next(null);\r\n }\r\n else {\r\n this.locationsUpdaters$.next([]);\r\n }\r\n } catch (error) {\r\n this.errors$.next(error);\r\n }\r\n }\r\n\r\n public async add(updater: { locationId: number, projectsAvailable: number }): Promise {\r\n try {\r\n const result = await this._updateDeviceService.add(updater) as UpdateDeviceViewModel;\r\n if (result) {\r\n let locations = this.locationsUpdaters$.getValue();\r\n let location = locations.find(x => x.id == updater.locationId);\r\n\r\n this.addUpdaterToProj(result, location);\r\n\r\n this.locationsUpdaters$.next(locations);\r\n this.errors$.next(null);\r\n }\r\n } catch (error) {\r\n this.errors$.next(error);\r\n }\r\n }\r\n\r\n public async edit(id: string, updaterEdit: { projectsAvailable: number }) {\r\n try {\r\n const result = await this._updateDeviceService.edit(id, updaterEdit) as UpdateDeviceViewModel;\r\n if (result) {\r\n let locations = this.locationsUpdaters$.getValue();\r\n let location = locations.find(x => x.id == result.locationId);\r\n\r\n let updaterIndex = location.updaterDevices.indexOf(location.updaterDevices.find(u => u.id == id));\r\n location.updaterDevices.splice(updaterIndex, 1);\r\n this.addUpdaterToProj(result, location);\r\n\r\n this.locationsUpdaters$.next(locations);\r\n this.errors$.next(null);\r\n }\r\n } catch (error) {\r\n this.errors$.next(error);\r\n }\r\n }\r\n\r\n public async initializeDeviceConfiguration(id: string): Promise {\r\n try {\r\n const result = await this._updateDeviceService.initializeDeviceConfiguration(id);\r\n if (result) {\r\n this.errors$.next(null);\r\n return result;\r\n }\r\n } catch (error) {\r\n this.errors$.next(error);\r\n }\r\n }\r\n\r\n public async downloadConnectionFile(id: string): Promise {\r\n try {\r\n const result = await this._updateDeviceService.downloadConnectionFile(id);\r\n return Promise.resolve(\r\n new Blob([result as BinaryType], { type: \"application/zip\" })\r\n );\r\n } catch (error) {\r\n if (error instanceof ErrorModel) {\r\n return error;\r\n } else {\r\n this.errors$.next(error);\r\n }\r\n }\r\n }\r\n\r\n public async delete(updaterId: string, locationId: number): Promise {\r\n try {\r\n const result = await this._updateDeviceService.delete(updaterId);\r\n if (result) {\r\n let locations = this.locationsUpdaters$.getValue();\r\n let location = locations.find(x => x.id == locationId);\r\n location.updaterDevices = location.updaterDevices.filter(x => x.id != updaterId);\r\n\r\n this.locationsUpdaters$.next(locations);\r\n this.errors$.next(null);\r\n return result;\r\n }\r\n } catch (error) {\r\n this.errors$.next(error);\r\n }\r\n }\r\n\r\n public async getBlobFirmwareFiles(project?: string) {\r\n try {\r\n const result = await this._updateDeviceService.getBlobFirmwareFiles(project) as ProjectFirmwareViewModel[];\r\n if (result) {\r\n result.forEach(e => {\r\n e.name = this.nameWithoutFolder(e.name) as string;\r\n });\r\n\r\n this.firmwares$.next(result);\r\n this.errors$.next(null);\r\n }\r\n } catch (error) {\r\n this.errors$.next(error);\r\n }\r\n }\r\n\r\n public async downloadFirmwareFile(request: { directoryName: string, fileName: string }): Promise {\r\n try {\r\n const result = await this._updateDeviceService.downloadFirmwareFile(request);\r\n this.errors$.next(null);\r\n\r\n return Promise.resolve(\r\n new Blob([result as BinaryType], { type: \"application/txt\" })\r\n );\r\n } catch (error) {\r\n if (error instanceof ErrorModel) {\r\n return error;\r\n } else {\r\n this.errors$.next(error);\r\n }\r\n }\r\n }\r\n\r\n public async downloadFirmwareFiles(request: { directoryName: string, fileNames: string[] }): Promise {\r\n try {\r\n const result = await this._updateDeviceService.downloadFirmwareFiles(request);\r\n this.errors$.next(null);\r\n\r\n return Promise.resolve(\r\n new Blob([result as BinaryType], { type: \"application/zip\" })\r\n );\r\n } catch (error) {\r\n if (error instanceof ErrorModel) {\r\n return error;\r\n } else {\r\n this.errors$.next(error);\r\n }\r\n }\r\n }\r\n\r\n public async deleteSelectedFirmwares(request: { directoryName: string, fileNames: string[] }): Promise {\r\n try {\r\n const result = await this._updateDeviceService.deleteSelectedFirmwares(request);\r\n if (result) {\r\n let firmwares = this.firmwares$.getValue();\r\n firmwares.filter(f => !request.fileNames.includes(f.name));\r\n this.firmwares$.next(firmwares);\r\n }\r\n\r\n this.errors$.next(null);\r\n\r\n return result;\r\n } catch (error) {\r\n if (error instanceof ErrorModel) {\r\n return error;\r\n } else {\r\n this.errors$.next(error);\r\n }\r\n }\r\n }\r\n\r\n public async uploadFirmware(request: { directoryName: string, insertFile: File }): Promise {\r\n try {\r\n const result = await this._updateDeviceService.uploadFirmware(request) as ProjectFirmwareViewModel;\r\n if (result) {\r\n result.name = this.nameWithoutFolder(result.name) as string;\r\n\r\n let firmwares = this.firmwares$.getValue();\r\n let filtered = firmwares.filter(f => f.name !== result.name);\r\n\r\n filtered.push(result);\r\n this.firmwares$.next(filtered);\r\n this.errors$.next(null);\r\n\r\n return result;\r\n }\r\n } catch (error) {\r\n this.errors$.next(error);\r\n }\r\n }\r\n\r\n public async installProjectFirmware(request: InstallProjectPostModel): Promise {\r\n try {\r\n const result = await this._updateDeviceService.installProjectFirmware(request) as UpdateFirmwareResultModel;\r\n if (result) {\r\n if (result) {\r\n this.updateStateAfterSendUpdateCommand([result] as UpdateFirmwareResultModel[]);\r\n this.sendMessageUpdateState([result] as UpdateFirmwareResultModel[]);\r\n }\r\n return result;\r\n }\r\n } catch (error) {\r\n this.errors$.next(error);\r\n }\r\n }\r\n\r\n public async getInstalledProjectFirmwareInformation(request: CheckProjectsGetModel): Promise {\r\n try {\r\n const result = await this._updateDeviceService.getInstalledProjectFirmwareInformation(request) as GetInstalledProjectFirmwareInfo;\r\n return result;\r\n } catch (error) {\r\n this.errors$.next(error);\r\n }\r\n }\r\n\r\n public async cancelUpdateDeviceFirmware(request: CancelUpdateFirmwarePostModel): Promise {\r\n try {\r\n const result = await this._updateDeviceService.cancelUpdateDeviceFirmware(request) as CancelUpdateModel;\r\n if (result) {\r\n let locations = this.locationsUpdaters$.getValue();\r\n let updatedLocation = locations.find(x => x.id == request.locationId);\r\n let updateDevice = updatedLocation.updaterDevices.find(x => x.id == request.updaterDeviceId);\r\n if (updateDevice) {\r\n var project = updateDevice.projectDevices.find(x => x.deviceId == request.projectDeviceId);\r\n if (result.payLoadSuccess) {\r\n project.state = UpdateProjectStateEnum.Ok;\r\n }\r\n this.locationsUpdaters$.next(locations);\r\n }\r\n }\r\n\r\n this.errors$.next(null);\r\n return result;\r\n } catch (error) {\r\n this.errors$.next(error);\r\n }\r\n }\r\n\r\n public async updateDeviceFirmware(request: UpdateFirmwarePostModel): Promise {\r\n try {\r\n const result = await this._updateDeviceService.updateDeviceFiemware(request) as UpdateFirmwareResultModel;\r\n if (result) {\r\n this.updateStateAfterSendUpdateCommand([result] as UpdateFirmwareResultModel[]);\r\n this.sendMessageUpdateState([result] as UpdateFirmwareResultModel[]);\r\n }\r\n\r\n this.errors$.next(null);\r\n return result;\r\n } catch (error) {\r\n this.errors$.next(error);\r\n }\r\n }\r\n\r\n public async updateDeviceFirmwares(request: UpdateFirmwaresPostModel): Promise {\r\n try {\r\n const result = await this._updateDeviceService.updateDeviceFiemwares(request) as UpdateFirmwareResultModel[];\r\n if (result) {\r\n this.updateStateAfterSendUpdateCommand(result);\r\n this.sendMessageUpdateState(result);\r\n }\r\n return result;\r\n } catch (error) {\r\n this.errors$.next(error);\r\n }\r\n }\r\n\r\n public async getUpdateHistoryVersions(devideId: string, locationId: string): Promise {\r\n try {\r\n const result = await this._updateDeviceService.getUpdateHistoryVersions(devideId, locationId) as VersionHistoryResponseModel[];\r\n if (result) {\r\n result.forEach(v => {\r\n if (v.targetVersion === '') {\r\n v.targetVersion = '-';\r\n }\r\n if (v.lastErrorMessage === '') {\r\n v.lastErrorMessage = '-';\r\n }\r\n if (v.currentVersion === '') {\r\n v.currentVersion = '-';\r\n }\r\n })\r\n return result;\r\n }\r\n this.errors$.next(null);\r\n } catch (error) {\r\n this.errors$.next(error);\r\n }\r\n }\r\n\r\n public async getUpdaterStates(devices: UpdateFirmwareTriggerModel[]) {\r\n try {\r\n const request = devices.map(x => x.projectDeviceId);\r\n const result = await this._updateDeviceService.getUpdaterStates(request) as UpdateProjectDeviceState[];\r\n if (result) {\r\n var locations = this.locationsUpdaters$.getValue();\r\n result.forEach(projectState => {\r\n const device = devices.find(x => x.projectDeviceId == projectState.projectDeviceId)\r\n if (device) {\r\n let projectLocation = locations.find(x => x.id == device.locationId);\r\n if (projectLocation) {\r\n let updater = projectLocation.updaterDevices.find(x => x.id == device.updaterDeviceId);\r\n let project = updater.projectDevices.find(x => x.deviceId == device.projectDeviceId);\r\n project.currentVersion = projectState.currentVersion;\r\n project.errorMessage = projectState.errorMessage;\r\n project.lastUpdate = projectState.lastUpdate;\r\n project.state = projectState.state;\r\n }\r\n }\r\n });\r\n this.locationsUpdaters$.next(locations);\r\n }\r\n this.errors$.next(null);\r\n\r\n } catch (error) {\r\n this.errors$.next(error);\r\n }\r\n }\r\n\r\n private async sendMessageUpdateState(model: UpdateFirmwareResultModel[]): Promise {\r\n this._hubService.sendToAllServiceUsers(HubMethods.Updater.updaterProjectUpdateFirmware, new UpdaterProjectUpdateFirmwareHubMessage(model));\r\n }\r\n\r\n\r\n private subscribeToHubService() {\r\n this._hubService.updaterProjectUpdateFirmware.subscribe((hubMessage: UpdaterProjectUpdateFirmwareHubMessage) => {\r\n if (hubMessage.projectsUpdateState) {\r\n this.updateStateAfterSendUpdateCommand(hubMessage.projectsUpdateState);\r\n }\r\n });\r\n }\r\n\r\n private updateStateAfterSendUpdateCommand(result: UpdateFirmwareResultModel[]) {\r\n let locations = this.locationsUpdaters$.getValue();\r\n result.forEach(y => {\r\n let updatedLocation = locations.find(x => x.id == y.locationId);\r\n let updateDevice = updatedLocation.updaterDevices.find(x => x.id == y.updaterDeviceId);\r\n if (updateDevice) {\r\n var project = updateDevice.projectDevices.find(x => x.deviceId == y.projectDeviceId);\r\n project.lastUpdate = new Date().getTime() / 1000;\r\n if (y.payLoadSuccess) {\r\n project.state = UpdateProjectStateEnum.Starting;\r\n project.errorMessage = '';\r\n } else {\r\n project.state = UpdateProjectStateEnum.Failed;\r\n project.errorMessage = y.payLoadMessage;\r\n }\r\n }\r\n });\r\n this.locationsUpdaters$.next(locations);\r\n }\r\n\r\n private nameWithoutFolder(name: string): string | void {\r\n const index = name.indexOf('/');\r\n if (index !== -1) {\r\n return name.slice(index + 1, name.length);\r\n }\r\n\r\n return;\r\n }\r\n\r\n private addUpdaterToProj(newUpdater: UpdateDeviceViewModel, location: LocationUpdaterViewModel) {\r\n\r\n let locationDevices = location.locationDevices.filter(d => (d.project & newUpdater.projectsAvailable) !== 0);\r\n\r\n locationDevices.forEach(d => {\r\n let newProjectUpd = new ProjectUpdaterDeviceViewModel();\r\n newProjectUpd.currentVersion = null,\r\n newProjectUpd.deviceId = d.deviceId,\r\n newProjectUpd.lastUpdate = null,\r\n newProjectUpd.project = d.project,\r\n\r\n newUpdater.projectDevices.push(newProjectUpd)\r\n });\r\n\r\n location.updaterDevices.push(newUpdater);\r\n }\r\n}\r\n","import { VendorInUpdateHubMessage, VendorDeletedHubMessage } from './../../models/';\r\nimport { BehaviorSubject } from 'rxjs';\r\nimport { Injectable } from '@angular/core';\r\nimport { HubService, VendorApiService } from '../http';\r\nimport { VendorAddedHubMessage, VendorUpdatedHubMessage, VendorViewModel, VendorInviteModel, VendorEditModel } from '../../models';\r\nimport { ErrorModel } from '../../../common';\r\nimport { HubMethods } from '../../constants';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class VendorDataSourceService {\r\n\r\n public companyVendors$: BehaviorSubject = new BehaviorSubject([]);\r\n public errors$: BehaviorSubject = new BehaviorSubject(null);\r\n\r\n constructor(\r\n private _hubService: HubService,\r\n private _vendorApi: VendorApiService\r\n ) {\r\n this.subscribeToHubService();\r\n }\r\n\r\n public async get(companyId: number) {\r\n try {\r\n const data = await this._vendorApi.getAllForCompany(companyId);\r\n if (data) {\r\n this.companyVendors$.next(data as VendorViewModel[]);\r\n this.errors$.next(null);\r\n }\r\n } catch (error) {\r\n this.errors$.next(error);\r\n }\r\n }\r\n\r\n public async invite(vendor: VendorInviteModel): Promise {\r\n try {\r\n const result = await this._vendorApi.invite(vendor) as VendorViewModel;\r\n if (result) {\r\n this._hubService.sendFromCompanyAdminToCompanyAdmins(HubMethods.Vendor.vendorAdded, new VendorAddedHubMessage(result));\r\n return result;\r\n }\r\n } catch (error) {\r\n if (error instanceof ErrorModel) {\r\n return error;\r\n }\r\n }\r\n }\r\n\r\n public async editForCompany(vendor: VendorEditModel): Promise {\r\n try {\r\n const result = await this._vendorApi.editForCompany(vendor) as VendorViewModel;\r\n if (result) {\r\n this._hubService.sendFromCompanyAdminToCompanyAdmins(HubMethods.Vendor.vendorUpdated, new VendorUpdatedHubMessage(result, true));\r\n const companyUsers = this.companyVendors$.getValue().map(l => l.id === result.id ? { ...l, ...result } : l);\r\n this.companyVendors$.next(companyUsers);\r\n return Promise.resolve(true);\r\n }\r\n return false;\r\n } catch (error) {\r\n return error instanceof ErrorModel ? error : false;\r\n }\r\n }\r\n\r\n public async deleteVendor(vendorId: number, companyId: number): Promise {\r\n try {\r\n const result = await this._vendorApi.deleteVendor(vendorId, companyId);\r\n if (result) {\r\n this._hubService.sendFromCompanyAdminToCompanyAdmins(HubMethods.Vendor.vendorDeleted, new VendorDeletedHubMessage(vendorId));\r\n const vendors = this.companyVendors$.getValue().filter(l => l.id !== result);\r\n this.companyVendors$.next(vendors);\r\n return Promise.resolve(true);\r\n }\r\n\r\n return false;\r\n } catch (error) {\r\n return error instanceof ErrorModel ? error : false;\r\n }\r\n }\r\n\r\n public async markCompanyUserForOthersAsInUpdate(vendorId: number): Promise {\r\n this._hubService.sendFromCompanyAdminToCompanyAdmins(HubMethods.Vendor.vendorInUpdate, new VendorInUpdateHubMessage(vendorId));\r\n }\r\n\r\n public async markCompanyUserForOthersAsUpdated(vendor: VendorViewModel, isWithChanges: boolean): Promise {\r\n this._hubService.sendFromCompanyAdminToCompanyAdmins(HubMethods.Vendor.vendorUpdated, new VendorUpdatedHubMessage(vendor, isWithChanges));\r\n }\r\n\r\n private subscribeToHubService() {\r\n this._hubService.vendorDeleted.subscribe((hubMessage: VendorDeletedHubMessage) => {\r\n if (hubMessage) {\r\n const users = this.companyVendors$.getValue().filter(l => l.id !== hubMessage.vendorId);\r\n this.companyVendors$.next(users);\r\n }\r\n });\r\n this._hubService.vendorAdded.subscribe((hubMessage: VendorAddedHubMessage) => {\r\n if (hubMessage && hubMessage.newVendor) {\r\n this.companyVendors$.next([\r\n ...this.companyVendors$.getValue(),\r\n hubMessage.newVendor\r\n ]);\r\n }\r\n });\r\n this._hubService.vendorInUpdate.subscribe((hubMessage: VendorInUpdateHubMessage) => {\r\n if (hubMessage) {\r\n const vendor = this.companyVendors$.getValue().find(l => l.id === hubMessage.vendorId);\r\n if (vendor) {\r\n vendor.isSomeoneUpdateVendor = true;\r\n }\r\n }\r\n });\r\n this._hubService.vendorUpdated.subscribe((hubMessage: VendorUpdatedHubMessage) => {\r\n if (hubMessage && hubMessage.updatedVendor) {\r\n if (hubMessage.withChanges) {\r\n hubMessage.updatedVendor.isSomeoneUpdateVendor = undefined;\r\n this.companyVendors$.next(this.companyVendors$.getValue().map(l => l.id === hubMessage.updatedVendor.id ? hubMessage.updatedVendor : l));\r\n } else {\r\n const vendor = this.companyVendors$.getValue().find(c => c.id == hubMessage.updatedVendor.id);\r\n vendor.isSomeoneUpdateVendor = false;\r\n }\r\n }\r\n });\r\n }\r\n}\r\n","export * from './role.helper.service';","import { Injectable } from '@angular/core';\r\nimport { Router } from '@angular/router';\r\n\r\nimport { BACK_DOOR, BackDoorRouteToRoleMap } from '../../constants';\r\nimport { LocalStorageService, UserRoleEnum } from '../../../common';\r\nimport { NavigationUser } from '@models';\r\nimport { ProjectEnum } from '../../enums';\r\n\r\n@Injectable()\r\nexport class RoleService {\r\n constructor(\r\n private _localStorageService: LocalStorageService,\r\n private _router: Router\r\n ) {}\r\n\r\n public userHasRole(role: UserRoleEnum): boolean {\r\n const url = this._router.url;\r\n const isBackDoor = url.indexOf(BACK_DOOR) !== -1;\r\n\r\n const userLoginInfo = isBackDoor\r\n ? this.getBackDoorUserWithRole(url)\r\n : this._localStorageService.getLoginInfo();\r\n\r\n return userLoginInfo && userLoginInfo.role === role;\r\n }\r\n\r\n public getBackDoorUserWithRole(url: string): NavigationUser {\r\n const role = Object.keys(BackDoorRouteToRoleMap).find(\r\n (key) => url.indexOf(key) !== -1\r\n );\r\n\r\n return {\r\n role: role ? BackDoorRouteToRoleMap[role] : UserRoleEnum.ServiceUser,\r\n projects: ProjectEnum.Btx | ProjectEnum.Ktx | ProjectEnum.Itx,\r\n };\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { Router } from '@angular/router';\r\n\r\nimport { ApiRoutes, ErrorModel, HttpService } from './../../../common';\r\nimport { AccountProfileModel } from './../../models';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class AccountApiService {\r\n\r\n constructor(\r\n private _httpService: HttpService,\r\n private _router: Router,\r\n ) { }\r\n\r\n public async getProfile(): Promise {\r\n try {\r\n if (this._router.url.indexOf('/back-door') > -1) {\r\n return this.getFakeData();\r\n }\r\n let result = this._httpService.get(ApiRoutes.Account.getProfile);\r\n if (result) {\r\n return result;\r\n }\r\n }\r\n catch (error) {\r\n return this.processError(error);\r\n }\r\n }\r\n\r\n public async editProfile(profile: AccountProfileModel) {\r\n try {\r\n let result = this._httpService.post(ApiRoutes.Account.editProfile, profile);\r\n if (result) {\r\n return result;\r\n }\r\n }\r\n catch (error) {\r\n return this.processError(error);\r\n }\r\n }\r\n\r\n private processError(error: any) {\r\n if (error instanceof ErrorModel) {\r\n return Promise.reject(error);\r\n }\r\n\r\n console.log(error);\r\n return null;\r\n }\r\n\r\n private getFakeData() {\r\n let profile = {\r\n userId: 0,\r\n firstName: 'FakeFirstName',\r\n lastName: 'FakeLastName',\r\n companyName: 'FakeCompanyName',\r\n } as AccountProfileModel;\r\n return profile;\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { Router } from '@angular/router';\r\n\r\nimport { AqsAirflowFanTypeViewModel } from '../../models';\r\nimport { ErrorModel, HttpService } from './../../../common';\r\nimport { ApiRoutes } from '../../constants';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class AqsAirflowApiService {\r\n\r\n constructor(\r\n private _httpService: HttpService,\r\n private _router: Router,) { }\r\n\r\n public async getAllFanTypesWithFans(): Promise {\r\n try {\r\n if (this._router.url.indexOf('/back-door') > -1) {\r\n return this.getFakeData();\r\n }\r\n const result = await this._httpService.get(ApiRoutes.Airflow.getAllFanTypesWithFans);\r\n return result\r\n } catch (error) {\r\n return this.processError(error);\r\n }\r\n }\r\n\r\n private processError(error: any) {\r\n if (error instanceof ErrorModel) {\r\n return Promise.reject(error);\r\n }\r\n\r\n console.log(error);\r\n return null;\r\n }\r\n\r\n private getFakeData(): AqsAirflowFanTypeViewModel[] {\r\n let fans = [\r\n {\r\n \"id\": 1, \"name\": \"Axial\", \"type\": 1,\r\n \"fans\": [\r\n { \"id\": 1, \"name\": \"1207.5\",\"modelName\":\"C\", \"fanPoints\": [{ \"x\": 1.87, \"y\": 0 }, { \"x\": 1.51, \"y\": 1 }, { \"x\": 1.15, \"y\": 2 }, { \"x\": 0.775, \"y\": 3 }, { \"x\": 0.555, \"y\": 4 }] },\r\n { \"id\": 25, \"name\": \"1401\",\"modelName\":\"C\", \"fanPoints\": [{ \"x\": 2.98, \"y\": 0 }, { \"x\": 2.66, \"y\": 1 }, { \"x\": 2.34, \"y\": 2 }, { \"x\": 1.85, \"y\": 3 }, { \"x\": 1.275, \"y\": 4 }, { \"x\": 0.84, \"y\": 5 }] },\r\n { \"id\": 26, \"name\": \"1401.52\",\"modelName\":\"C\", \"fanPoints\": [{ \"x\": 3.15, \"y\": 0 }, { \"x\": 3.05, \"y\": 1 }, { \"x\": 2.95, \"y\": 2 }, { \"x\": 2.8, \"y\": 3 }, { \"x\": 2.64, \"y\": 4 }, { \"x\": 2.36, \"y\": 5 }, { \"x\": 2.15, \"y\": 6 }, { \"x\": 1.84, \"y\": 7 }, { \"x\": 1.725, \"y\": 8 }, { \"x\": 1.43, \"y\": 9 }, { \"x\": 1.175, \"y\": 10 }, { \"x\": 0.95, \"y\": 11 }, { \"x\": 0.8, \"y\": 12 }, { \"x\": 0.58, \"y\": 13 }] }\r\n ]\r\n },\r\n {\r\n \"id\": 2, \"name\": \"Centrifugal 60 Hz\", \"type\": 2,\r\n \"fans\": [\r\n { \"id\": 35, \"name\": \"2003\",\"modelName\":\"C\", \"fanPoints\": [{ \"x\": 5.417, \"y\": 0 }, { \"x\": 4.833, \"y\": 1 }, { \"x\": 4.167, \"y\": 2 }, { \"x\": 3.283, \"y\": 3 }, { \"x\": 2.3, \"y\": 4 }, { \"x\": 1.22254, \"y\": 4.4752 }] },\r\n { \"id\": 45, \"name\": \"2005\",\"modelName\":\"C\", \"fanPoints\": [{ \"x\": 1.9, \"y\": 0 }, { \"x\": 1.809528, \"y\":1 }, { \"x\": 1.720782, \"y\": 2 }, { \"x\": 1.644008, \"y\": 3 }, { \"x\": 1.559426, \"y\": 4 }, { \"x\": 1.479822, \"y\": 5 }, { \"x\": 1.402866, \"y\": 6 }, { \"x\": 1.320808, \"y\": 7 }, { \"x\": 1.23797, \"y\": 8 }, { \"x\": 1.151588, \"y\": 9 }, { \"x\": 1.039806, \"y\": 10 }, { \"x\": 0.948, \"y\": 10.723 }] },\r\n { \"id\": 37, \"name\": \"2010\",\"modelName\":\"C\", \"fanPoints\": [{ \"x\": 5.721, \"y\": 0 }, { \"x\": 5.55, \"y\": 1 }, { \"x\": 5.4, \"y\": 2 }, { \"x\": 5.3, \"y\":3 }, { \"x\": 5.167, \"y\": 4 }, { \"x\": 4.967, \"y\": 5 }, { \"x\": 4.733, \"y\": 6 }, { \"x\": 4.533, \"y\":7 }, { \"x\": 4.367, \"y\": 8 }, { \"x\": 4.167, \"y\": 9 }, { \"x\": 3.933, \"y\": 10 }, { \"x\": 3.7, \"y\": 11 }, { \"x\": 3.417, \"y\": 12 }, { \"x\": 3.167, \"y\": 13 }, { \"x\": 2.833, \"y\": 14 }, { \"x\": 2.467, \"y\": 15 }, { \"x\": 2.152, \"y\": 15.772 }] },\r\n { \"id\": 6, \"name\": \"3040\",\"modelName\":\"C\", \"fanPoints\": [{ \"x\": 29, \"y\": 0 }, { \"x\": 27.5, \"y\": 1 }, { \"x\": 26, \"y\": 2 }, { \"x\": 25.3, \"y\": 3 }, { \"x\": 24.2, \"y\": 4 }, { \"x\": 23.5, \"y\": 5 }, { \"x\": 22.5, \"y\": 6 }, { \"x\": 21.5, \"y\": 7 }, { \"x\": 20.2, \"y\": 8 }, { \"x\": 18.5, \"y\": 9 }, { \"x\": 15.7, \"y\": 10 }] }\r\n ]\r\n },\r\n {\r\n \"id\": 3, \"name\": \"Centrifugal 60 Hz A.F.\", \"type\": 3,\r\n \"fans\": [\r\n { \"id\": 8, \"name\": \"2710\",\"modelName\":\"C\", \"fanPoints\": [{ \"x\": 12.6, \"y\": 0 }, { \"x\": 11.96, \"y\": 1 }, { \"x\": 11.23, \"y\": 2 }, { \"x\": 10.43, \"y\": 3 }, { \"x\": 9.59, \"y\": 4 }, { \"x\": 8.75, \"y\": 5 }, { \"x\": 7.88, \"y\": 6 }, { \"x\": 6.75, \"y\": 7 }] },\r\n { \"id\": 9, \"name\": \"2715\",\"modelName\":\"C\", \"fanPoints\": [{ \"x\": 18.1, \"y\": 0 }, { \"x\": 17.045, \"y\": 1 }, { \"x\": 15.915, \"y\": 2 }, { \"x\": 14.79, \"y\": 3 }, { \"x\": 13.77, \"y\": 4 }, { \"x\": 12.76, \"y\": 5 }, { \"x\": 11.56, \"y\": 6 }, { \"x\": 10.52, \"y\": 7 }] },\r\n { \"id\": 7, \"name\": \"2775\",\"modelName\":\"C\", \"fanPoints\": [{ \"x\": 10.1, \"y\": 0 }, { \"x\": 9.59, \"y\": 1 }, { \"x\": 9.02, \"y\": 2 }, { \"x\": 8.34, \"y\": 3 }, { \"x\": 7.51, \"y\": 4 }, { \"x\": 6.77, \"y\": 5 }, { \"x\": 6.06, \"y\": 6 }, { \"x\": 5.09, \"y\": 7 }] }\r\n ]\r\n },\r\n {\r\n \"id\": 4, \"name\": \"Centrifugal 50 Hz\", \"type\": 4,\r\n \"fans\": [\r\n { \"id\": 10, \"name\": \"2003\",\"modelName\":\"C\", \"fanPoints\": [{ \"x\": 4.639, \"y\": 0 }, { \"x\": 3.736, \"y\": 1 }, { \"x\": 2.833, \"y\": 2 }, { \"x\": 1.333, \"y\": 3 }] },\r\n { \"id\": 11, \"name\": \"2005\",\"modelName\":\"C\", \"fanPoints\": [{ \"x\": 1.567, \"y\": 0 }, { \"x\": 1.467, \"y\": 1 }, { \"x\": 1.367, \"y\": 2 }, { \"x\": 1.3, \"y\": 3 }, { \"x\": 1.167, \"y\": 4 }, { \"x\": 1.083, \"y\": 5 }, { \"x\": 1, \"y\": 6 }, { \"x\": 0.85, \"y\": 7 }] },\r\n { \"id\": 13, \"name\": \"2010\",\"modelName\":\"C\", \"fanPoints\": [{ \"x\": 4.717, \"y\": 0 }, { \"x\": 4.567, \"y\": 1 }, { \"x\": 4.417, \"y\": 2 }, { \"x\": 4.267, \"y\": 3 }, { \"x\": 3.967, \"y\": 4 }, { \"x\": 3.75, \"y\": 5 }, { \"x\": 3.55, \"y\": 6 }, { \"x\": 3.267, \"y\": 7 }, { \"x\": 2.967, \"y\": 8 }, { \"x\": 2.65, \"y\": 9 }, { \"x\": 2.267, \"y\": 10 }] }\r\n ]\r\n }\r\n ];\r\n return fans as AqsAirflowFanTypeViewModel[];\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { Router } from '@angular/router';\r\n\r\nimport { ApiRoutes } from '../../constants';\r\nimport { ErrorModel, HttpService } from './../../../common';\r\nimport { AqsCommoditiesViewModel } from './../../models';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class AqsCommoditiesApiService {\r\n\r\n constructor(\r\n private _httpService: HttpService,\r\n private _router: Router,) { }\r\n\r\n public async getAll(): Promise {\r\n try {\r\n if (this._router.url.indexOf('/back-door') > -1) {\r\n return this.getFakeData();\r\n }\r\n const result = await this._httpService.get(ApiRoutes.Commodity.getAll);\r\n return result\r\n } catch (error) {\r\n return this.processError(error);\r\n }\r\n }\r\n\r\n private processError(error: any) {\r\n if (error instanceof ErrorModel) {\r\n return Promise.reject(error);\r\n }\r\n\r\n console.log(error);\r\n return null;\r\n }\r\n\r\n private getFakeData(): AqsCommoditiesViewModel[] {\r\n let fakeModel: AqsCommoditiesViewModel[] = [];\r\n fakeModel.push({ id: 0, name: 'Alfalfa', aa: 0.00202302928025107, bb: 0.0202692405869278 });\r\n fakeModel.push({ id: 1, name: 'Barley', aa: 0.000676450415583951, bb: 0.0670561331433332 });\r\n fakeModel.push({ id: 2, name: 'Brome grass', aa: 0.00042673273880296, bb: 0.0451104908023415 });\r\n fakeModel.push({ id: 3, name: 'Canola (campestris)', aa: 0.00158049162519615, bb: 0.0299720604285874 });\r\n fakeModel.push({ id: 4, name: 'Canola (napus)', aa: 0.00158049162519615, bb: 0.0179832357726849 });\r\n fakeModel.push({ id: 5, name: 'Clover alsike', aa: 0.00193136076598969, bb: 0.0113792228068923 });\r\n for (let index = 6; index < 34; index++) {\r\n fakeModel.push({ id: index, name: `Alfalfa ${index + 1}`, aa: 0.00202302928025107, bb: 0.0202692405869278 });\r\n }\r\n return fakeModel;\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { Router } from '@angular/router';\r\n\r\nimport { ComputationSheetAddEditModel, ComputationSheetResponseModel, AqsSavedQuoteModel, QuoteFlatStorageViewModel, QuoteRoundStorageViewModel, BindingComputationSheets } from '../../models';\r\nimport { ErrorModel, HttpService } from '../../../common';\r\nimport { ApiRoutes } from '../../constants';\r\nimport { AqsSessionTypeEnum, AqsStorageTypeEnum } from '../../enums';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class AqsQuoteStorageApiService {\r\n\r\n constructor(\r\n private _httpService: HttpService,\r\n private _router: Router,) { }\r\n\r\n public async getFlatById(id: number): Promise {\r\n try {\r\n const result = await this._httpService.get(ApiRoutes.QuoteStorage.getQuoteFlatStorage, { id });\r\n if (result) {\r\n return result;\r\n }\r\n } catch (error) {\r\n if (error instanceof ErrorModel) {\r\n return Promise.reject(error);\r\n }\r\n }\r\n }\r\n\r\n public async getRoundById(id: number): Promise {\r\n try {\r\n const result = await this._httpService.get(ApiRoutes.QuoteStorage.getQuoteRoundStorage, { id });\r\n if (result) {\r\n return result;\r\n }\r\n } catch (error) {\r\n if (error instanceof ErrorModel) {\r\n return Promise.reject(error);\r\n }\r\n }\r\n }\r\n\r\n public async editQuoteFlatStorage(quoteFlatStorage: QuoteFlatStorageViewModel): Promise {\r\n try {\r\n if (this._router.url.indexOf('/back-door') > -1) {\r\n return quoteFlatStorage;\r\n }\r\n const result = await this._httpService.post(ApiRoutes.QuoteStorage.editQuoteFlatStorage, quoteFlatStorage);\r\n if (result) {\r\n return result;\r\n }\r\n } catch (error) {\r\n if (error instanceof ErrorModel) {\r\n return Promise.reject(error);\r\n }\r\n }\r\n }\r\n\r\n public async editQuoteRoundStorage(quoteRoundStorage: QuoteRoundStorageViewModel): Promise {\r\n try {\r\n if (this._router.url.indexOf('/back-door') > -1) {\r\n return quoteRoundStorage;\r\n }\r\n const result = await this._httpService.post(ApiRoutes.QuoteStorage.editQuoteRoundStorage, quoteRoundStorage);\r\n if (result) {\r\n return result;\r\n }\r\n } catch (error) {\r\n if (error instanceof ErrorModel) {\r\n return Promise.reject(error);\r\n }\r\n }\r\n }\r\n\r\n public async addQuoteFlatStorage(quoteFlatStorage: QuoteFlatStorageViewModel): Promise {\r\n try {\r\n if (this._router.url.indexOf('/back-door') > -1) {\r\n return quoteFlatStorage;\r\n }\r\n const result = await this._httpService.post(ApiRoutes.QuoteStorage.addQuoteFlatStorage, quoteFlatStorage);\r\n return result;\r\n } catch (error) {\r\n return this.processError(error);\r\n }\r\n }\r\n\r\n public async addQuoteRoundStorage(quoteRoundStorage: QuoteRoundStorageViewModel): Promise {\r\n try {\r\n if (this._router.url.indexOf('/back-door') > -1) {\r\n return quoteRoundStorage;\r\n }\r\n const result = await this._httpService.post(ApiRoutes.QuoteStorage.addQuoteRoundStorage, quoteRoundStorage);\r\n return result;\r\n } catch (error) {\r\n return this.processError(error);\r\n }\r\n }\r\n\r\n public async deleteQuoteStorage(id: number): Promise {\r\n try {\r\n const result = await this._httpService.delete(ApiRoutes.QuoteStorage.deleteQuoteStorage, { id });\r\n return result;\r\n } catch (error) {\r\n return this.processError(error);\r\n }\r\n }\r\n\r\n public async GetAllQuotes(): Promise {\r\n try {\r\n if (this._router.url.indexOf('/back-door') > -1) {\r\n return this.getFakeData();\r\n }\r\n const result = await this._httpService.get(ApiRoutes.QuoteStorage.getAllSavedQuotes);\r\n return result;\r\n } catch (error) {\r\n return this.processError(error);\r\n }\r\n }\r\n\r\n public async addComputationSheet(computationSheet: ComputationSheetAddEditModel): Promise {\r\n try {\r\n const result = await this._httpService.post(ApiRoutes.QuoteStorage.addComputationSheet, computationSheet);\r\n if (result) {\r\n return result;\r\n }\r\n } catch (error) {\r\n if (error instanceof ErrorModel) {\r\n return Promise.reject(error);\r\n }\r\n }\r\n }\r\n\r\n public async editComputationSheet(computationSheet: ComputationSheetAddEditModel): Promise {\r\n try {\r\n const result = await this._httpService.post(ApiRoutes.QuoteStorage.editComputationSheet, computationSheet);\r\n if (result) {\r\n return result;\r\n }\r\n } catch (error) {\r\n if (error instanceof ErrorModel) {\r\n return Promise.reject(error);\r\n }\r\n }\r\n }\r\n\r\n public async getComputationSheetById(id: number): Promise {\r\n try {\r\n const result = await this._httpService.get(ApiRoutes.QuoteStorage.getComputationSheetById, { id });\r\n if (result) {\r\n return result;\r\n }\r\n } catch (error) {\r\n if (error instanceof ErrorModel) {\r\n return Promise.reject(error);\r\n }\r\n }\r\n }\r\n\r\n public async getAllComputationSheetForBinding(): Promise {\r\n try {\r\n if (this._router.url.indexOf('/back-door') > -1) {\r\n return this.fakeLinkData();\r\n }\r\n const result = await this._httpService.get(ApiRoutes.QuoteStorage.getAllComputationSheetsForBindingByUserId);\r\n if (result) {\r\n return result;\r\n }\r\n } catch (error) {\r\n if (error instanceof ErrorModel) {\r\n return Promise.reject(error);\r\n }\r\n }\r\n }\r\n\r\n private processError(error: any) {\r\n if (error instanceof ErrorModel) {\r\n return Promise.reject(error);\r\n }\r\n\r\n console.log(error);\r\n return null;\r\n }\r\n\r\n private fakeLinkData(): BindingComputationSheets[] {\r\n let data = [\r\n { id:1, coverSheet:{companyName:'companyName1',city:'city1',comment:'comment1',locationCity:'locationCity1',contact:'contact1',customerName:'customerName1',locationName:'locationName1',quoteNumber:'quoteNumber1',id:1,numberTypical:null,type:null} },\r\n { id:2, coverSheet:{companyName:'companyName2',city:'city2',comment:'comment2',locationCity:'locationCity2',contact:'contact2',customerName:'customerName2',locationName:'locationName2',quoteNumber:'quoteNumber2',id:2,numberTypical:null,type:null} },\r\n { id:3, coverSheet:{companyName:'companyName3',city:'city3',comment:'comment3',locationCity:'locationCity3',contact:'contact3',customerName:'customerName3',locationName:'locationName3',quoteNumber:'quoteNumber3',id:3,numberTypical:null,type:null} },\r\n { id:4, coverSheet:{companyName:'companyName4',city:'city4',comment:'comment4',locationCity:'locationCity4',contact:'contact4',customerName:'customerName4',locationName:'locationName4',quoteNumber:'quoteNumber4',id:4,numberTypical:null,type:null} },\r\n { id:5, coverSheet:{companyName:'companyName5',city:'city5',comment:'comment5',locationCity:'locationCity5',contact:'contact5',customerName:'customerName5',locationName:'locationName5',quoteNumber:'quoteNumber5',id:5,numberTypical:null,type:null} },\r\n { id:6, coverSheet:{companyName:'companyName6',city:'city6',comment:'comment6',locationCity:'locationCity6',contact:'contact6',customerName:'customerName6',locationName:'locationName6',quoteNumber:'quoteNumber6',id:6,numberTypical:null,type:null} }\r\n ] as BindingComputationSheets[]\r\n return data;\r\n }\r\n\r\n private getFakeData(): AqsSavedQuoteModel[] {\r\n let quotes = [\r\n { quoteNumber: \"QuoteNumberF1\", sessionType: AqsSessionTypeEnum.FlatSessionType, storageType: AqsStorageTypeEnum.Flat },\r\n { quoteNumber: \"QuoteNumberF2\", sessionType: AqsSessionTypeEnum.FlatSessionType, storageType: AqsStorageTypeEnum.TruncatedPeak },\r\n { quoteNumber: \"QuoteNumberF3\", sessionType: AqsSessionTypeEnum.FlatSessionType, storageType: AqsStorageTypeEnum.SlopedPeak },\r\n { quoteNumber: \"QuoteNumberR1\", sessionType: AqsSessionTypeEnum.RoundSessionType, storageType: AqsStorageTypeEnum.Conical },\r\n { quoteNumber: \"QuoteNumberR2\", sessionType: AqsSessionTypeEnum.RoundSessionType, storageType: AqsStorageTypeEnum.SideDraw },\r\n { quoteNumber: \"QuoteNumberC1\", sessionType: AqsSessionTypeEnum.ComputationSheetType, storageType: AqsStorageTypeEnum.None },\r\n ] as AqsSavedQuoteModel[];\r\n return quotes;\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\n\r\nimport { ErrorModel, HttpService } from '../../../common';\r\nimport { ApiRoutes } from '../../constants';\r\nimport { QuoteFlatStorageReportModel, QuoteRoundStorageReportModel, ReportComputationSheetModel } from '@models';\r\nimport { ReportFormatEnum } from '../../enums';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class AqsReportApiService {\r\n\r\n constructor(private _httpService: HttpService) { }\r\n\r\n public async downloadReportComputationSheetFile(model: ReportComputationSheetModel): Promise {\r\n try {\r\n let result = await this._httpService.postArrayBuffer(ApiRoutes.AqsReport.getReportComputationSheet, model);\r\n return result;\r\n } catch (error) {\r\n return this.processError(error);\r\n }\r\n }\r\n\r\n public async getComputationSheetReportInBlob(model: ReportComputationSheetModel): Promise {\r\n try {\r\n let result = await this._httpService.post(ApiRoutes.AqsReport.getReportComputationSheetToSend, model)\r\n return result;\r\n } catch (error) {\r\n return this.processError(error);\r\n }\r\n }\r\n\r\n public async downloadReportQuoteRoundStorageFile(model: QuoteRoundStorageReportModel): Promise {\r\n try {\r\n let result = await this._httpService.postArrayBuffer(ApiRoutes.AqsReport.getReportQuoteRound, model);\r\n return result;\r\n } catch (error) {\r\n return this.processError(error);\r\n }\r\n }\r\n\r\n public async getQuoteRoundStorageReportInBlob(model: QuoteRoundStorageReportModel): Promise {\r\n try {\r\n let result = await this._httpService.post(ApiRoutes.AqsReport.getReportRoundStorageToSend, model)\r\n return result;\r\n } catch (error) {\r\n return this.processError(error);\r\n }\r\n }\r\n\r\n public async downloadReportQuoteFlatStorageFile(model: QuoteFlatStorageReportModel): Promise {\r\n try {\r\n let result = await this._httpService.postArrayBuffer(ApiRoutes.AqsReport.getReportQuoteFlat, model);\r\n return result;\r\n } catch (error) {\r\n return this.processError(error);\r\n }\r\n }\r\n\r\n public async getQuoteFlatStorageReportInBlob(model: QuoteFlatStorageReportModel): Promise {\r\n try {\r\n let result = await this._httpService.post(ApiRoutes.AqsReport.getReportFlatStorageToSend, model)\r\n return result;\r\n } catch (error) {\r\n return this.processError(error);\r\n }\r\n }\r\n\r\n public async downloadReportListOfQuoteFile(\r\n quoteStoragesIds: number[],\r\n reportFormat: ReportFormatEnum,\r\n timeZone: string,\r\n printDate: Date): Promise {\r\n try {\r\n let result = await this._httpService.postArrayBuffer(\r\n ApiRoutes.AqsReport.getReportListOfQuote,\r\n {\r\n quoteStoragesIds: quoteStoragesIds,\r\n reportFormat: reportFormat,\r\n timeZone: timeZone,\r\n printDate: printDate\r\n });\r\n return result;\r\n } catch (error) {\r\n return this.processError(error);\r\n }\r\n }\r\n\r\n public async getListOFQuoteReportInBlob(\r\n quoteStoragesIds: number[],\r\n reportFormat: ReportFormatEnum,\r\n timeZone: string,\r\n printDate: Date): Promise {\r\n try {\r\n let result = await this._httpService.post(\r\n ApiRoutes.AqsReport.getReportListOfQuoteToSend,\r\n {\r\n quoteStoragesIds: quoteStoragesIds,\r\n reportFormat: reportFormat,\r\n timeZone: timeZone,\r\n printDate: printDate\r\n });\r\n return result;\r\n } catch (error) {\r\n return this.processError(error);\r\n }\r\n }\r\n\r\n private processError(error: any) {\r\n if (error instanceof ErrorModel) {\r\n return Promise.reject(error);\r\n }\r\n console.log(error);\r\n return null;\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\n\r\nimport { HttpService, ErrorModel } from '../../../common';\r\nimport { ApiRoutes } from '../../constants';\r\n\r\n@Injectable()\r\nexport class BinApiService {\r\n constructor(\r\n private _httpService: HttpService,\r\n ) { }\r\n\r\n public async get2DScheme() : Promise {\r\n try {\r\n const result = await this._httpService.getArrayBuffer(ApiRoutes.Bin.get2dScheme);\r\n return result;\r\n } catch (error) {\r\n return this.processError(error);\r\n }\r\n }\r\n\r\n public async get3DScheme() : Promise {\r\n try {\r\n const result = await this._httpService.getArrayBuffer(ApiRoutes.Bin.get3dScheme);\r\n return result;\r\n } catch (error) {\r\n return this.processError(error);\r\n }\r\n }\r\n\r\n private processError(error: any) {\r\n if (error instanceof ErrorModel) {\r\n return Promise.reject(error);\r\n }\r\n\r\n console.log(error);\r\n return null;\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { Router } from '@angular/router';\r\n\r\nimport { HttpService, ErrorModel } from '../../../common';\r\nimport { CompanyViewModel, CompanyGetModel, CompanyPostModel } from '../../models';\r\nimport { ApiRoutes } from '../../constants';\r\n\r\n@Injectable()\r\nexport class CompaniesApiService {\r\n constructor(\r\n private _httpService: HttpService,\r\n private _router: Router,\r\n ) { }\r\n\r\n public async loadAll(): Promise {\r\n try {\r\n if (this._router.url.indexOf('/back-door') > -1) {\r\n return this.getFakeData();\r\n }\r\n\r\n const result = await this._httpService.get(ApiRoutes.Company.getAll);\r\n\r\n return result.map((item) => {\r\n return CompanyGetModel.toViewModel(item);\r\n });\r\n } catch (error) {\r\n if (error instanceof ErrorModel) {\r\n return Promise.reject(error);\r\n }\r\n\r\n console.log(error);\r\n return null;\r\n }\r\n }\r\n\r\n public async add(companyName: string): Promise {\r\n try {\r\n const result = await this._httpService.post(ApiRoutes.Company.add, companyName);\r\n if (result) {\r\n return result;\r\n }\r\n } catch (error) {\r\n if (error instanceof ErrorModel) {\r\n return Promise.reject(error);\r\n }\r\n }\r\n }\r\n\r\n public async edit(company: CompanyPostModel): Promise {\r\n try {\r\n const result = await this._httpService.post(ApiRoutes.Company.edit, company) as CompanyGetModel;\r\n if (result) {\r\n const companyViewModel = CompanyGetModel.toViewModel(result);\r\n return companyViewModel;\r\n }\r\n } catch (error) {\r\n if (error instanceof ErrorModel) {\r\n return Promise.reject(error);\r\n }\r\n }\r\n }\r\n\r\n public async delete(companyId: number): Promise {\r\n try {\r\n const result = await this._httpService.post(ApiRoutes.Company.delete, { id: companyId })\r\n return Promise.resolve(companyId);\r\n } catch (error) {\r\n if (error instanceof ErrorModel) {\r\n return Promise.reject(error);\r\n }\r\n }\r\n }\r\n\r\n public async getCompaniesForUpdaterFilter(): Promise {\r\n try {\r\n if (this._router.url.indexOf('/back-door') > -1) {\r\n return this.getFakeData();\r\n }\r\n\r\n const result = await this._httpService.get(ApiRoutes.Company.getCompaniesForUpdaterFilter);\r\n return result.map((item) => {\r\n return CompanyGetModel.toViewModel(item);\r\n });\r\n } catch (error) {\r\n if (error instanceof ErrorModel) {\r\n return Promise.reject(error);\r\n }\r\n\r\n console.log(error);\r\n return null;\r\n }\r\n }\r\n\r\n private getFakeData(): CompanyViewModel[] {\r\n const data = [\r\n { id: 1, name: 'Company1' },\r\n { id: 2, name: 'Company2' },\r\n { id: 3, name: 'Company3' },\r\n { id: 4, name: 'Company4' },\r\n { id: 5, name: 'Company5' }\r\n ] as CompanyViewModel[];\r\n return data;\r\n }\r\n}","import { Injectable } from '@angular/core';\r\n\r\nimport { HttpService, ErrorModel, ApiRoutes } from '../../../common';\r\nimport { CompanyAdminViewModel, CompanyAdminInviteModel, CompanyAdminPostModel, CompanyAdminGetModel } from '../../models';\r\n\r\n@Injectable()\r\nexport class CompanyAdminsApiService {\r\n constructor(\r\n private _httpService: HttpService) { }\r\n\r\n public async loadAll() : Promise {\r\n try {\r\n const data = await this._httpService.get(ApiRoutes.Company.getAllCompanyAdmin) as CompanyAdminGetModel[];\r\n if (data) {\r\n const companyAdminsView = data.map(user => CompanyAdminGetModel.toViewModel(user));\r\n return companyAdminsView;\r\n }\r\n } catch (error) {\r\n return this.processError(error);\r\n }\r\n }\r\n\r\n public async loadAllForCompany(companyId: number) : Promise {\r\n try {\r\n const data = await this._httpService.get(ApiRoutes.Company.getAllCompanyAdminForCompany, { companyId: companyId });\r\n return data\r\n } catch (error) {\r\n return this.processError(error);\r\n }\r\n }\r\n\r\n public async invite(companyAdmin: CompanyAdminInviteModel) : Promise {\r\n try {\r\n const result = await this._httpService.post(ApiRoutes.Account.addCompanyAdmin, companyAdmin);\r\n if (result != null) {\r\n return Promise.resolve(result);\r\n }\r\n } catch (error) {\r\n return this.processError(error);\r\n }\r\n }\r\n\r\n public async edit(companyAdmin: CompanyAdminPostModel) : Promise {\r\n try {\r\n const result = await this._httpService.post( ApiRoutes.Account.editCompanyAdmin, companyAdmin) as CompanyAdminGetModel;\r\n if (result) {\r\n const companyAdminViewModel = CompanyAdminGetModel.toViewModel(result);\r\n return Promise.resolve(companyAdminViewModel);\r\n }\r\n } catch (error) {\r\n return this.processError(error);\r\n }\r\n }\r\n\r\n public async delete(companyAdminId: number) : Promise {\r\n try {\r\n const result = await this._httpService.post( ApiRoutes.Account.deleteUser, { id: companyAdminId })\r\n if (result) {\r\n return Promise.resolve(companyAdminId);\r\n }\r\n } catch (error) {\r\n return this.processError(error);\r\n }\r\n }\r\n\r\n private processError(error: any) {\r\n if (error instanceof ErrorModel) {\r\n return Promise.reject(error);\r\n }\r\n\r\n console.log(error);\r\n return null;\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\n\r\nimport { HttpService, ErrorModel, ApiRoutes } from '../../../common';\r\nimport { CompanyUserViewModel, CompanyUserInviteModel, CompanyUserPostModel, CompanyUserGetModel } from '../../models';\r\nimport { Router } from '@angular/router';\r\nimport { UserStatusEnum } from '../../enums';\r\n\r\n@Injectable()\r\nexport class CompanyUsersApiService {\r\n constructor(\r\n private _httpService: HttpService,\r\n private _router: Router) { }\r\n\r\n public async loadAll(userCompanyId: number): Promise {\r\n try {\r\n if (this._router.url.indexOf('/back-door') > -1) {\r\n return this.getFakeData();\r\n }\r\n const data = await this._httpService.get(ApiRoutes.Company.getAllCompanyUser, { companyId: userCompanyId });\r\n if (data) {\r\n const companyUsersView = data.map(user => CompanyUserGetModel.toViewModel(user));\r\n return companyUsersView;\r\n }\r\n } catch (error) {\r\n return this.processError(error);\r\n }\r\n }\r\n\r\n public async invite(companyUser: CompanyUserInviteModel): Promise {\r\n try {\r\n const result = await this._httpService.post(ApiRoutes.Account.addCompanyUser, companyUser);\r\n if (result) {\r\n return Promise.resolve(result);\r\n }\r\n } catch (error) {\r\n return this.processError(error);\r\n }\r\n }\r\n\r\n public async edit(companyUser: CompanyUserPostModel): Promise {\r\n try {\r\n const result = await this._httpService.post(ApiRoutes.Account.editCompanyUser, companyUser) as CompanyUserGetModel;\r\n if (result) {\r\n const companyUserViewModel = CompanyUserGetModel.toViewModel(result);\r\n return Promise.resolve(companyUserViewModel);\r\n }\r\n } catch (error) {\r\n return this.processError(error);\r\n }\r\n }\r\n\r\n public async delete(companyUserId: number): Promise {\r\n try {\r\n const result = await this._httpService.post(ApiRoutes.Account.deleteUser, { id: companyUserId });\r\n if (result) {\r\n return Promise.resolve(companyUserId);\r\n }\r\n } catch (error) {\r\n return this.processError(error);\r\n }\r\n }\r\n\r\n private processError(error: any) {\r\n if (error instanceof ErrorModel) {\r\n return Promise.reject(error);\r\n }\r\n\r\n console.log(error);\r\n return null;\r\n }\r\n\r\n public getFakeData(): CompanyUserViewModel[] {\r\n const data = [\r\n { id: 1, firstName: 'firstName', lastName: 'lastName', email: 'email', status: UserStatusEnum.Locked, arduinoLocations: [{ id: 1, name: 'Location1' }, { id: 2, name: 'Location2' }], arduinoLocationNames: ['Location1', 'Location2'], raspberryLocations: [{ id: 1, name: 'Location1' }, { id: 2, name: 'Location2' }], raspberryLocationNames: ['Location1', 'Location2'], itxLocations: [{ id: 1, name: 'Location1' }, { id: 2, name: 'Location2' }], itxLocationsNames: ['Location1', 'Location2'], lastLoginDate: new Date },\r\n { id: 2, firstName: 'firstName2', lastName: 'lastName2', email: 'email2', status: UserStatusEnum.Locked, arduinoLocations: [{ id: 1, name: 'Location3' }, { id: 2, name: 'Location4' }], arduinoLocationNames: ['Location3', 'Location4'], raspberryLocations: [{ id: 1, name: 'Location1' }, { id: 2, name: 'Location2' }], raspberryLocationNames: ['Location1', 'Location2'], itxLocations: [{ id: 1, name: 'Location1' }, { id: 2, name: 'Location2' }], itxLocationsNames: ['Location1', 'Location2'], lastLoginDate: new Date }\r\n ] as CompanyUserViewModel[];\r\n return data;\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { Router } from '@angular/router';\r\nimport { DeviceFileLogInfoViewModel, DeviceLogInfoViewModel } from '../../models';\r\n\r\nimport { ErrorModel, HttpService } from './../../../common';\r\nimport { ApiRoutes } from '../../constants';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class DeviceLogApiService {\r\n\r\n constructor(\r\n private _httpService: HttpService,\r\n private _router: Router) { }\r\n\r\n public async getLogsInfoList(deviceId: string): Promise {\r\n try {\r\n if (this._router.url.indexOf('/back-door') > -1) {\r\n return this.getFakeData(deviceId);\r\n }\r\n\r\n const data = await this._httpService.get(ApiRoutes.DeviceLog.getLogsInfoForDeivce, { deviceId: deviceId });\r\n if (data) {\r\n return data;\r\n }\r\n\r\n } catch (error) {\r\n return this.processError(error);\r\n }\r\n }\r\n\r\n public async downloadLogFile(deviceId: string, fileName: string): Promise {\r\n try {\r\n const result = await this._httpService.getArrayBuffer(ApiRoutes.DeviceLog.downloadLogFile, { deviceId: deviceId, fileName: fileName });\r\n return result;\r\n } catch (error) {\r\n return this.processError(error);\r\n }\r\n }\r\n\r\n public async downloadLogFiles(deviceId: string, fileNames: string[]): Promise {\r\n try {\r\n const result = await this._httpService.postArrayBuffer(ApiRoutes.DeviceLog.downloadLogFiles, { deviceId: deviceId, fileNames: fileNames });\r\n return result;\r\n } catch (error) {\r\n return this.processError(error);\r\n }\r\n }\r\n\r\n public async addLogLinkToDeviceTwin(deviceId: string): Promise {\r\n try {\r\n const result = await this._httpService.post(ApiRoutes.DeviceLog.addLogLinkToDeviceTwin, deviceId );\r\n return result;\r\n } catch (error) {\r\n return this.processError(error);\r\n }\r\n }\r\n\r\n private processError(error: any) {\r\n if (error instanceof ErrorModel) {\r\n return Promise.reject(error);\r\n }\r\n\r\n console.log(error);\r\n return null;\r\n }\r\n\r\n private getFakeData(deviceId: string): DeviceLogInfoViewModel {\r\n let fake: DeviceFileLogInfoViewModel[] = [];\r\n for (let i = 0; i < 100; i++) {\r\n fake.push({ createdDate: new Date(), lastModifiedDate: new Date(), fileNameWithoutDeviceId: `_log_file_${i}.txt`, fileName: `log_file_${i}.txt`, fullFileName: `log_file_${i}.txt`,size:0, sizeLabel:`${i*10} MB` });\r\n }\r\n let fakeData = { isTwinHasLogLink: true, deviceFileLogInfo: fake } as DeviceLogInfoViewModel;\r\n return fakeData;\r\n }\r\n}\r\n","import { Injectable } from \"@angular/core\";\r\nimport { Router } from \"@angular/router\";\r\n\r\nimport { ApiRoutes, ErrorModel, HttpService } from '../../../common';\r\nimport { EmailServiceGetModel, EmailServicePostModel, EmailServiceViewModel } from \"../../models\";\r\nimport { EmailServiceScheduleEnum } from \"../../enums\";\r\n\r\n@Injectable()\r\nexport class EmailServiceApiService {\r\n constructor(\r\n private _httpService: HttpService,\r\n private _router: Router) { }\r\n\r\n public async loadAll(userCompanyId: number): Promise {\r\n try {\r\n if (this._router.url.indexOf('/back-door') > -1) {\r\n return this.getFakeData();\r\n }\r\n const data = await this._httpService.get(ApiRoutes.Company.getAllEmailReportConfigurationsForCompany, { companyId: userCompanyId }) as EmailServiceGetModel[];\r\n if (data) {\r\n const emailServiceView = data.map(user => EmailServiceGetModel.toViewModel(user));\r\n return emailServiceView;\r\n }\r\n } catch (error) {\r\n return this.processError(error);\r\n }\r\n }\r\n\r\n public async addEdit(emailService: EmailServicePostModel): Promise {\r\n try {\r\n const result = await this._httpService.post(ApiRoutes.Company.addEditEmailReportConfigurationForCompany, emailService) as EmailServiceGetModel;\r\n if (result) {\r\n const emailServiceView = EmailServiceGetModel.toViewModel(result);\r\n return Promise.resolve(emailServiceView);\r\n }\r\n } catch (error) {\r\n return this.processError(error);\r\n }\r\n }\r\n\r\n public async delete(id: number, companyId: number) {\r\n try {\r\n const result = await this._httpService.delete(ApiRoutes.Company.deleteEmailReportConfigurationForCompany, { emailServiceId: id, companyId: companyId });\r\n\r\n return Promise.resolve(result);\r\n } catch (error) {\r\n return this.processError(error);\r\n }\r\n }\r\n\r\n private processError(error: any) {\r\n if (error instanceof ErrorModel) {\r\n return Promise.reject(error);\r\n }\r\n\r\n console.log(error);\r\n return null;\r\n }\r\n\r\n private getFakeData(): EmailServiceViewModel[] {\r\n const data = [\r\n {\r\n id: 1, emails: ['email@mail.com', 'email@mail.com', 'email@mail.com', 'email@mail.com'], btxLocations: [{ id: 1, name: 'Location1' }, { id: 2, name: 'Location2' }], btxLocationNames: ['Location1', 'Location2'], ktxLocations: [{ id: 1, name: 'Location1' }, { id: 2, name: 'Location2' }], ktxLocationNames: ['Location1', 'Location2'], itxLocations: [{ id: 1, name: 'Location1' }, { id: 2, name: 'Location2' }], itxLocationNames: ['Location1', 'Location2'], scheduleType: EmailServiceScheduleEnum.Daily, scheduleTime: 32400,\r\n btxEventTypes: [0, 1], ktxEventTypes: [0], itxEventTypes: [0, 2],\r\n },\r\n {\r\n id: 2, emails: ['email2@mail.com', 'email2@mail.com', 'email2email3@mail.com', 'email2@mail.com'], btxLocations: [{ id: 1, name: 'Location3' }, { id: 2, name: 'Location4' }], btxLocationNames: ['Location3', 'Location4'], ktxLocations: [{ id: 1, name: 'Location1' }, { id: 2, name: 'Location2' }], ktxLocationNames: ['Location1', 'Location2'], itxLocations: [{ id: 1, name: 'Location1' }, { id: 2, name: 'Location2' }], itxLocationNames: ['Location1', 'Location2'], scheduleType: EmailServiceScheduleEnum.Weekly, scheduleTime: 54000,\r\n btxEventTypes: [1], ktxEventTypes: [1], itxEventTypes: [1],\r\n },\r\n {\r\n id: 3, emails: ['email3email3@mail.com', 'email3@mail.com', 'email3@mail.com', 'email3@mail.com'], btxLocations: [{ id: 1, name: 'Location3' }, { id: 2, name: 'Location4' }], btxLocationNames: ['Location5', 'Location6'], ktxLocations: [{ id: 1, name: 'Location1' }, { id: 2, name: 'Location2' }], ktxLocationNames: ['Location1', 'Location2'], itxLocations: [{ id: 1, name: 'Location1' }, { id: 2, name: 'Location2' }], itxLocationNames: ['Location1', 'Location2'], scheduleType: EmailServiceScheduleEnum.Monthly, scheduleTime: 36000,\r\n btxEventTypes: [0], ktxEventTypes: [0, 1], itxEventTypes: [0, 1, 2],\r\n },\r\n ] as EmailServiceViewModel[];\r\n return data;\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { Router } from '@angular/router';\r\n\r\nimport { HttpService, ErrorModel } from '../../../common';\r\nimport { ApiRoutes } from '../../constants';\r\nimport { EquipmentViewModel, SensorViewModel, LocationBtxEquipmentViewModel, LocationBtxEquipmentPostModel, LocationBtxEquipmentGetModel, SensorInfo, BtxEquipmentWithTelemetryGetModel, BtxEquipmentWithTelemetryViewModel } from '../../models';\r\nimport { SensorPositionEnum, SensorTypeEnum, EquipmentSideEnum, EquipmentTypeEnum, EquipmentSubTypeEnum, SensorValuesStatusEnum, BtxSensorEventTypeEnum } from '../../enums';\r\nimport { LastTelemetryGetModel } from '../../models/telemetry.model';\r\nimport { LastTelemetrySensorResponse } from '../../models/lastTelemetrySensorResponse.model';\r\nimport { HistoricalDataFilter, HistoricalDataTelemetryResponse } from '../../models/historicalDataTelemetryResponse.model';\r\n\r\n@Injectable()\r\nexport class EquipmentApiService {\r\n constructor(\r\n private _httpService: HttpService,\r\n private _router: Router,\r\n ) { }\r\n\r\n // TODO: add fake data for BTX/KTX equipments\r\n public async get(deviceId: string): Promise {\r\n try {\r\n if (this._router.url.indexOf('/back-door') > -1) {\r\n return this.getFakeData(deviceId);\r\n }\r\n\r\n const result = await this._httpService.get(ApiRoutes.Equipment.get, { deviceId });\r\n\r\n return LocationBtxEquipmentGetModel.toViewModel(result);\r\n } catch (error) {\r\n return this.processError(error);\r\n }\r\n }\r\n\r\n public async addOrUpdate(model: LocationBtxEquipmentPostModel): Promise {\r\n try {\r\n const result = await this._httpService.post(ApiRoutes.Equipment.edit, model);\r\n return result;\r\n } catch (error) {\r\n return this.processError(error);\r\n }\r\n }\r\n\r\n public async getLastData(locationId: number, equipmentId: number, sensorsIds: number[]): Promise {\r\n try {\r\n if (this._router.url.indexOf('/back-door') > -1) {\r\n let result = await this.getFakeTelemetry(sensorsIds);\r\n return result as LastTelemetrySensorResponse[];\r\n }\r\n\r\n const result = await this._httpService.post(ApiRoutes.Telemetry.getLastData, { locationId: locationId, equipmentId: equipmentId, sensorsIds: sensorsIds }) as LastTelemetryGetModel;\r\n return result.sensors;\r\n } catch (error) {\r\n return this.processError(error);\r\n }\r\n }\r\n\r\n public async getEquipmentWithTelemetry(equipmentId: number): Promise {\r\n try {\r\n if (this._router.url.indexOf('/back-door') > -1) {\r\n const result = await this.getFakeEquipmentWithTelemetry(equipmentId);\r\n return BtxEquipmentWithTelemetryGetModel.toViewModel(result);\r\n }\r\n\r\n const result = await this._httpService.get(ApiRoutes.Equipment.getEquipmentWithTelemetry, { equipmentId: equipmentId }) as BtxEquipmentWithTelemetryGetModel;\r\n return BtxEquipmentWithTelemetryGetModel.toViewModel(result);\r\n } catch (error) {\r\n return this.processError(error);\r\n }\r\n }\r\n\r\n private getFakeEquipmentWithTelemetry(equipmentId: number): BtxEquipmentWithTelemetryGetModel {\r\n const equipmentViewModel: EquipmentViewModel = this.getFakeData(\"id\").equipments.find(eq => eq.id === equipmentId);\r\n\r\n if (!equipmentViewModel) {\r\n return null;\r\n }\r\n\r\n const result: BtxEquipmentWithTelemetryGetModel = {\r\n id: equipmentViewModel.id,\r\n name: equipmentViewModel.name,\r\n type: equipmentViewModel.type,\r\n subType: equipmentViewModel.subType,\r\n locationName: 'Fake location',\r\n locationId: 0,\r\n maintenanceCountDownValue: equipmentViewModel.maintenanceCountDownValue,\r\n totalRunHoursValue: equipmentViewModel.totalRunHoursValue,\r\n timestamp: 1695224644,\r\n acquisitionRate: 30,\r\n isMaintenanceRequired: true,\r\n shutdownAlarm: true,\r\n sensors: equipmentViewModel.sensors.map((s, idx) => {\r\n const status = this.getRandomSensorStatusEnum(SensorValuesStatusEnum);\r\n return {\r\n id: s.id,\r\n type: s.type,\r\n position: s.position,\r\n side: s.side,\r\n value: 1 + idx,\r\n status: status,//this.getRandomSensorStatusEnum(SensorValuesStatusEnum),\r\n eventType: this.getSensorEventType(status),\r\n }\r\n })\r\n }\r\n\r\n return result;\r\n }\r\n\r\n public async getSensors(equipmentId: number, locationId: number): Promise {\r\n try {\r\n if (this._router.url.indexOf('/back-door') > -1) {\r\n //return this.getFakeData(locationId);\r\n }\r\n\r\n const result = await this._httpService.get(ApiRoutes.Equipment.getEquipmentSensorsInfo, { equipmentId, locationId });\r\n\r\n return result;\r\n } catch (error) {\r\n return this.processError(error);\r\n }\r\n }\r\n\r\n public async getHistoricalDataForThePeriod(request: HistoricalDataFilter): Promise {\r\n try {\r\n const result = await this._httpService.post(ApiRoutes.Telemetry.getHistoricalDataForThePeriod, request) as HistoricalDataTelemetryResponse[];\r\n return result;\r\n } catch (error) {\r\n return this.processError(error);\r\n }\r\n }\r\n\r\n private processError(error: any) {\r\n if (error instanceof ErrorModel) {\r\n return Promise.reject(error);\r\n }\r\n\r\n console.log(error);\r\n return null;\r\n }\r\n\r\n private getFakeData(deviceId: string): LocationBtxEquipmentViewModel {\r\n const equipments = [\r\n {\r\n id: 1,\r\n type: EquipmentTypeEnum.Silo,\r\n subType: EquipmentSubTypeEnum.Small,\r\n name: 'Silo small (None)',\r\n totalRunHoursFirstRegisterAddress: 1,\r\n totalRunHoursSecondRegisterAddress: 65536,\r\n timeTillMaintenanceAddress: 2,\r\n shutDownAlarmAddress: 3,\r\n shutDownAlarmAddressBit: 1,\r\n maintenanceRequiredWarningAddress: 3,\r\n maintenanceRequiredWarningAddressBit: 2,\r\n maintenaceCountDown: 11,\r\n totalRunHours: 1111,\r\n sensors: [{\r\n id: 1,\r\n type: SensorTypeEnum.GrainDepth,\r\n position: SensorPositionEnum.CenterOfTheEquipmentScheme,\r\n side: EquipmentSideEnum.None,\r\n modbusAddress: 65536,\r\n warningAddress: 113,\r\n warningAddressBit: 2,\r\n alarmAddress: 42,\r\n alarmAddressBit: 1,\r\n rateOfChangeWarningAddress: 33,\r\n rateOfChangeWarningAddressBit: 6,\r\n rateOfChangeAlarmAddress: 2,\r\n rateOfChangeAlarmAddressBit: 16\r\n }] as SensorViewModel[]\r\n },\r\n {\r\n id: 2,\r\n type: EquipmentTypeEnum.Silo,\r\n subType: EquipmentSubTypeEnum.Medium,\r\n name: 'Silo medium (None)',\r\n totalRunHoursFirstRegisterAddress: 1,\r\n totalRunHoursSecondRegisterAddress: 65536,\r\n timeTillMaintenanceAddress: 2,\r\n shutDownAlarmAddress: 3,\r\n shutDownAlarmAddressBit: 1,\r\n maintenanceRequiredWarningAddress: 3,\r\n maintenanceRequiredWarningAddressBit: 2,\r\n maintenaceCountDown: 11,\r\n totalRunHours: 1111,\r\n sensors: [{\r\n id: 1,\r\n type: SensorTypeEnum.GrainDepth,\r\n position: SensorPositionEnum.CenterOfTheEquipmentScheme,\r\n side: EquipmentSideEnum.None,\r\n modbusAddress: 65536,\r\n warningAddress: 113,\r\n warningAddressBit: 2,\r\n alarmAddress: 42,\r\n alarmAddressBit: 1,\r\n rateOfChangeWarningAddress: 33,\r\n rateOfChangeWarningAddressBit: 6,\r\n rateOfChangeAlarmAddress: 2,\r\n rateOfChangeAlarmAddressBit: 16\r\n }] as SensorViewModel[]\r\n },\r\n {\r\n id: 3,\r\n type: EquipmentTypeEnum.Silo,\r\n subType: EquipmentSubTypeEnum.Large,\r\n name: 'Silo large (None)',\r\n totalRunHoursFirstRegisterAddress: 1,\r\n totalRunHoursSecondRegisterAddress: 65536,\r\n timeTillMaintenanceAddress: 2,\r\n shutDownAlarmAddress: 3,\r\n shutDownAlarmAddressBit: 1,\r\n maintenanceRequiredWarningAddress: 3,\r\n maintenanceRequiredWarningAddressBit: 2,\r\n maintenaceCountDown: 11,\r\n totalRunHours: 1111,\r\n sensors: [{\r\n id: 1,\r\n type: SensorTypeEnum.GrainDepth,\r\n position: SensorPositionEnum.CenterOfTheEquipmentScheme,\r\n side: EquipmentSideEnum.None,\r\n modbusAddress: 65536,\r\n warningAddress: 113,\r\n warningAddressBit: 2,\r\n alarmAddress: 42,\r\n alarmAddressBit: 1,\r\n rateOfChangeWarningAddress: 33,\r\n rateOfChangeWarningAddressBit: 6,\r\n rateOfChangeAlarmAddress: 2,\r\n rateOfChangeAlarmAddressBit: 16\r\n }] as SensorViewModel[]\r\n },\r\n /* LEG */\r\n {\r\n id: 4,\r\n type: EquipmentTypeEnum.Leg,\r\n subType: EquipmentSubTypeEnum.WithKneeBearing,\r\n name: 'Leg with knee bearing (North-South)',\r\n totalRunHoursFirstRegisterAddress: 1,\r\n totalRunHoursSecondRegisterAddress: 65536,\r\n timeTillMaintenanceAddress: 2,\r\n shutDownAlarmAddress: 3,\r\n shutDownAlarmAddressBit: 1,\r\n maintenanceRequiredWarningAddress: 3,\r\n maintenanceRequiredWarningAddressBit: 2,\r\n maintenaceCountDown: 11,\r\n totalRunHours: 1111,\r\n sensors: [\r\n {\r\n id: 1,\r\n type: SensorTypeEnum.BearingTemperature,\r\n position: SensorPositionEnum.Head,\r\n side: EquipmentSideEnum.North,\r\n modbusAddress: 65536,\r\n warningAddress: 113,\r\n warningAddressBit: 2,\r\n alarmAddress: 42,\r\n alarmAddressBit: 1,\r\n rateOfChangeWarningAddress: 33,\r\n rateOfChangeWarningAddressBit: 6,\r\n rateOfChangeAlarmAddress: 2,\r\n rateOfChangeAlarmAddressBit: 16\r\n },\r\n {\r\n id: 2,\r\n type: SensorTypeEnum.BearingTemperature,\r\n position: SensorPositionEnum.Head,\r\n side: EquipmentSideEnum.South,\r\n modbusAddress: 65536,\r\n warningAddress: 113,\r\n warningAddressBit: 2,\r\n alarmAddress: 42,\r\n alarmAddressBit: 1,\r\n rateOfChangeWarningAddress: 33,\r\n rateOfChangeWarningAddressBit: 6,\r\n rateOfChangeAlarmAddress: 2,\r\n rateOfChangeAlarmAddressBit: 16,\r\n maintenaceCountDown: 11,\r\n totalRunHours: 1111,\r\n }, {\r\n id: 3,\r\n type: SensorTypeEnum.BearingTemperature,\r\n position: SensorPositionEnum.Knee,\r\n side: EquipmentSideEnum.North,\r\n modbusAddress: 65536,\r\n warningAddress: 113,\r\n warningAddressBit: 2,\r\n alarmAddress: 42,\r\n alarmAddressBit: 1,\r\n rateOfChangeWarningAddress: 33,\r\n rateOfChangeWarningAddressBit: 6,\r\n rateOfChangeAlarmAddress: 2,\r\n rateOfChangeAlarmAddressBit: 16,\r\n maintenaceCountDown: 11,\r\n totalRunHours: 1111,\r\n }, {\r\n id: 4,\r\n type: SensorTypeEnum.BearingTemperature,\r\n position: SensorPositionEnum.Knee,\r\n side: EquipmentSideEnum.South,\r\n modbusAddress: 65536,\r\n warningAddress: 113,\r\n warningAddressBit: 2,\r\n alarmAddress: 42,\r\n alarmAddressBit: 1,\r\n rateOfChangeWarningAddress: 33,\r\n rateOfChangeWarningAddressBit: 6,\r\n rateOfChangeAlarmAddress: 2,\r\n rateOfChangeAlarmAddressBit: 16\r\n }, {\r\n id: 5,\r\n type: SensorTypeEnum.BearingTemperature,\r\n position: SensorPositionEnum.Boot,\r\n side: EquipmentSideEnum.North,\r\n modbusAddress: 65536,\r\n warningAddress: 113,\r\n warningAddressBit: 2,\r\n alarmAddress: 42,\r\n alarmAddressBit: 1,\r\n rateOfChangeWarningAddress: 33,\r\n rateOfChangeWarningAddressBit: 6,\r\n rateOfChangeAlarmAddress: 2,\r\n rateOfChangeAlarmAddressBit: 16\r\n }, {\r\n id: 6,\r\n type: SensorTypeEnum.BearingTemperature,\r\n position: SensorPositionEnum.Boot,\r\n side: EquipmentSideEnum.South,\r\n modbusAddress: 65536,\r\n warningAddress: 113,\r\n warningAddressBit: 2,\r\n alarmAddress: 42,\r\n alarmAddressBit: 1,\r\n rateOfChangeWarningAddress: 33,\r\n rateOfChangeWarningAddressBit: 6,\r\n rateOfChangeAlarmAddress: 2,\r\n rateOfChangeAlarmAddressBit: 16\r\n }, {\r\n id: 7,\r\n type: SensorTypeEnum.RubBlockTemperature,\r\n position: SensorPositionEnum.Head,\r\n side: EquipmentSideEnum.North,\r\n modbusAddress: 65536,\r\n warningAddress: 113,\r\n warningAddressBit: 2,\r\n alarmAddress: 42,\r\n alarmAddressBit: 1,\r\n rateOfChangeWarningAddress: 33,\r\n rateOfChangeWarningAddressBit: 6,\r\n rateOfChangeAlarmAddress: 2,\r\n rateOfChangeAlarmAddressBit: 16\r\n }, {\r\n id: 8,\r\n type: SensorTypeEnum.RubBlockTemperature,\r\n position: SensorPositionEnum.Head,\r\n side: EquipmentSideEnum.South,\r\n modbusAddress: 65536,\r\n warningAddress: 113,\r\n warningAddressBit: 2,\r\n alarmAddress: 42,\r\n alarmAddressBit: 1,\r\n rateOfChangeWarningAddress: 33,\r\n rateOfChangeWarningAddressBit: 6,\r\n rateOfChangeAlarmAddress: 2,\r\n rateOfChangeAlarmAddressBit: 16\r\n }, {\r\n id: 9,\r\n type: SensorTypeEnum.RubBlockTemperature,\r\n position: SensorPositionEnum.Boot,\r\n side: EquipmentSideEnum.South,\r\n modbusAddress: 65536,\r\n warningAddress: 113,\r\n warningAddressBit: 2,\r\n alarmAddress: 42,\r\n alarmAddressBit: 1,\r\n rateOfChangeWarningAddress: 33,\r\n rateOfChangeWarningAddressBit: 6,\r\n rateOfChangeAlarmAddress: 2,\r\n rateOfChangeAlarmAddressBit: 16\r\n }, {\r\n id: 10,\r\n type: SensorTypeEnum.RubBlockTemperature,\r\n position: SensorPositionEnum.Boot,\r\n side: EquipmentSideEnum.North,\r\n modbusAddress: 65536,\r\n warningAddress: 113,\r\n warningAddressBit: 2,\r\n alarmAddress: 42,\r\n alarmAddressBit: 1,\r\n rateOfChangeWarningAddress: 33,\r\n rateOfChangeWarningAddressBit: 6,\r\n rateOfChangeAlarmAddress: 2,\r\n rateOfChangeAlarmAddressBit: 16\r\n }, {\r\n id: 11,\r\n type: SensorTypeEnum.Speed,\r\n position: SensorPositionEnum.OnePerEquipment,\r\n side: EquipmentSideEnum.None,\r\n modbusAddress: 65536,\r\n warningAddress: 113,\r\n warningAddressBit: 2,\r\n alarmAddress: 42,\r\n alarmAddressBit: 1,\r\n rateOfChangeWarningAddress: 33,\r\n rateOfChangeWarningAddressBit: 6,\r\n rateOfChangeAlarmAddress: 2,\r\n rateOfChangeAlarmAddressBit: 16\r\n }, {\r\n id: 12,\r\n type: SensorTypeEnum.GearBoxTemperature,\r\n position: SensorPositionEnum.Head,\r\n side: EquipmentSideEnum.South,\r\n modbusAddress: 65536,\r\n warningAddress: 113,\r\n warningAddressBit: 2,\r\n alarmAddress: 42,\r\n alarmAddressBit: 1,\r\n rateOfChangeWarningAddress: 33,\r\n rateOfChangeWarningAddressBit: 6,\r\n rateOfChangeAlarmAddress: 2,\r\n rateOfChangeAlarmAddressBit: 16\r\n }, {\r\n id: 13,\r\n type: SensorTypeEnum.GearBoxTemperature,\r\n position: SensorPositionEnum.Head,\r\n side: EquipmentSideEnum.North,\r\n modbusAddress: 65536,\r\n warningAddress: 113,\r\n warningAddressBit: 2,\r\n alarmAddress: 42,\r\n alarmAddressBit: 1,\r\n rateOfChangeWarningAddress: 33,\r\n rateOfChangeWarningAddressBit: 6,\r\n rateOfChangeAlarmAddress: 2,\r\n rateOfChangeAlarmAddressBit: 16\r\n }, {\r\n id: 14,\r\n type: SensorTypeEnum.ShaftBearingTemperature,\r\n position: SensorPositionEnum.Boot,\r\n side: EquipmentSideEnum.South,\r\n modbusAddress: 65536,\r\n warningAddress: 113,\r\n warningAddressBit: 2,\r\n alarmAddress: 42,\r\n alarmAddressBit: 1,\r\n rateOfChangeWarningAddress: 33,\r\n rateOfChangeWarningAddressBit: 6,\r\n rateOfChangeAlarmAddress: 2,\r\n rateOfChangeAlarmAddressBit: 16\r\n }, {\r\n id: 15,\r\n type: SensorTypeEnum.ShaftBearingTemperature,\r\n position: SensorPositionEnum.Boot,\r\n side: EquipmentSideEnum.North,\r\n modbusAddress: 65536,\r\n warningAddress: 113,\r\n warningAddressBit: 2,\r\n alarmAddress: 42,\r\n alarmAddressBit: 1,\r\n rateOfChangeWarningAddress: 33,\r\n rateOfChangeWarningAddressBit: 6,\r\n rateOfChangeAlarmAddress: 2,\r\n rateOfChangeAlarmAddressBit: 16\r\n },\r\n {\r\n id: 16,\r\n type: SensorTypeEnum.CurrentAmpDraw,\r\n position: SensorPositionEnum.OnePerEquipment,\r\n side: EquipmentSideEnum.None,\r\n modbusAddress: 65536,\r\n warningAddress: 113,\r\n warningAddressBit: 2,\r\n alarmAddress: 42,\r\n alarmAddressBit: 1,\r\n rateOfChangeWarningAddress: null,\r\n rateOfChangeWarningAddressBit: null,\r\n rateOfChangeAlarmAddress: null,\r\n rateOfChangeAlarmAddressBit: null,\r\n },\r\n {\r\n id: 17,\r\n type: SensorTypeEnum.CurrentDesignLoad,\r\n position: SensorPositionEnum.OnePerEquipment,\r\n side: EquipmentSideEnum.None,\r\n modbusAddress: 65536,\r\n warningAddress: 113,\r\n warningAddressBit: 2,\r\n alarmAddress: 42,\r\n alarmAddressBit: 1,\r\n rateOfChangeWarningAddress: null,\r\n rateOfChangeWarningAddressBit: null,\r\n rateOfChangeAlarmAddress: null,\r\n rateOfChangeAlarmAddressBit: null\r\n },\r\n {\r\n id: 18,\r\n type: SensorTypeEnum.Vibration,\r\n position: SensorPositionEnum.Motor,\r\n side: EquipmentSideEnum.None,\r\n modbusAddress: 65536,\r\n warningAddress: 113,\r\n warningAddressBit: 2,\r\n alarmAddress: 42,\r\n alarmAddressBit: 1,\r\n rateOfChangeWarningAddress: null,\r\n rateOfChangeWarningAddressBit: null,\r\n rateOfChangeAlarmAddress: null,\r\n rateOfChangeAlarmAddressBit: null\r\n },\r\n {\r\n id: 19,\r\n type: SensorTypeEnum.Vibration,\r\n position: SensorPositionEnum.Frame,\r\n side: EquipmentSideEnum.None,\r\n modbusAddress: 65536,\r\n warningAddress: 113,\r\n warningAddressBit: 2,\r\n alarmAddress: 42,\r\n alarmAddressBit: 1,\r\n rateOfChangeWarningAddress: null,\r\n rateOfChangeWarningAddressBit: null,\r\n rateOfChangeAlarmAddress: null,\r\n rateOfChangeAlarmAddressBit: null\r\n },\r\n ] as SensorViewModel[]\r\n },\r\n {\r\n id: 5,\r\n type: EquipmentTypeEnum.Leg,\r\n subType: EquipmentSubTypeEnum.WithoutKneeBearing,\r\n name: 'Leg without knee bearing (North-South)',\r\n totalRunHoursFirstRegisterAddress: 1,\r\n totalRunHoursSecondRegisterAddress: 65536,\r\n timeTillMaintenanceAddress: 2,\r\n shutDownAlarmAddress: 3,\r\n shutDownAlarmAddressBit: 1,\r\n maintenanceRequiredWarningAddress: 3,\r\n maintenanceRequiredWarningAddressBit: 2,\r\n sensors: [{\r\n id: 1,\r\n type: SensorTypeEnum.BearingTemperature,\r\n position: SensorPositionEnum.Head,\r\n side: EquipmentSideEnum.North,\r\n modbusAddress: 65536,\r\n warningAddress: 113,\r\n warningAddressBit: 2,\r\n alarmAddress: 42,\r\n alarmAddressBit: 1,\r\n rateOfChangeWarningAddress: 33,\r\n rateOfChangeWarningAddressBit: 6,\r\n rateOfChangeAlarmAddress: 2,\r\n rateOfChangeAlarmAddressBit: 16\r\n }, {\r\n id: 2,\r\n type: SensorTypeEnum.BearingTemperature,\r\n position: SensorPositionEnum.Head,\r\n side: EquipmentSideEnum.South,\r\n modbusAddress: 65536,\r\n warningAddress: 113,\r\n warningAddressBit: 2,\r\n alarmAddress: 42,\r\n alarmAddressBit: 1,\r\n rateOfChangeWarningAddress: 33,\r\n rateOfChangeWarningAddressBit: 6,\r\n rateOfChangeAlarmAddress: 2,\r\n rateOfChangeAlarmAddressBit: 16\r\n }, {\r\n id: 5,\r\n type: SensorTypeEnum.BearingTemperature,\r\n position: SensorPositionEnum.Boot,\r\n side: EquipmentSideEnum.North,\r\n modbusAddress: 65536,\r\n warningAddress: 113,\r\n warningAddressBit: 2,\r\n alarmAddress: 42,\r\n alarmAddressBit: 1,\r\n rateOfChangeWarningAddress: 33,\r\n rateOfChangeWarningAddressBit: 6,\r\n rateOfChangeAlarmAddress: 2,\r\n rateOfChangeAlarmAddressBit: 16\r\n }, {\r\n id: 6,\r\n type: SensorTypeEnum.BearingTemperature,\r\n position: SensorPositionEnum.Boot,\r\n side: EquipmentSideEnum.South,\r\n modbusAddress: 65536,\r\n warningAddress: 113,\r\n warningAddressBit: 2,\r\n alarmAddress: 42,\r\n alarmAddressBit: 1,\r\n rateOfChangeWarningAddress: 33,\r\n rateOfChangeWarningAddressBit: 6,\r\n rateOfChangeAlarmAddress: 2,\r\n rateOfChangeAlarmAddressBit: 16\r\n }, {\r\n id: 7,\r\n type: SensorTypeEnum.RubBlockTemperature,\r\n position: SensorPositionEnum.Head,\r\n side: EquipmentSideEnum.North,\r\n modbusAddress: 65536,\r\n warningAddress: 113,\r\n warningAddressBit: 2,\r\n alarmAddress: 42,\r\n alarmAddressBit: 1,\r\n rateOfChangeWarningAddress: 33,\r\n rateOfChangeWarningAddressBit: 6,\r\n rateOfChangeAlarmAddress: 2,\r\n rateOfChangeAlarmAddressBit: 16\r\n }, {\r\n id: 8,\r\n type: SensorTypeEnum.RubBlockTemperature,\r\n position: SensorPositionEnum.Head,\r\n side: EquipmentSideEnum.South,\r\n modbusAddress: 65536,\r\n warningAddress: 113,\r\n warningAddressBit: 2,\r\n alarmAddress: 42,\r\n alarmAddressBit: 1,\r\n rateOfChangeWarningAddress: 33,\r\n rateOfChangeWarningAddressBit: 6,\r\n rateOfChangeAlarmAddress: 2,\r\n rateOfChangeAlarmAddressBit: 16\r\n }, {\r\n id: 9,\r\n type: SensorTypeEnum.RubBlockTemperature,\r\n position: SensorPositionEnum.Boot,\r\n side: EquipmentSideEnum.North,\r\n modbusAddress: 65536,\r\n warningAddress: 113,\r\n warningAddressBit: 2,\r\n alarmAddress: 42,\r\n alarmAddressBit: 1,\r\n rateOfChangeWarningAddress: 33,\r\n rateOfChangeWarningAddressBit: 6,\r\n rateOfChangeAlarmAddress: 2,\r\n rateOfChangeAlarmAddressBit: 16\r\n }, {\r\n id: 10,\r\n type: SensorTypeEnum.RubBlockTemperature,\r\n position: SensorPositionEnum.Boot,\r\n side: EquipmentSideEnum.South,\r\n modbusAddress: 65536,\r\n warningAddress: 113,\r\n warningAddressBit: 2,\r\n alarmAddress: 42,\r\n alarmAddressBit: 1,\r\n rateOfChangeWarningAddress: 33,\r\n rateOfChangeWarningAddressBit: 6,\r\n rateOfChangeAlarmAddress: 2,\r\n rateOfChangeAlarmAddressBit: 16\r\n }, {\r\n id: 11,\r\n type: SensorTypeEnum.Speed,\r\n position: SensorPositionEnum.OnePerEquipment,\r\n side: EquipmentSideEnum.None,\r\n modbusAddress: 65536,\r\n warningAddress: 113,\r\n warningAddressBit: 2,\r\n alarmAddress: 42,\r\n alarmAddressBit: 1,\r\n rateOfChangeWarningAddress: 33,\r\n rateOfChangeWarningAddressBit: 6,\r\n rateOfChangeAlarmAddress: 2,\r\n rateOfChangeAlarmAddressBit: 16\r\n }, {\r\n id: 12,\r\n type: SensorTypeEnum.GearBoxTemperature,\r\n position: SensorPositionEnum.Head,\r\n side: EquipmentSideEnum.South,\r\n modbusAddress: 65536,\r\n warningAddress: 113,\r\n warningAddressBit: 2,\r\n alarmAddress: 42,\r\n alarmAddressBit: 1,\r\n rateOfChangeWarningAddress: 33,\r\n rateOfChangeWarningAddressBit: 6,\r\n rateOfChangeAlarmAddress: 2,\r\n rateOfChangeAlarmAddressBit: 16\r\n }, {\r\n id: 13,\r\n type: SensorTypeEnum.GearBoxTemperature,\r\n position: SensorPositionEnum.Head,\r\n side: EquipmentSideEnum.North,\r\n modbusAddress: 65536,\r\n warningAddress: 113,\r\n warningAddressBit: 2,\r\n alarmAddress: 42,\r\n alarmAddressBit: 1,\r\n rateOfChangeWarningAddress: 33,\r\n rateOfChangeWarningAddressBit: 6,\r\n rateOfChangeAlarmAddress: 2,\r\n rateOfChangeAlarmAddressBit: 16\r\n }, {\r\n id: 14,\r\n type: SensorTypeEnum.ShaftBearingTemperature,\r\n position: SensorPositionEnum.Boot,\r\n side: EquipmentSideEnum.South,\r\n modbusAddress: 65536,\r\n warningAddress: 113,\r\n warningAddressBit: 2,\r\n alarmAddress: 42,\r\n alarmAddressBit: 1,\r\n rateOfChangeWarningAddress: 33,\r\n rateOfChangeWarningAddressBit: 6,\r\n rateOfChangeAlarmAddress: 2,\r\n rateOfChangeAlarmAddressBit: 16\r\n }, {\r\n id: 15,\r\n type: SensorTypeEnum.ShaftBearingTemperature,\r\n position: SensorPositionEnum.Boot,\r\n side: EquipmentSideEnum.North,\r\n modbusAddress: 65536,\r\n warningAddress: 113,\r\n warningAddressBit: 2,\r\n alarmAddress: 42,\r\n alarmAddressBit: 1,\r\n rateOfChangeWarningAddress: 33,\r\n rateOfChangeWarningAddressBit: 6,\r\n rateOfChangeAlarmAddress: 2,\r\n rateOfChangeAlarmAddressBit: 16\r\n },\r\n {\r\n id: 16,\r\n type: SensorTypeEnum.CurrentAmpDraw,\r\n position: SensorPositionEnum.OnePerEquipment,\r\n side: EquipmentSideEnum.None,\r\n modbusAddress: 65536,\r\n warningAddress: 113,\r\n warningAddressBit: 2,\r\n alarmAddress: 42,\r\n alarmAddressBit: 1,\r\n rateOfChangeWarningAddress: null,\r\n rateOfChangeWarningAddressBit: null,\r\n rateOfChangeAlarmAddress: null,\r\n rateOfChangeAlarmAddressBit: null,\r\n },\r\n {\r\n id: 17,\r\n type: SensorTypeEnum.CurrentDesignLoad,\r\n position: SensorPositionEnum.OnePerEquipment,\r\n side: EquipmentSideEnum.None,\r\n modbusAddress: 65536,\r\n warningAddress: 113,\r\n warningAddressBit: 2,\r\n alarmAddress: 42,\r\n alarmAddressBit: 1,\r\n rateOfChangeWarningAddress: null,\r\n rateOfChangeWarningAddressBit: null,\r\n rateOfChangeAlarmAddress: null,\r\n rateOfChangeAlarmAddressBit: null,\r\n },\r\n {\r\n id: 18,\r\n type: SensorTypeEnum.Vibration,\r\n position: SensorPositionEnum.Motor,\r\n side: EquipmentSideEnum.None,\r\n modbusAddress: 65536,\r\n warningAddress: 113,\r\n warningAddressBit: 2,\r\n alarmAddress: 42,\r\n alarmAddressBit: 1,\r\n rateOfChangeWarningAddress: null,\r\n rateOfChangeWarningAddressBit: null,\r\n rateOfChangeAlarmAddress: null,\r\n rateOfChangeAlarmAddressBit: null,\r\n },\r\n {\r\n id: 19,\r\n type: SensorTypeEnum.Vibration,\r\n position: SensorPositionEnum.Frame,\r\n side: EquipmentSideEnum.None,\r\n modbusAddress: 65536,\r\n warningAddress: 113,\r\n warningAddressBit: 2,\r\n alarmAddress: 42,\r\n alarmAddressBit: 1,\r\n rateOfChangeWarningAddress: null,\r\n rateOfChangeWarningAddressBit: null,\r\n rateOfChangeAlarmAddress: null,\r\n rateOfChangeAlarmAddressBit: null,\r\n },\r\n ] as SensorViewModel[]\r\n },\r\n /* CONVEYOR */\r\n {\r\n id: 6,\r\n type: EquipmentTypeEnum.Conveyor,\r\n subType: EquipmentSubTypeEnum.Drag,\r\n name: 'Conveyor drag (North-South)',\r\n totalRunHoursFirstRegisterAddress: 1,\r\n totalRunHoursSecondRegisterAddress: 65536,\r\n timeTillMaintenanceAddress: 2,\r\n shutDownAlarmAddress: 3,\r\n shutDownAlarmAddressBit: 1,\r\n maintenanceRequiredWarningAddress: 3,\r\n maintenanceRequiredWarningAddressBit: 2,\r\n sensors: [{\r\n id: 1,\r\n type: SensorTypeEnum.BearingTemperature,\r\n position: SensorPositionEnum.Head,\r\n side: EquipmentSideEnum.North,\r\n modbusAddress: 65536,\r\n warningAddress: 113,\r\n warningAddressBit: 2,\r\n alarmAddress: 42,\r\n alarmAddressBit: 1,\r\n rateOfChangeWarningAddress: 33,\r\n rateOfChangeWarningAddressBit: 6,\r\n rateOfChangeAlarmAddress: 2,\r\n rateOfChangeAlarmAddressBit: 16\r\n }, {\r\n id: 2,\r\n type: SensorTypeEnum.BearingTemperature,\r\n position: SensorPositionEnum.Head,\r\n side: EquipmentSideEnum.South,\r\n modbusAddress: 65536,\r\n warningAddress: 113,\r\n warningAddressBit: 2,\r\n alarmAddress: 42,\r\n alarmAddressBit: 1,\r\n rateOfChangeWarningAddress: 33,\r\n rateOfChangeWarningAddressBit: 6,\r\n rateOfChangeAlarmAddress: 2,\r\n rateOfChangeAlarmAddressBit: 16\r\n }, {\r\n id: 3,\r\n type: SensorTypeEnum.BearingTemperature,\r\n position: SensorPositionEnum.Tail,\r\n side: EquipmentSideEnum.North,\r\n modbusAddress: 65536,\r\n warningAddress: 113,\r\n warningAddressBit: 2,\r\n alarmAddress: 42,\r\n alarmAddressBit: 1,\r\n rateOfChangeWarningAddress: 33,\r\n rateOfChangeWarningAddressBit: 6,\r\n rateOfChangeAlarmAddress: 2,\r\n rateOfChangeAlarmAddressBit: 16\r\n }, {\r\n id: 4,\r\n type: SensorTypeEnum.BearingTemperature,\r\n position: SensorPositionEnum.Tail,\r\n side: EquipmentSideEnum.South,\r\n modbusAddress: 65536,\r\n warningAddress: 113,\r\n warningAddressBit: 2,\r\n alarmAddress: 42,\r\n alarmAddressBit: 1,\r\n rateOfChangeWarningAddress: 33,\r\n rateOfChangeWarningAddressBit: 6,\r\n rateOfChangeAlarmAddress: 2,\r\n rateOfChangeAlarmAddressBit: 16\r\n }, {\r\n id: 5,\r\n type: SensorTypeEnum.Speed,\r\n position: SensorPositionEnum.OnePerEquipment,\r\n side: EquipmentSideEnum.None,\r\n modbusAddress: 65536,\r\n warningAddress: 113,\r\n warningAddressBit: 2,\r\n alarmAddress: 42,\r\n alarmAddressBit: 1,\r\n rateOfChangeWarningAddress: 33,\r\n rateOfChangeWarningAddressBit: 6,\r\n rateOfChangeAlarmAddress: 2,\r\n rateOfChangeAlarmAddressBit: 16\r\n },\r\n {\r\n id: 16,\r\n type: SensorTypeEnum.CurrentAmpDraw,\r\n position: SensorPositionEnum.OnePerEquipment,\r\n side: EquipmentSideEnum.None,\r\n modbusAddress: 65536,\r\n warningAddress: 113,\r\n warningAddressBit: 2,\r\n alarmAddress: 42,\r\n alarmAddressBit: 1,\r\n rateOfChangeWarningAddress: null,\r\n rateOfChangeWarningAddressBit: null,\r\n rateOfChangeAlarmAddress: null,\r\n rateOfChangeAlarmAddressBit: null,\r\n },\r\n {\r\n id: 17,\r\n type: SensorTypeEnum.CurrentDesignLoad,\r\n position: SensorPositionEnum.OnePerEquipment,\r\n side: EquipmentSideEnum.None,\r\n modbusAddress: 65536,\r\n warningAddress: 113,\r\n warningAddressBit: 2,\r\n alarmAddress: 42,\r\n alarmAddressBit: 1,\r\n rateOfChangeWarningAddress: null,\r\n rateOfChangeWarningAddressBit: null,\r\n rateOfChangeAlarmAddress: null,\r\n rateOfChangeAlarmAddressBit: null,\r\n },\r\n {\r\n id: 18,\r\n type: SensorTypeEnum.Vibration,\r\n position: SensorPositionEnum.Motor,\r\n side: EquipmentSideEnum.None,\r\n modbusAddress: 65536,\r\n warningAddress: 113,\r\n warningAddressBit: 2,\r\n alarmAddress: 42,\r\n alarmAddressBit: 1,\r\n rateOfChangeWarningAddress: null,\r\n rateOfChangeWarningAddressBit: null,\r\n rateOfChangeAlarmAddress: null,\r\n rateOfChangeAlarmAddressBit: null,\r\n },\r\n {\r\n id: 19,\r\n type: SensorTypeEnum.Vibration,\r\n position: SensorPositionEnum.Frame,\r\n side: EquipmentSideEnum.None,\r\n modbusAddress: 65536,\r\n warningAddress: 113,\r\n warningAddressBit: 2,\r\n alarmAddress: 42,\r\n alarmAddressBit: 1,\r\n rateOfChangeWarningAddress: null,\r\n rateOfChangeWarningAddressBit: null,\r\n rateOfChangeAlarmAddress: null,\r\n rateOfChangeAlarmAddressBit: null,\r\n },\r\n ] as SensorViewModel[]\r\n },\r\n {\r\n id: 7,\r\n type: EquipmentTypeEnum.Conveyor,\r\n subType: EquipmentSubTypeEnum.Belt,\r\n name: 'Conveyor belt (North-South)',\r\n totalRunHoursFirstRegisterAddress: 1,\r\n totalRunHoursSecondRegisterAddress: 65536,\r\n timeTillMaintenanceAddress: 2,\r\n shutDownAlarmAddress: 3,\r\n shutDownAlarmAddressBit: 1,\r\n maintenanceRequiredWarningAddress: 3,\r\n maintenanceRequiredWarningAddressBit: 2,\r\n sensors: [{\r\n id: 1,\r\n type: SensorTypeEnum.BearingTemperature,\r\n position: SensorPositionEnum.Head,\r\n side: EquipmentSideEnum.North,\r\n modbusAddress: 65536,\r\n warningAddress: 113,\r\n warningAddressBit: 2,\r\n alarmAddress: 42,\r\n alarmAddressBit: 1,\r\n rateOfChangeWarningAddress: 33,\r\n rateOfChangeWarningAddressBit: 6,\r\n rateOfChangeAlarmAddress: 2,\r\n rateOfChangeAlarmAddressBit: 16\r\n }, {\r\n id: 2,\r\n type: SensorTypeEnum.BearingTemperature,\r\n position: SensorPositionEnum.Head,\r\n side: EquipmentSideEnum.South,\r\n modbusAddress: 65536,\r\n warningAddress: 113,\r\n warningAddressBit: 2,\r\n alarmAddress: 42,\r\n alarmAddressBit: 1,\r\n rateOfChangeWarningAddress: 33,\r\n rateOfChangeWarningAddressBit: 6,\r\n rateOfChangeAlarmAddress: 2,\r\n rateOfChangeAlarmAddressBit: 16\r\n }, {\r\n id: 3,\r\n type: SensorTypeEnum.BearingTemperature,\r\n position: SensorPositionEnum.Tail,\r\n side: EquipmentSideEnum.North,\r\n modbusAddress: 65536,\r\n warningAddress: 113,\r\n warningAddressBit: 2,\r\n alarmAddress: 42,\r\n alarmAddressBit: 1,\r\n rateOfChangeWarningAddress: 33,\r\n rateOfChangeWarningAddressBit: 6,\r\n rateOfChangeAlarmAddress: 2,\r\n rateOfChangeAlarmAddressBit: 16\r\n }, {\r\n id: 4,\r\n type: SensorTypeEnum.BearingTemperature,\r\n position: SensorPositionEnum.Tail,\r\n side: EquipmentSideEnum.South,\r\n modbusAddress: 65536,\r\n warningAddress: 113,\r\n warningAddressBit: 2,\r\n alarmAddress: 42,\r\n alarmAddressBit: 1,\r\n rateOfChangeWarningAddress: 33,\r\n rateOfChangeWarningAddressBit: 6,\r\n rateOfChangeAlarmAddress: 2,\r\n rateOfChangeAlarmAddressBit: 16\r\n }, {\r\n id: 5,\r\n type: SensorTypeEnum.BearingTemperature,\r\n position: SensorPositionEnum.BendHead,\r\n side: EquipmentSideEnum.North,\r\n modbusAddress: 65536,\r\n warningAddress: 113,\r\n warningAddressBit: 2,\r\n alarmAddress: 42,\r\n alarmAddressBit: 1,\r\n rateOfChangeWarningAddress: 33,\r\n rateOfChangeWarningAddressBit: 6,\r\n rateOfChangeAlarmAddress: 2,\r\n rateOfChangeAlarmAddressBit: 16\r\n }, {\r\n id: 6,\r\n type: SensorTypeEnum.BearingTemperature,\r\n position: SensorPositionEnum.BendHead,\r\n side: EquipmentSideEnum.South,\r\n modbusAddress: 65536,\r\n warningAddress: 113,\r\n warningAddressBit: 2,\r\n alarmAddress: 42,\r\n alarmAddressBit: 1,\r\n rateOfChangeWarningAddress: 33,\r\n rateOfChangeWarningAddressBit: 6,\r\n rateOfChangeAlarmAddress: 2,\r\n rateOfChangeAlarmAddressBit: 16\r\n }, {\r\n id: 7,\r\n type: SensorTypeEnum.BearingTemperature,\r\n position: SensorPositionEnum.BendTail,\r\n side: EquipmentSideEnum.North,\r\n modbusAddress: 65536,\r\n warningAddress: 113,\r\n warningAddressBit: 2,\r\n alarmAddress: 42,\r\n alarmAddressBit: 1,\r\n rateOfChangeWarningAddress: 33,\r\n rateOfChangeWarningAddressBit: 6,\r\n rateOfChangeAlarmAddress: 2,\r\n rateOfChangeAlarmAddressBit: 16\r\n }, {\r\n id: 8,\r\n type: SensorTypeEnum.BearingTemperature,\r\n position: SensorPositionEnum.BendTail,\r\n side: EquipmentSideEnum.South,\r\n modbusAddress: 65536,\r\n warningAddress: 113,\r\n warningAddressBit: 2,\r\n alarmAddress: 42,\r\n alarmAddressBit: 1,\r\n rateOfChangeWarningAddress: 33,\r\n rateOfChangeWarningAddressBit: 6,\r\n rateOfChangeAlarmAddress: 2,\r\n rateOfChangeAlarmAddressBit: 16\r\n }, {\r\n id: 9,\r\n type: SensorTypeEnum.BearingTemperature,\r\n position: SensorPositionEnum.SnubHead,\r\n side: EquipmentSideEnum.North,\r\n modbusAddress: 65536,\r\n warningAddress: 113,\r\n warningAddressBit: 2,\r\n alarmAddress: 42,\r\n alarmAddressBit: 1,\r\n rateOfChangeWarningAddress: 33,\r\n rateOfChangeWarningAddressBit: 6,\r\n rateOfChangeAlarmAddress: 2,\r\n rateOfChangeAlarmAddressBit: 16\r\n }, {\r\n id: 10,\r\n type: SensorTypeEnum.BearingTemperature,\r\n position: SensorPositionEnum.SnubHead,\r\n side: EquipmentSideEnum.South,\r\n modbusAddress: 65536,\r\n warningAddress: 113,\r\n warningAddressBit: 2,\r\n alarmAddress: 42,\r\n alarmAddressBit: 1,\r\n rateOfChangeWarningAddress: 33,\r\n rateOfChangeWarningAddressBit: 6,\r\n rateOfChangeAlarmAddress: 2,\r\n rateOfChangeAlarmAddressBit: 16\r\n }, {\r\n id: 11,\r\n type: SensorTypeEnum.BearingTemperature,\r\n position: SensorPositionEnum.SnubTail,\r\n side: EquipmentSideEnum.North,\r\n modbusAddress: 65536,\r\n warningAddress: 113,\r\n warningAddressBit: 2,\r\n alarmAddress: 42,\r\n alarmAddressBit: 1,\r\n rateOfChangeWarningAddress: 33,\r\n rateOfChangeWarningAddressBit: 6,\r\n rateOfChangeAlarmAddress: 2,\r\n rateOfChangeAlarmAddressBit: 16\r\n }, {\r\n id: 12,\r\n type: SensorTypeEnum.BearingTemperature,\r\n position: SensorPositionEnum.SnubTail,\r\n side: EquipmentSideEnum.South,\r\n modbusAddress: 65536,\r\n warningAddress: 113,\r\n warningAddressBit: 2,\r\n alarmAddress: 42,\r\n alarmAddressBit: 1,\r\n rateOfChangeWarningAddress: 33,\r\n rateOfChangeWarningAddressBit: 6,\r\n rateOfChangeAlarmAddress: 2,\r\n rateOfChangeAlarmAddressBit: 16\r\n }, {\r\n id: 13,\r\n type: SensorTypeEnum.BearingTemperature,\r\n position: SensorPositionEnum.KneeHead,\r\n side: EquipmentSideEnum.North,\r\n modbusAddress: 65536,\r\n warningAddress: 113,\r\n warningAddressBit: 2,\r\n alarmAddress: 42,\r\n alarmAddressBit: 1,\r\n rateOfChangeWarningAddress: 33,\r\n rateOfChangeWarningAddressBit: 6,\r\n rateOfChangeAlarmAddress: 2,\r\n rateOfChangeAlarmAddressBit: 16\r\n }, {\r\n id: 14,\r\n type: SensorTypeEnum.BearingTemperature,\r\n position: SensorPositionEnum.KneeHead,\r\n side: EquipmentSideEnum.South,\r\n modbusAddress: 65536,\r\n warningAddress: 113,\r\n warningAddressBit: 2,\r\n alarmAddress: 42,\r\n alarmAddressBit: 1,\r\n rateOfChangeWarningAddress: 33,\r\n rateOfChangeWarningAddressBit: 6,\r\n rateOfChangeAlarmAddress: 2,\r\n rateOfChangeAlarmAddressBit: 16\r\n }, {\r\n id: 15,\r\n type: SensorTypeEnum.BearingTemperature,\r\n position: SensorPositionEnum.KneeTail,\r\n side: EquipmentSideEnum.North,\r\n modbusAddress: 65536,\r\n warningAddress: 113,\r\n warningAddressBit: 2,\r\n alarmAddress: 42,\r\n alarmAddressBit: 1,\r\n rateOfChangeWarningAddress: 33,\r\n rateOfChangeWarningAddressBit: 6,\r\n rateOfChangeAlarmAddress: 2,\r\n rateOfChangeAlarmAddressBit: 16\r\n }, {\r\n id: 16,\r\n type: SensorTypeEnum.BearingTemperature,\r\n position: SensorPositionEnum.KneeTail,\r\n side: EquipmentSideEnum.South,\r\n modbusAddress: 65536,\r\n warningAddress: 113,\r\n warningAddressBit: 2,\r\n alarmAddress: 42,\r\n alarmAddressBit: 1,\r\n rateOfChangeWarningAddress: 33,\r\n rateOfChangeWarningAddressBit: 6,\r\n rateOfChangeAlarmAddress: 2,\r\n rateOfChangeAlarmAddressBit: 16\r\n }, {\r\n id: 17,\r\n type: SensorTypeEnum.BearingTemperature,\r\n position: SensorPositionEnum.UpperTripperHead,\r\n side: EquipmentSideEnum.North,\r\n modbusAddress: 65536,\r\n warningAddress: 113,\r\n warningAddressBit: 2,\r\n alarmAddress: 42,\r\n alarmAddressBit: 1,\r\n rateOfChangeWarningAddress: 33,\r\n rateOfChangeWarningAddressBit: 6,\r\n rateOfChangeAlarmAddress: 2,\r\n rateOfChangeAlarmAddressBit: 16\r\n }, {\r\n id: 18,\r\n type: SensorTypeEnum.BearingTemperature,\r\n position: SensorPositionEnum.UpperTripperHead,\r\n side: EquipmentSideEnum.South,\r\n modbusAddress: 65536,\r\n warningAddress: 113,\r\n warningAddressBit: 2,\r\n alarmAddress: 42,\r\n alarmAddressBit: 1,\r\n rateOfChangeWarningAddress: 33,\r\n rateOfChangeWarningAddressBit: 6,\r\n rateOfChangeAlarmAddress: 2,\r\n rateOfChangeAlarmAddressBit: 16\r\n }, {\r\n id: 19,\r\n type: SensorTypeEnum.BearingTemperature,\r\n position: SensorPositionEnum.UpperTripperTail,\r\n side: EquipmentSideEnum.North,\r\n modbusAddress: 65536,\r\n warningAddress: 113,\r\n warningAddressBit: 2,\r\n alarmAddress: 42,\r\n alarmAddressBit: 1,\r\n rateOfChangeWarningAddress: 33,\r\n rateOfChangeWarningAddressBit: 6,\r\n rateOfChangeAlarmAddress: 2,\r\n rateOfChangeAlarmAddressBit: 16\r\n }, {\r\n id: 20,\r\n type: SensorTypeEnum.BearingTemperature,\r\n position: SensorPositionEnum.UpperTripperTail,\r\n side: EquipmentSideEnum.South,\r\n modbusAddress: 65536,\r\n warningAddress: 113,\r\n warningAddressBit: 2,\r\n alarmAddress: 42,\r\n alarmAddressBit: 1,\r\n rateOfChangeWarningAddress: 33,\r\n rateOfChangeWarningAddressBit: 6,\r\n rateOfChangeAlarmAddress: 2,\r\n rateOfChangeAlarmAddressBit: 16\r\n }, {\r\n id: 21,\r\n type: SensorTypeEnum.BearingTemperature,\r\n position: SensorPositionEnum.LowerTripperHead,\r\n side: EquipmentSideEnum.North,\r\n modbusAddress: 65536,\r\n warningAddress: 113,\r\n warningAddressBit: 2,\r\n alarmAddress: 42,\r\n alarmAddressBit: 1,\r\n rateOfChangeWarningAddress: 33,\r\n rateOfChangeWarningAddressBit: 6,\r\n rateOfChangeAlarmAddress: 2,\r\n rateOfChangeAlarmAddressBit: 16\r\n }, {\r\n id: 22,\r\n type: SensorTypeEnum.BearingTemperature,\r\n position: SensorPositionEnum.LowerTripperHead,\r\n side: EquipmentSideEnum.South,\r\n modbusAddress: 65536,\r\n warningAddress: 113,\r\n warningAddressBit: 2,\r\n alarmAddress: 42,\r\n alarmAddressBit: 1,\r\n rateOfChangeWarningAddress: 33,\r\n rateOfChangeWarningAddressBit: 6,\r\n rateOfChangeAlarmAddress: 2,\r\n rateOfChangeAlarmAddressBit: 16\r\n }, {\r\n id: 23,\r\n type: SensorTypeEnum.BearingTemperature,\r\n position: SensorPositionEnum.LowerTripperTail,\r\n side: EquipmentSideEnum.North,\r\n modbusAddress: 65536,\r\n warningAddress: 113,\r\n warningAddressBit: 2,\r\n alarmAddress: 42,\r\n alarmAddressBit: 1,\r\n rateOfChangeWarningAddress: 33,\r\n rateOfChangeWarningAddressBit: 6,\r\n rateOfChangeAlarmAddress: 2,\r\n rateOfChangeAlarmAddressBit: 16\r\n }, {\r\n id: 24,\r\n type: SensorTypeEnum.BearingTemperature,\r\n position: SensorPositionEnum.LowerTripperTail,\r\n side: EquipmentSideEnum.South,\r\n modbusAddress: 65536,\r\n warningAddress: 113,\r\n warningAddressBit: 2,\r\n alarmAddress: 42,\r\n alarmAddressBit: 1,\r\n rateOfChangeWarningAddress: 33,\r\n rateOfChangeWarningAddressBit: 6,\r\n rateOfChangeAlarmAddress: 2,\r\n rateOfChangeAlarmAddressBit: 16\r\n }, {\r\n id: 25,\r\n type: SensorTypeEnum.RubBlockTemperature,\r\n position: SensorPositionEnum.Head,\r\n side: EquipmentSideEnum.North,\r\n modbusAddress: 65536,\r\n warningAddress: 113,\r\n warningAddressBit: 2,\r\n alarmAddress: 42,\r\n alarmAddressBit: 1,\r\n rateOfChangeWarningAddress: 33,\r\n rateOfChangeWarningAddressBit: 6,\r\n rateOfChangeAlarmAddress: 2,\r\n rateOfChangeAlarmAddressBit: 16\r\n }, {\r\n id: 26,\r\n type: SensorTypeEnum.RubBlockTemperature,\r\n position: SensorPositionEnum.Head,\r\n side: EquipmentSideEnum.South,\r\n modbusAddress: 65536,\r\n warningAddress: 113,\r\n warningAddressBit: 2,\r\n alarmAddress: 42,\r\n alarmAddressBit: 1,\r\n rateOfChangeWarningAddress: 33,\r\n rateOfChangeWarningAddressBit: 6,\r\n rateOfChangeAlarmAddress: 2,\r\n rateOfChangeAlarmAddressBit: 16\r\n }, {\r\n id: 27,\r\n type: SensorTypeEnum.RubBlockTemperature,\r\n position: SensorPositionEnum.Tail,\r\n side: EquipmentSideEnum.North,\r\n modbusAddress: 65536,\r\n warningAddress: 113,\r\n warningAddressBit: 2,\r\n alarmAddress: 42,\r\n alarmAddressBit: 1,\r\n rateOfChangeWarningAddress: 33,\r\n rateOfChangeWarningAddressBit: 6,\r\n rateOfChangeAlarmAddress: 2,\r\n rateOfChangeAlarmAddressBit: 16\r\n }, {\r\n id: 28,\r\n type: SensorTypeEnum.RubBlockTemperature,\r\n position: SensorPositionEnum.Tail,\r\n side: EquipmentSideEnum.South,\r\n modbusAddress: 65536,\r\n warningAddress: 113,\r\n warningAddressBit: 2,\r\n alarmAddress: 42,\r\n alarmAddressBit: 1,\r\n rateOfChangeWarningAddress: 33,\r\n rateOfChangeWarningAddressBit: 6,\r\n rateOfChangeAlarmAddress: 2,\r\n rateOfChangeAlarmAddressBit: 16\r\n }, {\r\n id: 29,\r\n type: SensorTypeEnum.RubBlockTemperature,\r\n position: SensorPositionEnum.BendHead,\r\n side: EquipmentSideEnum.North,\r\n modbusAddress: 65536,\r\n warningAddress: 113,\r\n warningAddressBit: 2,\r\n alarmAddress: 42,\r\n alarmAddressBit: 1,\r\n rateOfChangeWarningAddress: 33,\r\n rateOfChangeWarningAddressBit: 6,\r\n rateOfChangeAlarmAddress: 2,\r\n rateOfChangeAlarmAddressBit: 16\r\n }, {\r\n id: 30,\r\n type: SensorTypeEnum.RubBlockTemperature,\r\n position: SensorPositionEnum.BendHead,\r\n side: EquipmentSideEnum.South,\r\n modbusAddress: 65536,\r\n warningAddress: 113,\r\n warningAddressBit: 2,\r\n alarmAddress: 42,\r\n alarmAddressBit: 1,\r\n rateOfChangeWarningAddress: 33,\r\n rateOfChangeWarningAddressBit: 6,\r\n rateOfChangeAlarmAddress: 2,\r\n rateOfChangeAlarmAddressBit: 16\r\n }, {\r\n id: 31,\r\n type: SensorTypeEnum.RubBlockTemperature,\r\n position: SensorPositionEnum.BendTail,\r\n side: EquipmentSideEnum.North,\r\n modbusAddress: 65536,\r\n warningAddress: 113,\r\n warningAddressBit: 2,\r\n alarmAddress: 42,\r\n alarmAddressBit: 1,\r\n rateOfChangeWarningAddress: 33,\r\n rateOfChangeWarningAddressBit: 6,\r\n rateOfChangeAlarmAddress: 2,\r\n rateOfChangeAlarmAddressBit: 16\r\n }, {\r\n id: 32,\r\n type: SensorTypeEnum.RubBlockTemperature,\r\n position: SensorPositionEnum.BendTail,\r\n side: EquipmentSideEnum.South,\r\n modbusAddress: 65536,\r\n warningAddress: 113,\r\n warningAddressBit: 2,\r\n alarmAddress: 42,\r\n alarmAddressBit: 1,\r\n rateOfChangeWarningAddress: 33,\r\n rateOfChangeWarningAddressBit: 6,\r\n rateOfChangeAlarmAddress: 2,\r\n rateOfChangeAlarmAddressBit: 16\r\n }, {\r\n id: 33,\r\n type: SensorTypeEnum.RubBlockTemperature,\r\n position: SensorPositionEnum.SnubHead,\r\n side: EquipmentSideEnum.North,\r\n modbusAddress: 65536,\r\n warningAddress: 113,\r\n warningAddressBit: 2,\r\n alarmAddress: 42,\r\n alarmAddressBit: 1,\r\n rateOfChangeWarningAddress: 33,\r\n rateOfChangeWarningAddressBit: 6,\r\n rateOfChangeAlarmAddress: 2,\r\n rateOfChangeAlarmAddressBit: 16\r\n }, {\r\n id: 34,\r\n type: SensorTypeEnum.RubBlockTemperature,\r\n position: SensorPositionEnum.SnubHead,\r\n side: EquipmentSideEnum.South,\r\n modbusAddress: 65536,\r\n warningAddress: 113,\r\n warningAddressBit: 2,\r\n alarmAddress: 42,\r\n alarmAddressBit: 1,\r\n rateOfChangeWarningAddress: 33,\r\n rateOfChangeWarningAddressBit: 6,\r\n rateOfChangeAlarmAddress: 2,\r\n rateOfChangeAlarmAddressBit: 16\r\n }, {\r\n id: 35,\r\n type: SensorTypeEnum.RubBlockTemperature,\r\n position: SensorPositionEnum.SnubTail,\r\n side: EquipmentSideEnum.North,\r\n modbusAddress: 65536,\r\n warningAddress: 113,\r\n warningAddressBit: 2,\r\n alarmAddress: 42,\r\n alarmAddressBit: 1,\r\n rateOfChangeWarningAddress: 33,\r\n rateOfChangeWarningAddressBit: 6,\r\n rateOfChangeAlarmAddress: 2,\r\n rateOfChangeAlarmAddressBit: 16\r\n }, {\r\n id: 36,\r\n type: SensorTypeEnum.RubBlockTemperature,\r\n position: SensorPositionEnum.SnubTail,\r\n side: EquipmentSideEnum.South,\r\n modbusAddress: 65536,\r\n warningAddress: 113,\r\n warningAddressBit: 2,\r\n alarmAddress: 42,\r\n alarmAddressBit: 1,\r\n rateOfChangeWarningAddress: 33,\r\n rateOfChangeWarningAddressBit: 6,\r\n rateOfChangeAlarmAddress: 2,\r\n rateOfChangeAlarmAddressBit: 16\r\n }, {\r\n id: 37,\r\n type: SensorTypeEnum.RubBlockTemperature,\r\n position: SensorPositionEnum.KneeHead,\r\n side: EquipmentSideEnum.North,\r\n modbusAddress: 65536,\r\n warningAddress: 113,\r\n warningAddressBit: 2,\r\n alarmAddress: 42,\r\n alarmAddressBit: 1,\r\n rateOfChangeWarningAddress: 33,\r\n rateOfChangeWarningAddressBit: 6,\r\n rateOfChangeAlarmAddress: 2,\r\n rateOfChangeAlarmAddressBit: 16\r\n }, {\r\n id: 38,\r\n type: SensorTypeEnum.RubBlockTemperature,\r\n position: SensorPositionEnum.KneeHead,\r\n side: EquipmentSideEnum.South,\r\n modbusAddress: 65536,\r\n warningAddress: 113,\r\n warningAddressBit: 2,\r\n alarmAddress: 42,\r\n alarmAddressBit: 1,\r\n rateOfChangeWarningAddress: 33,\r\n rateOfChangeWarningAddressBit: 6,\r\n rateOfChangeAlarmAddress: 2,\r\n rateOfChangeAlarmAddressBit: 16\r\n }, {\r\n id: 39,\r\n type: SensorTypeEnum.RubBlockTemperature,\r\n position: SensorPositionEnum.KneeTail,\r\n side: EquipmentSideEnum.North,\r\n modbusAddress: 65536,\r\n warningAddress: 113,\r\n warningAddressBit: 2,\r\n alarmAddress: 42,\r\n alarmAddressBit: 1,\r\n rateOfChangeWarningAddress: 33,\r\n rateOfChangeWarningAddressBit: 6,\r\n rateOfChangeAlarmAddress: 2,\r\n rateOfChangeAlarmAddressBit: 16\r\n }, {\r\n id: 40,\r\n type: SensorTypeEnum.RubBlockTemperature,\r\n position: SensorPositionEnum.KneeTail,\r\n side: EquipmentSideEnum.South,\r\n modbusAddress: 65536,\r\n warningAddress: 113,\r\n warningAddressBit: 2,\r\n alarmAddress: 42,\r\n alarmAddressBit: 1,\r\n rateOfChangeWarningAddress: 33,\r\n rateOfChangeWarningAddressBit: 6,\r\n rateOfChangeAlarmAddress: 2,\r\n rateOfChangeAlarmAddressBit: 16\r\n }, {\r\n id: 41,\r\n type: SensorTypeEnum.Speed,\r\n position: SensorPositionEnum.OnePerEquipment,\r\n side: EquipmentSideEnum.None,\r\n modbusAddress: 65536,\r\n warningAddress: 113,\r\n warningAddressBit: 2,\r\n alarmAddress: 42,\r\n alarmAddressBit: 1,\r\n rateOfChangeWarningAddress: 33,\r\n rateOfChangeWarningAddressBit: 6,\r\n rateOfChangeAlarmAddress: 2,\r\n rateOfChangeAlarmAddressBit: 16\r\n },\r\n {\r\n id: 42,\r\n type: SensorTypeEnum.CurrentAmpDraw,\r\n position: SensorPositionEnum.OnePerEquipment,\r\n side: EquipmentSideEnum.None,\r\n modbusAddress: 65536,\r\n warningAddress: 113,\r\n warningAddressBit: 2,\r\n alarmAddress: 42,\r\n alarmAddressBit: 1,\r\n rateOfChangeWarningAddress: null,\r\n rateOfChangeWarningAddressBit: null,\r\n rateOfChangeAlarmAddress: null,\r\n rateOfChangeAlarmAddressBit: null,\r\n },\r\n {\r\n id: 43,\r\n type: SensorTypeEnum.CurrentDesignLoad,\r\n position: SensorPositionEnum.OnePerEquipment,\r\n side: EquipmentSideEnum.None,\r\n modbusAddress: 65536,\r\n warningAddress: 113,\r\n warningAddressBit: 2,\r\n alarmAddress: 42,\r\n alarmAddressBit: 1,\r\n rateOfChangeWarningAddress: null,\r\n rateOfChangeWarningAddressBit: null,\r\n rateOfChangeAlarmAddress: null,\r\n rateOfChangeAlarmAddressBit: null,\r\n },\r\n {\r\n id: 44,\r\n type: SensorTypeEnum.Vibration,\r\n position: SensorPositionEnum.Motor,\r\n side: EquipmentSideEnum.None,\r\n modbusAddress: 65536,\r\n warningAddress: 113,\r\n warningAddressBit: 2,\r\n alarmAddress: 42,\r\n alarmAddressBit: 1,\r\n rateOfChangeWarningAddress: null,\r\n rateOfChangeWarningAddressBit: null,\r\n rateOfChangeAlarmAddress: null,\r\n rateOfChangeAlarmAddressBit: null,\r\n },\r\n {\r\n id: 45,\r\n type: SensorTypeEnum.Vibration,\r\n position: SensorPositionEnum.Frame,\r\n side: EquipmentSideEnum.None,\r\n modbusAddress: 65536,\r\n warningAddress: 113,\r\n warningAddressBit: 2,\r\n alarmAddress: 42,\r\n alarmAddressBit: 1,\r\n rateOfChangeWarningAddress: null,\r\n rateOfChangeWarningAddressBit: null,\r\n rateOfChangeAlarmAddress: null,\r\n rateOfChangeAlarmAddressBit: null,\r\n },\r\n ] as SensorViewModel[]\r\n },\r\n {\r\n id: 8,\r\n type: EquipmentTypeEnum.Conveyor,\r\n subType: EquipmentSubTypeEnum.Screw,\r\n name: 'Conveyor screw (None)',\r\n totalRunHoursFirstRegisterAddress: 1,\r\n totalRunHoursSecondRegisterAddress: 65536,\r\n timeTillMaintenanceAddress: 2,\r\n shutDownAlarmAddress: 3,\r\n shutDownAlarmAddressBit: 1,\r\n maintenanceRequiredWarningAddress: 3,\r\n maintenanceRequiredWarningAddressBit: 2,\r\n sensors: [{\r\n id: 1,\r\n type: SensorTypeEnum.BearingTemperature,\r\n position: SensorPositionEnum.Head,\r\n side: EquipmentSideEnum.None,\r\n modbusAddress: 65536,\r\n warningAddress: 113,\r\n warningAddressBit: 2,\r\n alarmAddress: 42,\r\n alarmAddressBit: 1,\r\n rateOfChangeWarningAddress: 33,\r\n rateOfChangeWarningAddressBit: 6,\r\n rateOfChangeAlarmAddress: 2,\r\n rateOfChangeAlarmAddressBit: 16\r\n }, {\r\n id: 2,\r\n type: SensorTypeEnum.BearingTemperature,\r\n position: SensorPositionEnum.Tail,\r\n side: EquipmentSideEnum.None,\r\n modbusAddress: 65536,\r\n warningAddress: 113,\r\n warningAddressBit: 2,\r\n alarmAddress: 42,\r\n alarmAddressBit: 1,\r\n rateOfChangeWarningAddress: 33,\r\n rateOfChangeWarningAddressBit: 6,\r\n rateOfChangeAlarmAddress: 2,\r\n rateOfChangeAlarmAddressBit: 16\r\n }, {\r\n id: 3,\r\n type: SensorTypeEnum.Speed,\r\n position: SensorPositionEnum.OnePerEquipment,\r\n side: EquipmentSideEnum.None,\r\n modbusAddress: 65536,\r\n warningAddress: 113,\r\n warningAddressBit: 2,\r\n alarmAddress: 42,\r\n alarmAddressBit: 1,\r\n rateOfChangeWarningAddress: 33,\r\n rateOfChangeWarningAddressBit: 6,\r\n rateOfChangeAlarmAddress: 2,\r\n rateOfChangeAlarmAddressBit: 16\r\n },\r\n {\r\n id: 4,\r\n type: SensorTypeEnum.CurrentAmpDraw,\r\n position: SensorPositionEnum.OnePerEquipment,\r\n side: EquipmentSideEnum.None,\r\n modbusAddress: 65536,\r\n warningAddress: 113,\r\n warningAddressBit: 2,\r\n alarmAddress: 42,\r\n alarmAddressBit: 1,\r\n rateOfChangeWarningAddress: null,\r\n rateOfChangeWarningAddressBit: null,\r\n rateOfChangeAlarmAddress: null,\r\n rateOfChangeAlarmAddressBit: null,\r\n },\r\n {\r\n id: 5,\r\n type: SensorTypeEnum.CurrentDesignLoad,\r\n position: SensorPositionEnum.OnePerEquipment,\r\n side: EquipmentSideEnum.None,\r\n modbusAddress: 65536,\r\n warningAddress: 113,\r\n warningAddressBit: 2,\r\n alarmAddress: 42,\r\n alarmAddressBit: 1,\r\n rateOfChangeWarningAddress: null,\r\n rateOfChangeWarningAddressBit: null,\r\n rateOfChangeAlarmAddress: null,\r\n rateOfChangeAlarmAddressBit: null,\r\n },\r\n {\r\n id: 6,\r\n type: SensorTypeEnum.Vibration,\r\n position: SensorPositionEnum.Motor,\r\n side: EquipmentSideEnum.None,\r\n modbusAddress: 65536,\r\n warningAddress: 113,\r\n warningAddressBit: 2,\r\n alarmAddress: 42,\r\n alarmAddressBit: 1,\r\n rateOfChangeWarningAddress: null,\r\n rateOfChangeWarningAddressBit: null,\r\n rateOfChangeAlarmAddress: null,\r\n rateOfChangeAlarmAddressBit: null,\r\n },\r\n {\r\n id: 7,\r\n type: SensorTypeEnum.Vibration,\r\n position: SensorPositionEnum.Frame,\r\n side: EquipmentSideEnum.None,\r\n modbusAddress: 65536,\r\n warningAddress: 113,\r\n warningAddressBit: 2,\r\n alarmAddress: 42,\r\n alarmAddressBit: 1,\r\n rateOfChangeWarningAddress: null,\r\n rateOfChangeWarningAddressBit: null,\r\n rateOfChangeAlarmAddress: null,\r\n rateOfChangeAlarmAddressBit: null,\r\n },\r\n ] as SensorViewModel[]\r\n },\r\n {\r\n id: 9,\r\n type: EquipmentTypeEnum.Leg,\r\n subType: EquipmentSubTypeEnum.WithKneeBearing,\r\n name: 'Leg with knee bearing (East-West)',\r\n totalRunHoursFirstRegisterAddress: 1,\r\n totalRunHoursSecondRegisterAddress: 65536,\r\n timeTillMaintenanceAddress: 2,\r\n shutDownAlarmAddress: 3,\r\n shutDownAlarmAddressBit: 1,\r\n maintenanceRequiredWarningAddress: 3,\r\n maintenanceRequiredWarningAddressBit: 2,\r\n sensors: [{\r\n id: 1,\r\n type: SensorTypeEnum.BearingTemperature,\r\n position: SensorPositionEnum.Head,\r\n side: EquipmentSideEnum.East,\r\n modbusAddress: 65536,\r\n warningAddress: 113,\r\n warningAddressBit: 2,\r\n alarmAddress: 42,\r\n alarmAddressBit: 1,\r\n rateOfChangeWarningAddress: 33,\r\n rateOfChangeWarningAddressBit: 6,\r\n rateOfChangeAlarmAddress: 2,\r\n rateOfChangeAlarmAddressBit: 16\r\n }, {\r\n id: 2,\r\n type: SensorTypeEnum.BearingTemperature,\r\n position: SensorPositionEnum.Head,\r\n side: EquipmentSideEnum.West,\r\n modbusAddress: 65536,\r\n warningAddress: 113,\r\n warningAddressBit: 2,\r\n alarmAddress: 42,\r\n alarmAddressBit: 1,\r\n rateOfChangeWarningAddress: 33,\r\n rateOfChangeWarningAddressBit: 6,\r\n rateOfChangeAlarmAddress: 2,\r\n rateOfChangeAlarmAddressBit: 16\r\n }, {\r\n id: 3,\r\n type: SensorTypeEnum.BearingTemperature,\r\n position: SensorPositionEnum.Knee,\r\n side: EquipmentSideEnum.East,\r\n modbusAddress: 65536,\r\n warningAddress: 113,\r\n warningAddressBit: 2,\r\n alarmAddress: 42,\r\n alarmAddressBit: 1,\r\n rateOfChangeWarningAddress: 33,\r\n rateOfChangeWarningAddressBit: 6,\r\n rateOfChangeAlarmAddress: 2,\r\n rateOfChangeAlarmAddressBit: 16\r\n }, {\r\n id: 4,\r\n type: SensorTypeEnum.BearingTemperature,\r\n position: SensorPositionEnum.Knee,\r\n side: EquipmentSideEnum.West,\r\n modbusAddress: 65536,\r\n warningAddress: 113,\r\n warningAddressBit: 2,\r\n alarmAddress: 42,\r\n alarmAddressBit: 1,\r\n rateOfChangeWarningAddress: 33,\r\n rateOfChangeWarningAddressBit: 6,\r\n rateOfChangeAlarmAddress: 2,\r\n rateOfChangeAlarmAddressBit: 16\r\n }, {\r\n id: 5,\r\n type: SensorTypeEnum.BearingTemperature,\r\n position: SensorPositionEnum.Boot,\r\n side: EquipmentSideEnum.East,\r\n modbusAddress: 65536,\r\n warningAddress: 113,\r\n warningAddressBit: 2,\r\n alarmAddress: 42,\r\n alarmAddressBit: 1,\r\n rateOfChangeWarningAddress: 33,\r\n rateOfChangeWarningAddressBit: 6,\r\n rateOfChangeAlarmAddress: 2,\r\n rateOfChangeAlarmAddressBit: 16\r\n }, {\r\n id: 6,\r\n type: SensorTypeEnum.BearingTemperature,\r\n position: SensorPositionEnum.Boot,\r\n side: EquipmentSideEnum.West,\r\n modbusAddress: 65536,\r\n warningAddress: 113,\r\n warningAddressBit: 2,\r\n alarmAddress: 42,\r\n alarmAddressBit: 1,\r\n rateOfChangeWarningAddress: 33,\r\n rateOfChangeWarningAddressBit: 6,\r\n rateOfChangeAlarmAddress: 2,\r\n rateOfChangeAlarmAddressBit: 16\r\n }, {\r\n id: 7,\r\n type: SensorTypeEnum.RubBlockTemperature,\r\n position: SensorPositionEnum.Head,\r\n side: EquipmentSideEnum.East,\r\n modbusAddress: 65536,\r\n warningAddress: 113,\r\n warningAddressBit: 2,\r\n alarmAddress: 42,\r\n alarmAddressBit: 1,\r\n rateOfChangeWarningAddress: 33,\r\n rateOfChangeWarningAddressBit: 6,\r\n rateOfChangeAlarmAddress: 2,\r\n rateOfChangeAlarmAddressBit: 16\r\n }, {\r\n id: 8,\r\n type: SensorTypeEnum.RubBlockTemperature,\r\n position: SensorPositionEnum.Head,\r\n side: EquipmentSideEnum.West,\r\n modbusAddress: 65536,\r\n warningAddress: 113,\r\n warningAddressBit: 2,\r\n alarmAddress: 42,\r\n alarmAddressBit: 1,\r\n rateOfChangeWarningAddress: 33,\r\n rateOfChangeWarningAddressBit: 6,\r\n rateOfChangeAlarmAddress: 2,\r\n rateOfChangeAlarmAddressBit: 16\r\n }, {\r\n id: 9,\r\n type: SensorTypeEnum.RubBlockTemperature,\r\n position: SensorPositionEnum.Boot,\r\n side: EquipmentSideEnum.West,\r\n modbusAddress: 65536,\r\n warningAddress: 113,\r\n warningAddressBit: 2,\r\n alarmAddress: 42,\r\n alarmAddressBit: 1,\r\n rateOfChangeWarningAddress: 33,\r\n rateOfChangeWarningAddressBit: 6,\r\n rateOfChangeAlarmAddress: 2,\r\n rateOfChangeAlarmAddressBit: 16\r\n }, {\r\n id: 10,\r\n type: SensorTypeEnum.RubBlockTemperature,\r\n position: SensorPositionEnum.Boot,\r\n side: EquipmentSideEnum.East,\r\n modbusAddress: 65536,\r\n warningAddress: 113,\r\n warningAddressBit: 2,\r\n alarmAddress: 42,\r\n alarmAddressBit: 1,\r\n rateOfChangeWarningAddress: 33,\r\n rateOfChangeWarningAddressBit: 6,\r\n rateOfChangeAlarmAddress: 2,\r\n rateOfChangeAlarmAddressBit: 16\r\n }, {\r\n id: 11,\r\n type: SensorTypeEnum.Speed,\r\n position: SensorPositionEnum.OnePerEquipment,\r\n side: EquipmentSideEnum.None,\r\n modbusAddress: 65536,\r\n warningAddress: 113,\r\n warningAddressBit: 2,\r\n alarmAddress: 42,\r\n alarmAddressBit: 1,\r\n rateOfChangeWarningAddress: 33,\r\n rateOfChangeWarningAddressBit: 6,\r\n rateOfChangeAlarmAddress: 2,\r\n rateOfChangeAlarmAddressBit: 16\r\n }, {\r\n id: 12,\r\n type: SensorTypeEnum.GearBoxTemperature,\r\n position: SensorPositionEnum.Head,\r\n side: EquipmentSideEnum.West,\r\n modbusAddress: 65536,\r\n warningAddress: 113,\r\n warningAddressBit: 2,\r\n alarmAddress: 42,\r\n alarmAddressBit: 1,\r\n rateOfChangeWarningAddress: 33,\r\n rateOfChangeWarningAddressBit: 6,\r\n rateOfChangeAlarmAddress: 2,\r\n rateOfChangeAlarmAddressBit: 16\r\n }, {\r\n id: 13,\r\n type: SensorTypeEnum.GearBoxTemperature,\r\n position: SensorPositionEnum.Head,\r\n side: EquipmentSideEnum.East,\r\n modbusAddress: 65536,\r\n warningAddress: 113,\r\n warningAddressBit: 2,\r\n alarmAddress: 42,\r\n alarmAddressBit: 1,\r\n rateOfChangeWarningAddress: 33,\r\n rateOfChangeWarningAddressBit: 6,\r\n rateOfChangeAlarmAddress: 2,\r\n rateOfChangeAlarmAddressBit: 16\r\n }, {\r\n id: 14,\r\n type: SensorTypeEnum.ShaftBearingTemperature,\r\n position: SensorPositionEnum.Boot,\r\n side: EquipmentSideEnum.West,\r\n modbusAddress: 65536,\r\n warningAddress: 113,\r\n warningAddressBit: 2,\r\n alarmAddress: 42,\r\n alarmAddressBit: 1,\r\n rateOfChangeWarningAddress: 33,\r\n rateOfChangeWarningAddressBit: 6,\r\n rateOfChangeAlarmAddress: 2,\r\n rateOfChangeAlarmAddressBit: 16\r\n }, {\r\n id: 15,\r\n type: SensorTypeEnum.ShaftBearingTemperature,\r\n position: SensorPositionEnum.Boot,\r\n side: EquipmentSideEnum.East,\r\n modbusAddress: 65536,\r\n warningAddress: 113,\r\n warningAddressBit: 2,\r\n alarmAddress: 42,\r\n alarmAddressBit: 1,\r\n rateOfChangeWarningAddress: 33,\r\n rateOfChangeWarningAddressBit: 6,\r\n rateOfChangeAlarmAddress: 2,\r\n rateOfChangeAlarmAddressBit: 16\r\n },\r\n {\r\n id: 16,\r\n type: SensorTypeEnum.CurrentAmpDraw,\r\n position: SensorPositionEnum.OnePerEquipment,\r\n side: EquipmentSideEnum.None,\r\n modbusAddress: 65536,\r\n warningAddress: 113,\r\n warningAddressBit: 2,\r\n alarmAddress: 42,\r\n alarmAddressBit: 1,\r\n rateOfChangeWarningAddress: null,\r\n rateOfChangeWarningAddressBit: null,\r\n rateOfChangeAlarmAddress: null,\r\n rateOfChangeAlarmAddressBit: null,\r\n },\r\n {\r\n id: 17,\r\n type: SensorTypeEnum.CurrentDesignLoad,\r\n position: SensorPositionEnum.OnePerEquipment,\r\n side: EquipmentSideEnum.None,\r\n modbusAddress: 65536,\r\n warningAddress: 113,\r\n warningAddressBit: 2,\r\n alarmAddress: 42,\r\n alarmAddressBit: 1,\r\n rateOfChangeWarningAddress: null,\r\n rateOfChangeWarningAddressBit: null,\r\n rateOfChangeAlarmAddress: null,\r\n rateOfChangeAlarmAddressBit: null,\r\n },\r\n {\r\n id: 18,\r\n type: SensorTypeEnum.Vibration,\r\n position: SensorPositionEnum.Motor,\r\n side: EquipmentSideEnum.None,\r\n modbusAddress: 65536,\r\n warningAddress: 113,\r\n warningAddressBit: 2,\r\n alarmAddress: 42,\r\n alarmAddressBit: 1,\r\n rateOfChangeWarningAddress: null,\r\n rateOfChangeWarningAddressBit: null,\r\n rateOfChangeAlarmAddress: null,\r\n rateOfChangeAlarmAddressBit: null,\r\n },\r\n {\r\n id: 19,\r\n type: SensorTypeEnum.Vibration,\r\n position: SensorPositionEnum.Frame,\r\n side: EquipmentSideEnum.None,\r\n modbusAddress: 65536,\r\n warningAddress: 113,\r\n warningAddressBit: 2,\r\n alarmAddress: 42,\r\n alarmAddressBit: 1,\r\n rateOfChangeWarningAddress: null,\r\n rateOfChangeWarningAddressBit: null,\r\n rateOfChangeAlarmAddress: null,\r\n rateOfChangeAlarmAddressBit: null,\r\n },\r\n ] as SensorViewModel[]\r\n },\r\n {\r\n id: 10,\r\n type: EquipmentTypeEnum.Leg,\r\n subType: EquipmentSubTypeEnum.WithoutKneeBearing,\r\n name: 'Leg without knee bearing (East-West)',\r\n totalRunHoursFirstRegisterAddress: 1,\r\n totalRunHoursSecondRegisterAddress: 65536,\r\n timeTillMaintenanceAddress: 2,\r\n shutDownAlarmAddress: 3,\r\n shutDownAlarmAddressBit: 1,\r\n maintenanceRequiredWarningAddress: 3,\r\n maintenanceRequiredWarningAddressBit: 2,\r\n sensors: [{\r\n id: 1,\r\n type: SensorTypeEnum.BearingTemperature,\r\n position: SensorPositionEnum.Head,\r\n side: EquipmentSideEnum.East,\r\n modbusAddress: 65536,\r\n warningAddress: 113,\r\n warningAddressBit: 2,\r\n alarmAddress: 42,\r\n alarmAddressBit: 1,\r\n rateOfChangeWarningAddress: 33,\r\n rateOfChangeWarningAddressBit: 6,\r\n rateOfChangeAlarmAddress: 2,\r\n rateOfChangeAlarmAddressBit: 16\r\n }, {\r\n id: 2,\r\n type: SensorTypeEnum.BearingTemperature,\r\n position: SensorPositionEnum.Head,\r\n side: EquipmentSideEnum.West,\r\n modbusAddress: 65536,\r\n warningAddress: 113,\r\n warningAddressBit: 2,\r\n alarmAddress: 42,\r\n alarmAddressBit: 1,\r\n rateOfChangeWarningAddress: 33,\r\n rateOfChangeWarningAddressBit: 6,\r\n rateOfChangeAlarmAddress: 2,\r\n rateOfChangeAlarmAddressBit: 16\r\n }, {\r\n id: 5,\r\n type: SensorTypeEnum.BearingTemperature,\r\n position: SensorPositionEnum.Boot,\r\n side: EquipmentSideEnum.East,\r\n modbusAddress: 65536,\r\n warningAddress: 113,\r\n warningAddressBit: 2,\r\n alarmAddress: 42,\r\n alarmAddressBit: 1,\r\n rateOfChangeWarningAddress: 33,\r\n rateOfChangeWarningAddressBit: 6,\r\n rateOfChangeAlarmAddress: 2,\r\n rateOfChangeAlarmAddressBit: 16\r\n }, {\r\n id: 6,\r\n type: SensorTypeEnum.BearingTemperature,\r\n position: SensorPositionEnum.Boot,\r\n side: EquipmentSideEnum.West,\r\n modbusAddress: 65536,\r\n warningAddress: 113,\r\n warningAddressBit: 2,\r\n alarmAddress: 42,\r\n alarmAddressBit: 1,\r\n rateOfChangeWarningAddress: 33,\r\n rateOfChangeWarningAddressBit: 6,\r\n rateOfChangeAlarmAddress: 2,\r\n rateOfChangeAlarmAddressBit: 16\r\n }, {\r\n id: 7,\r\n type: SensorTypeEnum.RubBlockTemperature,\r\n position: SensorPositionEnum.Head,\r\n side: EquipmentSideEnum.East,\r\n modbusAddress: 65536,\r\n warningAddress: 113,\r\n warningAddressBit: 2,\r\n alarmAddress: 42,\r\n alarmAddressBit: 1,\r\n rateOfChangeWarningAddress: 33,\r\n rateOfChangeWarningAddressBit: 6,\r\n rateOfChangeAlarmAddress: 2,\r\n rateOfChangeAlarmAddressBit: 16\r\n }, {\r\n id: 8,\r\n type: SensorTypeEnum.RubBlockTemperature,\r\n position: SensorPositionEnum.Head,\r\n side: EquipmentSideEnum.West,\r\n modbusAddress: 65536,\r\n warningAddress: 113,\r\n warningAddressBit: 2,\r\n alarmAddress: 42,\r\n alarmAddressBit: 1,\r\n rateOfChangeWarningAddress: 33,\r\n rateOfChangeWarningAddressBit: 6,\r\n rateOfChangeAlarmAddress: 2,\r\n rateOfChangeAlarmAddressBit: 16\r\n }, {\r\n id: 9,\r\n type: SensorTypeEnum.RubBlockTemperature,\r\n position: SensorPositionEnum.Boot,\r\n side: EquipmentSideEnum.East,\r\n modbusAddress: 65536,\r\n warningAddress: 113,\r\n warningAddressBit: 2,\r\n alarmAddress: 42,\r\n alarmAddressBit: 1,\r\n rateOfChangeWarningAddress: 33,\r\n rateOfChangeWarningAddressBit: 6,\r\n rateOfChangeAlarmAddress: 2,\r\n rateOfChangeAlarmAddressBit: 16\r\n }, {\r\n id: 10,\r\n type: SensorTypeEnum.RubBlockTemperature,\r\n position: SensorPositionEnum.Boot,\r\n side: EquipmentSideEnum.West,\r\n modbusAddress: 65536,\r\n warningAddress: 113,\r\n warningAddressBit: 2,\r\n alarmAddress: 42,\r\n alarmAddressBit: 1,\r\n rateOfChangeWarningAddress: 33,\r\n rateOfChangeWarningAddressBit: 6,\r\n rateOfChangeAlarmAddress: 2,\r\n rateOfChangeAlarmAddressBit: 16\r\n }, {\r\n id: 11,\r\n type: SensorTypeEnum.Speed,\r\n position: SensorPositionEnum.OnePerEquipment,\r\n side: EquipmentSideEnum.None,\r\n modbusAddress: 65536,\r\n warningAddress: 113,\r\n warningAddressBit: 2,\r\n alarmAddress: 42,\r\n alarmAddressBit: 1,\r\n rateOfChangeWarningAddress: 33,\r\n rateOfChangeWarningAddressBit: 6,\r\n rateOfChangeAlarmAddress: 2,\r\n rateOfChangeAlarmAddressBit: 16\r\n }, {\r\n id: 12,\r\n type: SensorTypeEnum.GearBoxTemperature,\r\n position: SensorPositionEnum.Head,\r\n side: EquipmentSideEnum.East,\r\n modbusAddress: 65536,\r\n warningAddress: 113,\r\n warningAddressBit: 2,\r\n alarmAddress: 42,\r\n alarmAddressBit: 1,\r\n rateOfChangeWarningAddress: 33,\r\n rateOfChangeWarningAddressBit: 6,\r\n rateOfChangeAlarmAddress: 2,\r\n rateOfChangeAlarmAddressBit: 16\r\n }, {\r\n id: 13,\r\n type: SensorTypeEnum.GearBoxTemperature,\r\n position: SensorPositionEnum.Head,\r\n side: EquipmentSideEnum.West,\r\n modbusAddress: 65536,\r\n warningAddress: 113,\r\n warningAddressBit: 2,\r\n alarmAddress: 42,\r\n alarmAddressBit: 1,\r\n rateOfChangeWarningAddress: 33,\r\n rateOfChangeWarningAddressBit: 6,\r\n rateOfChangeAlarmAddress: 2,\r\n rateOfChangeAlarmAddressBit: 16\r\n }, {\r\n id: 14,\r\n type: SensorTypeEnum.ShaftBearingTemperature,\r\n position: SensorPositionEnum.Boot,\r\n side: EquipmentSideEnum.East,\r\n modbusAddress: 65536,\r\n warningAddress: 113,\r\n warningAddressBit: 2,\r\n alarmAddress: 42,\r\n alarmAddressBit: 1,\r\n rateOfChangeWarningAddress: 33,\r\n rateOfChangeWarningAddressBit: 6,\r\n rateOfChangeAlarmAddress: 2,\r\n rateOfChangeAlarmAddressBit: 16\r\n }, {\r\n id: 15,\r\n type: SensorTypeEnum.ShaftBearingTemperature,\r\n position: SensorPositionEnum.Boot,\r\n side: EquipmentSideEnum.West,\r\n modbusAddress: 65536,\r\n warningAddress: 113,\r\n warningAddressBit: 2,\r\n alarmAddress: 42,\r\n alarmAddressBit: 1,\r\n rateOfChangeWarningAddress: 33,\r\n rateOfChangeWarningAddressBit: 6,\r\n rateOfChangeAlarmAddress: 2,\r\n rateOfChangeAlarmAddressBit: 16\r\n },\r\n {\r\n id: 16,\r\n type: SensorTypeEnum.CurrentAmpDraw,\r\n position: SensorPositionEnum.OnePerEquipment,\r\n side: EquipmentSideEnum.None,\r\n modbusAddress: 65536,\r\n warningAddress: 113,\r\n warningAddressBit: 2,\r\n alarmAddress: 42,\r\n alarmAddressBit: 1,\r\n rateOfChangeWarningAddress: null,\r\n rateOfChangeWarningAddressBit: null,\r\n rateOfChangeAlarmAddress: null,\r\n rateOfChangeAlarmAddressBit: null,\r\n },\r\n {\r\n id: 17,\r\n type: SensorTypeEnum.CurrentDesignLoad,\r\n position: SensorPositionEnum.OnePerEquipment,\r\n side: EquipmentSideEnum.None,\r\n modbusAddress: 65536,\r\n warningAddress: 113,\r\n warningAddressBit: 2,\r\n alarmAddress: 42,\r\n alarmAddressBit: 1,\r\n rateOfChangeWarningAddress: null,\r\n rateOfChangeWarningAddressBit: null,\r\n rateOfChangeAlarmAddress: null,\r\n rateOfChangeAlarmAddressBit: null,\r\n },\r\n {\r\n id: 18,\r\n type: SensorTypeEnum.Vibration,\r\n position: SensorPositionEnum.Motor,\r\n side: EquipmentSideEnum.None,\r\n modbusAddress: 65536,\r\n warningAddress: 113,\r\n warningAddressBit: 2,\r\n alarmAddress: 42,\r\n alarmAddressBit: 1,\r\n rateOfChangeWarningAddress: null,\r\n rateOfChangeWarningAddressBit: null,\r\n rateOfChangeAlarmAddress: null,\r\n rateOfChangeAlarmAddressBit: null,\r\n },\r\n {\r\n id: 19,\r\n type: SensorTypeEnum.Vibration,\r\n position: SensorPositionEnum.Frame,\r\n side: EquipmentSideEnum.None,\r\n modbusAddress: 65536,\r\n warningAddress: 113,\r\n warningAddressBit: 2,\r\n alarmAddress: 42,\r\n alarmAddressBit: 1,\r\n rateOfChangeWarningAddress: null,\r\n rateOfChangeWarningAddressBit: null,\r\n rateOfChangeAlarmAddress: null,\r\n rateOfChangeAlarmAddressBit: null,\r\n },\r\n ] as SensorViewModel[]\r\n },\r\n /* CONVEYOR */\r\n {\r\n id: 11,\r\n type: EquipmentTypeEnum.Conveyor,\r\n subType: EquipmentSubTypeEnum.Drag,\r\n name: 'Conveyor drag (East-West)',\r\n totalRunHoursFirstRegisterAddress: 1,\r\n totalRunHoursSecondRegisterAddress: 65536,\r\n timeTillMaintenanceAddress: 2,\r\n shutDownAlarmAddress: 3,\r\n shutDownAlarmAddressBit: 1,\r\n maintenanceRequiredWarningAddress: 3,\r\n maintenanceRequiredWarningAddressBit: 2,\r\n sensors: [{\r\n id: 1,\r\n type: SensorTypeEnum.BearingTemperature,\r\n position: SensorPositionEnum.Head,\r\n side: EquipmentSideEnum.East,\r\n modbusAddress: 65536,\r\n warningAddress: 113,\r\n warningAddressBit: 2,\r\n alarmAddress: 42,\r\n alarmAddressBit: 1,\r\n rateOfChangeWarningAddress: 33,\r\n rateOfChangeWarningAddressBit: 6,\r\n rateOfChangeAlarmAddress: 2,\r\n rateOfChangeAlarmAddressBit: 16\r\n }, {\r\n id: 2,\r\n type: SensorTypeEnum.BearingTemperature,\r\n position: SensorPositionEnum.Head,\r\n side: EquipmentSideEnum.West,\r\n modbusAddress: 65536,\r\n warningAddress: 113,\r\n warningAddressBit: 2,\r\n alarmAddress: 42,\r\n alarmAddressBit: 1,\r\n rateOfChangeWarningAddress: 33,\r\n rateOfChangeWarningAddressBit: 6,\r\n rateOfChangeAlarmAddress: 2,\r\n rateOfChangeAlarmAddressBit: 16\r\n }, {\r\n id: 3,\r\n type: SensorTypeEnum.BearingTemperature,\r\n position: SensorPositionEnum.Tail,\r\n side: EquipmentSideEnum.East,\r\n modbusAddress: 65536,\r\n warningAddress: 113,\r\n warningAddressBit: 2,\r\n alarmAddress: 42,\r\n alarmAddressBit: 1,\r\n rateOfChangeWarningAddress: 33,\r\n rateOfChangeWarningAddressBit: 6,\r\n rateOfChangeAlarmAddress: 2,\r\n rateOfChangeAlarmAddressBit: 16\r\n }, {\r\n id: 4,\r\n type: SensorTypeEnum.BearingTemperature,\r\n position: SensorPositionEnum.Tail,\r\n side: EquipmentSideEnum.West,\r\n modbusAddress: 65536,\r\n warningAddress: 113,\r\n warningAddressBit: 2,\r\n alarmAddress: 42,\r\n alarmAddressBit: 1,\r\n rateOfChangeWarningAddress: 33,\r\n rateOfChangeWarningAddressBit: 6,\r\n rateOfChangeAlarmAddress: 2,\r\n rateOfChangeAlarmAddressBit: 16\r\n }, {\r\n id: 5,\r\n type: SensorTypeEnum.Speed,\r\n position: SensorPositionEnum.OnePerEquipment,\r\n side: EquipmentSideEnum.None,\r\n modbusAddress: 65536,\r\n warningAddress: 113,\r\n warningAddressBit: 2,\r\n alarmAddress: 42,\r\n alarmAddressBit: 1,\r\n rateOfChangeWarningAddress: 33,\r\n rateOfChangeWarningAddressBit: 6,\r\n rateOfChangeAlarmAddress: 2,\r\n rateOfChangeAlarmAddressBit: 16\r\n },\r\n {\r\n id: 6,\r\n type: SensorTypeEnum.CurrentAmpDraw,\r\n position: SensorPositionEnum.OnePerEquipment,\r\n side: EquipmentSideEnum.None,\r\n modbusAddress: 65536,\r\n warningAddress: 113,\r\n warningAddressBit: 2,\r\n alarmAddress: 42,\r\n alarmAddressBit: 1,\r\n rateOfChangeWarningAddress: null,\r\n rateOfChangeWarningAddressBit: null,\r\n rateOfChangeAlarmAddress: null,\r\n rateOfChangeAlarmAddressBit: null,\r\n },\r\n {\r\n id: 7,\r\n type: SensorTypeEnum.CurrentDesignLoad,\r\n position: SensorPositionEnum.OnePerEquipment,\r\n side: EquipmentSideEnum.None,\r\n modbusAddress: 65536,\r\n warningAddress: 113,\r\n warningAddressBit: 2,\r\n alarmAddress: 42,\r\n alarmAddressBit: 1,\r\n rateOfChangeWarningAddress: null,\r\n rateOfChangeWarningAddressBit: null,\r\n rateOfChangeAlarmAddress: null,\r\n rateOfChangeAlarmAddressBit: null,\r\n },\r\n {\r\n id: 8,\r\n type: SensorTypeEnum.Vibration,\r\n position: SensorPositionEnum.Motor,\r\n side: EquipmentSideEnum.None,\r\n modbusAddress: 65536,\r\n warningAddress: 113,\r\n warningAddressBit: 2,\r\n alarmAddress: 42,\r\n alarmAddressBit: 1,\r\n rateOfChangeWarningAddress: null,\r\n rateOfChangeWarningAddressBit: null,\r\n rateOfChangeAlarmAddress: null,\r\n rateOfChangeAlarmAddressBit: null,\r\n },\r\n {\r\n id: 9,\r\n type: SensorTypeEnum.Vibration,\r\n position: SensorPositionEnum.Frame,\r\n side: EquipmentSideEnum.None,\r\n modbusAddress: 65536,\r\n warningAddress: 113,\r\n warningAddressBit: 2,\r\n alarmAddress: 42,\r\n alarmAddressBit: 1,\r\n rateOfChangeWarningAddress: null,\r\n rateOfChangeWarningAddressBit: null,\r\n rateOfChangeAlarmAddress: null,\r\n rateOfChangeAlarmAddressBit: null,\r\n },\r\n ] as SensorViewModel[]\r\n },\r\n {\r\n id: 12,\r\n type: EquipmentTypeEnum.Conveyor,\r\n subType: EquipmentSubTypeEnum.Belt,\r\n name: 'Conveyor belt (East-West)',\r\n totalRunHoursFirstRegisterAddress: 1,\r\n totalRunHoursSecondRegisterAddress: 65536,\r\n timeTillMaintenanceAddress: 2,\r\n shutDownAlarmAddress: 3,\r\n shutDownAlarmAddressBit: 1,\r\n maintenanceRequiredWarningAddress: 3,\r\n maintenanceRequiredWarningAddressBit: 2,\r\n sensors: [{\r\n id: 1,\r\n type: SensorTypeEnum.BearingTemperature,\r\n position: SensorPositionEnum.Head,\r\n side: EquipmentSideEnum.East,\r\n modbusAddress: 65536,\r\n warningAddress: 113,\r\n warningAddressBit: 2,\r\n alarmAddress: 42,\r\n alarmAddressBit: 1,\r\n rateOfChangeWarningAddress: 33,\r\n rateOfChangeWarningAddressBit: 6,\r\n rateOfChangeAlarmAddress: 2,\r\n rateOfChangeAlarmAddressBit: 16\r\n }, {\r\n id: 2,\r\n type: SensorTypeEnum.BearingTemperature,\r\n position: SensorPositionEnum.Head,\r\n side: EquipmentSideEnum.West,\r\n modbusAddress: 65536,\r\n warningAddress: 113,\r\n warningAddressBit: 2,\r\n alarmAddress: 42,\r\n alarmAddressBit: 1,\r\n rateOfChangeWarningAddress: 33,\r\n rateOfChangeWarningAddressBit: 6,\r\n rateOfChangeAlarmAddress: 2,\r\n rateOfChangeAlarmAddressBit: 16\r\n }, {\r\n id: 3,\r\n type: SensorTypeEnum.BearingTemperature,\r\n position: SensorPositionEnum.Tail,\r\n side: EquipmentSideEnum.East,\r\n modbusAddress: 65536,\r\n warningAddress: 113,\r\n warningAddressBit: 2,\r\n alarmAddress: 42,\r\n alarmAddressBit: 1,\r\n rateOfChangeWarningAddress: 33,\r\n rateOfChangeWarningAddressBit: 6,\r\n rateOfChangeAlarmAddress: 2,\r\n rateOfChangeAlarmAddressBit: 16\r\n }, {\r\n id: 4,\r\n type: SensorTypeEnum.BearingTemperature,\r\n position: SensorPositionEnum.Tail,\r\n side: EquipmentSideEnum.West,\r\n modbusAddress: 65536,\r\n warningAddress: 113,\r\n warningAddressBit: 2,\r\n alarmAddress: 42,\r\n alarmAddressBit: 1,\r\n rateOfChangeWarningAddress: 33,\r\n rateOfChangeWarningAddressBit: 6,\r\n rateOfChangeAlarmAddress: 2,\r\n rateOfChangeAlarmAddressBit: 16\r\n }, {\r\n id: 5,\r\n type: SensorTypeEnum.BearingTemperature,\r\n position: SensorPositionEnum.BendHead,\r\n side: EquipmentSideEnum.East,\r\n modbusAddress: 65536,\r\n warningAddress: 113,\r\n warningAddressBit: 2,\r\n alarmAddress: 42,\r\n alarmAddressBit: 1,\r\n rateOfChangeWarningAddress: 33,\r\n rateOfChangeWarningAddressBit: 6,\r\n rateOfChangeAlarmAddress: 2,\r\n rateOfChangeAlarmAddressBit: 16\r\n }, {\r\n id: 6,\r\n type: SensorTypeEnum.BearingTemperature,\r\n position: SensorPositionEnum.BendHead,\r\n side: EquipmentSideEnum.West,\r\n modbusAddress: 65536,\r\n warningAddress: 113,\r\n warningAddressBit: 2,\r\n alarmAddress: 42,\r\n alarmAddressBit: 1,\r\n rateOfChangeWarningAddress: 33,\r\n rateOfChangeWarningAddressBit: 6,\r\n rateOfChangeAlarmAddress: 2,\r\n rateOfChangeAlarmAddressBit: 16\r\n }, {\r\n id: 7,\r\n type: SensorTypeEnum.BearingTemperature,\r\n position: SensorPositionEnum.BendTail,\r\n side: EquipmentSideEnum.East,\r\n modbusAddress: 65536,\r\n warningAddress: 113,\r\n warningAddressBit: 2,\r\n alarmAddress: 42,\r\n alarmAddressBit: 1,\r\n rateOfChangeWarningAddress: 33,\r\n rateOfChangeWarningAddressBit: 6,\r\n rateOfChangeAlarmAddress: 2,\r\n rateOfChangeAlarmAddressBit: 16\r\n }, {\r\n id: 8,\r\n type: SensorTypeEnum.BearingTemperature,\r\n position: SensorPositionEnum.BendTail,\r\n side: EquipmentSideEnum.West,\r\n modbusAddress: 65536,\r\n warningAddress: 113,\r\n warningAddressBit: 2,\r\n alarmAddress: 42,\r\n alarmAddressBit: 1,\r\n rateOfChangeWarningAddress: 33,\r\n rateOfChangeWarningAddressBit: 6,\r\n rateOfChangeAlarmAddress: 2,\r\n rateOfChangeAlarmAddressBit: 16\r\n }, {\r\n id: 9,\r\n type: SensorTypeEnum.BearingTemperature,\r\n position: SensorPositionEnum.SnubHead,\r\n side: EquipmentSideEnum.East,\r\n modbusAddress: 65536,\r\n warningAddress: 113,\r\n warningAddressBit: 2,\r\n alarmAddress: 42,\r\n alarmAddressBit: 1,\r\n rateOfChangeWarningAddress: 33,\r\n rateOfChangeWarningAddressBit: 6,\r\n rateOfChangeAlarmAddress: 2,\r\n rateOfChangeAlarmAddressBit: 16\r\n }, {\r\n id: 10,\r\n type: SensorTypeEnum.BearingTemperature,\r\n position: SensorPositionEnum.SnubHead,\r\n side: EquipmentSideEnum.West,\r\n modbusAddress: 65536,\r\n warningAddress: 113,\r\n warningAddressBit: 2,\r\n alarmAddress: 42,\r\n alarmAddressBit: 1,\r\n rateOfChangeWarningAddress: 33,\r\n rateOfChangeWarningAddressBit: 6,\r\n rateOfChangeAlarmAddress: 2,\r\n rateOfChangeAlarmAddressBit: 16\r\n }, {\r\n id: 11,\r\n type: SensorTypeEnum.BearingTemperature,\r\n position: SensorPositionEnum.SnubTail,\r\n side: EquipmentSideEnum.East,\r\n modbusAddress: 65536,\r\n warningAddress: 113,\r\n warningAddressBit: 2,\r\n alarmAddress: 42,\r\n alarmAddressBit: 1,\r\n rateOfChangeWarningAddress: 33,\r\n rateOfChangeWarningAddressBit: 6,\r\n rateOfChangeAlarmAddress: 2,\r\n rateOfChangeAlarmAddressBit: 16\r\n }, {\r\n id: 12,\r\n type: SensorTypeEnum.BearingTemperature,\r\n position: SensorPositionEnum.SnubTail,\r\n side: EquipmentSideEnum.West,\r\n modbusAddress: 65536,\r\n warningAddress: 113,\r\n warningAddressBit: 2,\r\n alarmAddress: 42,\r\n alarmAddressBit: 1,\r\n rateOfChangeWarningAddress: 33,\r\n rateOfChangeWarningAddressBit: 6,\r\n rateOfChangeAlarmAddress: 2,\r\n rateOfChangeAlarmAddressBit: 16\r\n }, {\r\n id: 13,\r\n type: SensorTypeEnum.BearingTemperature,\r\n position: SensorPositionEnum.KneeHead,\r\n side: EquipmentSideEnum.East,\r\n modbusAddress: 65536,\r\n warningAddress: 113,\r\n warningAddressBit: 2,\r\n alarmAddress: 42,\r\n alarmAddressBit: 1,\r\n rateOfChangeWarningAddress: 33,\r\n rateOfChangeWarningAddressBit: 6,\r\n rateOfChangeAlarmAddress: 2,\r\n rateOfChangeAlarmAddressBit: 16\r\n }, {\r\n id: 14,\r\n type: SensorTypeEnum.BearingTemperature,\r\n position: SensorPositionEnum.KneeHead,\r\n side: EquipmentSideEnum.West,\r\n modbusAddress: 65536,\r\n warningAddress: 113,\r\n warningAddressBit: 2,\r\n alarmAddress: 42,\r\n alarmAddressBit: 1,\r\n rateOfChangeWarningAddress: 33,\r\n rateOfChangeWarningAddressBit: 6,\r\n rateOfChangeAlarmAddress: 2,\r\n rateOfChangeAlarmAddressBit: 16\r\n }, {\r\n id: 15,\r\n type: SensorTypeEnum.BearingTemperature,\r\n position: SensorPositionEnum.KneeTail,\r\n side: EquipmentSideEnum.East,\r\n modbusAddress: 65536,\r\n warningAddress: 113,\r\n warningAddressBit: 2,\r\n alarmAddress: 42,\r\n alarmAddressBit: 1,\r\n rateOfChangeWarningAddress: 33,\r\n rateOfChangeWarningAddressBit: 6,\r\n rateOfChangeAlarmAddress: 2,\r\n rateOfChangeAlarmAddressBit: 16\r\n }, {\r\n id: 16,\r\n type: SensorTypeEnum.BearingTemperature,\r\n position: SensorPositionEnum.KneeTail,\r\n side: EquipmentSideEnum.West,\r\n modbusAddress: 65536,\r\n warningAddress: 113,\r\n warningAddressBit: 2,\r\n alarmAddress: 42,\r\n alarmAddressBit: 1,\r\n rateOfChangeWarningAddress: 33,\r\n rateOfChangeWarningAddressBit: 6,\r\n rateOfChangeAlarmAddress: 2,\r\n rateOfChangeAlarmAddressBit: 16\r\n }, {\r\n id: 17,\r\n type: SensorTypeEnum.BearingTemperature,\r\n position: SensorPositionEnum.UpperTripperHead,\r\n side: EquipmentSideEnum.East,\r\n modbusAddress: 65536,\r\n warningAddress: 113,\r\n warningAddressBit: 2,\r\n alarmAddress: 42,\r\n alarmAddressBit: 1,\r\n rateOfChangeWarningAddress: 33,\r\n rateOfChangeWarningAddressBit: 6,\r\n rateOfChangeAlarmAddress: 2,\r\n rateOfChangeAlarmAddressBit: 16\r\n }, {\r\n id: 18,\r\n type: SensorTypeEnum.BearingTemperature,\r\n position: SensorPositionEnum.UpperTripperHead,\r\n side: EquipmentSideEnum.West,\r\n modbusAddress: 65536,\r\n warningAddress: 113,\r\n warningAddressBit: 2,\r\n alarmAddress: 42,\r\n alarmAddressBit: 1,\r\n rateOfChangeWarningAddress: 33,\r\n rateOfChangeWarningAddressBit: 6,\r\n rateOfChangeAlarmAddress: 2,\r\n rateOfChangeAlarmAddressBit: 16\r\n }, {\r\n id: 19,\r\n type: SensorTypeEnum.BearingTemperature,\r\n position: SensorPositionEnum.UpperTripperTail,\r\n side: EquipmentSideEnum.East,\r\n modbusAddress: 65536,\r\n warningAddress: 113,\r\n warningAddressBit: 2,\r\n alarmAddress: 42,\r\n alarmAddressBit: 1,\r\n rateOfChangeWarningAddress: 33,\r\n rateOfChangeWarningAddressBit: 6,\r\n rateOfChangeAlarmAddress: 2,\r\n rateOfChangeAlarmAddressBit: 16\r\n }, {\r\n id: 20,\r\n type: SensorTypeEnum.BearingTemperature,\r\n position: SensorPositionEnum.UpperTripperTail,\r\n side: EquipmentSideEnum.West,\r\n modbusAddress: 65536,\r\n warningAddress: 113,\r\n warningAddressBit: 2,\r\n alarmAddress: 42,\r\n alarmAddressBit: 1,\r\n rateOfChangeWarningAddress: 33,\r\n rateOfChangeWarningAddressBit: 6,\r\n rateOfChangeAlarmAddress: 2,\r\n rateOfChangeAlarmAddressBit: 16\r\n }, {\r\n id: 21,\r\n type: SensorTypeEnum.BearingTemperature,\r\n position: SensorPositionEnum.LowerTripperHead,\r\n side: EquipmentSideEnum.East,\r\n modbusAddress: 65536,\r\n warningAddress: 113,\r\n warningAddressBit: 2,\r\n alarmAddress: 42,\r\n alarmAddressBit: 1,\r\n rateOfChangeWarningAddress: 33,\r\n rateOfChangeWarningAddressBit: 6,\r\n rateOfChangeAlarmAddress: 2,\r\n rateOfChangeAlarmAddressBit: 16\r\n }, {\r\n id: 22,\r\n type: SensorTypeEnum.BearingTemperature,\r\n position: SensorPositionEnum.LowerTripperHead,\r\n side: EquipmentSideEnum.West,\r\n modbusAddress: 65536,\r\n warningAddress: 113,\r\n warningAddressBit: 2,\r\n alarmAddress: 42,\r\n alarmAddressBit: 1,\r\n rateOfChangeWarningAddress: 33,\r\n rateOfChangeWarningAddressBit: 6,\r\n rateOfChangeAlarmAddress: 2,\r\n rateOfChangeAlarmAddressBit: 16\r\n }, {\r\n id: 23,\r\n type: SensorTypeEnum.BearingTemperature,\r\n position: SensorPositionEnum.LowerTripperTail,\r\n side: EquipmentSideEnum.East,\r\n modbusAddress: 65536,\r\n warningAddress: 113,\r\n warningAddressBit: 2,\r\n alarmAddress: 42,\r\n alarmAddressBit: 1,\r\n rateOfChangeWarningAddress: 33,\r\n rateOfChangeWarningAddressBit: 6,\r\n rateOfChangeAlarmAddress: 2,\r\n rateOfChangeAlarmAddressBit: 16\r\n }, {\r\n id: 24,\r\n type: SensorTypeEnum.BearingTemperature,\r\n position: SensorPositionEnum.LowerTripperTail,\r\n side: EquipmentSideEnum.West,\r\n modbusAddress: 65536,\r\n warningAddress: 113,\r\n warningAddressBit: 2,\r\n alarmAddress: 42,\r\n alarmAddressBit: 1,\r\n rateOfChangeWarningAddress: 33,\r\n rateOfChangeWarningAddressBit: 6,\r\n rateOfChangeAlarmAddress: 2,\r\n rateOfChangeAlarmAddressBit: 16\r\n }, {\r\n id: 25,\r\n type: SensorTypeEnum.RubBlockTemperature,\r\n position: SensorPositionEnum.Head,\r\n side: EquipmentSideEnum.East,\r\n modbusAddress: 65536,\r\n warningAddress: 113,\r\n warningAddressBit: 2,\r\n alarmAddress: 42,\r\n alarmAddressBit: 1,\r\n rateOfChangeWarningAddress: 33,\r\n rateOfChangeWarningAddressBit: 6,\r\n rateOfChangeAlarmAddress: 2,\r\n rateOfChangeAlarmAddressBit: 16\r\n }, {\r\n id: 26,\r\n type: SensorTypeEnum.RubBlockTemperature,\r\n position: SensorPositionEnum.Head,\r\n side: EquipmentSideEnum.West,\r\n modbusAddress: 65536,\r\n warningAddress: 113,\r\n warningAddressBit: 2,\r\n alarmAddress: 42,\r\n alarmAddressBit: 1,\r\n rateOfChangeWarningAddress: 33,\r\n rateOfChangeWarningAddressBit: 6,\r\n rateOfChangeAlarmAddress: 2,\r\n rateOfChangeAlarmAddressBit: 16\r\n }, {\r\n id: 27,\r\n type: SensorTypeEnum.RubBlockTemperature,\r\n position: SensorPositionEnum.Tail,\r\n side: EquipmentSideEnum.East,\r\n modbusAddress: 65536,\r\n warningAddress: 113,\r\n warningAddressBit: 2,\r\n alarmAddress: 42,\r\n alarmAddressBit: 1,\r\n rateOfChangeWarningAddress: 33,\r\n rateOfChangeWarningAddressBit: 6,\r\n rateOfChangeAlarmAddress: 2,\r\n rateOfChangeAlarmAddressBit: 16\r\n }, {\r\n id: 28,\r\n type: SensorTypeEnum.RubBlockTemperature,\r\n position: SensorPositionEnum.Tail,\r\n side: EquipmentSideEnum.West,\r\n modbusAddress: 65536,\r\n warningAddress: 113,\r\n warningAddressBit: 2,\r\n alarmAddress: 42,\r\n alarmAddressBit: 1,\r\n rateOfChangeWarningAddress: 33,\r\n rateOfChangeWarningAddressBit: 6,\r\n rateOfChangeAlarmAddress: 2,\r\n rateOfChangeAlarmAddressBit: 16\r\n }, {\r\n id: 29,\r\n type: SensorTypeEnum.RubBlockTemperature,\r\n position: SensorPositionEnum.BendHead,\r\n side: EquipmentSideEnum.East,\r\n modbusAddress: 65536,\r\n warningAddress: 113,\r\n warningAddressBit: 2,\r\n alarmAddress: 42,\r\n alarmAddressBit: 1,\r\n rateOfChangeWarningAddress: 33,\r\n rateOfChangeWarningAddressBit: 6,\r\n rateOfChangeAlarmAddress: 2,\r\n rateOfChangeAlarmAddressBit: 16\r\n }, {\r\n id: 30,\r\n type: SensorTypeEnum.RubBlockTemperature,\r\n position: SensorPositionEnum.BendHead,\r\n side: EquipmentSideEnum.West,\r\n modbusAddress: 65536,\r\n warningAddress: 113,\r\n warningAddressBit: 2,\r\n alarmAddress: 42,\r\n alarmAddressBit: 1,\r\n rateOfChangeWarningAddress: 33,\r\n rateOfChangeWarningAddressBit: 6,\r\n rateOfChangeAlarmAddress: 2,\r\n rateOfChangeAlarmAddressBit: 16\r\n }, {\r\n id: 31,\r\n type: SensorTypeEnum.RubBlockTemperature,\r\n position: SensorPositionEnum.BendTail,\r\n side: EquipmentSideEnum.East,\r\n modbusAddress: 65536,\r\n warningAddress: 113,\r\n warningAddressBit: 2,\r\n alarmAddress: 42,\r\n alarmAddressBit: 1,\r\n rateOfChangeWarningAddress: 33,\r\n rateOfChangeWarningAddressBit: 6,\r\n rateOfChangeAlarmAddress: 2,\r\n rateOfChangeAlarmAddressBit: 16\r\n }, {\r\n id: 32,\r\n type: SensorTypeEnum.RubBlockTemperature,\r\n position: SensorPositionEnum.BendTail,\r\n side: EquipmentSideEnum.West,\r\n modbusAddress: 65536,\r\n warningAddress: 113,\r\n warningAddressBit: 2,\r\n alarmAddress: 42,\r\n alarmAddressBit: 1,\r\n rateOfChangeWarningAddress: 33,\r\n rateOfChangeWarningAddressBit: 6,\r\n rateOfChangeAlarmAddress: 2,\r\n rateOfChangeAlarmAddressBit: 16\r\n }, {\r\n id: 33,\r\n type: SensorTypeEnum.RubBlockTemperature,\r\n position: SensorPositionEnum.SnubHead,\r\n side: EquipmentSideEnum.East,\r\n modbusAddress: 65536,\r\n warningAddress: 113,\r\n warningAddressBit: 2,\r\n alarmAddress: 42,\r\n alarmAddressBit: 1,\r\n rateOfChangeWarningAddress: 33,\r\n rateOfChangeWarningAddressBit: 6,\r\n rateOfChangeAlarmAddress: 2,\r\n rateOfChangeAlarmAddressBit: 16\r\n }, {\r\n id: 34,\r\n type: SensorTypeEnum.RubBlockTemperature,\r\n position: SensorPositionEnum.SnubHead,\r\n side: EquipmentSideEnum.West,\r\n modbusAddress: 65536,\r\n warningAddress: 113,\r\n warningAddressBit: 2,\r\n alarmAddress: 42,\r\n alarmAddressBit: 1,\r\n rateOfChangeWarningAddress: 33,\r\n rateOfChangeWarningAddressBit: 6,\r\n rateOfChangeAlarmAddress: 2,\r\n rateOfChangeAlarmAddressBit: 16\r\n }, {\r\n id: 35,\r\n type: SensorTypeEnum.RubBlockTemperature,\r\n position: SensorPositionEnum.SnubTail,\r\n side: EquipmentSideEnum.East,\r\n modbusAddress: 65536,\r\n warningAddress: 113,\r\n warningAddressBit: 2,\r\n alarmAddress: 42,\r\n alarmAddressBit: 1,\r\n rateOfChangeWarningAddress: 33,\r\n rateOfChangeWarningAddressBit: 6,\r\n rateOfChangeAlarmAddress: 2,\r\n rateOfChangeAlarmAddressBit: 16\r\n }, {\r\n id: 36,\r\n type: SensorTypeEnum.RubBlockTemperature,\r\n position: SensorPositionEnum.SnubTail,\r\n side: EquipmentSideEnum.West,\r\n modbusAddress: 65536,\r\n warningAddress: 113,\r\n warningAddressBit: 2,\r\n alarmAddress: 42,\r\n alarmAddressBit: 1,\r\n rateOfChangeWarningAddress: 33,\r\n rateOfChangeWarningAddressBit: 6,\r\n rateOfChangeAlarmAddress: 2,\r\n rateOfChangeAlarmAddressBit: 16\r\n }, {\r\n id: 37,\r\n type: SensorTypeEnum.RubBlockTemperature,\r\n position: SensorPositionEnum.KneeHead,\r\n side: EquipmentSideEnum.East,\r\n modbusAddress: 65536,\r\n warningAddress: 113,\r\n warningAddressBit: 2,\r\n alarmAddress: 42,\r\n alarmAddressBit: 1,\r\n rateOfChangeWarningAddress: 33,\r\n rateOfChangeWarningAddressBit: 6,\r\n rateOfChangeAlarmAddress: 2,\r\n rateOfChangeAlarmAddressBit: 16\r\n }, {\r\n id: 38,\r\n type: SensorTypeEnum.RubBlockTemperature,\r\n position: SensorPositionEnum.KneeHead,\r\n side: EquipmentSideEnum.West,\r\n modbusAddress: 65536,\r\n warningAddress: 113,\r\n warningAddressBit: 2,\r\n alarmAddress: 42,\r\n alarmAddressBit: 1,\r\n rateOfChangeWarningAddress: 33,\r\n rateOfChangeWarningAddressBit: 6,\r\n rateOfChangeAlarmAddress: 2,\r\n rateOfChangeAlarmAddressBit: 16\r\n }, {\r\n id: 39,\r\n type: SensorTypeEnum.RubBlockTemperature,\r\n position: SensorPositionEnum.KneeTail,\r\n side: EquipmentSideEnum.East,\r\n modbusAddress: 65536,\r\n warningAddress: 113,\r\n warningAddressBit: 2,\r\n alarmAddress: 42,\r\n alarmAddressBit: 1,\r\n rateOfChangeWarningAddress: 33,\r\n rateOfChangeWarningAddressBit: 6,\r\n rateOfChangeAlarmAddress: 2,\r\n rateOfChangeAlarmAddressBit: 16\r\n }, {\r\n id: 40,\r\n type: SensorTypeEnum.RubBlockTemperature,\r\n position: SensorPositionEnum.KneeTail,\r\n side: EquipmentSideEnum.West,\r\n modbusAddress: 65536,\r\n warningAddress: 113,\r\n warningAddressBit: 2,\r\n alarmAddress: 42,\r\n alarmAddressBit: 1,\r\n rateOfChangeWarningAddress: 33,\r\n rateOfChangeWarningAddressBit: 6,\r\n rateOfChangeAlarmAddress: 2,\r\n rateOfChangeAlarmAddressBit: 16\r\n }, {\r\n id: 41,\r\n type: SensorTypeEnum.Speed,\r\n position: SensorPositionEnum.OnePerEquipment,\r\n side: EquipmentSideEnum.None,\r\n modbusAddress: 65536,\r\n warningAddress: 113,\r\n warningAddressBit: 2,\r\n alarmAddress: 42,\r\n alarmAddressBit: 1,\r\n rateOfChangeWarningAddress: 33,\r\n rateOfChangeWarningAddressBit: 6,\r\n rateOfChangeAlarmAddress: 2,\r\n rateOfChangeAlarmAddressBit: 16\r\n },\r\n {\r\n id: 42,\r\n type: SensorTypeEnum.CurrentAmpDraw,\r\n position: SensorPositionEnum.OnePerEquipment,\r\n side: EquipmentSideEnum.None,\r\n modbusAddress: 65536,\r\n warningAddress: 113,\r\n warningAddressBit: 2,\r\n alarmAddress: 42,\r\n alarmAddressBit: 1,\r\n rateOfChangeWarningAddress: null,\r\n rateOfChangeWarningAddressBit: null,\r\n rateOfChangeAlarmAddress: null,\r\n rateOfChangeAlarmAddressBit: null,\r\n },\r\n {\r\n id: 43,\r\n type: SensorTypeEnum.CurrentDesignLoad,\r\n position: SensorPositionEnum.OnePerEquipment,\r\n side: EquipmentSideEnum.None,\r\n modbusAddress: 65536,\r\n warningAddress: 113,\r\n warningAddressBit: 2,\r\n alarmAddress: 42,\r\n alarmAddressBit: 1,\r\n rateOfChangeWarningAddress: null,\r\n rateOfChangeWarningAddressBit: null,\r\n rateOfChangeAlarmAddress: null,\r\n rateOfChangeAlarmAddressBit: null,\r\n },\r\n {\r\n id: 44,\r\n type: SensorTypeEnum.Vibration,\r\n position: SensorPositionEnum.Motor,\r\n side: EquipmentSideEnum.None,\r\n modbusAddress: 65536,\r\n warningAddress: 113,\r\n warningAddressBit: 2,\r\n alarmAddress: 42,\r\n alarmAddressBit: 1,\r\n rateOfChangeWarningAddress: null,\r\n rateOfChangeWarningAddressBit: null,\r\n rateOfChangeAlarmAddress: null,\r\n rateOfChangeAlarmAddressBit: null,\r\n },\r\n {\r\n id: 45,\r\n type: SensorTypeEnum.Vibration,\r\n position: SensorPositionEnum.Frame,\r\n side: EquipmentSideEnum.None,\r\n modbusAddress: 65536,\r\n warningAddress: 113,\r\n warningAddressBit: 2,\r\n alarmAddress: 42,\r\n alarmAddressBit: 1,\r\n rateOfChangeWarningAddress: null,\r\n rateOfChangeWarningAddressBit: null,\r\n rateOfChangeAlarmAddress: null,\r\n rateOfChangeAlarmAddressBit: null,\r\n },\r\n ] as SensorViewModel[]\r\n },\r\n {\r\n id: 13,\r\n type: EquipmentTypeEnum.Conveyor,\r\n subType: EquipmentSubTypeEnum.Screw,\r\n name: 'Conveyor screw (None)',\r\n totalRunHoursFirstRegisterAddress: 1,\r\n totalRunHoursSecondRegisterAddress: 65536,\r\n timeTillMaintenanceAddress: 2,\r\n shutDownAlarmAddress: 3,\r\n shutDownAlarmAddressBit: 1,\r\n maintenanceRequiredWarningAddress: 3,\r\n maintenanceRequiredWarningAddressBit: 2,\r\n sensors: [{\r\n id: 1,\r\n type: SensorTypeEnum.BearingTemperature,\r\n position: SensorPositionEnum.Head,\r\n side: EquipmentSideEnum.None,\r\n modbusAddress: 65536,\r\n warningAddress: 113,\r\n warningAddressBit: 2,\r\n alarmAddress: 42,\r\n alarmAddressBit: 1,\r\n rateOfChangeWarningAddress: 33,\r\n rateOfChangeWarningAddressBit: 6,\r\n rateOfChangeAlarmAddress: 2,\r\n rateOfChangeAlarmAddressBit: 16\r\n }, {\r\n id: 2,\r\n type: SensorTypeEnum.BearingTemperature,\r\n position: SensorPositionEnum.Tail,\r\n side: EquipmentSideEnum.None,\r\n modbusAddress: 65536,\r\n warningAddress: 113,\r\n warningAddressBit: 2,\r\n alarmAddress: 42,\r\n alarmAddressBit: 1,\r\n rateOfChangeWarningAddress: 33,\r\n rateOfChangeWarningAddressBit: 6,\r\n rateOfChangeAlarmAddress: 2,\r\n rateOfChangeAlarmAddressBit: 16\r\n }, {\r\n id: 3,\r\n type: SensorTypeEnum.Speed,\r\n position: SensorPositionEnum.OnePerEquipment,\r\n side: EquipmentSideEnum.None,\r\n modbusAddress: 65536,\r\n warningAddress: 113,\r\n warningAddressBit: 2,\r\n alarmAddress: 42,\r\n alarmAddressBit: 1,\r\n rateOfChangeWarningAddress: 33,\r\n rateOfChangeWarningAddressBit: 6,\r\n rateOfChangeAlarmAddress: 2,\r\n rateOfChangeAlarmAddressBit: 16\r\n },\r\n {\r\n id: 4,\r\n type: SensorTypeEnum.CurrentAmpDraw,\r\n position: SensorPositionEnum.OnePerEquipment,\r\n side: EquipmentSideEnum.None,\r\n modbusAddress: 65536,\r\n warningAddress: 113,\r\n warningAddressBit: 2,\r\n alarmAddress: 42,\r\n alarmAddressBit: 1,\r\n rateOfChangeWarningAddress: null,\r\n rateOfChangeWarningAddressBit: null,\r\n rateOfChangeAlarmAddress: null,\r\n rateOfChangeAlarmAddressBit: null,\r\n },\r\n {\r\n id: 5,\r\n type: SensorTypeEnum.CurrentDesignLoad,\r\n position: SensorPositionEnum.OnePerEquipment,\r\n side: EquipmentSideEnum.None,\r\n modbusAddress: 65536,\r\n warningAddress: 113,\r\n warningAddressBit: 2,\r\n alarmAddress: 42,\r\n alarmAddressBit: 1,\r\n rateOfChangeWarningAddress: null,\r\n rateOfChangeWarningAddressBit: null,\r\n rateOfChangeAlarmAddress: null,\r\n rateOfChangeAlarmAddressBit: null,\r\n },\r\n {\r\n id: 6,\r\n type: SensorTypeEnum.Vibration,\r\n position: SensorPositionEnum.Motor,\r\n side: EquipmentSideEnum.None,\r\n modbusAddress: 65536,\r\n warningAddress: 113,\r\n warningAddressBit: 2,\r\n alarmAddress: 42,\r\n alarmAddressBit: 1,\r\n rateOfChangeWarningAddress: null,\r\n rateOfChangeWarningAddressBit: null,\r\n rateOfChangeAlarmAddress: null,\r\n rateOfChangeAlarmAddressBit: null,\r\n },\r\n {\r\n id: 7,\r\n type: SensorTypeEnum.Vibration,\r\n position: SensorPositionEnum.Frame,\r\n side: EquipmentSideEnum.None,\r\n modbusAddress: 65536,\r\n warningAddress: 113,\r\n warningAddressBit: 2,\r\n alarmAddress: 42,\r\n alarmAddressBit: 1,\r\n rateOfChangeWarningAddress: null,\r\n rateOfChangeWarningAddressBit: null,\r\n rateOfChangeAlarmAddress: null,\r\n rateOfChangeAlarmAddressBit: null,\r\n },\r\n ] as SensorViewModel[]\r\n },\r\n {\r\n id: 14,\r\n type: EquipmentTypeEnum.Conveyor,\r\n subType: EquipmentSubTypeEnum.CoveredBelt,\r\n name: 'Conveyor covered belt (East-West)',\r\n totalRunHoursFirstRegisterAddress: 1,\r\n totalRunHoursSecondRegisterAddress: 65536,\r\n timeTillMaintenanceAddress: 2,\r\n shutDownAlarmAddress: 3,\r\n shutDownAlarmAddressBit: 1,\r\n maintenanceRequiredWarningAddress: 3,\r\n maintenanceRequiredWarningAddressBit: 2,\r\n sensors: [{\r\n id: 1,\r\n type: SensorTypeEnum.BearingTemperature,\r\n position: SensorPositionEnum.Head,\r\n side: EquipmentSideEnum.East,\r\n modbusAddress: 65536,\r\n warningAddress: 113,\r\n warningAddressBit: 2,\r\n alarmAddress: 42,\r\n alarmAddressBit: 1,\r\n rateOfChangeWarningAddress: 33,\r\n rateOfChangeWarningAddressBit: 6,\r\n rateOfChangeAlarmAddress: 2,\r\n rateOfChangeAlarmAddressBit: 16\r\n }, {\r\n id: 2,\r\n type: SensorTypeEnum.BearingTemperature,\r\n position: SensorPositionEnum.Head,\r\n side: EquipmentSideEnum.West,\r\n modbusAddress: 65536,\r\n warningAddress: 113,\r\n warningAddressBit: 2,\r\n alarmAddress: 42,\r\n alarmAddressBit: 1,\r\n rateOfChangeWarningAddress: 33,\r\n rateOfChangeWarningAddressBit: 6,\r\n rateOfChangeAlarmAddress: 2,\r\n rateOfChangeAlarmAddressBit: 16\r\n }, {\r\n id: 3,\r\n type: SensorTypeEnum.BearingTemperature,\r\n position: SensorPositionEnum.Tail,\r\n side: EquipmentSideEnum.East,\r\n modbusAddress: 65536,\r\n warningAddress: 113,\r\n warningAddressBit: 2,\r\n alarmAddress: 42,\r\n alarmAddressBit: 1,\r\n rateOfChangeWarningAddress: 33,\r\n rateOfChangeWarningAddressBit: 6,\r\n rateOfChangeAlarmAddress: 2,\r\n rateOfChangeAlarmAddressBit: 16\r\n }, {\r\n id: 4,\r\n type: SensorTypeEnum.BearingTemperature,\r\n position: SensorPositionEnum.Tail,\r\n side: EquipmentSideEnum.West,\r\n modbusAddress: 65536,\r\n warningAddress: 113,\r\n warningAddressBit: 2,\r\n alarmAddress: 42,\r\n alarmAddressBit: 1,\r\n rateOfChangeWarningAddress: 33,\r\n rateOfChangeWarningAddressBit: 6,\r\n rateOfChangeAlarmAddress: 2,\r\n rateOfChangeAlarmAddressBit: 16\r\n }, {\r\n id: 5,\r\n type: SensorTypeEnum.RubBlockTemperature,\r\n position: SensorPositionEnum.Head,\r\n side: EquipmentSideEnum.East,\r\n modbusAddress: 65536,\r\n warningAddress: 113,\r\n warningAddressBit: 2,\r\n alarmAddress: 42,\r\n alarmAddressBit: 1,\r\n rateOfChangeWarningAddress: 33,\r\n rateOfChangeWarningAddressBit: 6,\r\n rateOfChangeAlarmAddress: 2,\r\n rateOfChangeAlarmAddressBit: 16\r\n }, {\r\n id: 6,\r\n type: SensorTypeEnum.RubBlockTemperature,\r\n position: SensorPositionEnum.Head,\r\n side: EquipmentSideEnum.West,\r\n modbusAddress: 65536,\r\n warningAddress: 113,\r\n warningAddressBit: 2,\r\n alarmAddress: 42,\r\n alarmAddressBit: 1,\r\n rateOfChangeWarningAddress: 33,\r\n rateOfChangeWarningAddressBit: 6,\r\n rateOfChangeAlarmAddress: 2,\r\n rateOfChangeAlarmAddressBit: 16\r\n }, {\r\n id: 7,\r\n type: SensorTypeEnum.RubBlockTemperature,\r\n position: SensorPositionEnum.Tail,\r\n side: EquipmentSideEnum.East,\r\n modbusAddress: 65536,\r\n warningAddress: 113,\r\n warningAddressBit: 2,\r\n alarmAddress: 42,\r\n alarmAddressBit: 1,\r\n rateOfChangeWarningAddress: 33,\r\n rateOfChangeWarningAddressBit: 6,\r\n rateOfChangeAlarmAddress: 2,\r\n rateOfChangeAlarmAddressBit: 16\r\n }, {\r\n id: 8,\r\n type: SensorTypeEnum.RubBlockTemperature,\r\n position: SensorPositionEnum.Tail,\r\n side: EquipmentSideEnum.West,\r\n modbusAddress: 65536,\r\n warningAddress: 113,\r\n warningAddressBit: 2,\r\n alarmAddress: 42,\r\n alarmAddressBit: 1,\r\n rateOfChangeWarningAddress: 33,\r\n rateOfChangeWarningAddressBit: 6,\r\n rateOfChangeAlarmAddress: 2,\r\n rateOfChangeAlarmAddressBit: 16\r\n }, {\r\n id: 9,\r\n type: SensorTypeEnum.Speed,\r\n position: SensorPositionEnum.OnePerEquipment,\r\n side: EquipmentSideEnum.None,\r\n modbusAddress: 65536,\r\n warningAddress: 113,\r\n warningAddressBit: 2,\r\n alarmAddress: 42,\r\n alarmAddressBit: 1,\r\n rateOfChangeWarningAddress: 33,\r\n rateOfChangeWarningAddressBit: 6,\r\n rateOfChangeAlarmAddress: 2,\r\n rateOfChangeAlarmAddressBit: 16\r\n }, {\r\n id: 10,\r\n type: SensorTypeEnum.BottomRubTemperature,\r\n position: SensorPositionEnum.Head,\r\n side: EquipmentSideEnum.East,\r\n modbusAddress: 65536,\r\n warningAddress: 113,\r\n warningAddressBit: 2,\r\n alarmAddress: 42,\r\n alarmAddressBit: 1,\r\n rateOfChangeWarningAddress: 33,\r\n rateOfChangeWarningAddressBit: 6,\r\n rateOfChangeAlarmAddress: 2,\r\n rateOfChangeAlarmAddressBit: 16\r\n }, {\r\n id: 11,\r\n type: SensorTypeEnum.BottomRubTemperature,\r\n position: SensorPositionEnum.Head,\r\n side: EquipmentSideEnum.West,\r\n modbusAddress: 65536,\r\n warningAddress: 113,\r\n warningAddressBit: 2,\r\n alarmAddress: 42,\r\n alarmAddressBit: 1,\r\n rateOfChangeWarningAddress: 33,\r\n rateOfChangeWarningAddressBit: 6,\r\n rateOfChangeAlarmAddress: 2,\r\n rateOfChangeAlarmAddressBit: 16\r\n }, {\r\n id: 12,\r\n type: SensorTypeEnum.BottomRubTemperature,\r\n position: SensorPositionEnum.Tail,\r\n side: EquipmentSideEnum.East,\r\n modbusAddress: 65536,\r\n warningAddress: 113,\r\n warningAddressBit: 2,\r\n alarmAddress: 42,\r\n alarmAddressBit: 1,\r\n rateOfChangeWarningAddress: 33,\r\n rateOfChangeWarningAddressBit: 6,\r\n rateOfChangeAlarmAddress: 2,\r\n rateOfChangeAlarmAddressBit: 16\r\n }, {\r\n id: 13,\r\n type: SensorTypeEnum.BottomRubTemperature,\r\n position: SensorPositionEnum.Tail,\r\n side: EquipmentSideEnum.West,\r\n modbusAddress: 65536,\r\n warningAddress: 113,\r\n warningAddressBit: 2,\r\n alarmAddress: 42,\r\n alarmAddressBit: 1,\r\n rateOfChangeWarningAddress: 33,\r\n rateOfChangeWarningAddressBit: 6,\r\n rateOfChangeAlarmAddress: 2,\r\n rateOfChangeAlarmAddressBit: 16\r\n },\r\n {\r\n id: 14,\r\n type: SensorTypeEnum.CurrentAmpDraw,\r\n position: SensorPositionEnum.OnePerEquipment,\r\n side: EquipmentSideEnum.None,\r\n modbusAddress: 65536,\r\n warningAddress: 113,\r\n warningAddressBit: 2,\r\n alarmAddress: 42,\r\n alarmAddressBit: 1,\r\n rateOfChangeWarningAddress: null,\r\n rateOfChangeWarningAddressBit: null,\r\n rateOfChangeAlarmAddress: null,\r\n rateOfChangeAlarmAddressBit: null,\r\n },\r\n {\r\n id: 15,\r\n type: SensorTypeEnum.CurrentDesignLoad,\r\n position: SensorPositionEnum.OnePerEquipment,\r\n side: EquipmentSideEnum.None,\r\n modbusAddress: 65536,\r\n warningAddress: 113,\r\n warningAddressBit: 2,\r\n alarmAddress: 42,\r\n alarmAddressBit: 1,\r\n rateOfChangeWarningAddress: null,\r\n rateOfChangeWarningAddressBit: null,\r\n rateOfChangeAlarmAddress: null,\r\n rateOfChangeAlarmAddressBit: null,\r\n },\r\n {\r\n id: 16,\r\n type: SensorTypeEnum.Vibration,\r\n position: SensorPositionEnum.Motor,\r\n side: EquipmentSideEnum.None,\r\n modbusAddress: 65536,\r\n warningAddress: 113,\r\n warningAddressBit: 2,\r\n alarmAddress: 42,\r\n alarmAddressBit: 1,\r\n rateOfChangeWarningAddress: null,\r\n rateOfChangeWarningAddressBit: null,\r\n rateOfChangeAlarmAddress: null,\r\n rateOfChangeAlarmAddressBit: null,\r\n },\r\n {\r\n id: 17,\r\n type: SensorTypeEnum.Vibration,\r\n position: SensorPositionEnum.Frame,\r\n side: EquipmentSideEnum.None,\r\n modbusAddress: 65536,\r\n warningAddress: 113,\r\n warningAddressBit: 2,\r\n alarmAddress: 42,\r\n alarmAddressBit: 1,\r\n rateOfChangeWarningAddress: null,\r\n rateOfChangeWarningAddressBit: null,\r\n rateOfChangeAlarmAddress: null,\r\n rateOfChangeAlarmAddressBit: null,\r\n },\r\n ]\r\n }, {\r\n id: 15,\r\n type: EquipmentTypeEnum.Conveyor,\r\n subType: EquipmentSubTypeEnum.CoveredBelt,\r\n name: 'Conveyor covered belt (North-South)',\r\n totalRunHoursFirstRegisterAddress: 1,\r\n totalRunHoursSecondRegisterAddress: 65536,\r\n timeTillMaintenanceAddress: 2,\r\n shutDownAlarmAddress: 3,\r\n shutDownAlarmAddressBit: 1,\r\n maintenanceRequiredWarningAddress: 3,\r\n maintenanceRequiredWarningAddressBit: 2,\r\n sensors: [{\r\n id: 1,\r\n type: SensorTypeEnum.BearingTemperature,\r\n position: SensorPositionEnum.Head,\r\n side: EquipmentSideEnum.North,\r\n modbusAddress: 65536,\r\n warningAddress: 113,\r\n warningAddressBit: 2,\r\n alarmAddress: 42,\r\n alarmAddressBit: 1,\r\n rateOfChangeWarningAddress: 33,\r\n rateOfChangeWarningAddressBit: 6,\r\n rateOfChangeAlarmAddress: 2,\r\n rateOfChangeAlarmAddressBit: 16\r\n }, {\r\n id: 2,\r\n type: SensorTypeEnum.BearingTemperature,\r\n position: SensorPositionEnum.Head,\r\n side: EquipmentSideEnum.South,\r\n modbusAddress: 65536,\r\n warningAddress: 113,\r\n warningAddressBit: 2,\r\n alarmAddress: 42,\r\n alarmAddressBit: 1,\r\n rateOfChangeWarningAddress: 33,\r\n rateOfChangeWarningAddressBit: 6,\r\n rateOfChangeAlarmAddress: 2,\r\n rateOfChangeAlarmAddressBit: 16\r\n }, {\r\n id: 3,\r\n type: SensorTypeEnum.BearingTemperature,\r\n position: SensorPositionEnum.Tail,\r\n side: EquipmentSideEnum.North,\r\n modbusAddress: 65536,\r\n warningAddress: 113,\r\n warningAddressBit: 2,\r\n alarmAddress: 42,\r\n alarmAddressBit: 1,\r\n rateOfChangeWarningAddress: 33,\r\n rateOfChangeWarningAddressBit: 6,\r\n rateOfChangeAlarmAddress: 2,\r\n rateOfChangeAlarmAddressBit: 16\r\n }, {\r\n id: 4,\r\n type: SensorTypeEnum.BearingTemperature,\r\n position: SensorPositionEnum.Tail,\r\n side: EquipmentSideEnum.South,\r\n modbusAddress: 65536,\r\n warningAddress: 113,\r\n warningAddressBit: 2,\r\n alarmAddress: 42,\r\n alarmAddressBit: 1,\r\n rateOfChangeWarningAddress: 33,\r\n rateOfChangeWarningAddressBit: 6,\r\n rateOfChangeAlarmAddress: 2,\r\n rateOfChangeAlarmAddressBit: 16\r\n }, {\r\n id: 5,\r\n type: SensorTypeEnum.RubBlockTemperature,\r\n position: SensorPositionEnum.Head,\r\n side: EquipmentSideEnum.North,\r\n modbusAddress: 65536,\r\n warningAddress: 113,\r\n warningAddressBit: 2,\r\n alarmAddress: 42,\r\n alarmAddressBit: 1,\r\n rateOfChangeWarningAddress: 33,\r\n rateOfChangeWarningAddressBit: 6,\r\n rateOfChangeAlarmAddress: 2,\r\n rateOfChangeAlarmAddressBit: 16\r\n }, {\r\n id: 6,\r\n type: SensorTypeEnum.RubBlockTemperature,\r\n position: SensorPositionEnum.Head,\r\n side: EquipmentSideEnum.South,\r\n modbusAddress: 65536,\r\n warningAddress: 113,\r\n warningAddressBit: 2,\r\n alarmAddress: 42,\r\n alarmAddressBit: 1,\r\n rateOfChangeWarningAddress: 33,\r\n rateOfChangeWarningAddressBit: 6,\r\n rateOfChangeAlarmAddress: 2,\r\n rateOfChangeAlarmAddressBit: 16\r\n }, {\r\n id: 7,\r\n type: SensorTypeEnum.RubBlockTemperature,\r\n position: SensorPositionEnum.Tail,\r\n side: EquipmentSideEnum.North,\r\n modbusAddress: 65536,\r\n warningAddress: 113,\r\n warningAddressBit: 2,\r\n alarmAddress: 42,\r\n alarmAddressBit: 1,\r\n rateOfChangeWarningAddress: 33,\r\n rateOfChangeWarningAddressBit: 6,\r\n rateOfChangeAlarmAddress: 2,\r\n rateOfChangeAlarmAddressBit: 16\r\n }, {\r\n id: 8,\r\n type: SensorTypeEnum.RubBlockTemperature,\r\n position: SensorPositionEnum.Tail,\r\n side: EquipmentSideEnum.South,\r\n modbusAddress: 65536,\r\n warningAddress: 113,\r\n warningAddressBit: 2,\r\n alarmAddress: 42,\r\n alarmAddressBit: 1,\r\n rateOfChangeWarningAddress: 33,\r\n rateOfChangeWarningAddressBit: 6,\r\n rateOfChangeAlarmAddress: 2,\r\n rateOfChangeAlarmAddressBit: 16\r\n }, {\r\n id: 9,\r\n type: SensorTypeEnum.Speed,\r\n position: SensorPositionEnum.OnePerEquipment,\r\n side: EquipmentSideEnum.None,\r\n modbusAddress: 65536,\r\n warningAddress: 113,\r\n warningAddressBit: 2,\r\n alarmAddress: 42,\r\n alarmAddressBit: 1,\r\n rateOfChangeWarningAddress: 33,\r\n rateOfChangeWarningAddressBit: 6,\r\n rateOfChangeAlarmAddress: 2,\r\n rateOfChangeAlarmAddressBit: 16\r\n }, {\r\n id: 10,\r\n type: SensorTypeEnum.BottomRubTemperature,\r\n position: SensorPositionEnum.Head,\r\n side: EquipmentSideEnum.North,\r\n modbusAddress: 65536,\r\n warningAddress: 113,\r\n warningAddressBit: 2,\r\n alarmAddress: 42,\r\n alarmAddressBit: 1,\r\n rateOfChangeWarningAddress: 33,\r\n rateOfChangeWarningAddressBit: 6,\r\n rateOfChangeAlarmAddress: 2,\r\n rateOfChangeAlarmAddressBit: 16\r\n }, {\r\n id: 11,\r\n type: SensorTypeEnum.BottomRubTemperature,\r\n position: SensorPositionEnum.Head,\r\n side: EquipmentSideEnum.South,\r\n modbusAddress: 65536,\r\n warningAddress: 113,\r\n warningAddressBit: 2,\r\n alarmAddress: 42,\r\n alarmAddressBit: 1,\r\n rateOfChangeWarningAddress: 33,\r\n rateOfChangeWarningAddressBit: 6,\r\n rateOfChangeAlarmAddress: 2,\r\n rateOfChangeAlarmAddressBit: 16\r\n }, {\r\n id: 12,\r\n type: SensorTypeEnum.BottomRubTemperature,\r\n position: SensorPositionEnum.Tail,\r\n side: EquipmentSideEnum.North,\r\n modbusAddress: 65536,\r\n warningAddress: 113,\r\n warningAddressBit: 2,\r\n alarmAddress: 42,\r\n alarmAddressBit: 1,\r\n rateOfChangeWarningAddress: 33,\r\n rateOfChangeWarningAddressBit: 6,\r\n rateOfChangeAlarmAddress: 2,\r\n rateOfChangeAlarmAddressBit: 16\r\n }, {\r\n id: 13,\r\n type: SensorTypeEnum.BottomRubTemperature,\r\n position: SensorPositionEnum.Tail,\r\n side: EquipmentSideEnum.South,\r\n modbusAddress: 65536,\r\n warningAddress: 113,\r\n warningAddressBit: 2,\r\n alarmAddress: 42,\r\n alarmAddressBit: 1,\r\n rateOfChangeWarningAddress: 33,\r\n rateOfChangeWarningAddressBit: 6,\r\n rateOfChangeAlarmAddress: 2,\r\n rateOfChangeAlarmAddressBit: 16\r\n },\r\n {\r\n id: 14,\r\n type: SensorTypeEnum.CurrentAmpDraw,\r\n position: SensorPositionEnum.OnePerEquipment,\r\n side: EquipmentSideEnum.None,\r\n modbusAddress: 65536,\r\n warningAddress: 113,\r\n warningAddressBit: 2,\r\n alarmAddress: 42,\r\n alarmAddressBit: 1,\r\n rateOfChangeWarningAddress: null,\r\n rateOfChangeWarningAddressBit: null,\r\n rateOfChangeAlarmAddress: null,\r\n rateOfChangeAlarmAddressBit: null,\r\n },\r\n {\r\n id: 15,\r\n type: SensorTypeEnum.CurrentDesignLoad,\r\n position: SensorPositionEnum.OnePerEquipment,\r\n side: EquipmentSideEnum.None,\r\n modbusAddress: 65536,\r\n warningAddress: 113,\r\n warningAddressBit: 2,\r\n alarmAddress: 42,\r\n alarmAddressBit: 1,\r\n rateOfChangeWarningAddress: null,\r\n rateOfChangeWarningAddressBit: null,\r\n rateOfChangeAlarmAddress: null,\r\n rateOfChangeAlarmAddressBit: null,\r\n },\r\n {\r\n id: 16,\r\n type: SensorTypeEnum.Vibration,\r\n position: SensorPositionEnum.Motor,\r\n side: EquipmentSideEnum.None,\r\n modbusAddress: 65536,\r\n warningAddress: 113,\r\n warningAddressBit: 2,\r\n alarmAddress: 42,\r\n alarmAddressBit: 1,\r\n rateOfChangeWarningAddress: null,\r\n rateOfChangeWarningAddressBit: null,\r\n rateOfChangeAlarmAddress: null,\r\n rateOfChangeAlarmAddressBit: null,\r\n },\r\n {\r\n id: 17,\r\n type: SensorTypeEnum.Vibration,\r\n position: SensorPositionEnum.Frame,\r\n side: EquipmentSideEnum.None,\r\n modbusAddress: 65536,\r\n warningAddress: 113,\r\n warningAddressBit: 2,\r\n alarmAddress: 42,\r\n alarmAddressBit: 1,\r\n rateOfChangeWarningAddress: null,\r\n rateOfChangeWarningAddressBit: null,\r\n rateOfChangeAlarmAddress: null,\r\n rateOfChangeAlarmAddressBit: null,\r\n },\r\n ]\r\n }, {\r\n id: 16,\r\n type: EquipmentTypeEnum.Tripper,\r\n subType: EquipmentSubTypeEnum.None,\r\n name: 'Tripper (North-South)',\r\n totalRunHoursFirstRegisterAddress: 1,\r\n totalRunHoursSecondRegisterAddress: 65536,\r\n timeTillMaintenanceAddress: 2,\r\n shutDownAlarmAddress: 3,\r\n shutDownAlarmAddressBit: 1,\r\n maintenanceRequiredWarningAddress: 3,\r\n maintenanceRequiredWarningAddressBit: 2,\r\n sensors: [{\r\n id: 1,\r\n type: SensorTypeEnum.BearingTemperature,\r\n position: SensorPositionEnum.Upper,\r\n side: EquipmentSideEnum.North,\r\n modbusAddress: 65536,\r\n warningAddress: 113,\r\n warningAddressBit: 2,\r\n alarmAddress: 42,\r\n alarmAddressBit: 1,\r\n rateOfChangeWarningAddress: 33,\r\n rateOfChangeWarningAddressBit: 6,\r\n rateOfChangeAlarmAddress: 2,\r\n rateOfChangeAlarmAddressBit: 16\r\n }, {\r\n id: 2,\r\n type: SensorTypeEnum.BearingTemperature,\r\n position: SensorPositionEnum.Upper,\r\n side: EquipmentSideEnum.South,\r\n modbusAddress: 65536,\r\n warningAddress: 113,\r\n warningAddressBit: 2,\r\n alarmAddress: 42,\r\n alarmAddressBit: 1,\r\n rateOfChangeWarningAddress: 33,\r\n rateOfChangeWarningAddressBit: 6,\r\n rateOfChangeAlarmAddress: 2,\r\n rateOfChangeAlarmAddressBit: 16\r\n }, {\r\n id: 3,\r\n type: SensorTypeEnum.BearingTemperature,\r\n position: SensorPositionEnum.Lower,\r\n side: EquipmentSideEnum.North,\r\n modbusAddress: 65536,\r\n warningAddress: 113,\r\n warningAddressBit: 2,\r\n alarmAddress: 42,\r\n alarmAddressBit: 1,\r\n rateOfChangeWarningAddress: 33,\r\n rateOfChangeWarningAddressBit: 6,\r\n rateOfChangeAlarmAddress: 2,\r\n rateOfChangeAlarmAddressBit: 16\r\n }, {\r\n id: 4,\r\n type: SensorTypeEnum.BearingTemperature,\r\n position: SensorPositionEnum.Lower,\r\n side: EquipmentSideEnum.South,\r\n modbusAddress: 65536,\r\n warningAddress: 113,\r\n warningAddressBit: 2,\r\n alarmAddress: 42,\r\n alarmAddressBit: 1,\r\n rateOfChangeWarningAddress: 33,\r\n rateOfChangeWarningAddressBit: 6,\r\n rateOfChangeAlarmAddress: 2,\r\n rateOfChangeAlarmAddressBit: 16\r\n }, {\r\n id: 5,\r\n type: SensorTypeEnum.RubBlockTemperature,\r\n position: SensorPositionEnum.Top,\r\n side: EquipmentSideEnum.North,\r\n modbusAddress: 65536,\r\n warningAddress: 113,\r\n warningAddressBit: 2,\r\n alarmAddress: 42,\r\n alarmAddressBit: 1,\r\n rateOfChangeWarningAddress: 33,\r\n rateOfChangeWarningAddressBit: 6,\r\n rateOfChangeAlarmAddress: 2,\r\n rateOfChangeAlarmAddressBit: 16\r\n }, {\r\n id: 6,\r\n type: SensorTypeEnum.RubBlockTemperature,\r\n position: SensorPositionEnum.Top,\r\n side: EquipmentSideEnum.South,\r\n modbusAddress: 65536,\r\n warningAddress: 113,\r\n warningAddressBit: 2,\r\n alarmAddress: 42,\r\n alarmAddressBit: 1,\r\n rateOfChangeWarningAddress: 33,\r\n rateOfChangeWarningAddressBit: 6,\r\n rateOfChangeAlarmAddress: 2,\r\n rateOfChangeAlarmAddressBit: 16\r\n }]\r\n }, {\r\n id: 17,\r\n type: EquipmentTypeEnum.Tripper,\r\n subType: EquipmentSubTypeEnum.None,\r\n name: 'Tripper (East-West)',\r\n totalRunHoursFirstRegisterAddress: 1,\r\n totalRunHoursSecondRegisterAddress: 65536,\r\n timeTillMaintenanceAddress: 2,\r\n shutDownAlarmAddress: 3,\r\n shutDownAlarmAddressBit: 1,\r\n maintenanceRequiredWarningAddress: 3,\r\n maintenanceRequiredWarningAddressBit: 2,\r\n sensors: [{\r\n id: 1,\r\n type: SensorTypeEnum.BearingTemperature,\r\n position: SensorPositionEnum.Upper,\r\n side: EquipmentSideEnum.East,\r\n modbusAddress: 65536,\r\n warningAddress: 113,\r\n warningAddressBit: 2,\r\n alarmAddress: 42,\r\n alarmAddressBit: 1,\r\n rateOfChangeWarningAddress: 33,\r\n rateOfChangeWarningAddressBit: 6,\r\n rateOfChangeAlarmAddress: 2,\r\n rateOfChangeAlarmAddressBit: 16\r\n }, {\r\n id: 2,\r\n type: SensorTypeEnum.BearingTemperature,\r\n position: SensorPositionEnum.Upper,\r\n side: EquipmentSideEnum.West,\r\n modbusAddress: 65536,\r\n warningAddress: 113,\r\n warningAddressBit: 2,\r\n alarmAddress: 42,\r\n alarmAddressBit: 1,\r\n rateOfChangeWarningAddress: 33,\r\n rateOfChangeWarningAddressBit: 6,\r\n rateOfChangeAlarmAddress: 2,\r\n rateOfChangeAlarmAddressBit: 16\r\n }, {\r\n id: 3,\r\n type: SensorTypeEnum.BearingTemperature,\r\n position: SensorPositionEnum.Lower,\r\n side: EquipmentSideEnum.East,\r\n modbusAddress: 65536,\r\n warningAddress: 113,\r\n warningAddressBit: 2,\r\n alarmAddress: 42,\r\n alarmAddressBit: 1,\r\n rateOfChangeWarningAddress: 33,\r\n rateOfChangeWarningAddressBit: 6,\r\n rateOfChangeAlarmAddress: 2,\r\n rateOfChangeAlarmAddressBit: 16\r\n }, {\r\n id: 4,\r\n type: SensorTypeEnum.BearingTemperature,\r\n position: SensorPositionEnum.Lower,\r\n side: EquipmentSideEnum.West,\r\n modbusAddress: 65536,\r\n warningAddress: 113,\r\n warningAddressBit: 2,\r\n alarmAddress: 42,\r\n alarmAddressBit: 1,\r\n rateOfChangeWarningAddress: 33,\r\n rateOfChangeWarningAddressBit: 6,\r\n rateOfChangeAlarmAddress: 2,\r\n rateOfChangeAlarmAddressBit: 16\r\n }, {\r\n id: 5,\r\n type: SensorTypeEnum.RubBlockTemperature,\r\n position: SensorPositionEnum.Top,\r\n side: EquipmentSideEnum.East,\r\n modbusAddress: 65536,\r\n warningAddress: 113,\r\n warningAddressBit: 2,\r\n alarmAddress: 42,\r\n alarmAddressBit: 1,\r\n rateOfChangeWarningAddress: 33,\r\n rateOfChangeWarningAddressBit: 6,\r\n rateOfChangeAlarmAddress: 2,\r\n rateOfChangeAlarmAddressBit: 16\r\n }, {\r\n id: 6,\r\n type: SensorTypeEnum.RubBlockTemperature,\r\n position: SensorPositionEnum.Top,\r\n side: EquipmentSideEnum.West,\r\n modbusAddress: 65536,\r\n warningAddress: 113,\r\n warningAddressBit: 2,\r\n alarmAddress: 42,\r\n alarmAddressBit: 1,\r\n rateOfChangeWarningAddress: 33,\r\n rateOfChangeWarningAddressBit: 6,\r\n rateOfChangeAlarmAddress: 2,\r\n rateOfChangeAlarmAddressBit: 16\r\n }]\r\n },\r\n {\r\n id: 18,\r\n type: EquipmentTypeEnum.Fan,\r\n subType: EquipmentSubTypeEnum.DirectDrive,\r\n name: 'Fan Direct Drive (None)',\r\n totalRunHoursFirstRegisterAddress: 1,\r\n totalRunHoursSecondRegisterAddress: 65536,\r\n timeTillMaintenanceAddress: 2,\r\n shutDownAlarmAddress: 3,\r\n shutDownAlarmAddressBit: 1,\r\n maintenanceRequiredWarningAddress: 3,\r\n maintenanceRequiredWarningAddressBit: 2,\r\n sensors: [\r\n {\r\n id: 1,\r\n type: SensorTypeEnum.BearingTemperature,\r\n position: SensorPositionEnum.Drive,\r\n side: EquipmentSideEnum.None,\r\n modbusAddress: 65536,\r\n warningAddress: 113,\r\n warningAddressBit: 2,\r\n alarmAddress: 42,\r\n alarmAddressBit: 1,\r\n rateOfChangeWarningAddress: 33,\r\n rateOfChangeWarningAddressBit: 6,\r\n rateOfChangeAlarmAddress: 2,\r\n rateOfChangeAlarmAddressBit: 16\r\n },\r\n {\r\n id: 2,\r\n type: SensorTypeEnum.BearingTemperature,\r\n position: SensorPositionEnum.Frame,\r\n side: EquipmentSideEnum.None,\r\n modbusAddress: 65536,\r\n warningAddress: 113,\r\n warningAddressBit: 2,\r\n alarmAddress: 42,\r\n alarmAddressBit: 1,\r\n rateOfChangeWarningAddress: 33,\r\n rateOfChangeWarningAddressBit: 6,\r\n rateOfChangeAlarmAddress: 2,\r\n rateOfChangeAlarmAddressBit: 16\r\n },\r\n {\r\n id: 3,\r\n type: SensorTypeEnum.Speed,\r\n position: SensorPositionEnum.OnePerEquipment,\r\n side: EquipmentSideEnum.None,\r\n modbusAddress: 65536,\r\n warningAddress: 113,\r\n warningAddressBit: 2,\r\n alarmAddress: 42,\r\n alarmAddressBit: 1,\r\n rateOfChangeWarningAddress: 33,\r\n rateOfChangeWarningAddressBit: 6,\r\n rateOfChangeAlarmAddress: 2,\r\n rateOfChangeAlarmAddressBit: 16\r\n },\r\n {\r\n id: 4,\r\n type: SensorTypeEnum.CurrentAmpDraw,\r\n position: SensorPositionEnum.OnePerEquipment,\r\n side: EquipmentSideEnum.None,\r\n modbusAddress: 65536,\r\n warningAddress: 113,\r\n warningAddressBit: 2,\r\n alarmAddress: 42,\r\n alarmAddressBit: 1,\r\n rateOfChangeWarningAddress: null,\r\n rateOfChangeWarningAddressBit: null,\r\n rateOfChangeAlarmAddress: null,\r\n rateOfChangeAlarmAddressBit: null\r\n },\r\n {\r\n id: 5,\r\n type: SensorTypeEnum.CurrentDesignLoad,\r\n position: SensorPositionEnum.OnePerEquipment,\r\n side: EquipmentSideEnum.None,\r\n modbusAddress: 65536,\r\n warningAddress: 113,\r\n warningAddressBit: 2,\r\n alarmAddress: 42,\r\n alarmAddressBit: 1,\r\n rateOfChangeWarningAddress: null,\r\n rateOfChangeWarningAddressBit: null,\r\n rateOfChangeAlarmAddress: null,\r\n rateOfChangeAlarmAddressBit: null\r\n },\r\n {\r\n id: 6,\r\n type: SensorTypeEnum.Vibration,\r\n position: SensorPositionEnum.Motor,\r\n side: EquipmentSideEnum.None,\r\n modbusAddress: 65536,\r\n warningAddress: 113,\r\n warningAddressBit: 2,\r\n alarmAddress: 42,\r\n alarmAddressBit: 1,\r\n rateOfChangeWarningAddress: null,\r\n rateOfChangeWarningAddressBit: null,\r\n rateOfChangeAlarmAddress: null,\r\n rateOfChangeAlarmAddressBit: null\r\n },\r\n {\r\n id: 7,\r\n type: SensorTypeEnum.Vibration,\r\n position: SensorPositionEnum.Frame,\r\n side: EquipmentSideEnum.None,\r\n modbusAddress: 65536,\r\n warningAddress: 113,\r\n warningAddressBit: 2,\r\n alarmAddress: 42,\r\n alarmAddressBit: 1,\r\n rateOfChangeWarningAddress: null,\r\n rateOfChangeWarningAddressBit: null,\r\n rateOfChangeAlarmAddress: null,\r\n rateOfChangeAlarmAddressBit: null,\r\n },\r\n ]\r\n },\r\n {\r\n id: 19,\r\n type: EquipmentTypeEnum.Fan,\r\n subType: EquipmentSubTypeEnum.BeltDrive,\r\n name: 'Fan Belt Drive (None)',\r\n totalRunHoursFirstRegisterAddress: 1,\r\n totalRunHoursSecondRegisterAddress: 65536,\r\n timeTillMaintenanceAddress: 2,\r\n shutDownAlarmAddress: 3,\r\n shutDownAlarmAddressBit: 1,\r\n maintenanceRequiredWarningAddress: 3,\r\n maintenanceRequiredWarningAddressBit: 2,\r\n sensors: [\r\n {\r\n id: 1,\r\n type: SensorTypeEnum.BearingTemperature,\r\n position: SensorPositionEnum.FrameUpper,\r\n side: EquipmentSideEnum.None,\r\n modbusAddress: 65536,\r\n warningAddress: 113,\r\n warningAddressBit: 2,\r\n alarmAddress: 42,\r\n alarmAddressBit: 1,\r\n rateOfChangeWarningAddress: 33,\r\n rateOfChangeWarningAddressBit: 6,\r\n rateOfChangeAlarmAddress: 2,\r\n rateOfChangeAlarmAddressBit: 16\r\n },\r\n {\r\n id: 2,\r\n type: SensorTypeEnum.BearingTemperature,\r\n position: SensorPositionEnum.FrameLower,\r\n side: EquipmentSideEnum.None,\r\n modbusAddress: 65536,\r\n warningAddress: 113,\r\n warningAddressBit: 2,\r\n alarmAddress: 42,\r\n alarmAddressBit: 1,\r\n rateOfChangeWarningAddress: 33,\r\n rateOfChangeWarningAddressBit: 6,\r\n rateOfChangeAlarmAddress: 2,\r\n rateOfChangeAlarmAddressBit: 16\r\n },\r\n {\r\n id: 3,\r\n type: SensorTypeEnum.BearingTemperature,\r\n position: SensorPositionEnum.DriveUpper,\r\n side: EquipmentSideEnum.None,\r\n modbusAddress: 65536,\r\n warningAddress: 113,\r\n warningAddressBit: 2,\r\n alarmAddress: 42,\r\n alarmAddressBit: 1,\r\n rateOfChangeWarningAddress: 33,\r\n rateOfChangeWarningAddressBit: 6,\r\n rateOfChangeAlarmAddress: 2,\r\n rateOfChangeAlarmAddressBit: 16\r\n },\r\n {\r\n id: 4,\r\n type: SensorTypeEnum.BearingTemperature,\r\n position: SensorPositionEnum.DriveLower,\r\n side: EquipmentSideEnum.None,\r\n modbusAddress: 65536,\r\n warningAddress: 113,\r\n warningAddressBit: 2,\r\n alarmAddress: 42,\r\n alarmAddressBit: 1,\r\n rateOfChangeWarningAddress: 33,\r\n rateOfChangeWarningAddressBit: 6,\r\n rateOfChangeAlarmAddress: 2,\r\n rateOfChangeAlarmAddressBit: 16\r\n },\r\n {\r\n id: 5,\r\n type: SensorTypeEnum.Speed,\r\n position: SensorPositionEnum.OnePerEquipment,\r\n side: EquipmentSideEnum.None,\r\n modbusAddress: 65536,\r\n warningAddress: 113,\r\n warningAddressBit: 2,\r\n alarmAddress: 42,\r\n alarmAddressBit: 1,\r\n rateOfChangeWarningAddress: 33,\r\n rateOfChangeWarningAddressBit: 6,\r\n rateOfChangeAlarmAddress: 2,\r\n rateOfChangeAlarmAddressBit: 16\r\n },\r\n {\r\n id: 6,\r\n type: SensorTypeEnum.CurrentAmpDraw,\r\n position: SensorPositionEnum.OnePerEquipment,\r\n side: EquipmentSideEnum.None,\r\n modbusAddress: 65536,\r\n warningAddress: 113,\r\n warningAddressBit: 2,\r\n alarmAddress: 42,\r\n alarmAddressBit: 1,\r\n rateOfChangeWarningAddress: null,\r\n rateOfChangeWarningAddressBit: null,\r\n rateOfChangeAlarmAddress: null,\r\n rateOfChangeAlarmAddressBit: null\r\n },\r\n {\r\n id: 7,\r\n type: SensorTypeEnum.CurrentDesignLoad,\r\n position: SensorPositionEnum.OnePerEquipment,\r\n side: EquipmentSideEnum.None,\r\n modbusAddress: 65536,\r\n warningAddress: 113,\r\n warningAddressBit: 2,\r\n alarmAddress: 42,\r\n alarmAddressBit: 1,\r\n rateOfChangeWarningAddress: null,\r\n rateOfChangeWarningAddressBit: null,\r\n rateOfChangeAlarmAddress: null,\r\n rateOfChangeAlarmAddressBit: null\r\n },\r\n {\r\n id: 8,\r\n type: SensorTypeEnum.Vibration,\r\n position: SensorPositionEnum.Motor,\r\n side: EquipmentSideEnum.None,\r\n modbusAddress: 65536,\r\n warningAddress: 113,\r\n warningAddressBit: 2,\r\n alarmAddress: 42,\r\n alarmAddressBit: 1,\r\n rateOfChangeWarningAddress: null,\r\n rateOfChangeWarningAddressBit: null,\r\n rateOfChangeAlarmAddress: null,\r\n rateOfChangeAlarmAddressBit: null\r\n },\r\n {\r\n id: 9,\r\n type: SensorTypeEnum.Vibration,\r\n position: SensorPositionEnum.Frame,\r\n side: EquipmentSideEnum.None,\r\n modbusAddress: 65536,\r\n warningAddress: 113,\r\n warningAddressBit: 2,\r\n alarmAddress: 42,\r\n alarmAddressBit: 1,\r\n rateOfChangeWarningAddress: null,\r\n rateOfChangeWarningAddressBit: null,\r\n rateOfChangeAlarmAddress: null,\r\n rateOfChangeAlarmAddressBit: null,\r\n },\r\n ]\r\n },\r\n ] as EquipmentViewModel[];\r\n\r\n const locationEquipment = {\r\n deviceId: deviceId,\r\n equipments\r\n } as LocationBtxEquipmentViewModel\r\n\r\n return locationEquipment;\r\n }\r\n\r\n private async getFakeTelemetry(sensorsIds: number[]) {\r\n let lastTelemetry = [];\r\n let telemetry: LastTelemetrySensorResponse;\r\n sensorsIds.forEach(element => {\r\n telemetry = {\r\n id: element,\r\n value: 55 + element,\r\n timestamp: 1610969600 + element,\r\n status: this.getRandomSensorStatusEnum(SensorValuesStatusEnum)\r\n };\r\n\r\n lastTelemetry.push(telemetry);\r\n });\r\n\r\n return lastTelemetry;\r\n }\r\n\r\n private getRandomSensorStatusEnum(anEnum: T): T[keyof T] {\r\n const enumValues = Object.keys(anEnum)\r\n .map(n => Number.parseInt(n))\r\n .filter(n => !Number.isNaN(n)) as unknown as T[keyof T][]\r\n const randomIndex = Math.floor(Math.random() * enumValues.length)\r\n const randomEnumValue = enumValues[randomIndex]\r\n return randomEnumValue;\r\n }\r\n\r\n private getSensorEventType(status: SensorValuesStatusEnum): BtxSensorEventTypeEnum {\r\n const rand = Math.floor(Math.random() * 2)\r\n switch (status) {\r\n case SensorValuesStatusEnum.Norm:\r\n return BtxSensorEventTypeEnum.Norm;\r\n case SensorValuesStatusEnum.Error:\r\n return BtxSensorEventTypeEnum.Error;\r\n case SensorValuesStatusEnum.Alarm:\r\n return rand == 0 ? BtxSensorEventTypeEnum.Alarm : BtxSensorEventTypeEnum.RateOfChangeAlarm;\r\n case SensorValuesStatusEnum.Warning:\r\n return rand == 0 ? BtxSensorEventTypeEnum.Warning : BtxSensorEventTypeEnum.RateOfChangeWarning;\r\n }\r\n }\r\n}","import { Injectable } from '@angular/core';\r\nimport { Router } from '@angular/router';\r\n\r\nimport { ErrorModel, HttpService } from '../../../common';\r\nimport { ApiRoutes } from '../../constants';\r\nimport {\r\n ItxEventByPeriodPostModel,\r\n ItxEventGetModel,\r\n ItxEventsRequestModel,\r\n KtxEventByPeriodPostModel,\r\n KtxEventGetModel,\r\n KtxEventsRequestModel,\r\n BtxEventByPeriodPostModel,\r\n BtxEventGetModel,\r\n BtxEventsRequestModel,\r\n} from '@models';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class EventApiService {\r\n constructor(private _httpService: HttpService, private _router: Router) { }\r\n\r\n public async getItxByFilter(\r\n query: ItxEventByPeriodPostModel\r\n ): Promise {\r\n try {\r\n if (this._router.url.indexOf('/back-door') > -1) {\r\n return this.getItxFakeData();\r\n }\r\n\r\n const result = (await this._httpService.post(\r\n ApiRoutes.Notification.getItxNotificationByQuery,\r\n query\r\n )) as ItxEventsRequestModel;\r\n\r\n return result;\r\n } catch (error) {\r\n return this.processError(error);\r\n }\r\n }\r\n\r\n public async getKtxByFilter(\r\n query: KtxEventByPeriodPostModel\r\n ): Promise {\r\n try {\r\n if (this._router.url.indexOf('/back-door') > -1) {\r\n return this.getKtxFakeData();\r\n }\r\n\r\n const result = (await this._httpService.post(\r\n ApiRoutes.Notification.getKtxNotificationByQuery,\r\n query\r\n )) as KtxEventsRequestModel;\r\n\r\n return result;\r\n } catch (error) {\r\n return this.processError(error);\r\n }\r\n }\r\n\r\n public async getBtxByFilter(\r\n query: BtxEventByPeriodPostModel\r\n ): Promise {\r\n try {\r\n if (this._router.url.indexOf('/back-door') > -1) {\r\n return this.getBtxFakeData();\r\n }\r\n\r\n const result = (await this._httpService.post(\r\n ApiRoutes.Notification.getBtxNotificationByQuery,\r\n query\r\n )) as BtxEventsRequestModel;\r\n\r\n return result;\r\n } catch (error) {\r\n return this.processError(error);\r\n }\r\n }\r\n\r\n private processError(error: any) {\r\n if (error instanceof ErrorModel) {\r\n return Promise.reject(error);\r\n }\r\n\r\n console.log(error);\r\n\r\n return null;\r\n }\r\n\r\n private getItxFakeData() {\r\n let events = [\r\n {\r\n eventId: 1,\r\n title: 'Alarm TITLE',\r\n body: 'Radar 1 has alarm,Radar 1 has alarm,Radar 1 has alarm,Radar 1 has alarm,Radar 1 has alarm,Radar 1 has alarm,Radar 1 has alarm,Radar 1 has alarm,Radar 1 has alarm,Radar 1 has alarm',\r\n firstNotificationTimeStamp: Date.now(),\r\n lastNotificationTimeStamp: Date.now(),\r\n itxOptions: { itxAlertType: 0, itxBinId: 1, locationId: 2 },\r\n },\r\n {\r\n eventId: 2,\r\n title: 'Warning TITLE',\r\n body: 'Radar 2 has warning',\r\n firstNotificationTimeStamp: Date.now(),\r\n lastNotificationTimeStamp: Date.now(),\r\n itxOptions: { itxAlertType: 1, itxBinId: 1, locationId: 2 },\r\n },\r\n {\r\n eventId: 3,\r\n title: 'Error TITLE',\r\n body: 'Radar 21 has error',\r\n firstNotificationTimeStamp: Date.now(),\r\n lastNotificationTimeStamp: Date.now(),\r\n itxOptions: { itxAlertType: 2, locationId: 2 },\r\n },\r\n ] as ItxEventGetModel[];\r\n\r\n let request = new ItxEventsRequestModel();\r\n request.events = events;\r\n request.itemsPerPage = 12;\r\n request.totalCount = 5;\r\n\r\n return request;\r\n }\r\n\r\n private getKtxFakeData() {\r\n const events: KtxEventGetModel[] = [\r\n {\r\n eventId: 1,\r\n title: 'Alarm TITLE',\r\n body: 'Radar 1 has alarm,Radar 1 has alarm,Radar 1 has alarm,Radar 1 has alarm,Radar 1 has alarm,Radar 1 has alarm,Radar 1 has alarm,Radar 1 has alarm,Radar 1 has alarm,Radar 1 has alarm',\r\n firstNotificationTimeStamp: Date.now(),\r\n lastNotificationTimeStamp: Date.now(),\r\n isAlarm: true,\r\n locationId: 1,\r\n ktxOptions: {\r\n binName: 'Bin Name',\r\n unitName: 'Unit Name',\r\n locationName: 'Location Name',\r\n nextReadTimeStamp: Date.now(),\r\n binId: 1,\r\n },\r\n },\r\n {\r\n eventId: 2,\r\n title: 'Info TITLE',\r\n body: 'Radar 2 has info',\r\n firstNotificationTimeStamp: Date.now(),\r\n lastNotificationTimeStamp: Date.now(),\r\n isAlarm: false,\r\n locationId: 1,\r\n ktxOptions: {\r\n binName: 'Bin Name',\r\n unitName: 'Unit Name',\r\n locationName: 'Location Name',\r\n nextReadTimeStamp: Date.now(),\r\n binId: null,\r\n },\r\n },\r\n ];\r\n\r\n const request = new KtxEventsRequestModel();\r\n request.events = events;\r\n request.itemsPerPage = 12;\r\n request.totalCount = 5;\r\n\r\n return request;\r\n }\r\n\r\n private getBtxFakeData() {\r\n const events: BtxEventGetModel[] = [];\r\n for (let index = 1; index < 20; index++) {\r\n events.push(\r\n {\r\n eventId: index,\r\n title: `Alarm TITLE---${index}`,\r\n body: 'Radar 1 has alarm,Radar 1 has alarm,Radar 1 has alarm,Radar 1 has alarm,Radar 1 has alarm,Radar 1 has alarm,Radar 1 has alarm,Radar 1 has alarm,Radar 1 has alarm,Radar 1 has alarm',\r\n firstNotificationTimeStamp: Date.now(),\r\n lastNotificationTimeStamp: Date.now(),\r\n isAlarm: true,\r\n locationId: 1,\r\n btxOptions: { equipmentId: index, equipmentName: `FanEquipment-${index}` },\r\n }\r\n );\r\n\r\n }\r\n\r\n const request = new BtxEventsRequestModel();\r\n request.events = events;\r\n request.itemsPerPage = 20;\r\n request.totalCount = 5;\r\n\r\n return request;\r\n }\r\n}\r\n","import { Injectable, EventEmitter } from '@angular/core';\r\nimport { HubConnectionBuilder, HubConnection, LogLevel, HttpTransportType } from '@microsoft/signalr';\r\n\r\nimport { ApiRoutes, HubMethods } from '../../constants';\r\nimport { UserRoleEnum } from '../../../common';\r\nimport { AccessTokenFactory } from '../../access-token.factory';\r\nimport {\r\n LocationAddedHubMessage,\r\n LocationDeletedHubMessage,\r\n LocationInUpdateHubMessage,\r\n LocationUpdatedHubMessage,\r\n LocationBtxInUpdateHubMessage,\r\n LocationBtxUpdatedHubMessage,\r\n LocationEquipmentsInUpdateHubMessage,\r\n LocationEquipmentsUpdatedHubMessage,\r\n LocationDeviceInInitializationHubMessage,\r\n LocationDeviceInitializedHubMessage,\r\n CompanyAddedHubMessage,\r\n CompanyDeletedHubMessage,\r\n CompanyInUpdateHubMessage,\r\n CompanyUpdatedHubMessage,\r\n ServiceUserAddedHubMessage,\r\n ServiceUserDeletedHubMessage,\r\n ServiceUserInUpdateHubMessage,\r\n ServiceUserUpdatedHubMessage,\r\n CompanyAdminAddedHubMessage,\r\n CompanyAdminDeletedHubMessage,\r\n CompanyAdminInUpdateHubMessage,\r\n CompanyAdminUpdatedHubMessage,\r\n CompanyUserAddedHubMessage,\r\n CompanyUserDeletedHubMessage,\r\n CompanyUserInUpdateHubMessage,\r\n CompanyUserUpdatedHubMessage,\r\n LocationKtxAddedHubMessage,\r\n LocationKtxUpdatedHubMessage,\r\n LocationItxUpdatedHubMessage,\r\n LocationKtxInUpdateHubMessage,\r\n LocationKtxDeletedHubMessage,\r\n LocationKtxBinsUpdatedHubMessage,\r\n LocationKtxDeviceInitializedHubMessage,\r\n LocationKtxDeviceInInitializationHubMessage,\r\n LocationKtxBinsInUpdateHubMessage,\r\n LocationBtxDeletedHubMessage,\r\n LocationBtxAddedHubMessage,\r\n LocationKtxTemperatureRangeUpdatedHubMessage,\r\n VendorDeletedHubMessage,\r\n VendorAddedHubMessage,\r\n VendorInUpdateHubMessage,\r\n VendorUpdatedHubMessage,\r\n LocationItxStoragesInViewHubMessage,\r\n LocationItxFullnessRangeUpdatedHubMessage,\r\n LocationItxDeletedHubMessage,\r\n LocationItxInUpdateHubMessage,\r\n ItxBinAddedHubMessage,\r\n LocationItxAddedHubMessage,\r\n ItxBinInUpdateHubMessage,\r\n ItxBinUpdatedHubMessage,\r\n ItxBinDeletedHubMessage,\r\n ItxBinRadarAddedHubMessage,\r\n ItxBinRadarInUpdateHubMessage,\r\n ItxBinRadarUpdatedHubMessage,\r\n ItxBinRadarDeletedHubMessage,\r\n LocationItxDeviceInInitializationHubMessage,\r\n LocationItxDeviceInitializedHubMessage,\r\n SalesUserAddedHubMessage,\r\n SalesUserDeletedHubMessage,\r\n SalesUserInUpdateHubMessage,\r\n SalesUserUpdatedHubMessage,\r\n UpdaterProjectUpdateFirmwareHubMessage\r\n} from '../../models';\r\nimport { LocalStorageService } from '../../../common';\r\n\r\ntype HubMessages =\r\n LocationAddedHubMessage |\r\n LocationDeletedHubMessage |\r\n LocationInUpdateHubMessage |\r\n LocationUpdatedHubMessage |\r\n LocationEquipmentsInUpdateHubMessage |\r\n LocationEquipmentsUpdatedHubMessage |\r\n LocationDeviceInInitializationHubMessage |\r\n LocationDeviceInitializedHubMessage |\r\n CompanyAddedHubMessage |\r\n CompanyDeletedHubMessage |\r\n CompanyInUpdateHubMessage |\r\n CompanyUpdatedHubMessage |\r\n ServiceUserAddedHubMessage |\r\n ServiceUserDeletedHubMessage |\r\n ServiceUserInUpdateHubMessage |\r\n ServiceUserUpdatedHubMessage |\r\n CompanyAdminAddedHubMessage |\r\n CompanyAdminDeletedHubMessage |\r\n CompanyAdminInUpdateHubMessage |\r\n CompanyAdminUpdatedHubMessage |\r\n CompanyUserAddedHubMessage |\r\n CompanyUserDeletedHubMessage |\r\n CompanyUserInUpdateHubMessage |\r\n CompanyUserUpdatedHubMessage |\r\n LocationBtxInUpdateHubMessage |\r\n LocationBtxUpdatedHubMessage |\r\n LocationKtxInUpdateHubMessage |\r\n LocationKtxUpdatedHubMessage |\r\n LocationItxUpdatedHubMessage |\r\n LocationItxAddedHubMessage |\r\n LocationKtxAddedHubMessage |\r\n LocationKtxDeletedHubMessage |\r\n LocationKtxBinsInUpdateHubMessage |\r\n LocationKtxBinsUpdatedHubMessage |\r\n LocationKtxDeviceInitializedHubMessage |\r\n LocationKtxDeviceInInitializationHubMessage |\r\n LocationBtxAddedHubMessage |\r\n LocationBtxUpdatedHubMessage |\r\n LocationBtxUpdatedHubMessage |\r\n LocationKtxTemperatureRangeUpdatedHubMessage |\r\n VendorDeletedHubMessage |\r\n VendorAddedHubMessage |\r\n VendorInUpdateHubMessage |\r\n VendorUpdatedHubMessage |\r\n LocationItxInUpdateHubMessage |\r\n LocationItxStoragesInViewHubMessage |\r\n LocationItxUpdatedHubMessage |\r\n LocationItxFullnessRangeUpdatedHubMessage |\r\n LocationItxDeletedHubMessage |\r\n ItxBinAddedHubMessage |\r\n ItxBinInUpdateHubMessage |\r\n ItxBinUpdatedHubMessage |\r\n ItxBinDeletedHubMessage |\r\n ItxBinRadarAddedHubMessage |\r\n ItxBinRadarInUpdateHubMessage |\r\n ItxBinRadarUpdatedHubMessage |\r\n ItxBinRadarDeletedHubMessage |\r\n LocationItxDeviceInInitializationHubMessage |\r\n LocationItxDeviceInitializedHubMessage |\r\n SalesUserAddedHubMessage |\r\n SalesUserDeletedHubMessage |\r\n SalesUserInUpdateHubMessage |\r\n SalesUserUpdatedHubMessage |\r\n UpdaterProjectUpdateFirmwareHubMessage\r\n\r\n@Injectable()\r\nexport class HubService {\r\n private _hubConnection: HubConnection;\r\n private _shouldBeConnected = false;\r\n\r\n //locations\r\n public locationAdded = new EventEmitter();\r\n public locationDeleted = new EventEmitter();\r\n public locationInUpdate = new EventEmitter();\r\n public locationUpdated = new EventEmitter();\r\n //BTX location\r\n public locationBtxAdded = new EventEmitter();\r\n public locationBtxDeleted = new EventEmitter();\r\n public locationBtxInUpdate = new EventEmitter();\r\n public locationBtxUpdated = new EventEmitter();\r\n public locationBtxEquipmentsInUpdate = new EventEmitter();\r\n public locationBtxEquipmentsUpdated = new EventEmitter();\r\n public locationBtxDeviceInInitialization = new EventEmitter();\r\n public locationBtxDeviceInitialized = new EventEmitter();\r\n //companies\r\n public companyAdded = new EventEmitter();\r\n public companyDeleted = new EventEmitter();\r\n public companyInUpdate = new EventEmitter();\r\n public companyUpdated = new EventEmitter();\r\n //service users\r\n public serviceUserAdded = new EventEmitter();\r\n public serviceUserDeleted = new EventEmitter();\r\n public serviceUserInUpdate = new EventEmitter();\r\n public serviceUserUpdated = new EventEmitter();\r\n //sales users\r\n public salesUserAdded = new EventEmitter();\r\n public salesUserDeleted = new EventEmitter();\r\n public salesUserInUpdate = new EventEmitter();\r\n public salesUserUpdated = new EventEmitter();\r\n //company users\r\n public companyUserAdded = new EventEmitter();\r\n public companyUserDeleted = new EventEmitter();\r\n public companyUserInUpdate = new EventEmitter();\r\n public companyUserUpdated = new EventEmitter();\r\n //company admins\r\n public companyAdminAdded = new EventEmitter();\r\n public companyAdminDeleted = new EventEmitter();\r\n public companyAdminInUpdate = new EventEmitter();\r\n public companyAdminUpdated = new EventEmitter();\r\n // vendor\r\n public vendorAdded = new EventEmitter();\r\n public vendorDeleted = new EventEmitter();\r\n public vendorInUpdate = new EventEmitter();\r\n public vendorUpdated = new EventEmitter();\r\n //KTX location\r\n public locationKtxAdded = new EventEmitter();\r\n public locationKtxInUpdate = new EventEmitter();\r\n public locationKtxUpdated = new EventEmitter();\r\n public locationKtxDeleted = new EventEmitter();\r\n public locationKtxBinsInUpdate = new EventEmitter();\r\n public locationKtxBinsUpdated = new EventEmitter();\r\n public locationKtxDeviceInInitialization = new EventEmitter();\r\n public locationKtxDeviceInitialized = new EventEmitter();\r\n // Location KTX scheme\r\n public temperatureRangeUpdated = new EventEmitter();\r\n //ITX locations\r\n public fullnessRangeUpdated = new EventEmitter();\r\n public locationItxStorageInView = new EventEmitter();\r\n public locationItxUpdated = new EventEmitter();\r\n public locationItxAdded = new EventEmitter();\r\n public locationItxInUpdate = new EventEmitter();\r\n public locationItxDeleted = new EventEmitter();\r\n public locationItxDeviceInInitialization = new EventEmitter();\r\n public locationItxDeviceInitialized = new EventEmitter();\r\n //ITX BIn\r\n public itxBinAdded = new EventEmitter();\r\n public itxBinInUpdate = new EventEmitter();\r\n public itxBinUpdated = new EventEmitter();\r\n public itxBinDeleted = new EventEmitter();\r\n public itxBinRadarAdded = new EventEmitter();\r\n public itxBinRadarInUpdate = new EventEmitter();\r\n public itxBinRadarUpdated = new EventEmitter();\r\n public itxBinRadarDeleted = new EventEmitter();\r\n\r\n //Updater\r\n public updaterProjectUpdateFirmware = new EventEmitter();\r\n\r\n constructor(\r\n private _accessTokenFactory: AccessTokenFactory,\r\n private _localStorageService: LocalStorageService,\r\n ) {\r\n }\r\n\r\n public connect() {\r\n this._hubConnection = new HubConnectionBuilder()\r\n .withUrl(ApiRoutes.hub, {\r\n transport: HttpTransportType.LongPolling,\r\n accessTokenFactory: this._accessTokenFactory.getAuthorizationAttributeValue.bind(this._accessTokenFactory),\r\n })\r\n .withAutomaticReconnect()\r\n .configureLogging(LogLevel.None)\r\n .build();\r\n\r\n this.subscribeToServerEvents();\r\n\r\n this._hubConnection\r\n .start()\r\n .then(async () => {\r\n console.log('SignalR Hub connection started');\r\n const loginInfo = this._localStorageService.getLoginInfo();\r\n if (loginInfo.role === UserRoleEnum.CompanyAdmin) {\r\n await this._hubConnection.send(ApiRoutes.Hub.bindCompanyAdminToCompanyGroup, loginInfo.companyId);\r\n }\r\n })\r\n .catch(err => {\r\n this.restartConnection(err);\r\n });\r\n\r\n this._shouldBeConnected = true;\r\n }\r\n\r\n public async sendToAll(method: string, messageData: HubMessages) {\r\n await this._hubConnection.send(ApiRoutes.Hub.sendToAll, method, messageData);\r\n }\r\n\r\n public async sendToAllServiceUsers(method: string, messageData: HubMessages) {\r\n await this._hubConnection.send(ApiRoutes.Hub.sendToAllServiceUsers, method, messageData);\r\n }\r\n\r\n public async sendToCompanyAdminsAndAllServiceUsers(method: string, companyId: number, messageData: HubMessages) {\r\n await this._hubConnection.send(ApiRoutes.Hub.sendToCompanyAdminsAllAndServiceUsers, method, companyId, messageData);\r\n }\r\n\r\n public async sendFromCompanyAdminToCompanyAdmins(method: string, messageData: HubMessages) {\r\n const loginInfo = this._localStorageService.getLoginInfo();\r\n await this._hubConnection.send(ApiRoutes.Hub.sendToCompanyAdmins, method, loginInfo.companyId, messageData);\r\n }\r\n\r\n private restartConnection(err: Error): void {\r\n console.log(`Error ${err}`);\r\n console.log('Retrying connection to SignalR Hub ...');\r\n setTimeout(() => {\r\n this.connect();\r\n }, 1000);\r\n }\r\n\r\n private subscribeToServerEvents(): void {\r\n //locations\r\n this._hubConnection.on(HubMethods.Location.locationAdded, (messageData: LocationAddedHubMessage) => {\r\n console.log(HubMethods.Location.locationAdded, messageData);\r\n this.locationAdded.emit(messageData);\r\n });\r\n this._hubConnection.on(HubMethods.Location.locationDeleted, (messageData: LocationDeletedHubMessage) => {\r\n console.log(HubMethods.Location.locationDeleted, messageData);\r\n this.locationDeleted.emit(messageData);\r\n });\r\n this._hubConnection.on(HubMethods.Location.locationInUpdate, (messageData: LocationInUpdateHubMessage) => {\r\n console.log(HubMethods.Location.locationInUpdate, messageData);\r\n this.locationInUpdate.emit(messageData);\r\n });\r\n this._hubConnection.on(HubMethods.Location.locationUpdated, (messageData: LocationUpdatedHubMessage) => {\r\n console.log(HubMethods.Location.locationUpdated, messageData);\r\n this.locationUpdated.emit(messageData);\r\n });\r\n\r\n //location BTX\r\n this._hubConnection.on(HubMethods.LocationBtx.locationBtxEquipmentsInUpdate, (messageData: LocationEquipmentsInUpdateHubMessage) => {\r\n console.log(HubMethods.LocationBtx.locationBtxEquipmentsInUpdate, messageData);\r\n this.locationBtxEquipmentsInUpdate.emit(messageData);\r\n });\r\n this._hubConnection.on(HubMethods.LocationBtx.locationBtxInUpdate, (messageData: LocationBtxInUpdateHubMessage) => {\r\n console.log(HubMethods.LocationBtx.locationBtxInUpdate, messageData);\r\n this.locationBtxInUpdate.emit(messageData);\r\n });\r\n this._hubConnection.on(HubMethods.LocationBtx.locationBtxAdded, (messageData: LocationBtxAddedHubMessage) => {\r\n console.log(HubMethods.LocationBtx.locationBtxAdded, messageData);\r\n this.locationBtxAdded.emit(messageData);\r\n });\r\n this._hubConnection.on(HubMethods.LocationBtx.locationBtxDeleted, (messageData: LocationBtxDeletedHubMessage) => {\r\n console.log(HubMethods.LocationBtx.locationBtxDeleted, messageData);\r\n this.locationBtxDeleted.emit(messageData);\r\n });\r\n this._hubConnection.on(HubMethods.LocationBtx.locationBtxEquipmentsInUpdate, (messageData: LocationEquipmentsInUpdateHubMessage) => {\r\n console.log(HubMethods.LocationBtx.locationBtxEquipmentsInUpdate, messageData);\r\n this.locationBtxEquipmentsInUpdate.emit(messageData);\r\n });\r\n this._hubConnection.on(HubMethods.LocationBtx.locationBtxEquipmentsUpdated, (messageData: LocationEquipmentsUpdatedHubMessage) => {\r\n console.log(HubMethods.LocationBtx.locationBtxEquipmentsUpdated, messageData);\r\n this.locationBtxEquipmentsUpdated.emit(messageData);\r\n });\r\n this._hubConnection.on(HubMethods.LocationBtx.locationBtxUpdated, (messageData: LocationBtxUpdatedHubMessage) => {\r\n console.log(HubMethods.LocationBtx.locationBtxUpdated, messageData);\r\n this.locationBtxUpdated.emit(messageData);\r\n });\r\n this._hubConnection.on(HubMethods.LocationBtx.locationBtxDeviceInInitialization, (messageData: LocationDeviceInInitializationHubMessage) => {\r\n console.log(HubMethods.LocationBtx.locationBtxDeviceInInitialization, messageData);\r\n this.locationBtxDeviceInInitialization.emit(messageData);\r\n });\r\n this._hubConnection.on(HubMethods.LocationBtx.locationBtxDeviceInitialized, (messageData: LocationDeviceInitializedHubMessage) => {\r\n console.log(HubMethods.LocationBtx.locationBtxDeviceInitialized, messageData);\r\n this.locationBtxDeviceInitialized.emit(messageData);\r\n });\r\n\r\n //locations\r\n this._hubConnection.on(HubMethods.LocationBtx.locationBtxDeleted, (messageData: LocationBtxDeletedHubMessage) => {\r\n console.log(HubMethods.Location.locationAdded, messageData);\r\n this.locationBtxDeleted.emit(messageData);\r\n });\r\n\r\n //companies\r\n this._hubConnection.on(HubMethods.Company.companyAdded, (messageData: CompanyAddedHubMessage) => {\r\n console.log(HubMethods.Company.companyAdded, messageData);\r\n this.companyAdded.emit(messageData);\r\n });\r\n this._hubConnection.on(HubMethods.Company.companyDeleted, (messageData: CompanyDeletedHubMessage) => {\r\n console.log(HubMethods.Company.companyDeleted, messageData);\r\n this.companyDeleted.emit(messageData);\r\n });\r\n this._hubConnection.on(HubMethods.Company.companyInUpdate, (messageData: CompanyInUpdateHubMessage) => {\r\n console.log(HubMethods.Company.companyInUpdate, messageData);\r\n this.companyInUpdate.emit(messageData);\r\n });\r\n this._hubConnection.on(HubMethods.Company.companyUpdated, (messageData: CompanyUpdatedHubMessage) => {\r\n console.log(HubMethods.Company.companyUpdated, messageData);\r\n this.companyUpdated.emit(messageData);\r\n });\r\n\r\n //service users\r\n this._hubConnection.on(HubMethods.ServiceUser.serviceUserAdded, (messageData: ServiceUserAddedHubMessage) => {\r\n console.log(HubMethods.ServiceUser.serviceUserAdded, messageData);\r\n this.serviceUserAdded.emit(messageData);\r\n });\r\n this._hubConnection.on(HubMethods.ServiceUser.serviceUserDeleted, (messageData: ServiceUserDeletedHubMessage) => {\r\n console.log(HubMethods.ServiceUser.serviceUserDeleted, messageData);\r\n this.serviceUserDeleted.emit(messageData);\r\n });\r\n this._hubConnection.on(HubMethods.ServiceUser.serviceUserInUpdate, (messageData: ServiceUserInUpdateHubMessage) => {\r\n console.log(HubMethods.ServiceUser.serviceUserInUpdate, messageData);\r\n this.serviceUserInUpdate.emit(messageData);\r\n });\r\n this._hubConnection.on(HubMethods.ServiceUser.serviceUserUpdated, (messageData: ServiceUserUpdatedHubMessage) => {\r\n console.log(HubMethods.ServiceUser.serviceUserUpdated, messageData);\r\n this.serviceUserUpdated.emit(messageData);\r\n });\r\n\r\n //sales users\r\n this._hubConnection.on(HubMethods.SalesUser.salesUserAdded, (messageData: SalesUserAddedHubMessage) => {\r\n console.log(HubMethods.SalesUser.salesUserAdded, messageData);\r\n this.salesUserAdded.emit(messageData);\r\n });\r\n this._hubConnection.on(HubMethods.SalesUser.salesUserDeleted, (messageData: SalesUserDeletedHubMessage) => {\r\n console.log(HubMethods.SalesUser.salesUserDeleted, messageData);\r\n this.salesUserDeleted.emit(messageData);\r\n });\r\n this._hubConnection.on(HubMethods.SalesUser.salesUserInUpdate, (messageData: SalesUserInUpdateHubMessage) => {\r\n console.log(HubMethods.SalesUser.salesUserInUpdate, messageData);\r\n this.salesUserInUpdate.emit(messageData);\r\n });\r\n this._hubConnection.on(HubMethods.SalesUser.salesUserUpdated, (messageData: SalesUserUpdatedHubMessage) => {\r\n console.log(HubMethods.SalesUser.salesUserUpdated, messageData);\r\n this.salesUserUpdated.emit(messageData);\r\n });\r\n\r\n //company users\r\n this._hubConnection.on(HubMethods.CompanyUser.companyUserAdded, (messageData: CompanyUserAddedHubMessage) => {\r\n console.log(HubMethods.CompanyUser.companyUserAdded, messageData);\r\n this.companyUserAdded.emit(messageData);\r\n });\r\n this._hubConnection.on(HubMethods.CompanyUser.companyUserDeleted, (messageData: CompanyUserDeletedHubMessage) => {\r\n console.log(HubMethods.CompanyUser.companyUserDeleted, messageData);\r\n this.companyUserDeleted.emit(messageData);\r\n });\r\n this._hubConnection.on(HubMethods.CompanyUser.companyUserInUpdate, (messageData: CompanyUserInUpdateHubMessage) => {\r\n console.log(HubMethods.CompanyUser.companyUserInUpdate, messageData);\r\n this.companyUserInUpdate.emit(messageData);\r\n });\r\n this._hubConnection.on(HubMethods.CompanyUser.companyUserUpdated, (messageData: CompanyUserUpdatedHubMessage) => {\r\n console.log(HubMethods.CompanyUser.companyUserUpdated, messageData);\r\n this.companyUserUpdated.emit(messageData);\r\n });\r\n\r\n //company admins\r\n this._hubConnection.on(HubMethods.CompanyAdmin.companyAdminAdded, (messageData: CompanyAdminAddedHubMessage) => {\r\n console.log(HubMethods.CompanyAdmin.companyAdminAdded, messageData);\r\n this.companyAdminAdded.emit(messageData);\r\n });\r\n this._hubConnection.on(HubMethods.CompanyAdmin.companyAdminDeleted, (messageData: CompanyAdminDeletedHubMessage) => {\r\n console.log(HubMethods.CompanyAdmin.companyAdminDeleted, messageData);\r\n this.companyAdminDeleted.emit(messageData);\r\n });\r\n this._hubConnection.on(HubMethods.CompanyAdmin.companyAdminInUpdate, (messageData: CompanyAdminInUpdateHubMessage) => {\r\n console.log(HubMethods.CompanyAdmin.companyAdminInUpdate, messageData);\r\n this.companyAdminInUpdate.emit(messageData);\r\n });\r\n this._hubConnection.on(HubMethods.CompanyAdmin.companyAdminUpdated, (messageData: CompanyAdminUpdatedHubMessage) => {\r\n console.log(HubMethods.CompanyAdmin.companyAdminUpdated, messageData);\r\n this.companyAdminUpdated.emit(messageData);\r\n });\r\n\r\n //vendor\r\n this._hubConnection.on(HubMethods.Vendor.vendorAdded, (messageData: VendorAddedHubMessage) => {\r\n console.log(HubMethods.Vendor.vendorAdded, messageData);\r\n this.vendorAdded.emit(messageData);\r\n });\r\n this._hubConnection.on(HubMethods.Vendor.vendorDeleted, (messageData: VendorDeletedHubMessage) => {\r\n console.log(HubMethods.CompanyUser.companyUserDeleted, messageData);\r\n this.vendorDeleted.emit(messageData);\r\n });\r\n this._hubConnection.on(HubMethods.Vendor.vendorInUpdate, (messageData: VendorInUpdateHubMessage) => {\r\n console.log(HubMethods.CompanyUser.companyUserInUpdate, messageData);\r\n this.vendorInUpdate.emit(messageData);\r\n });\r\n this._hubConnection.on(HubMethods.Vendor.vendorUpdated, (messageData: VendorUpdatedHubMessage) => {\r\n console.log(HubMethods.Vendor.vendorUpdated, messageData);\r\n this.vendorUpdated.emit(messageData);\r\n });\r\n\r\n //KTX locations\r\n this._hubConnection.on(HubMethods.LocationKtx.locationKtxAdded, (messageData: LocationKtxAddedHubMessage) => {\r\n console.log(HubMethods.LocationKtx.locationKtxAdded, messageData);\r\n this.locationKtxAdded.emit(messageData);\r\n });\r\n this._hubConnection.on(HubMethods.LocationKtx.locationKtxInUpdate, (messageData: LocationKtxInUpdateHubMessage) => {\r\n console.log(HubMethods.LocationKtx.locationKtxInUpdate, messageData);\r\n this.locationKtxInUpdate.emit(messageData);\r\n });\r\n this._hubConnection.on(HubMethods.LocationKtx.locationKtxUpdated, (messageData: LocationKtxUpdatedHubMessage) => {\r\n console.log(HubMethods.LocationKtx.locationKtxUpdated, messageData);\r\n this.locationKtxUpdated.emit(messageData);\r\n });\r\n this._hubConnection.on(HubMethods.LocationKtx.locationKtxDeleted, (messageData: LocationKtxDeletedHubMessage) => {\r\n console.log(HubMethods.LocationKtx.locationKtxDeleted, messageData);\r\n this.locationKtxDeleted.emit(messageData);\r\n });\r\n this._hubConnection.on(HubMethods.LocationKtx.locationKtxBinsInUpdate, (messageData: LocationKtxBinsInUpdateHubMessage) => {\r\n console.log(HubMethods.LocationKtx.locationKtxBinsInUpdate, messageData);\r\n this.locationKtxBinsInUpdate.emit(messageData);\r\n });\r\n this._hubConnection.on(HubMethods.LocationKtx.locationKtxBinsUpdated, (messageData: LocationKtxBinsUpdatedHubMessage) => {\r\n console.log(HubMethods.LocationKtx.locationKtxBinsUpdated, messageData);\r\n this.locationKtxBinsUpdated.emit(messageData);\r\n });\r\n this._hubConnection.on(HubMethods.LocationKtx.locationKtxDeviceInInitialization, (messageData: LocationKtxDeviceInInitializationHubMessage) => {\r\n console.log(HubMethods.LocationKtx.locationKtxDeviceInInitialization, messageData);\r\n this.locationKtxDeviceInInitialization.emit(messageData);\r\n });\r\n this._hubConnection.on(HubMethods.LocationKtx.locationKtxDeviceInitialized, (messageData: LocationKtxDeviceInitializedHubMessage) => {\r\n console.log(HubMethods.LocationKtx.locationKtxDeviceInitialized, messageData);\r\n this.locationKtxDeviceInitialized.emit(messageData);\r\n });\r\n\r\n // Location KTX Scheme\r\n this._hubConnection.on(HubMethods.LocationKtx.locationKtxTemperatureRangeUpdated, (messageData: LocationKtxTemperatureRangeUpdatedHubMessage) => {\r\n console.log(HubMethods.LocationKtx.locationKtxTemperatureRangeUpdated, messageData);\r\n this.temperatureRangeUpdated.emit(messageData);\r\n });\r\n\r\n //Location ITX \r\n this._hubConnection.on(HubMethods.LocationItx.locationItxInUpdate, (messageData: LocationItxInUpdateHubMessage) => {\r\n console.log(HubMethods.LocationItx.locationItxInUpdate, messageData);\r\n this.locationItxInUpdate.emit(messageData);\r\n });\r\n this._hubConnection.on(HubMethods.LocationItx.locationItxUpdated, (messageData: LocationItxUpdatedHubMessage) => {\r\n console.log(HubMethods.LocationItx.locationItxUpdated, messageData);\r\n this.locationItxUpdated.emit(messageData);\r\n });\r\n this._hubConnection.on(HubMethods.LocationItx.locationItxFullnessRangeUpdated, (messageData: LocationItxFullnessRangeUpdatedHubMessage) => {\r\n console.log(HubMethods.LocationItx.locationItxFullnessRangeUpdated, messageData);\r\n this.fullnessRangeUpdated.emit(messageData);\r\n });\r\n this._hubConnection.on(HubMethods.LocationItx.locationItxAdded, (messageData: LocationItxAddedHubMessage) => {\r\n console.log(HubMethods.LocationItx.locationItxAdded, messageData);\r\n this.locationItxAdded.emit(messageData);\r\n });\r\n this._hubConnection.on(HubMethods.LocationItx.locationItxDeleted, (messageData: LocationItxDeletedHubMessage) => {\r\n console.log(HubMethods.LocationItx.locationItxDeleted, messageData);\r\n this.locationItxDeleted.emit(messageData);\r\n });\r\n this._hubConnection.on(HubMethods.LocationItx.locationItxStorageInView, (messageData: LocationItxStoragesInViewHubMessage) => {\r\n console.log(HubMethods.LocationItx.locationItxStorageInView, messageData);\r\n this.locationItxStorageInView.emit(messageData);\r\n });\r\n this._hubConnection.on(HubMethods.LocationItx.locationItxDeviceInInitialization, (messageData: LocationItxDeviceInInitializationHubMessage) => {\r\n console.log(HubMethods.LocationItx.locationItxDeviceInInitialization, messageData);\r\n this.locationItxDeviceInInitialization.emit(messageData);\r\n });\r\n this._hubConnection.on(HubMethods.LocationItx.locationItxDeviceInitialized, (messageData: LocationItxDeviceInitializedHubMessage) => {\r\n console.log(HubMethods.LocationItx.locationItxDeviceInitialized, messageData);\r\n this.locationItxDeviceInitialized.emit(messageData);\r\n });\r\n\r\n //ITX Bin\r\n this._hubConnection.on(HubMethods.ItxBin.itxBinAdded, (messageData: ItxBinAddedHubMessage) => {\r\n console.log(HubMethods.ItxBin.itxBinAdded, messageData);\r\n this.itxBinAdded.emit(messageData);\r\n });\r\n this._hubConnection.on(HubMethods.ItxBin.itxBinInUpdate, (messageData: ItxBinInUpdateHubMessage) => {\r\n console.log(HubMethods.ItxBin.itxBinInUpdate, messageData);\r\n this.itxBinInUpdate.emit(messageData);\r\n });\r\n this._hubConnection.on(HubMethods.ItxBin.itxBinUpdated, (messageData: ItxBinUpdatedHubMessage) => {\r\n console.log(HubMethods.ItxBin.itxBinUpdated, messageData);\r\n this.itxBinUpdated.emit(messageData);\r\n });\r\n this._hubConnection.on(HubMethods.ItxBin.itxBinDeleted, (messageData: ItxBinDeletedHubMessage) => {\r\n console.log(HubMethods.ItxBin.itxBinDeleted, messageData);\r\n this.itxBinDeleted.emit(messageData);\r\n });\r\n //ITX Bin radar\r\n this._hubConnection.on(HubMethods.ItxBin.itxBinRadarDeleted, (messageData: ItxBinRadarDeletedHubMessage) => {\r\n console.log(HubMethods.ItxBin.itxBinRadarDeleted, messageData);\r\n this.itxBinRadarDeleted.emit(messageData);\r\n });\r\n this._hubConnection.on(HubMethods.ItxBin.itxBinRadarAdded, (messageData: ItxBinRadarAddedHubMessage) => {\r\n console.log(HubMethods.ItxBin.itxBinRadarAdded, messageData);\r\n this.itxBinRadarAdded.emit(messageData);\r\n });\r\n this._hubConnection.on(HubMethods.ItxBin.itxBinRadarInUpdate, (messageData: ItxBinRadarInUpdateHubMessage) => {\r\n console.log(HubMethods.ItxBin.itxBinRadarInUpdate, messageData);\r\n this.itxBinRadarInUpdate.emit(messageData);\r\n });\r\n this._hubConnection.on(HubMethods.ItxBin.itxBinRadarUpdated, (messageData: ItxBinRadarUpdatedHubMessage) => {\r\n console.log(HubMethods.ItxBin.itxBinRadarUpdated, messageData);\r\n this.itxBinRadarUpdated.emit(messageData);\r\n });\r\n\r\n //Updater\r\n this._hubConnection.on(HubMethods.Updater.updaterProjectUpdateFirmware, (messageData: UpdaterProjectUpdateFirmwareHubMessage) => {\r\n console.log(HubMethods.Updater.updaterProjectUpdateFirmware, messageData);\r\n this.updaterProjectUpdateFirmware.emit(messageData);\r\n });\r\n\r\n this._hubConnection.onclose(async (error) => {\r\n if (this._shouldBeConnected) {\r\n this.restartConnection(new Error(`SignalR disconnected '${error ? '' : error.message}'`));\r\n }\r\n });\r\n }\r\n\r\n public disconect() {\r\n if (this._hubConnection) {\r\n this._shouldBeConnected = false;\r\n this._hubConnection.stop();\r\n this._hubConnection = null;\r\n }\r\n }\r\n}","export * from './locations.api.service';\r\nexport * from './companies.api.service';\r\nexport * from './company-admins.api.service';\r\nexport * from './company-users.api.service';\r\nexport * from './equipment.api.service';\r\nexport * from './service-users.api.service';\r\nexport * from './hub.service';\r\nexport * from './locations-btx.api.service';\r\nexport * from './locations-ktx.api.service';\r\nexport * from './bin.api.service';\r\nexport * from './vendor.api.service';\r\nexport * from './locations-itx.api.service';\r\nexport * from './itx-bin.api.service';\r\nexport * from './event.api.service';\r\nexport * from './report.api.service';\r\nexport * from './account.api.service';\r\nexport * from './sales-users.api.service';\r\nexport * from './aqs-commodities.api.service';\r\nexport * from './aqs-report.api.service';\r\nexport * from './aqs-airflow.api.service';\r\nexport * from './aqs-quote-storage.api.service';\r\nexport * from './device-log.api.service';\r\nexport * from './email-service.api.service';\r\nexport * from './updater-device.service';\r\n\r\n","import { Injectable } from '@angular/core';\r\nimport { Router } from '@angular/router';\r\n\r\nimport { ErrorModel, HttpService } from '../../../common';\r\nimport { ApiRoutes } from '../../constants';\r\nimport { CapacityUnitEnum, ItxBinTypeEnum, ItxRadarLocationEnum, SizeMeasureEnum, TemperatureMeasureEnum } from '../../enums';\r\nimport {\r\n AddItxBinModel, ItxBinGetModel, ItxBinViewModel, EditItxBinModel, RadarPostModel, RadarViewModel, ItxSchemeLiveData,\r\n UserPreferences, ItxBinLiveDataModel, ItxBinStaticMembersResponse, ItxStaticScemeData, PeriodToGetliveDataForLocations,\r\n RadarLiveDataModel, UserPreferencesPost, ItxBinParametersRequest, ReportDataFilterPost, ReportHistoricalDataResponse, ItxBinQuickEditPostModel, ItxLocationReportFilter, ItxBinLiveDataViewModel, ItxBinTelemetryWithPreference\r\n} from '../../models';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class ItxBinApiService {\r\n\r\n constructor(\r\n private _httpService: HttpService,\r\n private _router: Router) { }\r\n\r\n public async getItxBinsByLocationId(locationId: number): Promise {\r\n try {\r\n if (this._router.url.indexOf('/back-door') > -1) {\r\n return this.getFakeData();\r\n }\r\n const result = await this._httpService.get(ApiRoutes.ItxBin.getItxBinsByLocationId, { locationId: locationId });\r\n return result.map((item) => {\r\n return ItxBinGetModel.toViewModel(item);\r\n });\r\n } catch (error) {\r\n return this.processError(error);\r\n }\r\n }\r\n\r\n public async setUserPreferences(userPreferences: UserPreferencesPost): Promise {\r\n try {\r\n if (this._router.url.indexOf('/back-door') > -1) {\r\n return this.getFakeUserPreference();\r\n }\r\n const result = await this._httpService.post(ApiRoutes.ItxBin.setUserPreferences, userPreferences);\r\n return result;\r\n } catch (error) {\r\n return this.processError(error);\r\n }\r\n\r\n }\r\n\r\n public async add(addItxBin: AddItxBinModel): Promise {\r\n try {\r\n const result = await this._httpService.post(ApiRoutes.ItxBin.add, addItxBin);\r\n const itxBin = ItxBinGetModel.toViewModel(result);\r\n return itxBin;\r\n } catch (error) {\r\n return this.processError(error);\r\n }\r\n }\r\n\r\n public async edit(editItxBin: EditItxBinModel): Promise {\r\n try {\r\n const result = await this._httpService.post(ApiRoutes.ItxBin.edit, editItxBin);\r\n const itxBin = ItxBinGetModel.toViewModel(result);\r\n return itxBin;\r\n } catch (error) {\r\n return this.processError(error);\r\n }\r\n }\r\n\r\n public async delete(itxBinId: number): Promise {\r\n try {\r\n const result = this._httpService.delete(ApiRoutes.ItxBin.delete, { itxBinId });\r\n return result;\r\n } catch (error) {\r\n return this.processError(error);\r\n }\r\n }\r\n\r\n public async addRadar(radar: RadarPostModel): Promise {\r\n try {\r\n\r\n const result = await this._httpService.post(ApiRoutes.ItxBin.addRadar, radar)\r\n let toRet = result as RadarViewModel;\r\n return toRet;\r\n } catch (error) {\r\n return this.processError(error);\r\n }\r\n }\r\n\r\n public async editRadar(radar: RadarPostModel): Promise {\r\n try {\r\n const result = await this._httpService.post(ApiRoutes.ItxBin.editRadar, radar)\r\n let toRet = result as RadarViewModel;\r\n return toRet;\r\n } catch (error) {\r\n return this.processError(error);\r\n }\r\n }\r\n\r\n public async deleteRadar(radarId: number): Promise {\r\n try {\r\n const result = await this._httpService.delete(ApiRoutes.ItxBin.deleteRadar, { radarId });\r\n return result;\r\n } catch (error) {\r\n return this.processError(error);\r\n }\r\n }\r\n\r\n private processError(error: any) {\r\n if (error instanceof ErrorModel) {\r\n return Promise.reject(error);\r\n }\r\n console.log(error);\r\n return null;\r\n }\r\n\r\n public async getSchemeForLiveData(requestParameters: ItxBinParametersRequest,): Promise {\r\n try {\r\n if (this._router.url.indexOf('/back-door') > -1) {\r\n return this.getFakeBinScheme();\r\n }\r\n const result = await this._httpService.post(ApiRoutes.ItxBin.getSchemeForLiveData, requestParameters);\r\n return result;\r\n } catch (error) {\r\n return this.processError(error);\r\n }\r\n }\r\n\r\n public async getStaticItxBinSchemeData(): Promise {\r\n try {\r\n if (this._router.url.indexOf('/back-door') > -1) {\r\n return this.getStaticItxBinScheme();\r\n }\r\n const result = await this._httpService.get(ApiRoutes.ItxBin.getStaticSchemeForFiveData);\r\n return result;\r\n } catch (error) {\r\n return this.processError(error);\r\n }\r\n }\r\n\r\n public async getLocationReportFilters(): Promise {\r\n try {\r\n if (this._router.url.indexOf('/back-door') > -1) {\r\n return this.getFakeLocationFilters();\r\n }\r\n const result = await this._httpService.get(ApiRoutes.ItxBin.getLocationReportFilters);\r\n return result;\r\n } catch (error) {\r\n return this.processError(error);\r\n }\r\n }\r\n\r\n public async getDataForLiveData(bins: number[]): Promise {\r\n try {\r\n if (this._router.url.indexOf('/back-door') > -1) {\r\n return this.getFakeLiveData();\r\n }\r\n let result = await this._httpService.get(ApiRoutes.ItxBin.getDataForLiveData, { bins });\r\n result = result as ItxBinLiveDataModel[]\r\n let rd: RadarLiveDataModel[];\r\n result.forEach(bin => {\r\n rd = JSON.parse(bin.radars);\r\n bin.radars = rd;\r\n bin.hasRadarError = rd.some(r => r.isRadarTelemetryError);\r\n });\r\n return result;\r\n } catch (error) {\r\n return this.processError(error);\r\n }\r\n }\r\n\r\n public async quickEdit(editItxBin: ItxBinQuickEditPostModel): Promise {\r\n try {\r\n const result = await this._httpService.post(ApiRoutes.ItxBin.quicEdit, editItxBin);\r\n const itxBin = ItxBinGetModel.toViewModel(result);\r\n return itxBin;\r\n } catch (error) {\r\n return this.processError(error);\r\n }\r\n }\r\n\r\n public async getItxBinLiveData(binId: number): Promise {\r\n try {\r\n if (this._router.url.indexOf('/back-door') > -1) {\r\n return ItxBinTelemetryWithPreference.toBinLiveDataViewModel(this.getFakeBinLiveData(binId));\r\n }\r\n let result = await this._httpService.get(ApiRoutes.ItxBin.getRadarTelemetryWithUserPreferences, { binId: binId });\r\n result = result as ItxBinTelemetryWithPreference;\r\n result.telemetry.radars = JSON.parse(result.telemetry.radars);\r\n return ItxBinTelemetryWithPreference.toBinLiveDataViewModel(result);\r\n } catch (error) {\r\n return this.processError(error);\r\n }\r\n }\r\n\r\n private getFakeUserPreference(): UserPreferences {\r\n let data = {\r\n id: 1, capacityLoosUnit: CapacityUnitEnum.Bsh, capacityLiquidUnit: CapacityUnitEnum.Gal, temperatureMeasure: TemperatureMeasureEnum.Celsius,\r\n sizeMeasure: SizeMeasureEnum.In\r\n } as UserPreferences;\r\n return data;\r\n }\r\n\r\n private getFakeBinLiveData(binId: number): ItxBinTelemetryWithPreference {\r\n let binLiveData = new ItxBinTelemetryWithPreference();\r\n binLiveData.userPreference = this.getFakeUserPreference();\r\n binLiveData.itxBin = {\r\n id: binId, name: 'fakeBin3', locationId: 1, height: 30, width: 40, depth: 0, material: 'wheat', totalCapacity: 30, capacityUnit: CapacityUnitEnum.Ft_3, countOfRadars: 4, binType: ItxBinTypeEnum.SiloConical, roofAngle: 30.96, roofCap: 13.4,\r\n tiltAngle: 15, sizeMeasure: SizeMeasureEnum.Ft, radars: [{ id: 6, radarId: 6, radarIdAddress: 6, radarLocation: 0, distanceFromBinCenter: 20 }, { id: 7, radarId: 7, radarIdAddress: 7, radarLocation: 1, distanceFromBinCenter: 10 }, { id: 8, radarId: 8, radarIdAddress: 8, radarLocation: 2, distanceFromBinCenter: 5 }] as RadarViewModel[]\r\n };\r\n binLiveData.telemetry = {\r\n id: 0, binHeadSpace: 63, binFullnessCapacity: 92, binTemperature: 77, binPercentFullness: 17, radars: [\r\n { radarId: 172, temperature: 73, headSpace: 44, percentFull: 60, capacity: 58, radarLocation: 0, distanceFromBinCenter: 20, isRadarTelemetryError: true } as RadarLiveDataModel,\r\n { radarId: 129, temperature: 71, headSpace: 40, percentFull: 45, capacity: 2, radarLocation: 1, distanceFromBinCenter: 10 } as RadarLiveDataModel,\r\n { radarId: 155, temperature: -5, headSpace: 64, percentFull: 42, capacity: 78, radarLocation: 2, distanceFromBinCenter: 0 } as RadarLiveDataModel\r\n ], calculatedUsedCapacity: 999999, calculatedAvailableCapacity: 999999, calculatedErrorBound: 30, timestamp: new Date().toString(),\r\n } as unknown as ItxBinLiveDataModel\r\n\r\n return binLiveData;\r\n }\r\n\r\n private getFakeData(): ItxBinViewModel[] {\r\n let data = [\r\n {\r\n id: 1, name: 'fakeBin1', locationId: 1, height: 10, width: 20, depth: 25, material: 'corn', totalCapacity: 10, capacityUnit: CapacityUnitEnum.Ft_3, countOfRadars: 3, binType: ItxBinTypeEnum.FlatStorageLevel,\r\n tiltAngle: 10, sizeMeasure: SizeMeasureEnum.Ft, radars: [{ id: 1, radarId: 1, radarIdAddress: 1 }, { id: 2, radarId: 2, radarIdAddress: 2, radarLocation: null, distanceFromBinCenter: null }, { id: 3, radarId: 3, radarIdAddress: 3, radarLocation: null, distanceFromBinCenter: null }] as RadarViewModel[], isSomeoneUpdateStorage: false\r\n },\r\n {\r\n id: 2, name: 'fakeBin2', locationId: 1, height: 20, width: 30, depth: 0, material: 'oil', totalCapacity: 20, capacityUnit: CapacityUnitEnum.Bbl, countOfRadars: 2, binType: ItxBinTypeEnum.LiquidStorageConical,\r\n tiltAngle: 10, sizeMeasure: SizeMeasureEnum.Ft, radars: [{ id: 4, radarId: 4, radarIdAddress: 4, radarLocation: null, distanceFromBinCenter: null }, { id: 5, radarId: 5, radarIdAddress: 5, radarLocation: null, distanceFromBinCenter: null }] as RadarViewModel[], isSomeoneUpdateStorage: false\r\n },\r\n {\r\n id: 3, name: 'fakeBin3', locationId: 1, height: 30, width: 40, depth: 0, material: 'wheat', totalCapacity: 30, capacityUnit: CapacityUnitEnum.Ft_3, countOfRadars: 4, binType: ItxBinTypeEnum.SiloConical, roofAngle: 30.96, roofCap: 13.4,\r\n tiltAngle: 15, sizeMeasure: SizeMeasureEnum.Ft, radars: [{ id: 6, radarId: 6, radarIdAddress: 6, radarLocation: 0, distanceFromBinCenter: 20 }, { id: 7, radarId: 7, radarIdAddress: 7, radarLocation: 1, distanceFromBinCenter: 10 }, { id: 8, radarId: 8, radarIdAddress: 8, radarLocation: 2, distanceFromBinCenter: 5 }] as RadarViewModel[], isSomeoneUpdateStorage: false\r\n },\r\n ] as ItxBinViewModel[]\r\n return data;\r\n }\r\n\r\n private getFakeBinScheme(): ItxSchemeLiveData {\r\n let data = {\r\n itxBinSchemeResponses: [\r\n {\r\n id: 0, name: \"FakeName23FakeName23\", locationId: 2, locationName: \"Clon Arta\", companyId: 1, companyName: \"My first company FAKE1\", binType: 0, sizeUnit: 0,\r\n material: \"oil\", totalCapacity: 94, capacityUnit: 6,\r\n },\r\n {\r\n id: 1, name: \"MilletStorage\", locationId: 2, locationName: \"Clon Arta\", companyId: 1, companyName: \"My first company FAKE1\", binType: 1,\r\n sizeUnit: 0, material: \"Millet\", totalCapacity: 100, capacityUnit: 2\r\n },\r\n {\r\n id: 2, name: \"Fake565\", locationId: 5, locationName: \"Second Location FAKE\", companyId: 1, companyName: \"My first company FAKE1\", binType: 2,\r\n sizeUnit: 0, material: \"Corn\", totalCapacity: 500, capacityUnit: 1\r\n },\r\n\r\n {\r\n id: 3, name: \"FakeName23 FakeName23\", locationId: 2, locationName: \"Clon Arta\", companyId: 1, companyName: \"My first company FAKE1\", binType: 3, sizeUnit: 0,\r\n material: \"oil\", totalCapacity: 100, capacityUnit: 6,\r\n },\r\n {\r\n id: 4, name: \"MilletStorage\", locationId: 2, locationName: \"Clon Arta\", companyId: 1, companyName: \"My first company FAKE1\", binType: 4,\r\n sizeUnit: 0, material: \"Millet\", totalCapacity: 100, capacityUnit: 2\r\n },\r\n {\r\n id: 5, name: \"Fake565\", locationId: 5, locationName: \"Second Location FAKE\", companyId: 1, companyName: \"My first company FAKE1\", binType: 5,\r\n sizeUnit: 0, material: \"Corn\", totalCapacity: 400, capacityUnit: 1\r\n },\r\n\r\n {\r\n id: 6, name: \"FakeName23\", locationId: 2, locationName: \"Clon Arta\", companyId: 1, companyName: \"My first company FAKE1\", binType: 6, sizeUnit: 0,\r\n material: \"oil\", totalCapacity: 0, capacityUnit: 6,\r\n },\r\n {\r\n id: 7, name: \"MilletStorage\", locationId: 2, locationName: \"Clon Arta\", companyId: 1, companyName: \"My first company FAKE1\", binType: 7,\r\n sizeUnit: 0, material: \"Millet\", totalCapacity: 0, capacityUnit: 2\r\n },\r\n {\r\n id: 8, name: \"Fake565\", locationId: 5, locationName: \"Second Location FAKE\", companyId: 1, companyName: \"My first company FAKE1\", binType: 8,\r\n sizeUnit: 0, material: \"Corn\", totalCapacity: 0, capacityUnit: 1\r\n },\r\n\r\n {\r\n id: 9, name: \"FakeName23\", locationId: 2, locationName: \"Clon Arta\", companyId: 1, companyName: \"My first company FAKE1\", binType: 9, sizeUnit: 0,\r\n material: \"oil\", totalCapacity: 0, capacityUnit: 6,\r\n },\r\n {\r\n id: 10, name: \"MilletStorage\", locationId: 2, locationName: \"Clon Arta\", companyId: 1, companyName: \"My first company FAKE1\", binType: 10,\r\n sizeUnit: 0, material: \"Millet\", totalCapacity: 0, capacityUnit: 2\r\n },\r\n {\r\n id: 11, name: \"Fake565\", locationId: 5, locationName: \"Second Location FAKE\", companyId: 1, companyName: \"My first company FAKE1\", binType: 11,\r\n sizeUnit: 0, material: \"Corn\", totalCapacity: 0, capacityUnit: 1\r\n },\r\n ],\r\n totalFilteredCount: 12\r\n\r\n } as ItxSchemeLiveData\r\n return data;\r\n }\r\n\r\n private getFakeLiveData(): ItxBinLiveDataModel[] {\r\n let data = [{\r\n id: 0, binHeadSpace: 63, binFullnessCapacity: 92, binTemperature: 77, binPercentFullness: 17, radars: [\r\n { radarId: 172, temperature: 73, headSpace: 44, percentFull: 60, capacity: 58, radarLocation: 0, distanceFromBinCenter: 20 } as RadarLiveDataModel,\r\n { radarId: 129, temperature: 71, headSpace: 40, percentFull: 45, capacity: 2, radarLocation: 1, distanceFromBinCenter: 10 } as RadarLiveDataModel,\r\n { radarId: 155, temperature: -5, headSpace: 64, percentFull: 42, capacity: 78, radarLocation: 2, distanceFromBinCenter: 0 } as RadarLiveDataModel\r\n ], calculatedUsedCapacity: 999999, calculatedAvailableCapacity: 999999, calculatedErrorBound: 30, timestamp: new Date().toString(),\r\n } as unknown as ItxBinLiveDataModel,\r\n {\r\n id: 1, binHeadSpace: 32, binFullnessCapacity: 45, binTemperature: 44, binPercentFullness: 27, radars: [\r\n { radarId: 43, temperature: 44, headSpace: 55, percentFull: 33, capacity: 66, radarLocation: 0, distanceFromBinCenter: 20 } as RadarLiveDataModel,\r\n { radarId: 54, temperature: 33, headSpace: 55, percentFull: 22, capacity: 55, radarLocation: 1, distanceFromBinCenter: 15 } as RadarLiveDataModel,\r\n { radarId: 67, temperature: 55, headSpace: 66, percentFull: 44, capacity: 44, radarLocation: 2, distanceFromBinCenter: 0 } as RadarLiveDataModel\r\n ], calculatedUsedCapacity: 123345, calculatedAvailableCapacity: 34562, calculatedErrorBound: 44, timestamp: new Date().toString(),\r\n } as unknown as ItxBinLiveDataModel,\r\n {\r\n id: 2, binHeadSpace: 600, binFullnessCapacity: 300, binTemperature: 77, binPercentFullness: 30, radars: [\r\n { radarId: 1, temperature: 54, headSpace: 23, percentFull: 65, capacity: 250, radarLocation: 0, distanceFromBinCenter: 20 } as RadarLiveDataModel,\r\n { radarId: 2, temperature: 76, headSpace: 40, percentFull: 23, capacity: 300, radarLocation: 1, distanceFromBinCenter: 10 } as RadarLiveDataModel,\r\n { radarId: 3, temperature: 70, headSpace: 64, percentFull: 42, capacity: 350, radarLocation: 2, distanceFromBinCenter: 0 } as RadarLiveDataModel\r\n ], calculatedUsedCapacity: 899888, calculatedAvailableCapacity: 20000, calculatedErrorBound: 33, timestamp: new Date().toString(),\r\n } as unknown as ItxBinLiveDataModel,\r\n {\r\n id: 3, binHeadSpace: 63, binFullnessCapacity: 92, binTemperature: 77, binPercentFullness: 47, radars: [\r\n { radarId: 172, temperature: 73, headSpace: 44, percentFull: 60, capacity: 58, radarLocation: 0, distanceFromBinCenter: 30 } as RadarLiveDataModel,\r\n { radarId: 129, temperature: 71, headSpace: 40, percentFull: 45, capacity: 2, radarLocation: 1, distanceFromBinCenter: 20 } as RadarLiveDataModel,\r\n { radarId: 155, temperature: -5, headSpace: 64, percentFull: 42, capacity: 78, radarLocation: 2, distanceFromBinCenter: 1 } as RadarLiveDataModel\r\n ], calculatedUsedCapacity: 786290, calculatedAvailableCapacity: 123765, calculatedErrorBound: 22, timestamp: new Date().toString(),\r\n } as unknown as ItxBinLiveDataModel,\r\n {\r\n id: 4, binHeadSpace: 32, binFullnessCapacity: 45, binTemperature: 44, binPercentFullness: 57, radars: [\r\n { radarId: 43, temperature: 44, headSpace: 55, percentFull: 33, capacity: 66, radarLocation: 0, distanceFromBinCenter: 50 } as RadarLiveDataModel,\r\n { radarId: 54, temperature: 33, headSpace: 55, percentFull: 22, capacity: 55, radarLocation: 1, distanceFromBinCenter: 30 } as RadarLiveDataModel,\r\n { radarId: 67, temperature: 55, headSpace: 66, percentFull: 44, capacity: 44, radarLocation: 2, distanceFromBinCenter: 0 } as RadarLiveDataModel\r\n ], calculatedUsedCapacity: 198279, calculatedAvailableCapacity: 123345, calculatedErrorBound: 10, timestamp: new Date().toString(),\r\n } as unknown as ItxBinLiveDataModel,\r\n {\r\n id: 5, binHeadSpace: 600, binFullnessCapacity: 300, binTemperature: 77, binPercentFullness: 60, radars: [\r\n { radarId: 1, temperature: 54, headSpace: 23, percentFull: 65, capacity: 250, radarLocation: 0, distanceFromBinCenter: 50 } as RadarLiveDataModel,\r\n { radarId: 2, temperature: 76, headSpace: 40, percentFull: 23, capacity: 300, radarLocation: 1, distanceFromBinCenter: 25 } as RadarLiveDataModel,\r\n { radarId: 3, temperature: 70, headSpace: 64, percentFull: 42, capacity: 350, radarLocation: 2, distanceFromBinCenter: 10 } as RadarLiveDataModel\r\n ], calculatedUsedCapacity: 4233456, calculatedAvailableCapacity: 234455, calculatedErrorBound: 12, timestamp: new Date().toString(),\r\n } as unknown as ItxBinLiveDataModel,\r\n {\r\n id: 6, binHeadSpace: 63, binFullnessCapacity: 92, binTemperature: 77, binPercentFullness: 22, radars: [\r\n { radarId: 172, temperature: 73, headSpace: 44, percentFull: 60, capacity: 58 } as RadarLiveDataModel,\r\n { radarId: 129, temperature: 71, headSpace: 40, percentFull: 45, capacity: 2 } as RadarLiveDataModel,\r\n { radarId: 155, temperature: -5, headSpace: 64, percentFull: 42, capacity: 78 } as RadarLiveDataModel\r\n ], calculatedUsedCapacity: 0, calculatedAvailableCapacity: 0, calculatedErrorBound: 0, timestamp: new Date().toString(),\r\n } as unknown as ItxBinLiveDataModel,\r\n {\r\n id: 7, binHeadSpace: 32, binFullnessCapacity: 45, binTemperature: 44, binPercentFullness: 87, radars: [\r\n { radarId: 43, temperature: 44, headSpace: 55, percentFull: 33, capacity: 66 } as RadarLiveDataModel,\r\n { radarId: 54, temperature: 33, headSpace: 55, percentFull: 22, capacity: 55 } as RadarLiveDataModel,\r\n { radarId: 67, temperature: 55, headSpace: 66, percentFull: 44, capacity: 44 } as RadarLiveDataModel\r\n ], calculatedUsedCapacity: 0, calculatedAvailableCapacity: 0, calculatedErrorBound: 0, timestamp: new Date().toString(),\r\n } as unknown as ItxBinLiveDataModel,\r\n {\r\n id: 8, binHeadSpace: 600, binFullnessCapacity: 300, binTemperature: 77, binPercentFullness: 42, radars: [\r\n { radarId: 1, temperature: 54, headSpace: 23, percentFull: 65, capacity: 250 } as RadarLiveDataModel,\r\n { radarId: 2, temperature: 76, headSpace: 40, percentFull: 23, capacity: 300 } as RadarLiveDataModel,\r\n { radarId: 3, temperature: 70, headSpace: 64, percentFull: 42, capacity: 350 } as RadarLiveDataModel\r\n ], calculatedUsedCapacity: 0, calculatedAvailableCapacity: 0, calculatedErrorBound: 0, timestamp: new Date().toString(),\r\n } as unknown as ItxBinLiveDataModel,\r\n {\r\n id: 9, binHeadSpace: 63, binFullnessCapacity: 92, binTemperature: 77, binPercentFullness: 57, radars: [\r\n { radarId: 172, temperature: 73, headSpace: 44, percentFull: 60, capacity: 58 } as RadarLiveDataModel,\r\n { radarId: 129, temperature: 71, headSpace: 40, percentFull: 45, capacity: 2 } as RadarLiveDataModel,\r\n { radarId: 155, temperature: -5, headSpace: 64, percentFull: 42, capacity: 78 } as RadarLiveDataModel\r\n ], calculatedUsedCapacity: 0, calculatedAvailableCapacity: 0, calculatedErrorBound: 0, timestamp: new Date().toString(),\r\n } as unknown as ItxBinLiveDataModel,\r\n {\r\n id: 10, binHeadSpace: 32, binFullnessCapacity: 45, binTemperature: 44, binPercentFullness: 21, radars: [\r\n { radarId: 43, temperature: 44, headSpace: 55, percentFull: 33, capacity: 66 } as RadarLiveDataModel,\r\n { radarId: 54, temperature: 33, headSpace: 55, percentFull: 22, capacity: 55 } as RadarLiveDataModel,\r\n { radarId: 67, temperature: 55, headSpace: 66, percentFull: 44, capacity: 44 } as RadarLiveDataModel\r\n ], calculatedUsedCapacity: 0, calculatedAvailableCapacity: 0, calculatedErrorBound: 0, timestamp: new Date().toString(),\r\n } as unknown as ItxBinLiveDataModel,\r\n {\r\n id: 11, binHeadSpace: 600, binFullnessCapacity: 300, binTemperature: 77, binPercentFullness: 62, radars: [\r\n { radarId: 1, temperature: 54, headSpace: 23, percentFull: 65, capacity: 250 } as RadarLiveDataModel,\r\n { radarId: 2, temperature: 76, headSpace: 40, percentFull: 23, capacity: 300 } as RadarLiveDataModel,\r\n { radarId: 3, temperature: 70, headSpace: 64, percentFull: 42, capacity: 350 } as RadarLiveDataModel\r\n ], calculatedUsedCapacity: 0, calculatedAvailableCapacity: 0, calculatedErrorBound: 0, timestamp: new Date().toString(),\r\n } as unknown as ItxBinLiveDataModel\r\n ]\r\n return data;\r\n }\r\n\r\n private getStaticItxBinScheme(): ItxStaticScemeData {\r\n let data = {\r\n userMeasurePreferences: { id: 1, capacityLoosUnit: 0, capacityLiquidUnit: 5, temperatureMeasure: 0, sizeMeasure: 1 } as UserPreferences,\r\n locationsLiveData: [\r\n {\r\n locationId: 2, locationName: \"Clon Arta\", companyId: 1, companyName: \"My first company FAKE1\", fullnessRangeResponses: [\r\n { id: 1, from: 1, to: 26, colorHex: \"#71c5a3\" }, { id: 3, from: 27, to: 56, colorHex: \"#e1eb28\" },\r\n { id: 4, from: 57, to: 100, colorHex: \"#eb2828\" }], bins: [\r\n { binType: ItxBinTypeEnum.BinConical, id: 1, material: \"fake material 1\", name: \"Fake Bin 1\" },\r\n { binType: ItxBinTypeEnum.BinFlat, id: 2, material: \"fake material 2\", name: \"Fake Bin 2\" },\r\n { binType: ItxBinTypeEnum.BinSloped, id: 3, material: \"fake material 3\", name: \"Fake Bin 3\" },]\r\n } as ItxBinStaticMembersResponse,\r\n\r\n\r\n {\r\n locationId: 4, locationName: \"First Location FAKE\", companyId: 1, companyName: \"My first company FAKE1\", fullnessRangeResponses: [\r\n { id: 3, from: 27, to: 56, colorHex: \"#e1eb28\" }, { id: 4, from: 57, to: 100, colorHex: \"#eb2828\" },\r\n { id: 44, from: 1, to: 26, colorHex: \"#71c5a3\" }], bins: [\r\n { binType: ItxBinTypeEnum.FlatStorageConical, id: 4, material: \"fake material 4\", name: \"Fake Bin 4\" },\r\n { binType: ItxBinTypeEnum.FlatStorageLevel, id: 5, material: \"fake material 5\", name: \"Fake Bin 5\" },\r\n { binType: ItxBinTypeEnum.FlatStorageSloped, id: 6, material: \"fake material 6\", name: \"Fake Bin 6\" },]\r\n } as ItxBinStaticMembersResponse,\r\n\r\n {\r\n locationId: 5, locationName: \"Second Location FAKE\", companyId: 1, companyName: \"My first company FAKE1\", fullnessRangeResponses: [\r\n { id: 3, from: 27, to: 56, colorHex: \"#e1eb28\" }, { id: 4, from: 57, to: 100, colorHex: \"#eb2828\" }, { id: 44, from: 1, to: 26, colorHex: \"#71c5a3\" }], bins: [\r\n { binType: ItxBinTypeEnum.LiquidStorageFlat, id: 7, material: \"liquid 1\", name: \"liquid fake\" },\r\n { binType: ItxBinTypeEnum.LiquidStorageSloped, id: 8, material: \"water 2\", name: \"water fake Bin\" },\r\n { binType: ItxBinTypeEnum.SiloSloped, id: 9, material: \"fake material 3\", name: \"silo sloped\" },]\r\n }],\r\n storageCount: 11,\r\n periodToGetDataForLocations: [{ acquisitionRate: 3, locationId: 2 } as PeriodToGetliveDataForLocations, { acquisitionRate: 2, locationId: 4 } as PeriodToGetliveDataForLocations\r\n , { acquisitionRate: 5, locationId: 5 } as PeriodToGetliveDataForLocations]\r\n } as ItxStaticScemeData\r\n return data;\r\n }\r\n\r\n private getFakeLocationFilters(): ItxLocationReportFilter[] {\r\n let data = [\r\n {\r\n companyId: 1, companyName: 'testComany 1', locationId: 1, locationName: 'testLocation 1', itxBins: [\r\n {\r\n id: 1, material: 'test Material 1', name: 'test Bin 1', binType: ItxBinTypeEnum.BinConical, radars: [\r\n { id: 1, radarId: 1, radarIdAddress: 150, distanceFromBinCenter: 1, radarLocation: ItxRadarLocationEnum.Peak },\r\n { id: 2, radarId: 2, radarIdAddress: 250, distanceFromBinCenter: 10, radarLocation: ItxRadarLocationEnum.Middle },\r\n { id: 3, radarId: 3, radarIdAddress: 350, distanceFromBinCenter: 20, radarLocation: ItxRadarLocationEnum.Eave }\r\n ]\r\n },\r\n {\r\n id: 2, material: 'test Material 2', name: 'test Bin 2', binType: ItxBinTypeEnum.BinFlat, radars: [\r\n { id: 4, radarId: 4, radarIdAddress: 450, distanceFromBinCenter: 1, radarLocation: ItxRadarLocationEnum.Peak },\r\n { id: 5, radarId: 5, radarIdAddress: 550, distanceFromBinCenter: 10, radarLocation: ItxRadarLocationEnum.Middle },\r\n { id: 6, radarId: 6, radarIdAddress: 650, distanceFromBinCenter: 20, radarLocation: ItxRadarLocationEnum.Eave }\r\n ]\r\n }\r\n ]\r\n },\r\n {\r\n companyId: 2, companyName: 'testComany 2', locationId: 1, locationName: 'testLocation 2', itxBins: [\r\n {\r\n id: 1, material: 'test Material 1', name: 'test Bin 1', binType: ItxBinTypeEnum.BinConical, radars: [\r\n { id: 1, radarId: 1, radarIdAddress: 150, distanceFromBinCenter: 1, radarLocation: ItxRadarLocationEnum.Peak },\r\n { id: 2, radarId: 2, radarIdAddress: 250, distanceFromBinCenter: 10, radarLocation: ItxRadarLocationEnum.Middle },\r\n { id: 3, radarId: 3, radarIdAddress: 350, distanceFromBinCenter: 20, radarLocation: ItxRadarLocationEnum.Eave }\r\n ]\r\n },\r\n {\r\n id: 2, material: 'test Material 2', name: 'test Bin 2', binType: ItxBinTypeEnum.BinFlat, radars: [\r\n { id: 4, radarId: 4, radarIdAddress: 450, distanceFromBinCenter: 1, radarLocation: ItxRadarLocationEnum.Peak },\r\n { id: 5, radarId: 5, radarIdAddress: 550, distanceFromBinCenter: 10, radarLocation: ItxRadarLocationEnum.Middle },\r\n { id: 6, radarId: 6, radarIdAddress: 650, distanceFromBinCenter: 20, radarLocation: ItxRadarLocationEnum.Eave }\r\n ]\r\n }\r\n ]\r\n }\r\n ] as ItxLocationReportFilter[];\r\n\r\n return data\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { Router } from '@angular/router';\r\n\r\nimport { HttpService, ErrorModel } from '../../../common';\r\nimport { ApiRoutes } from '../../constants';\r\nimport {\r\n LocationBtxViewModel,\r\n LocationBtxPostModel,\r\n LocationBtxGetModel,\r\n LocationBtxEquipmentViewModel,\r\n LocationBtxEquipmentGetModel,\r\n LocationGetModel,\r\n CompanyViewModel,\r\n CompanyGetModel,\r\n BtxLiveDataLocationViewModel,\r\n BtxLiveDataLocationGetModel,\r\n BtxLiveDataEquipmentGetModel,\r\n BTXLocationConfiguration,\r\n BtxLocationEquipmentConfiguration,\r\n BtxLocationSensorConfiguration,\r\n} from '../../models';\r\nimport { EquipmentSubTypeEnum, EquipmentTypeEnum } from '../../enums';\r\n\r\n@Injectable()\r\nexport class LocationsBtxApiService {\r\n constructor(\r\n private _httpService: HttpService,\r\n private _router: Router,\r\n ) { }\r\n\r\n public async getAll() : Promise {\r\n try {\r\n if (this._router.url.indexOf('/back-door') > -1) {\r\n return this.getFakeData();\r\n }\r\n\r\n const result = await this._httpService.get(ApiRoutes.LocationBtx.getAll);\r\n return result.map((item) => {\r\n return LocationBtxGetModel.toViewModel(item);\r\n });\r\n } catch (error) {\r\n return this.processError(error);\r\n }\r\n }\r\n\r\n public async getAllForCompany(companyId: number) : Promise {\r\n try {\r\n if (this._router.url.indexOf('/back-door') > -1) {\r\n return this.getFakeData();\r\n }\r\n \r\n const result = await this._httpService.get(ApiRoutes.Location.getAllForCompany, { companyId: companyId });\r\n return result.map((item) => {\r\n return LocationGetModel.toViewModel(item);\r\n });\r\n } catch (error) {\r\n return this.processError(error);\r\n }\r\n }\r\n\r\n public async add(location: LocationBtxPostModel) : Promise {\r\n try {\r\n const result = await this._httpService.post(ApiRoutes.LocationBtx.add, location);\r\n\r\n const locationViewModel = LocationBtxGetModel.toViewModel(result);\r\n return locationViewModel;\r\n } catch (error) {\r\n return this.processError(error);\r\n }\r\n }\r\n\r\n public async edit(location: LocationBtxPostModel) : Promise {\r\n try {\r\n const result = await this._httpService.put(ApiRoutes.LocationBtx.edit, location);\r\n\r\n const locationViewModel = LocationBtxGetModel.toViewModel(result);\r\n return locationViewModel;\r\n } catch (error) {\r\n return this.processError(error);\r\n }\r\n }\r\n\r\n public async initializeDeviceConfiguration(locationId: number) : Promise {\r\n try {\r\n let response = await this._httpService.post(ApiRoutes.LocationBtx.initializeDeviceConfiguration, locationId);\r\n\r\n return response;\r\n } catch (error) {\r\n return this.processError(error);\r\n }\r\n }\r\n\r\n public async downloadConnectionFile(locationId: number) : Promise {\r\n try {\r\n const result = await this._httpService.getArrayBuffer(ApiRoutes.LocationBtx.downloadConnectionFile, { locationId });\r\n return result;\r\n } catch (error) {\r\n return this.processError(error);\r\n }\r\n }\r\n\r\n public async delete(locationId: number) : Promise {\r\n try {\r\n const result = await this._httpService.delete(ApiRoutes.LocationBtx.delete, { locationId});\r\n return result;\r\n } catch (error) {\r\n return this.processError(error);\r\n }\r\n }\r\n\r\n private processError(error: any) {\r\n if (error instanceof ErrorModel) {\r\n return Promise.reject(error);\r\n }\r\n\r\n console.log(error);\r\n return null;\r\n }\r\n\r\n public async getEquipment(locationId: number): Promise {\r\n try {\r\n if (this._router.url.indexOf('/back-door') > -1) {\r\n //return this.getFakeData(locationId);\r\n }\r\n\r\n const result = await this._httpService.get(ApiRoutes.Equipment.get, { locationId });\r\n\r\n return LocationBtxEquipmentGetModel.toViewModel(result);\r\n } catch (error) {\r\n return this.processError(error);\r\n }\r\n }\r\n\r\n public async getCompaniesWithLocations(\r\n withEquipments: boolean\r\n ): Promise {\r\n try {\r\n if (this._router.url.indexOf('/back-door') > -1) {\r\n return this.getFakeCompaniesWithLocations();\r\n }\r\n \r\n const result = await this._httpService.get(\r\n ApiRoutes.LocationBtx.getCompaniesWithLocations,\r\n { withEquipments }\r\n );\r\n\r\n return result.map((item) => CompanyGetModel.toViewModel(item));\r\n } catch (error) {\r\n if (error instanceof ErrorModel) {\r\n return Promise.reject(error);\r\n }\r\n\r\n console.log(error);\r\n return null;\r\n }\r\n }\r\n\r\n public async getLiveDataLocations(): Promise {\r\n try {\r\n if (this._router.url.indexOf('/back-door') > -1) {\r\n return this.getFakeLiveDataLocations();\r\n }\r\n \r\n const result = await this._httpService.get(\r\n ApiRoutes.LocationBtx.getLiveDataLocations,\r\n );\r\n\r\n return result.map((item) => BtxLiveDataLocationGetModel.toViewModel(item));\r\n } catch (error) {\r\n if (error instanceof ErrorModel) {\r\n return Promise.reject(error);\r\n }\r\n\r\n console.log(error);\r\n return null;\r\n }\r\n }\r\n\r\n public async uploadToParseConfigurationFile(configFileData: FormData): Promise {\r\n try {\r\n if (this._router.url.indexOf('/back-door') > -1) {\r\n return this.getFakeBtxUploadedSensorConfigurationData();\r\n }\r\n\r\n const result = await this._httpService.postDataWithContent(ApiRoutes.LocationBtx.parseLocationConfiguration, configFileData);\r\n return result;\r\n } catch (error) {\r\n return this.processError(error);\r\n }\r\n }\r\n\r\n public async uploadBtxLocationEquipmentsConfigurationFile(locationConfiguration: BTXLocationConfiguration): Promise {\r\n try {\r\n if (this._router.url.indexOf('/back-door') > -1) {\r\n return;\r\n }\r\n\r\n const result = await this._httpService.post(ApiRoutes.LocationBtx.uploadBtxLocationConfiguration, locationConfiguration);\r\n if(result) {\r\n return result;\r\n }\r\n return null;\r\n } catch (error) {\r\n return this.processError(error);\r\n }\r\n }\r\n\r\n public getFakeData(): LocationBtxViewModel[] {\r\n const data = [\r\n { id: 1, btxIp: '192.168.0.1', btxPort: 8080, locationName: 'locationName1', companyName: 'company1', acquisitionRate: 150, isInitialized: true },\r\n { id: 2, btxIp: '192.168.0.2', btxPort: 8080, locationName: 'locationName2', companyName: 'company2', acquisitionRate: 120, isInitialized: true },\r\n { id: 3, btxIp: '192.168.0.3', btxPort: 8080, locationName: 'locationName3', companyName: 'company3', acquisitionRate: 60, isInitialized: true },\r\n ] as LocationBtxViewModel[];\r\n return data;\r\n }\r\n\r\n private getFakeCompaniesWithLocations(): CompanyViewModel[] {\r\n const data = [\r\n {\r\n id: 1,\r\n name: 'Company1',\r\n locations: [{ name: 'Location 1',equipments:[{id:1,name:'fan'},{id:2,name:'fan2'},{id:3,name:'fan3'}] }],\r\n },\r\n {\r\n id: 2,\r\n name: 'Company2',\r\n locations: [{ name: 'Location 2',equipments:[{id:4,name:'Leg'},{id:5,name:'Leg2'},{id:6,name:'Leg3'}] }, \r\n { name: 'Location 3', equipments:[{id:7,name:'Leg7'},{id:8,name:'Leg8'},{id:9,name:'Leg9'}] }],\r\n },\r\n {\r\n id: 3,\r\n name: 'Company3',\r\n locations: [\r\n { name: 'Location 4' },\r\n { name: 'Location 5' },\r\n { name: 'Location 6' },\r\n ],\r\n },\r\n {\r\n id: 4,\r\n name: 'Company4',\r\n locations: [\r\n { name: 'Location 7' },\r\n { name: 'Location 8' },\r\n { name: 'Location 9' },\r\n ],\r\n },\r\n { id: 5, name: 'Company5', locations: [{ name: 'Location 10' }] },\r\n ] as CompanyViewModel[];\r\n\r\n return data;\r\n }\r\n\r\n private getFakeLiveDataLocations(): BtxLiveDataLocationViewModel[] {\r\n const equipmentsGetModels = [\r\n {\r\n id: 1,\r\n type: EquipmentTypeEnum.Silo,\r\n subType: EquipmentSubTypeEnum.Small,\r\n name: 'Silo small (None)',\r\n alarms: 0,\r\n warnings: 0,\r\n },\r\n {\r\n id: 2,\r\n type: EquipmentTypeEnum.Silo,\r\n subType: EquipmentSubTypeEnum.Medium,\r\n name: 'Silo medium (None)',\r\n alarms: 0,\r\n warnings: 0,\r\n },\r\n {\r\n id: 3,\r\n type: EquipmentTypeEnum.Silo,\r\n subType: EquipmentSubTypeEnum.Large,\r\n name: 'Silo large (None)',\r\n alarms: 0,\r\n warnings: 0,\r\n },\r\n /* LEG */\r\n {\r\n id: 4,\r\n type: EquipmentTypeEnum.Leg,\r\n subType: EquipmentSubTypeEnum.WithKneeBearing,\r\n name: 'Leg with knee bearing (North-South)',\r\n alarms: 0,\r\n warnings: 0,\r\n },\r\n {\r\n id: 5,\r\n type: EquipmentTypeEnum.Leg,\r\n subType: EquipmentSubTypeEnum.WithoutKneeBearing,\r\n name: 'Leg without knee bearing (North-South)',\r\n alarms: 0,\r\n warnings: 0,\r\n },\r\n /* CONVEYOR */\r\n {\r\n id: 6,\r\n type: EquipmentTypeEnum.Conveyor,\r\n subType: EquipmentSubTypeEnum.Drag,\r\n name: 'Conveyor drag (North-South)',\r\n alarms: 0,\r\n warnings: 0,\r\n },\r\n {\r\n id: 7,\r\n type: EquipmentTypeEnum.Conveyor,\r\n subType: EquipmentSubTypeEnum.Belt,\r\n name: 'Conveyor belt (North-South)',\r\n alarms: 0,\r\n warnings: 0,\r\n },\r\n {\r\n id: 8,\r\n type: EquipmentTypeEnum.Conveyor,\r\n subType: EquipmentSubTypeEnum.Screw,\r\n name: 'Conveyor screw (None)',\r\n alarms: 0,\r\n warnings: 0,\r\n },\r\n {\r\n id: 9,\r\n type: EquipmentTypeEnum.Leg,\r\n subType: EquipmentSubTypeEnum.WithKneeBearing,\r\n name: 'Leg with knee bearing (East-West)',\r\n alarms: 0,\r\n warnings: 0,\r\n },\r\n {\r\n id: 10,\r\n type: EquipmentTypeEnum.Leg,\r\n subType: EquipmentSubTypeEnum.WithoutKneeBearing,\r\n name: 'Leg without knee bearing (East-West)',\r\n alarms: 0,\r\n warnings: 0,\r\n },\r\n /* CONVEYOR */\r\n {\r\n id: 11,\r\n type: EquipmentTypeEnum.Conveyor,\r\n subType: EquipmentSubTypeEnum.Drag,\r\n name: 'Conveyor drag (East-West)',\r\n alarms: 0,\r\n warnings: 0,\r\n },\r\n {\r\n id: 12,\r\n type: EquipmentTypeEnum.Conveyor,\r\n subType: EquipmentSubTypeEnum.Belt,\r\n name: 'Conveyor belt (East-West)',\r\n alarms: 0,\r\n warnings: 0,\r\n },\r\n {\r\n id: 13,\r\n type: EquipmentTypeEnum.Conveyor,\r\n subType: EquipmentSubTypeEnum.Screw,\r\n name: 'Conveyor screw (None)',\r\n alarms: 0,\r\n warnings: 0,\r\n },\r\n {\r\n id: 14,\r\n type: EquipmentTypeEnum.Conveyor,\r\n subType: EquipmentSubTypeEnum.CoveredBelt,\r\n name: 'Conveyor covered belt (East-West)',\r\n alarms: 0,\r\n warnings: 0,\r\n },\r\n {\r\n id: 15,\r\n type: EquipmentTypeEnum.Conveyor,\r\n subType: EquipmentSubTypeEnum.CoveredBelt,\r\n name: 'Conveyor covered belt (North-South)',\r\n alarms: 0,\r\n warnings: 0,\r\n },\r\n {\r\n id: 16,\r\n type: EquipmentTypeEnum.Tripper,\r\n subType: EquipmentSubTypeEnum.None,\r\n name: 'Tripper (North-South)',\r\n alarms: 0,\r\n warnings: 0,\r\n },\r\n {\r\n id: 17,\r\n type: EquipmentTypeEnum.Tripper,\r\n subType: EquipmentSubTypeEnum.None,\r\n name: 'Tripper (East-West)',\r\n alarms: 0,\r\n warnings: 0,\r\n },\r\n //FAN\r\n {\r\n id: 18,\r\n type: EquipmentTypeEnum.Fan,\r\n subType: EquipmentSubTypeEnum.DirectDrive,\r\n name: 'Fan Direct Drive (None)',\r\n alarms: 0,\r\n warnings: 0,\r\n },\r\n {\r\n id: 19,\r\n type: EquipmentTypeEnum.Fan,\r\n subType: EquipmentSubTypeEnum.BeltDrive,\r\n name: 'Fan Belt Drive (None)',\r\n alarms: 0,\r\n warnings: 1,\r\n },\r\n ] as BtxLiveDataEquipmentGetModel[];\r\n\r\n\r\n const equipmentViewModels = equipmentsGetModels.map(\r\n BtxLiveDataEquipmentGetModel.toViewModel\r\n );\r\n\r\n const segmentSize = equipmentViewModels.length / 4;\r\n\r\n const equipments1 = equipmentViewModels.slice(0, segmentSize);\r\n const equipments2 = equipmentViewModels.slice(segmentSize, 2 * segmentSize);\r\n const equipments3 = equipmentViewModels.slice(\r\n 2 * segmentSize,\r\n 3 * segmentSize\r\n );\r\n const equipments4 = equipmentViewModels.slice(3 * segmentSize);\r\n\r\n const locations: BtxLiveDataLocationViewModel[] = [\r\n { id: 1, name: 'Location1', equipments: equipments1 },\r\n { id: 2, name: 'Location2', equipments: equipments2 },\r\n { id: 3, name: 'Location3', equipments: equipments3 },\r\n { id: 4, name: 'Location4', equipments: equipments4 },\r\n ];\r\n\r\n return locations;\r\n }\r\n\r\n public getFakeBtxUploadedSensorConfigurationData(): BTXLocationConfiguration {\r\n const sensor1 = {\r\n index: 4,\r\n type: 1,\r\n position: 2,\r\n side: 1,\r\n modbusAddress: 65531,\r\n warningAddress: 113,\r\n warningAddressBit: 2,\r\n alarmAddress: 42,\r\n alarmAddressBit: 1,\r\n rateOfChangeWarningAddress: 33,\r\n rateOfChangeWarningAddressBit: 6,\r\n rateOfChangeAlarmAddress: 17,\r\n rateOfChangeAlarmAddressBit: 16,\r\n } as BtxLocationSensorConfiguration;\r\n\r\n const sensor2 = {\r\n index: 5,\r\n type: 3,\r\n position: 1,\r\n side: 1,\r\n modbusAddress: 65530,\r\n warningAddress: 112,\r\n warningAddressBit: 2,\r\n alarmAddress: 41,\r\n alarmAddressBit: 1,\r\n rateOfChangeWarningAddress: 33,\r\n rateOfChangeWarningAddressBit: 6,\r\n rateOfChangeAlarmAddress: 16,\r\n rateOfChangeAlarmAddressBit: 16,\r\n } as BtxLocationSensorConfiguration;\r\n\r\n const sensor3 = {\r\n index: 6,\r\n type: 2,\r\n position: 1,\r\n side: 2,\r\n modbusAddress: 65532,\r\n warningAddress: 114,\r\n warningAddressBit: 2,\r\n alarmAddress: 44,\r\n alarmAddressBit: 1,\r\n rateOfChangeWarningAddress: 35,\r\n rateOfChangeWarningAddressBit: 6,\r\n rateOfChangeAlarmAddress: 19,\r\n rateOfChangeAlarmAddressBit: 16,\r\n } as BtxLocationSensorConfiguration;\r\n\r\n const equipment1 = {\r\n index: 1,\r\n type: 1,\r\n subType: 1,\r\n name: 'Leg with knee bearing (North-South)',\r\n totalRunHoursFirstRegisterAddress: 1,\r\n totalRunHoursSecondRegisterAddress: 65536,\r\n timeTillMaintenanceAddress: 2,\r\n shutDownAlarmAddress: 3,\r\n shutDownAlarmAddressBit: 1,\r\n maintenanceRequiredWarningAddress: 3,\r\n maintenanceRequiredWarningAddressBit: 2,\r\n maintenanceCountDown: 11,\r\n totalRunHours: 1111,\r\n sensors: [sensor1, sensor2],\r\n } as { } as BtxLocationEquipmentConfiguration;\r\n\r\n const equipment2 = {\r\n index: 2,\r\n type: 2,\r\n subType: 1,\r\n name: 'Leg with knee bearing (North-South)2',\r\n totalRunHoursFirstRegisterAddress: 1,\r\n totalRunHoursSecondRegisterAddress: 65536,\r\n timeTillMaintenanceAddress: 2,\r\n shutDownAlarmAddress: 3,\r\n shutDownAlarmAddressBit: 1,\r\n maintenanceRequiredWarningAddress: 3,\r\n maintenanceRequiredWarningAddressBit: 2,\r\n maintenanceCountDown: 11,\r\n totalRunHours: 1111,\r\n sensors: [sensor3],\r\n } as { } as BtxLocationEquipmentConfiguration;\r\n\r\n const data = {\r\n locationId: 1,\r\n deviceId: '123123',\r\n equipments: [equipment1, equipment2],\r\n } as BTXLocationConfiguration;\r\n\r\n return data;\r\n }\r\n}","import { Injectable } from '@angular/core';\r\nimport { Router } from '@angular/router';\r\n\r\nimport { ErrorModel, HttpService } from 'src/app/common';\r\nimport { ApiRoutes } from '../../constants';\r\nimport { LocationItxGetModel,\r\n LocationItxViewModel,\r\n LocationItxPostModel,\r\n FullnessRangesGetModel,\r\n FullnessRangePostModel,\r\n ItxLocationNameModel,\r\n } from '../../models';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class LocationsItxApiService {\r\n\r\n constructor(\r\n private _httpService: HttpService,\r\n private _router: Router) { }\r\n\r\n public async getAll() : Promise {\r\n try {\r\n if (this._router.url.indexOf('/back-door') > -1) {\r\n return this.getFakeData();\r\n }\r\n \r\n const result = await this._httpService.get(ApiRoutes.LocationItx.getAll);\r\n return result.map((item) => {\r\n return LocationItxGetModel.toViewModel(item);\r\n });\r\n } catch (error) {\r\n return this.processError(error);\r\n }\r\n }\r\n public async getItxLocationForCompany(companyId: number): Promise {\r\n try {\r\n if (this._router.url.indexOf('/back-door') > -1) {\r\n return this.getFakeData();\r\n }\r\n const result = await this._httpService.get(ApiRoutes.LocationItx.getLocationsWithBinsForCompany, { companyId: companyId });\r\n return result;\r\n } catch (error) {\r\n return this.processError(error);\r\n }\r\n }\r\n private processError(error: any) {\r\n if (error instanceof ErrorModel) {\r\n return Promise.reject(error);\r\n }\r\n }\r\n\r\n public async edit(location: LocationItxPostModel) : Promise {\r\n try {\r\n const result = await this._httpService.post(ApiRoutes.LocationItx.edit, location);\r\n\r\n const locationViewModel = LocationItxGetModel.toViewModel(result);\r\n return locationViewModel;\r\n } catch (error) {\r\n return this.processError(error);\r\n }\r\n } \r\n\r\n public async add(location: LocationItxPostModel) : Promise {\r\n try {\r\n const result = await this._httpService.post(ApiRoutes.LocationItx.add, location);\r\n\r\n const locationViewModel = LocationItxGetModel.toViewModel(result);\r\n return locationViewModel;\r\n } catch (error) {\r\n return this.processError(error);\r\n }\r\n }\r\n\r\n public async delete(locationId: number) : Promise {\r\n try {\r\n const result = await this._httpService.delete(ApiRoutes.LocationItx.delete, { locationId});\r\n return result;\r\n } catch (error) {\r\n return this.processError(error);\r\n }\r\n }\r\n\r\n public async getFullnessRanges(locationId: number): Promise{\r\n try {\r\n if(this._router.url.indexOf('/back-door') > -1) {\r\n return this.generateFakeFullnessRange(locationId);\r\n }\r\n const result = await this._httpService.get(ApiRoutes.LocationItx.getFullnessRanges, { locationId }) as FullnessRangesGetModel;\r\n return result;\r\n } catch(error) {\r\n return this.processError(error);\r\n }\r\n }\r\n\r\n public async initializeDeviceConfiguration(locationId: number) : Promise {\r\n try {\r\n let response = await this._httpService.post(ApiRoutes.LocationItx.initializeDeviceConfiguration, locationId);\r\n\r\n return response;\r\n } catch (error) {\r\n return this.processError(error);\r\n }\r\n }\r\n\r\n public async downloadConnectionFile(locationId: number) : Promise {\r\n try {\r\n const result = await this._httpService.getArrayBuffer(ApiRoutes.LocationItx.downloadConnectionFile, { locationId });\r\n return result;\r\n } catch (error) {\r\n return this.processError(error);\r\n }\r\n }\r\n\r\n generateFakeFullnessRange(locationId: number): FullnessRangesGetModel{\r\n const fullnessRangeViewModel = new FullnessRangesGetModel();\r\n fullnessRangeViewModel.locationId = locationId;\r\n fullnessRangeViewModel.isInitialized = true;\r\n fullnessRangeViewModel.canDeviceBeInitialized = false;\r\n fullnessRangeViewModel.fullnessRanges = [\r\n { id: 1, from: 0, to: 40, colorHex: \"#71c5a3\" },\r\n { id: 2, from: 41, to: 69, colorHex: \"#8bc9ff\" },\r\n { id: 3, from: 70, to: 80, colorHex: \"#f4bd56\" },\r\n { id: 4, from: 81, to: 90, colorHex: \"#8f65c7\" },\r\n { id: 5, from: 91, to: 100,colorHex: \"#d95656\" }\r\n ]\r\n return fullnessRangeViewModel;\r\n }\r\n public getFakeData(): LocationItxViewModel[] {\r\n let data=[\r\n {\r\n acquisitionRate: 1, companyName: \"Company1\", countOfBins: 12, isInitialized: true, locationName: \"Location1\", id: 1, deviceId: \"8080\", modelType: \"\", port: 1,\r\n ipAddress: \"asd\", itxBins:[{id:1,name:'Fake1'},{id:2,name:'Fake2'},{id:3,name:'Fake3'},{id:4,name:'Fake4'}],fullnessRanges:[], isSomeoneInViewStorages:false\r\n },\r\n {\r\n acquisitionRate: 2, companyName: \"Company2\", countOfBins: 12, isInitialized: true, locationName: \"Location2\", id: 2, deviceId: \"8080\", modelType: \"\", port: 1,\r\n ipAddress: \"asd\", itxBins:[{id:1,name:'Fake1'},{id:2,name:'Fake2'},{id:3,name:'Fake3'},{id:4,name:'Fake4'}],fullnessRanges:[], isSomeoneInViewStorages:false,\r\n },\r\n {\r\n acquisitionRate: 15, companyName: \"Company3\", countOfBins: 5, isInitialized: true, locationName: \"Location3\", id: 3, deviceId: \"8080\", modelType: \"\", port: 1,\r\n ipAddress: \"asd\", itxBins:[{id:1,name:'Fake1'},{id:2,name:'Fake2'},{id:3,name:'Fake3'},{id:4,name:'Fake4'}],fullnessRanges:[], isSomeoneInViewStorages:false,\r\n },\r\n {\r\n acquisitionRate: 6, companyName: \"Company4\", countOfBins: 9, isInitialized: true, locationName: \"Location4\", id: 4, deviceId: \"8080\", modelType: \"\", port: 1,\r\n ipAddress: \"asd\", itxBins:[{id:1,name:'Fake1'},{id:2,name:'Fake2'},{id:3,name:'Fake3'},{id:4,name:'Fake4'}],fullnessRanges:[], isSomeoneInViewStorages:false,\r\n },\r\n ]as LocationItxViewModel[];\r\n return data;\r\n }\r\n\r\n public async editFullnessRange(fullnessEditModel: FullnessRangePostModel) : Promise {\r\n try {\r\n const result = await this._httpService.post(ApiRoutes.LocationItx.editFullnessRange, fullnessEditModel);\r\n return result;\r\n } catch (error) {\r\n return this.processError(error);\r\n }\r\n }\r\n\r\n public async getListOfAssignedItxLocationsWithItxBins(): Promise {\r\n try {\r\n if (this._router.url.indexOf('/back-door') > -1) {\r\n return this.getFakeItxLocationData();\r\n }\r\n const result = await this._httpService.get(ApiRoutes.LocationItx.getListOfAssignedItxLocationsWithItxBins) as ItxLocationNameModel[];\r\n return result;\r\n } catch (error) {\r\n return this.processError(error);\r\n }\r\n }\r\n\r\n private getFakeItxLocationData(){\r\n let data=[\r\n {\r\n name: \"Location1\", id: 1, bins:[{id:1,name:'Fake1'},{id:2,name:'Fake2'},{id:3,name:'Fake3'},{id:4,name:'Fake4'}]\r\n },\r\n {\r\n name: \"Location2\", id: 2, bins:[{id:5,name:'Fake1'},{id:6,name:'Fake2'},{id:7,name:'Fake3'},{id:8,name:'Fake4'}]\r\n },\r\n {\r\n name: \"Location3\", id: 3, bins:[]\r\n },\r\n {\r\n name: \"Location4\", id: 4, bins:[{id:9,name:'Fake1'},{id:10,name:'Fake2'},{id:11,name:'Fake3'},{id:12,name:'Fake4'}]\r\n },\r\n ]as ItxLocationNameModel[];\r\n return data;\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { Router } from '@angular/router';\r\n\r\nimport { HttpService, ErrorModel } from '../../../common';\r\nimport { ApiRoutes, ModelsTypes } from '../../constants';\r\nimport {\r\n MeasureEnum,\r\n SensorStatusEnum,\r\n ReadingScheduleType,\r\n BinTypeEnum,\r\n} from '../../enums';\r\nimport {\r\n AlarmViewModel,\r\n BinViewModel,\r\n CableSchemeViewModel,\r\n LocationKtxGetModel,\r\n LocationKtxPostModel,\r\n LocationKtxSchemeGetModel,\r\n LocationKtxSchemeViewModel,\r\n LocationKtxViewModel,\r\n SensorKtxSchemeViewModel,\r\n TelemetryViewModel,\r\n TelemetrySnapshotViewModel,\r\n TemperatureRangeAlarmViewModel,\r\n TemperatureRangeGetModel,\r\n TemperatureRangePostModel,\r\n TemperatureRangeViewModel,\r\n AddEditLocationKtxSchemeResultModel,\r\n AddEditLocationKtxSchemePostModel,\r\n AddEditLocationKtxSchemeGetModel,\r\n BinConnectionViewModel,\r\n EditBinConnectionPostModel,\r\n CompanyViewModel,\r\n CompanyGetModel,\r\n BinSchemeViewModel,\r\n CableSnapshotResponse,\r\n SensorSnapshotResponse,\r\n BinSchemeGetModel,\r\n TelemetryBinsGetModel,\r\n HistoricalBinsSnapshots\r\n} from '../../models';\r\n\r\n@Injectable()\r\nexport class LocationsKtxApiService {\r\n constructor(private _httpService: HttpService, private _router: Router) { }\r\n\r\n public async getAll(): Promise {\r\n try {\r\n if (this._router.url.indexOf('/back-door') > -1) {\r\n return this.getFakeData();\r\n }\r\n\r\n const result = await this._httpService.get(ApiRoutes.LocationKtx.getAll);\r\n return result.map((item) => {\r\n return LocationKtxGetModel.toViewModel(item);\r\n });\r\n } catch (error) {\r\n return this.processError(error);\r\n }\r\n }\r\n\r\n public async getScheme(\r\n locationId: number, isLocationView: boolean = false\r\n ): Promise {\r\n try {\r\n if (this._router.url.indexOf('/back-door') > -1) {\r\n return this.getFakeLocationScheme(locationId);\r\n }\r\n const result = (await this._httpService.get(ApiRoutes.Bin.getScheme, {\r\n locationId, isLocationView\r\n })) as LocationKtxSchemeGetModel;\r\n return LocationKtxSchemeGetModel.toViewModel(result);\r\n } catch (error) {\r\n return this.processError(error);\r\n }\r\n }\r\n\r\n public async getBinsTelemetry(getModel: TelemetryBinsGetModel[]): Promise {\r\n try {\r\n if (this._router.url.indexOf('/back-door') > -1) {\r\n return this.getFakeBinsTelemetry(getModel);\r\n }\r\n const result = (await this._httpService.post(ApiRoutes.Bin.getBinsLastSnapshotData, getModel)) as TelemetrySnapshotViewModel[];\r\n return result;\r\n }\r\n catch (error) {\r\n return this.processError(error);\r\n }\r\n }\r\n\r\n\r\n public async getTelemetry(\r\n binId: number,\r\n cablesIds: number[]\r\n ): Promise {\r\n try {\r\n if (this._router.url.indexOf('/back-door') > -1) {\r\n const telemetry = await this.getFakeTelemetry(\r\n MeasureEnum.Temperature, binId, cablesIds);\r\n return telemetry;\r\n }\r\n\r\n const body = {\r\n binId: binId,\r\n listOfCableIds: cablesIds,\r\n };\r\n\r\n const result = (await this._httpService.post(ApiRoutes.Bin.getLastSnapshotData, body)) as TelemetrySnapshotViewModel;\r\n return result;\r\n } catch (error) {\r\n return this.processError(error);\r\n }\r\n }\r\n\r\n public async getHistoricalBinsSnapshotForThePeriod(binIds: number[], timestampFrom: number, timestampTo: number): Promise {\r\n try {\r\n if (this._router.url.indexOf('/back-door') > -1) {\r\n return this.generateListOfTimeStampsForThePeriod(binIds, timestampFrom, timestampTo) as HistoricalBinsSnapshots;\r\n }\r\n const body = {\r\n binIds: binIds,\r\n timestampFrom: timestampFrom,\r\n timestampTo: timestampTo,\r\n };\r\n\r\n const result = (await this._httpService.post(\r\n ApiRoutes.TelemetrySnapshot.getHistoricalBinsSnapshotForThePeriod,\r\n body\r\n )) as HistoricalBinsSnapshots;\r\n return result;\r\n } catch (error) {\r\n return this.processError(error);\r\n }\r\n }\r\n\r\n public async getBinSchema(locationId: number, binId: number): Promise {\r\n try {\r\n if (this._router.url.indexOf('/back-door') > -1) {\r\n return this.getFakeBinScheme(locationId, binId);\r\n }\r\n\r\n const result = (await this._httpService.get(ApiRoutes.Bin.getBinScheme, { locationId, binId })) as BinSchemeGetModel;\r\n return BinSchemeGetModel.toViewMode(result);\r\n } catch (error) {\r\n return this.processError(error);\r\n }\r\n }\r\n\r\n public async getTemperatureRanges(\r\n locationId: number\r\n ): Promise {\r\n try {\r\n if (this._router.url.indexOf('/back-door') > -1) {\r\n return this.generateTemperatureRangeAlarm(locationId);\r\n }\r\n const result = (await this._httpService.get(\r\n ApiRoutes.LocationKtx.getTemperatureRanges,\r\n { locationId }\r\n )) as TemperatureRangeGetModel;\r\n return TemperatureRangeGetModel.toTemperatureRangeAlarmViewModel(result);\r\n } catch (error) {\r\n return this.processError(error);\r\n }\r\n }\r\n\r\n public async readSiloData(\r\n binId: number,\r\n measure: MeasureEnum\r\n ): Promise {\r\n try {\r\n if (this._router.url.indexOf('/back-door') > -1) {\r\n const arr = Array.from(\r\n { length: this.cableCount },\r\n (_, index) => index + 1\r\n );\r\n return this.getFakeTelemetry(measure, binId, arr);\r\n }\r\n\r\n const result = (await this._httpService.post(ApiRoutes.Bin.readSiloData, {\r\n binId: binId,\r\n measure: measure,\r\n })) as TelemetrySnapshotViewModel;\r\n return result;\r\n } catch (error) {\r\n return this.processError(error);\r\n }\r\n }\r\n\r\n public async add(\r\n location: LocationKtxPostModel\r\n ): Promise {\r\n try {\r\n const result = await this._httpService.post(\r\n ApiRoutes.LocationKtx.add,\r\n location\r\n );\r\n\r\n const locationViewModel = LocationKtxGetModel.toViewModel(result);\r\n return locationViewModel;\r\n } catch (error) {\r\n return this.processError(error);\r\n }\r\n }\r\n\r\n public async edit(\r\n location: LocationKtxPostModel\r\n ): Promise {\r\n try {\r\n const result = await this._httpService.post(\r\n ApiRoutes.LocationKtx.edit,\r\n location\r\n );\r\n\r\n const locationViewModel = LocationKtxGetModel.toViewModel(result);\r\n return locationViewModel;\r\n } catch (error) {\r\n return this.processError(error);\r\n }\r\n }\r\n\r\n public async initializeDeviceConfiguration(\r\n locationId: number\r\n ): Promise {\r\n try {\r\n let response = await this._httpService.post(\r\n ApiRoutes.LocationKtx.initializeDeviceConfiguration,\r\n locationId\r\n );\r\n\r\n return response;\r\n } catch (error) {\r\n return this.processError(error);\r\n }\r\n }\r\n\r\n public async downloadConnectionFile(\r\n locationId: number\r\n ): Promise {\r\n try {\r\n const result = await this._httpService.getArrayBuffer(\r\n ApiRoutes.LocationKtx.downloadConnectionFile,\r\n { locationId }\r\n );\r\n return result;\r\n } catch (error) {\r\n return this.processError(error);\r\n }\r\n }\r\n\r\n public async delete(locationId: number): Promise {\r\n try {\r\n const result = await this._httpService.delete(\r\n ApiRoutes.LocationKtx.delete,\r\n { locationId }\r\n );\r\n return result;\r\n } catch (error) {\r\n return this.processError(error);\r\n }\r\n }\r\n\r\n public async editTemperatureRange(\r\n temperatureEditModel: TemperatureRangePostModel\r\n ): Promise {\r\n try {\r\n const result = await this._httpService.post(\r\n ApiRoutes.LocationKtx.editTemperatureRange,\r\n temperatureEditModel\r\n );\r\n return result;\r\n } catch (error) {\r\n return this.processError(error);\r\n }\r\n }\r\n\r\n public async uploadConfigurationFile(\r\n configFileData: FormData\r\n ): Promise {\r\n try {\r\n const result = await this._httpService.postDataWithContent(\r\n ApiRoutes.Bin.uploadConfigurationFile,\r\n configFileData\r\n );\r\n return result;\r\n } catch (error) {\r\n return this.processError(error);\r\n }\r\n }\r\n\r\n public async getBinsForEditConnection(\r\n locationId: number\r\n ): Promise {\r\n try {\r\n if (this._router.url.indexOf('/back-door') > -1) {\r\n const bins = this.getFakeBinsForEditConnection();\r\n return bins;\r\n }\r\n const result = (await this._httpService.get(\r\n ApiRoutes.Bin.getBinsForConnectionEditByLocationId,\r\n { locationId }\r\n )) as BinConnectionViewModel[];\r\n return result;\r\n } catch (error) {\r\n return this.processError(error);\r\n }\r\n }\r\n\r\n public async editConnections(\r\n postModel: EditBinConnectionPostModel\r\n ): Promise {\r\n try {\r\n const result = await this._httpService.post(\r\n ApiRoutes.Bin.editBinsConnections,\r\n postModel\r\n );\r\n return LocationKtxGetModel.toViewModel(result);\r\n } catch (error) {\r\n return this.processError(error);\r\n }\r\n }\r\n\r\n public async addEditLocationScheme(\r\n requestModel: AddEditLocationKtxSchemePostModel\r\n ): Promise {\r\n try {\r\n const result = await this._httpService.post(\r\n ApiRoutes.Bin.addEditLocationScheme,\r\n requestModel\r\n );\r\n return result;\r\n } catch (error) {\r\n return this.processError(error);\r\n }\r\n }\r\n\r\n public async getCompaniesWithLocations(\r\n withBins: boolean\r\n ): Promise {\r\n try {\r\n if (this._router.url.indexOf('/back-door') > -1) {\r\n return this.getFakeCompaniesWithLocations();\r\n }\r\n\r\n const result = await this._httpService.get(\r\n ApiRoutes.LocationKtx.getCompaniesWithLocations,\r\n { withBins }\r\n );\r\n\r\n return result.map((item) => CompanyGetModel.toViewModel(item));\r\n } catch (error) {\r\n if (error instanceof ErrorModel) {\r\n return Promise.reject(error);\r\n }\r\n\r\n console.log(error);\r\n return null;\r\n }\r\n }\r\n\r\n private processError(error: any) {\r\n if (error instanceof ErrorModel) {\r\n return Promise.reject(error);\r\n }\r\n\r\n console.log(error);\r\n return null;\r\n }\r\n\r\n public getFakeData(): LocationKtxViewModel[] {\r\n const data = [\r\n {\r\n id: 1,\r\n locationName: 'locationName1',\r\n companyName: 'company1',\r\n isInitialized: true,\r\n countOfBins: 6,\r\n displaySchemes: true,\r\n readingScheduleType: ReadingScheduleType.None,\r\n scheduleTime: '0123:12:12',\r\n },\r\n {\r\n id: 2,\r\n locationName: 'locationName2',\r\n companyName: 'company2',\r\n isInitialized: true,\r\n countOfBins: 6,\r\n displaySchemes: true,\r\n readingScheduleType: ReadingScheduleType.None,\r\n scheduleTime: '0123:12:12',\r\n },\r\n {\r\n id: 3,\r\n locationName: 'locationName3',\r\n companyName: 'company3',\r\n isInitialized: true,\r\n countOfBins: 6,\r\n displaySchemes: true,\r\n readingScheduleType: ReadingScheduleType.None,\r\n scheduleTime: '0123:12:12',\r\n },\r\n ] as LocationKtxViewModel[];\r\n return data;\r\n }\r\n\r\n cableCount = 50;\r\n thermocoupleCountList = [];\r\n\r\n generateListOfTimeStampsForThePeriod(binIds: number[], timeStampFrom: number, timeStampTo: number): HistoricalBinsSnapshots {\r\n let result: HistoricalBinsSnapshots = new HistoricalBinsSnapshots();\r\n result.binSnapshots = [];\r\n\r\n result.timeStamps = [];\r\n for (var i = 0; i < 5; i += 1) {\r\n result.timeStamps.push(Math.random() * (timeStampTo - timeStampFrom + 1) + timeStampFrom);\r\n }\r\n binIds.forEach(id => {\r\n let binSnapshot = {\r\n binId: id,\r\n cableSnapshotsByPeriods: []\r\n };\r\n result.timeStamps.forEach(time => {\r\n binSnapshot.cableSnapshotsByPeriods.push({\r\n timeStamp: time,\r\n cableSnapshots: this.generateSnapshotsForThePeriod(),\r\n })\r\n });\r\n result.binSnapshots.push(binSnapshot);\r\n });\r\n\r\n return result;\r\n }\r\n\r\n generateSnapshotsForThePeriod(): CableSnapshotResponse[] {\r\n let cableSnapshotResponses: CableSnapshotResponse[] = [];\r\n for (var i = 1; i <= 5; i++) {\r\n let sensors: SensorSnapshotResponse[] = [];\r\n\r\n for (var j = 1; j <= 10; j++) {\r\n let sensor: SensorSnapshotResponse = {\r\n id: j,\r\n status: SensorStatusEnum.NoError,\r\n value: this.randomInteger(5, 35),\r\n };\r\n sensors.push(sensor);\r\n }\r\n\r\n let snapshot: CableSnapshotResponse = {\r\n id: i,\r\n name: i,\r\n sensors: sensors,\r\n };\r\n\r\n cableSnapshotResponses.push(snapshot)\r\n }\r\n\r\n return cableSnapshotResponses;\r\n }\r\n\r\n public getFakeSchemeData(locationId: number): LocationKtxSchemeViewModel {\r\n const data = new LocationKtxSchemeViewModel();\r\n\r\n const circleCableCount = this.cableCount;\r\n const rectangleCableCount = this.cableCount;\r\n\r\n const circle = {\r\n height: 223.5,\r\n width: 223.5,\r\n depth: 223.5,\r\n };\r\n\r\n const rectangle = {\r\n height: 200.0,\r\n width: 155.0,\r\n depth: 100.0,\r\n };\r\n\r\n const circleCables = this.generateCircleCables(\r\n circleCableCount,\r\n circle.width / 2,\r\n circle.height\r\n );\r\n const rectangleCables = this.generateRectangleCables(\r\n rectangleCableCount,\r\n rectangle.width,\r\n rectangle.depth\r\n );\r\n\r\n const binSchemes = [\r\n {\r\n id: 1,\r\n locationId: locationId,\r\n connectionId: 1,\r\n name: '1',\r\n binType: BinTypeEnum.Circular,\r\n displaySchemes: true,\r\n height: circle.height,\r\n width: circle.width,\r\n depth: circle.depth,\r\n xPosition: 300,\r\n yPosition: 200,\r\n zIndex: -1,\r\n cables: circleCables,\r\n isDeviceInitialized: true,\r\n },\r\n {\r\n id: 2,\r\n locationId: locationId,\r\n name: '2',\r\n binType: BinTypeEnum.Rectangular,\r\n displaySchemes: true,\r\n height: rectangle.height,\r\n width: rectangle.width,\r\n depth: rectangle.depth,\r\n xPosition: 250,\r\n yPosition: 300,\r\n zIndex: 0,\r\n cables: rectangleCables,\r\n isDeviceInitialized: true,\r\n },\r\n {\r\n id: 3,\r\n locationId: locationId,\r\n connectionId: 1,\r\n name: '3',\r\n binType: BinTypeEnum.Circular,\r\n displaySchemes: true,\r\n height: 100,\r\n width: 190,\r\n depth: 190,\r\n xPosition: 300,\r\n yPosition: 200,\r\n zIndex: -1,\r\n cables: this.generateCircleCables(1, 190 / 4, 100 / 2),\r\n isDeviceInitialized: true,\r\n },\r\n {\r\n id: 4,\r\n locationId: locationId,\r\n connectionId: 1,\r\n name: '4',\r\n binType: BinTypeEnum.Circular,\r\n displaySchemes: true,\r\n height: 100,\r\n width: 60,\r\n depth: 100,\r\n xPosition: 300,\r\n yPosition: 200,\r\n zIndex: -1,\r\n cables: this.generateCircleCables(1, 60 / 4, 100 / 2),\r\n isDeviceInitialized: true,\r\n },\r\n {\r\n id: 5,\r\n locationId: locationId,\r\n connectionId: 1,\r\n name: '5',\r\n binType: BinTypeEnum.Circular,\r\n displaySchemes: true,\r\n height: 100,\r\n width: 60,\r\n depth: 100,\r\n xPosition: 300,\r\n yPosition: 200,\r\n zIndex: -1,\r\n cables: this.generateCircleCables(1, 60 / 4, 100 / 2),\r\n isDeviceInitialized: true,\r\n },\r\n {\r\n id: 6,\r\n locationId: locationId,\r\n connectionId: 1,\r\n name: '6',\r\n binType: BinTypeEnum.Circular,\r\n displaySchemes: true,\r\n height: 130,\r\n width: 60,\r\n depth: 60,\r\n xPosition: 300,\r\n yPosition: 200,\r\n zIndex: -1,\r\n cables: this.generateCircleCables(1, 60 / 4, 130 / 2),\r\n isDeviceInitialized: true,\r\n },\r\n ] as BinViewModel[];\r\n\r\n let unitsBins = JSON.parse(this.fakeUnitBins).bins as BinViewModel[];\r\n\r\n const bins = [\r\n ...binSchemes,\r\n {\r\n id: 3,\r\n locationId: locationId,\r\n name: 'UnitName1',\r\n binType: BinTypeEnum.Unit,\r\n displaySchemes: true,\r\n isDeviceInitialized: true,\r\n bins: binSchemes,\r\n } as BinViewModel,\r\n ...unitsBins,\r\n ];\r\n\r\n data.binSchemes = bins.map((b) => BinViewModel.toSchemeViewModel(b));\r\n data.locationId = locationId;\r\n data.wasDeviceInitialized = true;\r\n return data;\r\n }\r\n\r\n generateTemperatureRangeAlarm(\r\n locationId: number\r\n ): TemperatureRangeAlarmViewModel {\r\n const temperatureRangeAlarm = new TemperatureRangeAlarmViewModel();\r\n temperatureRangeAlarm.alarm = {\r\n maxRiseValue: 80,\r\n maxRiseColorHex: '#ff9b00',\r\n highTemperatureValue: 50,\r\n highTemperatureColorHex: '#ff9b00',\r\n highResistanceValue: 40,\r\n highResistanceColorHex: '#ff9b00',\r\n normalResistanceColorHex: '#ff9b00',\r\n openTcColorHex: '#000000',\r\n noResponseColorHex: '#C0C0C0',\r\n } as AlarmViewModel;\r\n\r\n temperatureRangeAlarm.locationId = locationId;\r\n temperatureRangeAlarm.temperatureRanges = [\r\n { from: -17.2222, to: -1.11111, colorHex: \"#e0ffff\" },\r\n { from: -0.555556, to: 1.66667, colorHex: \"#afeeee\" },\r\n { from: 2.22222, to: 4.44444, colorHex: \"#87CEFA\" },\r\n { from: 5, to: 7.22222, colorHex: \"#6495ED\" },\r\n { from: 7.77778, to: 10, colorHex: \"#4682B4\" },\r\n { from: 10.5556, to: 12.7778, colorHex: \"#20B2AA\" },\r\n { from: 13.3333, to: 15.5556, colorHex: \"#66CDAA\" },\r\n { from: 16.1111, to: 18.3333, colorHex: \"#00FA9A\" },\r\n { from: 18.8889, to: 21.1111, colorHex: \"#008000\" },\r\n { from: 21.6667, to: 23.8889, colorHex: \"#9ACD32\" },\r\n { from: 24.4444, to: 26.6667, colorHex: \"#ADFF2F\" },\r\n { from: 27.2222, to: 29.4444, colorHex: \"#FFD700\" },\r\n { from: 30, to: 32.2222, colorHex: \"#DAA520\" },\r\n { from: 32.7778, to: 35, colorHex: \"#FF8C00\" },\r\n { from: 35.5556, to: 37.7778, colorHex: \"#FF7F50\" },\r\n { from: 38.3333, to: 40.5556, colorHex: \"#FA8072\" },\r\n { from: 41.1111, to: 43.3333, colorHex: \"#CD5C5B\" },\r\n { from: 43.8889, to: 46.1111, colorHex: \"#FF1C93\" },\r\n { from: 46.6667, to: 48.8889, colorHex: \"#FE30FF\" },\r\n { from: 49.4444, to: 93.3333, colorHex: \"#801180\" }\r\n ] as TemperatureRangeViewModel[];\r\n\r\n return temperatureRangeAlarm;\r\n }\r\n\r\n generateCircleCables(\r\n cableCount: number,\r\n maxRadius: number,\r\n maxHeight: number\r\n ) {\r\n const cableList = [];\r\n this.thermocoupleCountList = [];\r\n\r\n for (let i = cableCount; i > 0; i--) {\r\n const thermocoupleCount = this.randomInteger(10, 20);\r\n this.thermocoupleCountList.push(thermocoupleCount);\r\n\r\n const cable = {\r\n id: i,\r\n connectionId: i,\r\n firstThermocoupleId: 1,\r\n length: maxHeight,\r\n thermocoupleCount,\r\n angle: this.randomInteger(0, 360),\r\n radius: this.randomInteger(1, maxRadius),\r\n name: i,\r\n sensors: [],\r\n } as CableSchemeViewModel;\r\n cableList.push(cable);\r\n }\r\n\r\n return cableList;\r\n }\r\n\r\n generateRectangleCables(cableCount: number, maxX: number, maxY: number) {\r\n const cableList = [];\r\n this.thermocoupleCountList = [];\r\n\r\n for (let i = 0; i < cableCount; i++) {\r\n const thermocoupleCount = this.randomInteger(10, 20);\r\n this.thermocoupleCountList.push(thermocoupleCount);\r\n\r\n const cable = {\r\n id: i,\r\n connectionId: i,\r\n firstThermocoupleId: 1,\r\n thermocoupleCount,\r\n length: 170,\r\n xPosition: this.randomInteger(0, maxX),\r\n yPosition: this.randomInteger(0, maxY),\r\n name: i,\r\n } as CableSchemeViewModel;\r\n cableList.push(cable);\r\n }\r\n\r\n return cableList;\r\n }\r\n\r\n private getFakeBinsTelemetry(getModel: TelemetryBinsGetModel[]): TelemetrySnapshotViewModel[] {\r\n const recievingTimestamp = new Date().getTime() / 1000;\r\n const model = getModel.map(x => ({\r\n binId: x.binId,\r\n recievingTimestamp: recievingTimestamp,\r\n snapshot: this.generateSnapshot(x.listOfCableIds),\r\n } as TelemetrySnapshotViewModel)) as TelemetrySnapshotViewModel[];\r\n return model;\r\n }\r\n\r\n private getFakeTelemetry(\r\n measureType: MeasureEnum,\r\n binId: number,\r\n cablesIds: number[]\r\n ): TelemetrySnapshotViewModel {\r\n const snapshot = this.generateSnapshot(cablesIds);\r\n const data = {\r\n binId: binId,\r\n recievingTimestamp: 1605518449,\r\n snapshot,\r\n measureType,\r\n } as TelemetrySnapshotViewModel;\r\n return data;\r\n }\r\n\r\n generateSnapshot(cablesIds: number[]): TelemetryViewModel[] {\r\n const cables = [];\r\n\r\n for (let i = 0; i < cablesIds.length; i++) {\r\n const sensorsCount = this.thermocoupleCountList[i];\r\n const sensors = this.generateSensors(sensorsCount);\r\n\r\n const cable = {\r\n cableId: cablesIds[i],\r\n state: 1,\r\n sensors: sensors,\r\n } as TelemetryViewModel;\r\n\r\n cables.push(cable);\r\n }\r\n\r\n return cables;\r\n }\r\n\r\n generateSensors(sensorsCount: number) {\r\n const sensors = [];\r\n\r\n const minTemperature = 0;\r\n const maxTemperature = 100;\r\n\r\n for (let i = 0; i < sensorsCount; i++) {\r\n const temperature = this.randomInteger(minTemperature, maxTemperature);\r\n const sensor = {\r\n id: i,\r\n value: temperature,\r\n status: SensorStatusEnum[SensorStatusEnum[this.randomInteger(0, 4)]],\r\n } as SensorKtxSchemeViewModel;\r\n sensors.push(sensor);\r\n }\r\n\r\n return sensors;\r\n }\r\n\r\n getFakeBinsForEditConnection(): BinConnectionViewModel[] {\r\n let z: string = '1';\r\n z.concat();\r\n let bins = [\r\n {\r\n sysId: 0,\r\n binIds: Array.from({ length: 50 }, (_, i) => i + 1),\r\n port: 502,\r\n ipAddress: '192.168.1.2',\r\n portRemote: 0,\r\n withRemotePort: false,\r\n binListLabels: Array.from({ length: 50 }, (_, i) => i + 1).join(', '),\r\n },\r\n {\r\n sysId: 1,\r\n binIds: [100, 101, 102, 103, 104],\r\n port: 503,\r\n ipAddress: '192.168.1.6',\r\n portRemote: 23,\r\n withRemotePort: true,\r\n binListLabels: '100, 101, 102, 103, 104',\r\n },\r\n ] as BinConnectionViewModel[];\r\n return bins;\r\n }\r\n\r\n randomInteger(min, max): number {\r\n const rand = min + Math.random() * (max + 1 - min);\r\n return Math.floor(rand);\r\n }\r\n\r\n private fakeUnitBins: string =\r\n '{\"bins\":[{\"id\":28,\"multiplexerId\":0,\"switchType\":1,\"ipAddress\":\"192.168.1.1\",\"port\":502,\"portRemote\":0,\"name\":\"100\",\"binType\":1,\"height\":85,\"width\":105,\"depth\":105,\"yPosition\":0,\"xPosition\":0,\"zIndex\":0,\"cables\":[{\"id\":236,\"connectionId\":23,\"firstThermocoupleId\":1,\"thermocoupleCount\":12,\"angle\":300,\"radius\":39.375,\"xPosition\":null,\"yPosition\":null,\"name\":23,\"length\":85,\"switchType\":0,\"multiplexerId\":7},{\"id\":237,\"connectionId\":24,\"firstThermocoupleId\":1,\"thermocoupleCount\":12,\"angle\":330,\"radius\":39.375,\"xPosition\":null,\"yPosition\":null,\"name\":24,\"length\":85,\"switchType\":0,\"multiplexerId\":7},{\"id\":239,\"connectionId\":22,\"firstThermocoupleId\":1,\"thermocoupleCount\":12,\"angle\":270,\"radius\":39.375,\"xPosition\":null,\"yPosition\":null,\"name\":22,\"length\":85,\"switchType\":0,\"multiplexerId\":7},{\"id\":240,\"connectionId\":21,\"firstThermocoupleId\":1,\"thermocoupleCount\":12,\"angle\":240,\"radius\":39.375,\"xPosition\":null,\"yPosition\":null,\"name\":21,\"length\":85,\"switchType\":0,\"multiplexerId\":7},{\"id\":241,\"connectionId\":20,\"firstThermocoupleId\":1,\"thermocoupleCount\":12,\"angle\":210,\"radius\":39.375,\"xPosition\":null,\"yPosition\":null,\"name\":20,\"length\":85,\"switchType\":0,\"multiplexerId\":7},{\"id\":242,\"connectionId\":19,\"firstThermocoupleId\":1,\"thermocoupleCount\":12,\"angle\":190,\"radius\":39.375,\"xPosition\":null,\"yPosition\":null,\"name\":19,\"length\":85,\"switchType\":0,\"multiplexerId\":7},{\"id\":259,\"connectionId\":18,\"firstThermocoupleId\":1,\"thermocoupleCount\":12,\"angle\":160,\"radius\":39.375,\"xPosition\":null,\"yPosition\":null,\"name\":18,\"length\":85,\"switchType\":0,\"multiplexerId\":7},{\"id\":262,\"connectionId\":17,\"firstThermocoupleId\":1,\"thermocoupleCount\":12,\"angle\":130,\"radius\":39.375,\"xPosition\":null,\"yPosition\":null,\"name\":17,\"length\":85,\"switchType\":0,\"multiplexerId\":7},{\"id\":263,\"connectionId\":15,\"firstThermocoupleId\":1,\"thermocoupleCount\":12,\"angle\":70,\"radius\":39.375,\"xPosition\":null,\"yPosition\":null,\"name\":15,\"length\":85,\"switchType\":0,\"multiplexerId\":7},{\"id\":296,\"connectionId\":14,\"firstThermocoupleId\":1,\"thermocoupleCount\":12,\"angle\":40,\"radius\":39.375,\"xPosition\":null,\"yPosition\":null,\"name\":14,\"length\":85,\"switchType\":0,\"multiplexerId\":7},{\"id\":297,\"connectionId\":13,\"firstThermocoupleId\":1,\"thermocoupleCount\":12,\"angle\":10,\"radius\":39.375,\"xPosition\":null,\"yPosition\":null,\"name\":13,\"length\":85,\"switchType\":0,\"multiplexerId\":7},{\"id\":298,\"connectionId\":12,\"firstThermocoupleId\":1,\"thermocoupleCount\":12,\"angle\":325,\"radius\":26.25,\"xPosition\":null,\"yPosition\":null,\"name\":12,\"length\":85,\"switchType\":0,\"multiplexerId\":7},{\"id\":299,\"connectionId\":11,\"firstThermocoupleId\":1,\"thermocoupleCount\":12,\"angle\":290,\"radius\":26.25,\"xPosition\":null,\"yPosition\":null,\"name\":11,\"length\":85,\"switchType\":0,\"multiplexerId\":7},{\"id\":300,\"connectionId\":10,\"firstThermocoupleId\":1,\"thermocoupleCount\":12,\"angle\":235,\"radius\":26.25,\"xPosition\":null,\"yPosition\":null,\"name\":10,\"length\":85,\"switchType\":0,\"multiplexerId\":7},{\"id\":301,\"connectionId\":9,\"firstThermocoupleId\":1,\"thermocoupleCount\":12,\"angle\":190,\"radius\":26.25,\"xPosition\":null,\"yPosition\":null,\"name\":9,\"length\":85,\"switchType\":0,\"multiplexerId\":7},{\"id\":302,\"connectionId\":8,\"firstThermocoupleId\":1,\"thermocoupleCount\":12,\"angle\":145,\"radius\":26.25,\"xPosition\":null,\"yPosition\":null,\"name\":8,\"length\":85,\"switchType\":0,\"multiplexerId\":7},{\"id\":303,\"connectionId\":7,\"firstThermocoupleId\":1,\"thermocoupleCount\":12,\"angle\":100,\"radius\":26.25,\"xPosition\":null,\"yPosition\":null,\"name\":7,\"length\":85,\"switchType\":0,\"multiplexerId\":7},{\"id\":304,\"connectionId\":6,\"firstThermocoupleId\":1,\"thermocoupleCount\":12,\"angle\":55,\"radius\":26.25,\"xPosition\":null,\"yPosition\":null,\"name\":6,\"length\":85,\"switchType\":0,\"multiplexerId\":7},{\"id\":305,\"connectionId\":5,\"firstThermocoupleId\":1,\"thermocoupleCount\":12,\"angle\":10,\"radius\":26.25,\"xPosition\":null,\"yPosition\":null,\"name\":5,\"length\":85,\"switchType\":0,\"multiplexerId\":7},{\"id\":306,\"connectionId\":4,\"firstThermocoupleId\":1,\"thermocoupleCount\":12,\"angle\":280,\"radius\":13.125,\"xPosition\":null,\"yPosition\":null,\"name\":4,\"length\":85,\"switchType\":0,\"multiplexerId\":7},{\"id\":307,\"connectionId\":3,\"firstThermocoupleId\":1,\"thermocoupleCount\":12,\"angle\":190,\"radius\":13.125,\"xPosition\":null,\"yPosition\":null,\"name\":3,\"length\":85,\"switchType\":0,\"multiplexerId\":7},{\"id\":308,\"connectionId\":2,\"firstThermocoupleId\":1,\"thermocoupleCount\":12,\"angle\":100,\"radius\":13.125,\"xPosition\":null,\"yPosition\":null,\"name\":2,\"length\":85,\"switchType\":0,\"multiplexerId\":7},{\"id\":309,\"connectionId\":1,\"firstThermocoupleId\":1,\"thermocoupleCount\":12,\"angle\":10,\"radius\":13.125,\"xPosition\":null,\"yPosition\":null,\"name\":1,\"length\":85,\"switchType\":0,\"multiplexerId\":7},{\"id\":325,\"connectionId\":16,\"firstThermocoupleId\":1,\"thermocoupleCount\":12,\"angle\":100,\"radius\":39.375,\"xPosition\":null,\"yPosition\":null,\"name\":16,\"length\":85,\"switchType\":0,\"multiplexerId\":7}],\"bins\":null},{\"id\":29,\"multiplexerId\":0,\"switchType\":1,\"ipAddress\":\"192.168.1.1\",\"port\":502,\"portRemote\":0,\"name\":\"200\",\"binType\":1,\"height\":85,\"width\":105,\"depth\":105,\"yPosition\":0,\"xPosition\":0,\"zIndex\":0,\"cables\":[{\"id\":231,\"connectionId\":6,\"firstThermocoupleId\":1,\"thermocoupleCount\":12,\"angle\":320,\"radius\":26.25,\"xPosition\":null,\"yPosition\":null,\"name\":6,\"length\":85,\"switchType\":0,\"multiplexerId\":8},{\"id\":232,\"connectionId\":5,\"firstThermocoupleId\":1,\"thermocoupleCount\":12,\"angle\":275,\"radius\":26.25,\"xPosition\":null,\"yPosition\":null,\"name\":5,\"length\":85,\"switchType\":0,\"multiplexerId\":8},{\"id\":233,\"connectionId\":4,\"firstThermocoupleId\":1,\"thermocoupleCount\":12,\"angle\":185,\"radius\":13.125,\"xPosition\":null,\"yPosition\":null,\"name\":4,\"length\":85,\"switchType\":0,\"multiplexerId\":8},{\"id\":234,\"connectionId\":3,\"firstThermocoupleId\":1,\"thermocoupleCount\":12,\"angle\":95,\"radius\":13.125,\"xPosition\":null,\"yPosition\":null,\"name\":3,\"length\":85,\"switchType\":0,\"multiplexerId\":8},{\"id\":235,\"connectionId\":2,\"firstThermocoupleId\":1,\"thermocoupleCount\":12,\"angle\":5,\"radius\":13.125,\"xPosition\":null,\"yPosition\":null,\"name\":2,\"length\":85,\"switchType\":0,\"multiplexerId\":8},{\"id\":238,\"connectionId\":7,\"firstThermocoupleId\":1,\"thermocoupleCount\":12,\"angle\":5,\"radius\":26.25,\"xPosition\":null,\"yPosition\":null,\"name\":7,\"length\":85,\"switchType\":0,\"multiplexerId\":8},{\"id\":243,\"connectionId\":1,\"firstThermocoupleId\":1,\"thermocoupleCount\":12,\"angle\":275,\"radius\":13.125,\"xPosition\":null,\"yPosition\":null,\"name\":1,\"length\":85,\"switchType\":0,\"multiplexerId\":8},{\"id\":244,\"connectionId\":8,\"firstThermocoupleId\":1,\"thermocoupleCount\":12,\"angle\":50,\"radius\":26.25,\"xPosition\":null,\"yPosition\":null,\"name\":8,\"length\":85,\"switchType\":0,\"multiplexerId\":8},{\"id\":245,\"connectionId\":12,\"firstThermocoupleId\":1,\"thermocoupleCount\":12,\"angle\":230,\"radius\":26.25,\"xPosition\":null,\"yPosition\":null,\"name\":12,\"length\":85,\"switchType\":0,\"multiplexerId\":8},{\"id\":246,\"connectionId\":10,\"firstThermocoupleId\":1,\"thermocoupleCount\":12,\"angle\":140,\"radius\":26.25,\"xPosition\":null,\"yPosition\":null,\"name\":10,\"length\":85,\"switchType\":0,\"multiplexerId\":8},{\"id\":247,\"connectionId\":11,\"firstThermocoupleId\":1,\"thermocoupleCount\":12,\"angle\":185,\"radius\":26.25,\"xPosition\":null,\"yPosition\":null,\"name\":11,\"length\":85,\"switchType\":0,\"multiplexerId\":8},' +\r\n '{\"id\":248,\"connectionId\":13,\"firstThermocoupleId\":1,\"thermocoupleCount\":12,\"angle\":273,\"radius\":39.375,\"xPosition\":null,\"yPosition\":null,\"name\":13,\"length\":85,\"switchType\":0,\"multiplexerId\":8},{\"id\":249,\"connectionId\":14,\"firstThermocoupleId\":1,\"thermocoupleCount\":12,\"angle\":303,\"radius\":39.375,\"xPosition\":null,\"yPosition\":null,\"name\":14,\"length\":85,\"switchType\":0,\"multiplexerId\":8},{\"id\":250,\"connectionId\":15,\"firstThermocoupleId\":1,\"thermocoupleCount\":12,\"angle\":333,\"radius\":39.375,\"xPosition\":null,\"yPosition\":null,\"name\":15,\"length\":85,\"switchType\":0,\"multiplexerId\":8},{\"id\":251,\"connectionId\":16,\"firstThermocoupleId\":1,\"thermocoupleCount\":12,\"angle\":3,\"radius\":39.375,\"xPosition\":null,\"yPosition\":null,\"name\":16,\"length\":85,\"switchType\":0,\"multiplexerId\":8},{\"id\":252,\"connectionId\":18,\"firstThermocoupleId\":1,\"thermocoupleCount\":12,\"angle\":63,\"radius\":39.375,\"xPosition\":null,\"yPosition\":null,\"name\":18,\"length\":85,\"switchType\":0,\"multiplexerId\":8},{\"id\":253,\"connectionId\":19,\"firstThermocoupleId\":1,\"thermocoupleCount\":12,\"angle\":93,\"radius\":39.375,\"xPosition\":null,\"yPosition\":null,\"name\":19,\"length\":85,\"switchType\":0,\"multiplexerId\":8},{\"id\":254,\"connectionId\":20,\"firstThermocoupleId\":1,\"thermocoupleCount\":12,\"angle\":123,\"radius\":39.375,\"xPosition\":null,\"yPosition\":null,\"name\":20,\"length\":85,\"switchType\":0,\"multiplexerId\":8},{\"id\":255,\"connectionId\":21,\"firstThermocoupleId\":1,\"thermocoupleCount\":12,\"angle\":153,\"radius\":39.375,\"xPosition\":null,\"yPosition\":null,\"name\":21,\"length\":85,\"switchType\":0,\"multiplexerId\":8},{\"id\":256,\"connectionId\":22,\"firstThermocoupleId\":1,\"thermocoupleCount\":12,\"angle\":183,\"radius\":39.375,\"xPosition\":null,\"yPosition\":null,\"name\":22,\"length\":85,\"switchType\":0,\"multiplexerId\":8},{\"id\":257,\"connectionId\":23,\"firstThermocoupleId\":1,\"thermocoupleCount\":12,\"angle\":213,\"radius\":39.375,\"xPosition\":null,\"yPosition\":null,\"name\":23,\"length\":85,\"switchType\":0,\"multiplexerId\":8},{\"id\":258,\"connectionId\":24,\"firstThermocoupleId\":1,\"thermocoupleCount\":12,\"angle\":243,\"radius\":39.375,\"xPosition\":null,\"yPosition\":null,\"name\":24,\"length\":85,\"switchType\":0,\"multiplexerId\":8},{\"id\":260,\"connectionId\":9,\"firstThermocoupleId\":1,\"thermocoupleCount\":12,\"angle\":95,\"radius\":26.25,\"xPosition\":null,\"yPosition\":null,\"name\":9,\"length\":85,\"switchType\":0,\"multiplexerId\":8},{\"id\":261,\"connectionId\":17,\"firstThermocoupleId\":1,\"thermocoupleCount\":12,\"angle\":33,\"radius\":39.375,\"xPosition\":null,\"yPosition\":null,\"name\":17,\"length\":85,\"switchType\":0,\"multiplexerId\":8}],\"bins\":null},{\"id\":26,\"multiplexerId\":0,\"switchType\":1,\"ipAddress\":\"192.168.1.1\",\"port\":502,\"portRemote\":0,\"name\":\"41\",\"binType\":1,\"height\":85,\"width\":105,\"depth\":105,\"yPosition\":0,\"xPosition\":0,\"zIndex\":0,\"cables\":[{\"id\":269,\"connectionId\":24,\"firstThermocoupleId\":1,\"thermocoupleCount\":12,\"angle\":200,\"radius\":39.375,\"xPosition\":null,\"yPosition\":null,\"name\":24,\"length\":85,\"switchType\":0,\"multiplexerId\":5},{\"id\":270,\"connectionId\":23,\"firstThermocoupleId\":1,\"thermocoupleCount\":12,\"angle\":230,\"radius\":39.375,\"xPosition\":null,\"yPosition\":null,\"name\":23,\"length\":85,\"switchType\":0,\"multiplexerId\":5},{\"id\":271,\"connectionId\":22,\"firstThermocoupleId\":1,\"thermocoupleCount\":12,\"angle\":260,\"radius\":39.375,\"xPosition\":null,\"yPosition\":null,\"name\":22,\"length\":85,\"switchType\":0,\"multiplexerId\":5},{\"id\":272,\"connectionId\":21,\"firstThermocoupleId\":1,\"thermocoupleCount\":12,\"angle\":290,\"radius\":39.375,\"xPosition\":null,\"yPosition\":null,\"name\":21,\"length\":85,\"switchType\":0,\"multiplexerId\":5},{\"id\":273,\"connectionId\":20,\"firstThermocoupleId\":1,\"thermocoupleCount\":12,\"angle\":320,\"radius\":39.375,\"xPosition\":null,\"yPosition\":null,\"name\":20,\"length\":85,\"switchType\":0,\"multiplexerId\":5},{\"id\":274,\"connectionId\":19,\"firstThermocoupleId\":1,\"thermocoupleCount\":12,\"angle\":350,\"radius\":39.375,\"xPosition\":null,\"yPosition\":null,\"name\":19,\"length\":85,\"switchType\":0,\"multiplexerId\":5},{\"id\":275,\"connectionId\":18,\"firstThermocoupleId\":1,\"thermocoupleCount\":12,\"angle\":20,\"radius\":39.375,\"xPosition\":null,\"yPosition\":null,\"name\":18,\"length\":85,\"switchType\":0,\"multiplexerId\":5},{\"id\":276,\"connectionId\":17,\"firstThermocoupleId\":1,\"thermocoupleCount\":12,\"angle\":50,\"radius\":39.375,\"xPosition\":null,\"yPosition\":null,\"name\":17,\"length\":85,\"switchType\":0,\"multiplexerId\":5},{\"id\":278,\"connectionId\":16,\"firstThermocoupleId\":1,\"thermocoupleCount\":12,\"angle\":80,\"radius\":39.375,\"xPosition\":null,\"yPosition\":null,\"name\":16,\"length\":85,\"switchType\":0,\"multiplexerId\":5},{\"id\":279,\"connectionId\":14,\"firstThermocoupleId\":1,\"thermocoupleCount\":12,\"angle\":140,\"radius\":39.375,\"xPosition\":null,\"yPosition\":null,\"name\":14,\"length\":85,\"switchType\":0,\"multiplexerId\":5},{\"id\":280,\"connectionId\":13,\"firstThermocoupleId\":1,\"thermocoupleCount\":12,\"angle\":170,\"radius\":39.375,\"xPosition\":null,\"yPosition\":null,\"name\":13,\"length\":85,\"switchType\":0,\"multiplexerId\":5},{\"id\":281,\"connectionId\":12,\"firstThermocoupleId\":1,\"thermocoupleCount\":12,\"angle\":215,\"radius\":26.25,\"xPosition\":null,\"yPosition\":null,\"name\":12,\"length\":85,\"switchType\":0,\"multiplexerId\":5},{\"id\":282,\"connectionId\":11,\"firstThermocoupleId\":1,\"thermocoupleCount\":12,\"angle\":260,\"radius\":26.25,\"xPosition\":null,\"yPosition\":null,\"name\":11,\"length\":85,\"switchType\":0,\"multiplexerId\":5},{\"id\":283,\"connectionId\":10,\"firstThermocoupleId\":1,\"thermocoupleCount\":12,\"angle\":305,\"radius\":26.25,\"xPosition\":null,\"yPosition\":null,\"name\":10,\"length\":85,\"switchType\":0,\"multiplexerId\":5},{\"id\":284,\"connectionId\":9,\"firstThermocoupleId\":1,\"thermocoupleCount\":12,\"angle\":350,\"radius\":26.25,\"xPosition\":null,\"yPosition\":null,\"name\":9,\"length\":85,\"switchType\":0,\"multiplexerId\":5},{\"id\":285,\"connectionId\":8,\"firstThermocoupleId\":1,\"thermocoupleCount\":12,\"angle\":35,\"radius\":26.25,\"xPosition\":null,\"yPosition\":null,\"name\":8,\"length\":85,\"switchType\":0,\"multiplexerId\":5},{\"id\":286,\"connectionId\":7,\"firstThermocoupleId\":1,\"thermocoupleCount\":12,\"angle\":80,\"radius\":26.25,\"xPosition\":null,\"yPosition\":null,\"name\":7,\"length\":85,\"switchType\":0,\"multiplexerId\":5},{\"id\":287,\"connectionId\":6,\"firstThermocoupleId\":1,\"thermocoupleCount\":12,\"angle\":125,\"radius\":26.25,\"xPosition\":null,\"yPosition\":null,\"name\":6,\"length\":85,\"switchType\":0,\"multiplexerId\":5},{\"id\":288,\"connectionId\":5,\"firstThermocoupleId\":1,\"thermocoupleCount\":12,\"angle\":170,\"radius\":26.25,\"xPosition\":null,\"yPosition\":null,\"name\":5,\"length\":85,\"switchType\":0,\"multiplexerId\":5},{\"id\":289,\"connectionId\":4,\"firstThermocoupleId\":1,\"thermocoupleCount\":12,\"angle\":260,\"radius\":13.125,\"xPosition\":null,\"yPosition\":null,\"name\":4,\"length\":85,\"switchType\":0,\"multiplexerId\":5},{\"id\":290,\"connectionId\":3,\"firstThermocoupleId\":1,\"thermocoupleCount\":12,\"angle\":350,\"radius\":13.125,\"xPosition\":null,\"yPosition\":null,\"name\":3,\"length\":85,\"switchType\":0,\"multiplexerId\":5},{\"id\":291,\"connectionId\":2,\"firstThermocoupleId\":1,\"thermocoupleCount\":12,\"angle\":80,\"radius\":13.125,\"xPosition\":null,\"yPosition\":null,\"name\":2,\"length\":85,\"switchType\":0,\"multiplexerId\":5},{\"id\":292,\"connectionId\":15,\"firstThermocoupleId\":1,\"thermocoupleCount\":12,\"angle\":110,\"radius\":39.375,\"xPosition\":null,\"yPosition\":null,\"name\":15,\"length\":85,\"switchType\":0,\"multiplexerId\":5},' +\r\n '{\"id\":326,\"connectionId\":1,\"firstThermocoupleId\":1,\"thermocoupleCount\":12,\"angle\":170,\"radius\":13.125,\"xPosition\":null,\"yPosition\":null,\"name\":1,\"length\":85,\"switchType\":0,\"multiplexerId\":5}],\"bins\":null},{\"id\":27,\"multiplexerId\":0,\"switchType\":1,\"ipAddress\":\"192.168.1.1\",\"port\":502,\"portRemote\":0,\"name\":\"42\",\"binType\":1,\"height\":85,\"width\":105,\"depth\":105,\"yPosition\":0,\"xPosition\":0,\"zIndex\":0,\"cables\":[{\"id\":264,\"connectionId\":5,\"firstThermocoupleId\":1,\"thermocoupleCount\":12,\"angle\":10,\"radius\":26.25,\"xPosition\":null,\"yPosition\":null,\"name\":5,\"length\":85,\"switchType\":0,\"multiplexerId\":6},{\"id\":265,\"connectionId\":4,\"firstThermocoupleId\":1,\"thermocoupleCount\":12,\"angle\":285,\"radius\":13.125,\"xPosition\":null,\"yPosition\":null,\"name\":4,\"length\":85,\"switchType\":0,\"multiplexerId\":6},{\"id\":266,\"connectionId\":3,\"firstThermocoupleId\":1,\"thermocoupleCount\":12,\"angle\":195,\"radius\":13.125,\"xPosition\":null,\"yPosition\":null,\"name\":3,\"length\":85,\"switchType\":0,\"multiplexerId\":6},{\"id\":267,\"connectionId\":2,\"firstThermocoupleId\":1,\"thermocoupleCount\":12,\"angle\":105,\"radius\":13.125,\"xPosition\":null,\"yPosition\":null,\"name\":2,\"length\":85,\"switchType\":0,\"multiplexerId\":6},{\"id\":268,\"connectionId\":1,\"firstThermocoupleId\":1,\"thermocoupleCount\":12,\"angle\":15,\"radius\":13.125,\"xPosition\":null,\"yPosition\":null,\"name\":1,\"length\":85,\"switchType\":0,\"multiplexerId\":6},{\"id\":277,\"connectionId\":6,\"firstThermocoupleId\":1,\"thermocoupleCount\":12,\"angle\":55,\"radius\":26.25,\"xPosition\":null,\"yPosition\":null,\"name\":6,\"length\":85,\"switchType\":0,\"multiplexerId\":6},{\"id\":293,\"connectionId\":7,\"firstThermocoupleId\":1,\"thermocoupleCount\":12,\"angle\":100,\"radius\":26.25,\"xPosition\":null,\"yPosition\":null,\"name\":7,\"length\":85,\"switchType\":0,\"multiplexerId\":6},{\"id\":294,\"connectionId\":8,\"firstThermocoupleId\":1,\"thermocoupleCount\":12,\"angle\":145,\"radius\":26.25,\"xPosition\":null,\"yPosition\":null,\"name\":8,\"length\":85,\"switchType\":0,\"multiplexerId\":6},{\"id\":295,\"connectionId\":9,\"firstThermocoupleId\":1,\"thermocoupleCount\":12,\"angle\":190,\"radius\":26.25,\"xPosition\":null,\"yPosition\":null,\"name\":9,\"length\":85,\"switchType\":0,\"multiplexerId\":6},{\"id\":310,\"connectionId\":24,\"firstThermocoupleId\":1,\"thermocoupleCount\":12,\"angle\":329,\"radius\":39.375,\"xPosition\":null,\"yPosition\":null,\"name\":24,\"length\":85,\"switchType\":0,\"multiplexerId\":6},{\"id\":311,\"connectionId\":23,\"firstThermocoupleId\":1,\"thermocoupleCount\":12,\"angle\":299,\"radius\":39.375,\"xPosition\":null,\"yPosition\":null,\"name\":23,\"length\":85,\"switchType\":0,\"multiplexerId\":6},{\"id\":312,\"connectionId\":22,\"firstThermocoupleId\":1,\"thermocoupleCount\":12,\"angle\":269,\"radius\":39.375,\"xPosition\":null,\"yPosition\":null,\"name\":22,\"length\":85,\"switchType\":0,\"multiplexerId\":6},{\"id\":313,\"connectionId\":21,\"firstThermocoupleId\":1,\"thermocoupleCount\":12,\"angle\":239,\"radius\":39.375,\"xPosition\":null,\"yPosition\":null,\"name\":21,\"length\":85,\"switchType\":0,\"multiplexerId\":6},{\"id\":314,\"connectionId\":20,\"firstThermocoupleId\":1,\"thermocoupleCount\":12,\"angle\":209,\"radius\":39.375,\"xPosition\":null,\"yPosition\":null,\"name\":20,\"length\":85,\"switchType\":0,\"multiplexerId\":6},{\"id\":315,\"connectionId\":19,\"firstThermocoupleId\":1,\"thermocoupleCount\":12,\"angle\":189,\"radius\":39.375,\"xPosition\":null,\"yPosition\":null,\"name\":19,\"length\":85,\"switchType\":0,\"multiplexerId\":6},{\"id\":316,\"connectionId\":18,\"firstThermocoupleId\":1,\"thermocoupleCount\":12,\"angle\":159,\"radius\":39.375,\"xPosition\":null,\"yPosition\":null,\"name\":18,\"length\":85,\"switchType\":0,\"multiplexerId\":6},{\"id\":317,\"connectionId\":17,\"firstThermocoupleId\":1,\"thermocoupleCount\":12,\"angle\":129,\"radius\":39.375,\"xPosition\":null,\"yPosition\":null,\"name\":17,\"length\":85,\"switchType\":0,\"multiplexerId\":6},{\"id\":318,\"connectionId\":16,\"firstThermocoupleId\":1,\"thermocoupleCount\":12,\"angle\":99,\"radius\":39.375,\"xPosition\":null,\"yPosition\":null,\"name\":16,\"length\":85,\"switchType\":0,\"multiplexerId\":6},{\"id\":319,\"connectionId\":15,\"firstThermocoupleId\":1,\"thermocoupleCount\":12,\"angle\":69,\"radius\":39.375,\"xPosition\":null,\"yPosition\":null,\"name\":15,\"length\":85,\"switchType\":0,\"multiplexerId\":6},{\"id\":320,\"connectionId\":14,\"firstThermocoupleId\":1,\"thermocoupleCount\":12,\"angle\":39,\"radius\":39.375,\"xPosition\":null,\"yPosition\":null,\"name\":14,\"length\":85,\"switchType\":0,\"multiplexerId\":6},{\"id\":321,\"connectionId\":13,\"firstThermocoupleId\":1,\"thermocoupleCount\":12,\"angle\":9,\"radius\":39.375,\"xPosition\":null,\"yPosition\":null,\"name\":13,\"length\":85,\"switchType\":0,\"multiplexerId\":6},{\"id\":322,\"connectionId\":12,\"firstThermocoupleId\":1,\"thermocoupleCount\":12,\"angle\":325,\"radius\":26.25,\"xPosition\":null,\"yPosition\":null,\"name\":12,\"length\":85,\"switchType\":0,\"multiplexerId\":6},{\"id\":323,\"connectionId\":11,\"firstThermocoupleId\":1,\"thermocoupleCount\":12,\"angle\":280,\"radius\":26.25,\"xPosition\":null,\"yPosition\":null,\"name\":11,\"length\":85,\"switchType\":0,\"multiplexerId\":6},{\"id\":324,\"connectionId\":10,\"firstThermocoupleId\":1,\"thermocoupleCount\":12,\"angle\":235,\"radius\":26.25,\"xPosition\":null,\"yPosition\":null,\"name\":10,\"length\":85,\"switchType\":0,\"multiplexerId\":6}],\"bins\":null},{\"id\":30,\"multiplexerId\":0,\"switchType\":0,\"ipAddress\":null,\"port\":0,\"portRemote\":0,\"name\":\"Concrete 1\",\"binType\":3,\"height\":0,\"width\":0,\"depth\":0,\"yPosition\":null,\"xPosition\":null,\"zIndex\":null,\"cables\":null,\"bins\":[{\"id\":34,\"multiplexerId\":0,\"switchType\":1,\"ipAddress\":\"192.168.1.1\",\"port\":502,\"portRemote\":0,\"name\":\"2\",\"binType\":1,\"height\":130,\"width\":35,\"depth\":35,\"yPosition\":35,\"xPosition\":37.5,\"zIndex\":0,\"cables\":[{\"id\":479,\"connectionId\":6,\"firstThermocoupleId\":1,\"thermocoupleCount\":18,\"angle\":60,\"radius\":8.75,\"xPosition\":null,\"yPosition\":null,\"name\":23,\"length\":130,\"switchType\":0,\"multiplexerId\":1},{\"id\":481,\"connectionId\":5,\"firstThermocoupleId\":1,\"thermocoupleCount\":18,\"angle\":180,\"radius\":8.75,\"xPosition\":null,\"yPosition\":null,\"name\":22,\"length\":130,\"switchType\":0,\"multiplexerId\":1},{\"id\":526,\"connectionId\":4,\"firstThermocoupleId\":1,\"thermocoupleCount\":18,\"angle\":300,\"radius\":8.75,\"xPosition\":null,\"yPosition\":null,\"name\":21,\"length\":130,\"switchType\":0,\"multiplexerId\":1}],\"bins\":null},{\"id\":35,\"multiplexerId\":0,\"switchType\":1,\"ipAddress\":\"192.168.1.1\",\"port\":502,\"portRemote\":0,\"name\":\"3\",\"binType\":1,\"height\":130,\"width\":35,\"depth\":35,\"yPosition\":35,\"xPosition\":0,\"zIndex\":0,\"cables\":[{\"id\":477,\"connectionId\":8,\"firstThermocoupleId\":1,\"thermocoupleCount\":18,\"angle\":180,\"radius\":8.75,\"xPosition\":null,\"yPosition\":null,\"name\":32,\"length\":130,\"switchType\":0,\"multiplexerId\":1},{\"id\":478,\"connectionId\":7,\"firstThermocoupleId\":1,\"thermocoupleCount\":18,\"angle\":300,\"radius\":8.75,\"xPosition\":null,\"yPosition\":null,\"name\":31,\"length\":130,\"switchType\":0,\"multiplexerId\":1},{\"id\":482,\"connectionId\":9,\"firstThermocoupleId\":1,\"thermocoupleCount\":18,\"angle\":60,\"radius\":8.75,\"xPosition\":null,\"yPosition\":null,\"name\":33,\"length\":130,\"switchType\":0,\"multiplexerId\":1}],\"bins\":null},{\"id\":36,\"multiplexerId\":0,\"switchType\":1,\"ipAddress\":\"192.168.1.1\",\"port\":502,\"portRemote\":0,\"name\":\"4\",\"binType\":1,\"height\":130,\"width\":35,\"depth\":35,\"yPosition\":0,\"xPosition\":75,\"zIndex\":0,\"cables\":[{\"id\":472,\"connectionId\":11,\"firstThermocoupleId\":1,\"thermocoupleCount\":18,\"angle\":180,\"radius\":8.75,\"xPosition\":null,' +\r\n '\"yPosition\":null,\"name\":42,\"length\":130,\"switchType\":0,\"multiplexerId\":1},{\"id\":474,\"connectionId\":12,\"firstThermocoupleId\":1,\"thermocoupleCount\":18,\"angle\":300,\"radius\":8.75,\"xPosition\":null,\"yPosition\":null,\"name\":43,\"length\":130,\"switchType\":0,\"multiplexerId\":1},{\"id\":475,\"connectionId\":10,\"firstThermocoupleId\":1,\"thermocoupleCount\":18,\"angle\":60,\"radius\":8.75,\"xPosition\":null,\"yPosition\":null,\"name\":41,\"length\":130,\"switchType\":0,\"multiplexerId\":1}],\"bins\":null},{\"id\":37,\"multiplexerId\":0,\"switchType\":1,\"ipAddress\":\"192.168.1.1\",\"port\":502,\"portRemote\":0,\"name\":\"5\",\"binType\":1,\"height\":130,\"width\":35,\"depth\":35,\"yPosition\":0,\"xPosition\":37.5,\"zIndex\":0,\"cables\":[{\"id\":471,\"connectionId\":13,\"firstThermocoupleId\":1,\"thermocoupleCount\":18,\"angle\":60,\"radius\":8.75,\"xPosition\":null,\"yPosition\":null,\"name\":51,\"length\":130,\"switchType\":0,\"multiplexerId\":1},{\"id\":473,\"connectionId\":14,\"firstThermocoupleId\":1,\"thermocoupleCount\":18,\"angle\":180,\"radius\":8.75,\"xPosition\":null,\"yPosition\":null,\"name\":52,\"length\":130,\"switchType\":0,\"multiplexerId\":1},{\"id\":480,\"connectionId\":15,\"firstThermocoupleId\":1,\"thermocoupleCount\":18,\"angle\":300,\"radius\":8.75,\"xPosition\":null,\"yPosition\":null,\"name\":53,\"length\":130,\"switchType\":0,\"multiplexerId\":1}],\"bins\":null},{\"id\":38,\"multiplexerId\":0,\"switchType\":1,\"ipAddress\":\"192.168.1.1\",\"port\":502,\"portRemote\":0,\"name\":\"6\",\"binType\":1,\"height\":130,\"width\":35,\"depth\":35,\"yPosition\":0,\"xPosition\":0,\"zIndex\":0,\"cables\":[{\"id\":483,\"connectionId\":16,\"firstThermocoupleId\":1,\"thermocoupleCount\":18,\"angle\":60,\"radius\":8.75,\"xPosition\":null,\"yPosition\":null,\"name\":61,\"length\":130,\"switchType\":0,\"multiplexerId\":1},{\"id\":485,\"connectionId\":18,\"firstThermocoupleId\":1,\"thermocoupleCount\":18,\"angle\":300,\"radius\":8.75,\"xPosition\":null,\"yPosition\":null,\"name\":63,\"length\":130,\"switchType\":0,\"multiplexerId\":1},{\"id\":505,\"connectionId\":17,\"firstThermocoupleId\":1,\"thermocoupleCount\":18,\"angle\":180,\"radius\":8.75,\"xPosition\":null,\"yPosition\":null,\"name\":62,\"length\":130,\"switchType\":0,\"multiplexerId\":1}],\"bins\":null},{\"id\":39,\"multiplexerId\":0,\"switchType\":1,\"ipAddress\":\"192.168.1.1\",\"port\":502,\"portRemote\":0,\"name\":\"7\",\"binType\":2,\"height\":130,\"width\":37.5,\"depth\":35,\"yPosition\":17.5,\"xPosition\":55,\"zIndex\":-1,\"cables\":[{\"id\":380,\"connectionId\":19,\"firstThermocoupleId\":1,\"thermocoupleCount\":18,\"angle\":null,\"radius\":null,\"xPosition\":18.75,\"yPosition\":17.5,\"name\":7,\"length\":130,\"switchType\":0,\"multiplexerId\":1}],\"bins\":null},{\"id\":40,\"multiplexerId\":0,\"switchType\":1,\"ipAddress\":\"192.168.1.1\",\"port\":502,\"portRemote\":0,\"name\":\"8\",\"binType\":2,\"height\":130,\"width\":37.5,\"depth\":35,\"yPosition\":17.5,\"xPosition\":17.5,\"zIndex\":-1,\"cables\":[{\"id\":394,\"connectionId\":20,\"firstThermocoupleId\":1,\"thermocoupleCount\":18,\"angle\":null,\"radius\":null,\"xPosition\":18.75,\"yPosition\":17.5,\"name\":8,\"length\":130,\"switchType\":0,\"multiplexerId\":1}],\"bins\":null},{\"id\":49,\"multiplexerId\":0,\"switchType\":1,\"ipAddress\":\"192.168.1.1\",\"port\":502,\"portRemote\":0,\"name\":\"1\",\"binType\":1,\"height\":130,\"width\":35,\"depth\":35,\"yPosition\":35,\"xPosition\":75,\"zIndex\":0,\"cables\":[{\"id\":484,\"connectionId\":3,\"firstThermocoupleId\":1,\"thermocoupleCount\":18,\"angle\":60,\"radius\":8.75,\"xPosition\":null,\"yPosition\":null,\"name\":13,\"length\":130,\"switchType\":0,\"multiplexerId\":1},{\"id\":508,\"connectionId\":1,\"firstThermocoupleId\":1,\"thermocoupleCount\":18,\"angle\":300,\"radius\":8.75,\"xPosition\":null,\"yPosition\":null,\"name\":11,\"length\":130,\"switchType\":0,\"multiplexerId\":1},{\"id\":509,\"connectionId\":2,\"firstThermocoupleId\":1,\"thermocoupleCount\":18,\"angle\":180,\"radius\":8.75,\"xPosition\":null,\"yPosition\":null,\"name\":12,\"length\":130,\"switchType\":0,\"multiplexerId\":1}],\"bins\":null}]},{\"id\":31,\"multiplexerId\":0,\"switchType\":0,\"ipAddress\":null,\"port\":0,\"portRemote\":0,\"name\":\"Concrete 2\",\"binType\":3,\"height\":0,\"width\":0,\"depth\":0,\"yPosition\":null,\"xPosition\":null,\"zIndex\":null,\"cables\":null,\"bins\":[{\"id\":41,\"multiplexerId\":0,\"switchType\":1,\"ipAddress\":\"192.168.1.1\",\"port\":502,\"portRemote\":0,\"name\":\"15\",\"binType\":1,\"height\":130,\"width\":25,\"depth\":25,\"yPosition\":15,\"xPosition\":50,\"zIndex\":-1,\"cables\":[{\"id\":393,\"connectionId\":15,\"firstThermocoupleId\":1,\"thermocoupleCount\":18,\"angle\":0,\"radius\":6,\"xPosition\":null,\"yPosition\":null,\"name\":15,\"length\":130,\"switchType\":0,\"multiplexerId\":2}],\"bins\":null},{\"id\":42,\"multiplexerId\":0,\"switchType\":1,\"ipAddress\":\"192.168.1.1\",\"port\":502,\"portRemote\":0,\"name\":\"16\",\"binType\":2,\"height\":130,\"width\":8.333,\"depth\":30,\"yPosition\":12.5,\"xPosition\":54.1667,\"zIndex\":-1,\"cables\":[{\"id\":392,\"connectionId\":16,\"firstThermocoupleId\":1,\"thermocoupleCount\":18,\"angle\":null,\"radius\":null,\"xPosition\":4.1667,\"yPosition\":15,\"name\":16,\"length\":130,\"switchType\":0,\"multiplexerId\":2}],\"bins\":null},{\"id\":43,\"multiplexerId\":0,\"switchType\":1,\"ipAddress\":\"192.168.1.1\",\"port\":502,\"portRemote\":0,\"name\":\"17\",\"binType\":2,\"height\":130,\"width\":8.333,\"depth\":15,\"yPosition\":12.5,\"xPosition\":45.8333,\"zIndex\":-1,\"cables\":[{\"id\":391,\"connectionId\":17,\"firstThermocoupleId\":1,\"thermocoupleCount\":18,\"angle\":null,\"radius\":null,\"xPosition\":4.1667,\"yPosition\":10,\"name\":17,\"length\":130,\"switchType\":0,\"multiplexerId\":2}],\"bins\":null},{\"id\":44,\"multiplexerId\":0,\"switchType\":1,\"ipAddress\":\"192.168.1.1\",\"port\":502,\"portRemote\":0,\"name\":\"18\",\"binType\":2,\"height\":130,\"width\":8.333,\"depth\":15,\"yPosition\":27.5,\"xPosition\":45.8333,\"zIndex\":-1,\"cables\":[{\"id\":390,\"connectionId\":18,\"firstThermocoupleId\":1,\"thermocoupleCount\":18,\"angle\":null,\"radius\":null,\"xPosition\":4.16667,\"yPosition\":5,\"name\":18,\"length\":130,\"switchType\":0,\"multiplexerId\":2}],\"bins\":null},{\"id\":45,\"multiplexerId\":0,\"switchType\":1,\"ipAddress\":\"192.168.1.1\",\"port\":502,\"portRemote\":0,\"name\":\"19\",\"binType\":2,\"height\":130,\"width\":8.333,\"depth\":30,\"yPosition\":12.5,\"xPosition\":37.5,\"zIndex\":-1,\"cables\":[{\"id\":389,\"connectionId\":19,\"firstThermocoupleId\":1,\"thermocoupleCount\":18,\"angle\":null,\"radius\":null,\"xPosition\":4.16667,\"yPosition\":15,\"name\":19,\"length\":130,\"switchType\":0,\"multiplexerId\":2}],\"bins\":null},{\"id\":46,\"multiplexerId\":0,\"switchType\":1,\"ipAddress\":\"192.168.1.1\",\"port\":502,\"portRemote\":0,\"name\":\"20\",\"binType\":2,\"height\":130,\"width\":8.333,\"depth\":30,\"yPosition\":12.5,\"xPosition\":29.1667,\"zIndex\":-1,\"cables\":[{\"id\":395,\"connectionId\":20,\"firstThermocoupleId\":1,\"thermocoupleCount\":18,\"angle\":null,\"radius\":null,\"xPosition\":4.1667,\"yPosition\":15,\"name\":20,\"length\":130,\"switchType\":0,\"multiplexerId\":2}],\"bins\":null},{\"id\":47,\"multiplexerId\":0,\"switchType\":1,\"ipAddress\":\"192.168.1.1\",\"port\":502,\"portRemote\":0,\"name\":\"21\",\"binType\":2,\"height\":130,\"width\":8.333,\"depth\":15,\"yPosition\":12.5,\"xPosition\":20.83333,\"zIndex\":-1,\"cables\":[{\"id\":388,\"connectionId\":21,\"firstThermocoupleId\":1,\"thermocoupleCount\":18,\"angle\":null,\"radius\":null,\"xPosition\":4.16667,\"yPosition\":10,\"name\":21,\"length\":130,\"switchType\":0,\"multiplexerId\":2}],\"bins\":null},{\"id\":48,\"multiplexerId\":0,\"switchType\":1,\"ipAddress\":\"192.168.1.1\",\"port\":502,\"portRemote\":0,\"name\":\"22\",\"binType\":2,\"height\":130,\"width\":8.333,\"depth\":15,\"yPosition\":27.5,\"xPosition\":20.8333,\"zIndex\":-1,\"cables\":[{\"id\":386,\"connectionId\":22,\"firstThermocoupleId\":1,\"thermocoupleCount\":18,\"angle\":null,\"radius\":null,' +\r\n '\"xPosition\":4.16667,\"yPosition\":5,\"name\":22,\"length\":130,\"switchType\":0,\"multiplexerId\":2}],\"bins\":null},{\"id\":50,\"multiplexerId\":0,\"switchType\":1,\"ipAddress\":\"192.168.1.1\",\"port\":502,\"portRemote\":0,\"name\":\"24\",\"binType\":1,\"height\":130,\"width\":25,\"depth\":25,\"yPosition\":15,\"xPosition\":0,\"zIndex\":-2,\"cables\":[{\"id\":384,\"connectionId\":24,\"firstThermocoupleId\":1,\"thermocoupleCount\":18,\"angle\":180,\"radius\":6,\"xPosition\":null,\"yPosition\":null,\"name\":24,\"length\":130,\"switchType\":0,\"multiplexerId\":2}],\"bins\":null},{\"id\":51,\"multiplexerId\":0,\"switchType\":1,\"ipAddress\":\"192.168.1.1\",\"port\":502,\"portRemote\":0,\"name\":\"23\",\"binType\":2,\"height\":130,\"width\":8.333,\"depth\":30,\"yPosition\":12.5,\"xPosition\":12.5,\"zIndex\":-1,\"cables\":[{\"id\":385,\"connectionId\":23,\"firstThermocoupleId\":1,\"thermocoupleCount\":18,\"angle\":null,\"radius\":null,\"xPosition\":4.16667,\"yPosition\":15,\"name\":23,\"length\":130,\"switchType\":0,\"multiplexerId\":2}],\"bins\":null}]},{\"id\":32,\"multiplexerId\":0,\"switchType\":0,\"ipAddress\":null,\"port\":0,\"portRemote\":0,\"name\":\"Concrete 3\",\"binType\":3,\"height\":0,\"width\":0,\"depth\":0,\"yPosition\":null,\"xPosition\":null,\"zIndex\":null,\"cables\":null,\"bins\":[{\"id\":33,\"multiplexerId\":0,\"switchType\":1,\"ipAddress\":\"192.168.1.1\",\"port\":502,\"portRemote\":0,\"name\":\"40\",\"binType\":1,\"height\":130,\"width\":30,\"depth\":30,\"yPosition\":20,\"xPosition\":0,\"zIndex\":-2,\"cables\":[{\"id\":396,\"connectionId\":20,\"firstThermocoupleId\":1,\"thermocoupleCount\":18,\"angle\":180,\"radius\":7,\"xPosition\":null,\"yPosition\":null,\"name\":40,\"length\":130,\"switchType\":0,\"multiplexerId\":4}],\"bins\":null},{\"id\":52,\"multiplexerId\":0,\"switchType\":1,\"ipAddress\":\"192.168.1.1\",\"port\":502,\"portRemote\":0,\"name\":\"38\",\"binType\":2,\"height\":130,\"width\":30,\"depth\":40,\"yPosition\":15,\"xPosition\":45,\"zIndex\":-1,\"cables\":[{\"id\":511,\"connectionId\":16,\"firstThermocoupleId\":1,\"thermocoupleCount\":18,\"angle\":null,\"radius\":null,\"xPosition\":20,\"yPosition\":20,\"name\":381,\"length\":130,\"switchType\":0,\"multiplexerId\":4},{\"id\":512,\"connectionId\":17,\"firstThermocoupleId\":1,\"thermocoupleCount\":18,\"angle\":null,\"radius\":null,\"xPosition\":10,\"yPosition\":20,\"name\":382,\"length\":130,\"switchType\":0,\"multiplexerId\":4}],\"bins\":null},{\"id\":53,\"multiplexerId\":0,\"switchType\":1,\"ipAddress\":\"192.168.1.1\",\"port\":502,\"portRemote\":0,\"name\":\"37\",\"binType\":2,\"height\":130,\"width\":30,\"depth\":40,\"yPosition\":15,\"xPosition\":75,\"zIndex\":-1,\"cables\":[{\"id\":513,\"connectionId\":19,\"firstThermocoupleId\":1,\"thermocoupleCount\":18,\"angle\":null,\"radius\":null,\"xPosition\":20,\"yPosition\":20,\"name\":371,\"length\":130,\"switchType\":0,\"multiplexerId\":3},{\"id\":514,\"connectionId\":20,\"firstThermocoupleId\":1,\"thermocoupleCount\":18,\"angle\":null,\"radius\":null,\"xPosition\":10,\"yPosition\":20,\"name\":372,\"length\":130,\"switchType\":0,\"multiplexerId\":3}],\"bins\":null},{\"id\":54,\"multiplexerId\":0,\"switchType\":1,\"ipAddress\":\"192.168.1.1\",\"port\":502,\"portRemote\":0,\"name\":\"36\",\"binType\":2,\"height\":130,\"width\":30,\"depth\":40,\"yPosition\":15,\"xPosition\":105,\"zIndex\":-1,\"cables\":[{\"id\":527,\"connectionId\":17,\"firstThermocoupleId\":1,\"thermocoupleCount\":18,\"angle\":null,\"radius\":null,\"xPosition\":20,\"yPosition\":20,\"name\":1,\"length\":130,\"switchType\":0,\"multiplexerId\":3},{\"id\":529,\"connectionId\":18,\"firstThermocoupleId\":1,\"thermocoupleCount\":18,\"angle\":null,\"radius\":null,\"xPosition\":10,\"yPosition\":20,\"name\":2,\"length\":130,\"switchType\":0,\"multiplexerId\":3}],\"bins\":null},{\"id\":55,\"multiplexerId\":0,\"switchType\":1,\"ipAddress\":\"192.168.1.1\",\"port\":502,\"portRemote\":0,\"name\":\"35\",\"binType\":1,\"height\":130,\"width\":30,\"depth\":30,\"yPosition\":20,\"xPosition\":120,\"zIndex\":-1,\"cables\":[{\"id\":359,\"connectionId\":16,\"firstThermocoupleId\":1,\"thermocoupleCount\":18,\"angle\":0,\"radius\":7,\"xPosition\":null,\"yPosition\":null,\"name\":35,\"length\":130,\"switchType\":0,\"multiplexerId\":3}],\"bins\":null},{\"id\":56,\"multiplexerId\":0,\"switchType\":1,\"ipAddress\":\"192.168.1.1\",\"port\":502,\"portRemote\":0,\"name\":\"34\",\"binType\":1,\"height\":130,\"width\":30,\"depth\":30,\"yPosition\":0,\"xPosition\":0,\"zIndex\":0,\"cables\":[{\"id\":530,\"connectionId\":13,\"firstThermocoupleId\":1,\"thermocoupleCount\":18,\"angle\":90,\"radius\":7.5,\"xPosition\":null,\"yPosition\":null,\"name\":1,\"length\":130,\"switchType\":0,\"multiplexerId\":4},{\"id\":531,\"connectionId\":14,\"firstThermocoupleId\":1,\"thermocoupleCount\":18,\"angle\":330,\"radius\":7.5,\"xPosition\":null,\"yPosition\":null,\"name\":2,\"length\":130,\"switchType\":0,\"multiplexerId\":4},{\"id\":532,\"connectionId\":15,\"firstThermocoupleId\":1,\"thermocoupleCount\":18,\"angle\":210,\"radius\":7.5,\"xPosition\":null,\"yPosition\":null,\"name\":3,\"length\":130,\"switchType\":0,\"multiplexerId\":4}],\"bins\":null},{\"id\":57,\"multiplexerId\":0,\"switchType\":1,\"ipAddress\":\"192.168.1.1\",\"port\":502,\"portRemote\":0,\"name\":\"33\",\"binType\":1,\"height\":130,\"width\":30,\"depth\":30,\"yPosition\":0,\"xPosition\":30,\"zIndex\":0,\"cables\":[{\"id\":533,\"connectionId\":10,\"firstThermocoupleId\":1,\"thermocoupleCount\":18,\"angle\":90,\"radius\":7.5,\"xPosition\":null,\"yPosition\":null,\"name\":1,\"length\":130,\"switchType\":0,\"multiplexerId\":4},{\"id\":534,\"connectionId\":11,\"firstThermocoupleId\":1,\"thermocoupleCount\":18,\"angle\":330,\"radius\":7.5,\"xPosition\":null,\"yPosition\":null,\"name\":2,\"length\":130,\"switchType\":0,\"multiplexerId\":4},{\"id\":535,\"connectionId\":12,\"firstThermocoupleId\":1,\"thermocoupleCount\":18,\"angle\":210,\"radius\":7.5,\"xPosition\":null,\"yPosition\":null,\"name\":3,\"length\":130,\"switchType\":0,\"multiplexerId\":4}],\"bins\":null},{\"id\":58,\"multiplexerId\":0,\"switchType\":1,\"ipAddress\":\"192.168.1.1\",\"port\":502,\"portRemote\":0,\"name\":\"39\",\"binType\":2,\"height\":130,\"width\":30,\"depth\":40,\"yPosition\":15,\"xPosition\":15,\"zIndex\":-1,\"cables\":[{\"id\":476,\"connectionId\":19,\"firstThermocoupleId\":1,\"thermocoupleCount\":18,\"angle\":null,\"radius\":null,\"xPosition\":10,\"yPosition\":20,\"name\":392,\"length\":130,\"switchType\":0,\"multiplexerId\":4},{\"id\":510,\"connectionId\":18,\"firstThermocoupleId\":1,\"thermocoupleCount\":18,\"angle\":null,\"radius\":null,\"xPosition\":20,\"yPosition\":20,\"name\":391,\"length\":130,\"switchType\":0,\"multiplexerId\":4}],\"bins\":null},{\"id\":59,\"multiplexerId\":0,\"switchType\":1,\"ipAddress\":\"192.168.1.1\",\"port\":502,\"portRemote\":0,\"name\":\"31\",\"binType\":1,\"height\":130,\"width\":30,\"depth\":30,\"yPosition\":0,\"xPosition\":90,\"zIndex\":0,\"cables\":[{\"id\":536,\"connectionId\":4,\"firstThermocoupleId\":1,\"thermocoupleCount\":18,\"angle\":90,\"radius\":7.5,\"xPosition\":null,\"yPosition\":null,\"name\":1,\"length\":130,\"switchType\":0,\"multiplexerId\":4},{\"id\":537,\"connectionId\":5,\"firstThermocoupleId\":1,\"thermocoupleCount\":18,\"angle\":330,\"radius\":7.5,\"xPosition\":null,\"yPosition\":null,\"name\":2,\"length\":130,\"switchType\":0,\"multiplexerId\":4},{\"id\":538,\"connectionId\":6,\"firstThermocoupleId\":1,\"thermocoupleCount\":18,\"angle\":210,\"radius\":7.5,\"xPosition\":null,\"yPosition\":null,\"name\":3,\"length\":130,\"switchType\":0,\"multiplexerId\":4}],\"bins\":null},{\"id\":60,\"multiplexerId\":0,\"switchType\":1,\"ipAddress\":\"192.168.1.1\",\"port\":502,\"portRemote\":0,\"name\":\"30\",\"binType\":1,\"height\":130,\"width\":30,\"depth\":30,\"yPosition\":0,\"xPosition\":120,\"zIndex\":0,\"cables\":[{\"id\":539,\"connectionId\":1,\"firstThermocoupleId\":1,\"thermocoupleCount\":18,\"angle\":90,\"radius\":7.5,\"xPosition\":null,\"yPosition\":null,\"name\":1,\"length\":130,\"switchType\":0,\"multiplexerId\":4},{\"id\":540,\"connectionId\":2,\"firstThermocoupleId\":1,' +\r\n '\"thermocoupleCount\":18,\"angle\":330,\"radius\":7.5,\"xPosition\":null,\"yPosition\":null,\"name\":2,\"length\":130,\"switchType\":0,\"multiplexerId\":4},{\"id\":541,\"connectionId\":3,\"firstThermocoupleId\":1,\"thermocoupleCount\":18,\"angle\":210,\"radius\":7.5,\"xPosition\":null,\"yPosition\":null,\"name\":3,\"length\":130,\"switchType\":0,\"multiplexerId\":4}],\"bins\":null},{\"id\":61,\"multiplexerId\":0,\"switchType\":1,\"ipAddress\":\"192.168.1.1\",\"port\":502,\"portRemote\":0,\"name\":\"29\",\"binType\":1,\"height\":130,\"width\":30,\"depth\":30,\"yPosition\":40,\"xPosition\":0,\"zIndex\":0,\"cables\":[{\"id\":542,\"connectionId\":13,\"firstThermocoupleId\":1,\"thermocoupleCount\":18,\"angle\":270,\"radius\":7.5,\"xPosition\":null,\"yPosition\":null,\"name\":1,\"length\":130,\"switchType\":0,\"multiplexerId\":3},{\"id\":543,\"connectionId\":14,\"firstThermocoupleId\":1,\"thermocoupleCount\":18,\"angle\":150,\"radius\":7.5,\"xPosition\":null,\"yPosition\":null,\"name\":2,\"length\":130,\"switchType\":0,\"multiplexerId\":3},{\"id\":544,\"connectionId\":15,\"firstThermocoupleId\":1,\"thermocoupleCount\":18,\"angle\":30,\"radius\":7.5,\"xPosition\":null,\"yPosition\":null,\"name\":3,\"length\":130,\"switchType\":0,\"multiplexerId\":3}],\"bins\":null},{\"id\":62,\"multiplexerId\":0,\"switchType\":1,\"ipAddress\":\"192.168.1.1\",\"port\":502,\"portRemote\":0,\"name\":\"28\",\"binType\":1,\"height\":130,\"width\":30,\"depth\":30,\"yPosition\":40,\"xPosition\":30,\"zIndex\":0,\"cables\":[{\"id\":545,\"connectionId\":10,\"firstThermocoupleId\":1,\"thermocoupleCount\":18,\"angle\":270,\"radius\":7.5,\"xPosition\":null,\"yPosition\":null,\"name\":1,\"length\":130,\"switchType\":0,\"multiplexerId\":3},{\"id\":546,\"connectionId\":11,\"firstThermocoupleId\":1,\"thermocoupleCount\":18,\"angle\":150,\"radius\":7.5,\"xPosition\":null,\"yPosition\":null,\"name\":2,\"length\":130,\"switchType\":0,\"multiplexerId\":3},{\"id\":547,\"connectionId\":12,\"firstThermocoupleId\":1,\"thermocoupleCount\":18,\"angle\":30,\"radius\":7.5,\"xPosition\":null,\"yPosition\":null,\"name\":3,\"length\":130,\"switchType\":0,\"multiplexerId\":3}],\"bins\":null},{\"id\":63,\"multiplexerId\":0,\"switchType\":1,\"ipAddress\":\"192.168.1.1\",\"port\":502,\"portRemote\":0,\"name\":\"27\",\"binType\":1,\"height\":130,\"width\":30,\"depth\":30,\"yPosition\":40,\"xPosition\":60,\"zIndex\":0,\"cables\":[{\"id\":548,\"connectionId\":7,\"firstThermocoupleId\":1,\"thermocoupleCount\":18,\"angle\":270,\"radius\":7.5,\"xPosition\":null,\"yPosition\":null,\"name\":1,\"length\":130,\"switchType\":0,\"multiplexerId\":3},{\"id\":549,\"connectionId\":8,\"firstThermocoupleId\":1,\"thermocoupleCount\":18,\"angle\":150,\"radius\":7.5,\"xPosition\":null,\"yPosition\":null,\"name\":2,\"length\":130,\"switchType\":0,\"multiplexerId\":3},{\"id\":550,\"connectionId\":9,\"firstThermocoupleId\":1,\"thermocoupleCount\":18,\"angle\":30,\"radius\":7.5,\"xPosition\":null,\"yPosition\":null,\"name\":3,\"length\":130,\"switchType\":0,\"multiplexerId\":3}],\"bins\":null},{\"id\":64,\"multiplexerId\":0,\"switchType\":1,\"ipAddress\":\"192.168.1.1\",\"port\":502,\"portRemote\":0,\"name\":\"26\",\"binType\":1,\"height\":130,\"width\":30,\"depth\":30,\"yPosition\":40,\"xPosition\":90,\"zIndex\":0,\"cables\":[{\"id\":551,\"connectionId\":4,\"firstThermocoupleId\":1,\"thermocoupleCount\":18,\"angle\":270,\"radius\":7.5,\"xPosition\":null,\"yPosition\":null,\"name\":1,\"length\":130,\"switchType\":0,\"multiplexerId\":3},{\"id\":552,\"connectionId\":5,\"firstThermocoupleId\":1,\"thermocoupleCount\":18,\"angle\":150,\"radius\":7.5,\"xPosition\":null,\"yPosition\":null,\"name\":2,\"length\":130,\"switchType\":0,\"multiplexerId\":3},{\"id\":553,\"connectionId\":6,\"firstThermocoupleId\":1,\"thermocoupleCount\":18,\"angle\":30,\"radius\":7.5,\"xPosition\":null,\"yPosition\":null,\"name\":3,\"length\":130,\"switchType\":0,\"multiplexerId\":3}],\"bins\":null},{\"id\":65,\"multiplexerId\":0,\"switchType\":1,\"ipAddress\":\"192.168.1.1\",\"port\":502,\"portRemote\":0,\"name\":\"32\",\"binType\":1,\"height\":130,\"width\":30,\"depth\":30,\"yPosition\":0,\"xPosition\":60,\"zIndex\":0,\"cables\":[{\"id\":554,\"connectionId\":7,\"firstThermocoupleId\":1,\"thermocoupleCount\":18,\"angle\":90,\"radius\":7.5,\"xPosition\":null,\"yPosition\":null,\"name\":1,\"length\":130,\"switchType\":0,\"multiplexerId\":4},{\"id\":555,\"connectionId\":8,\"firstThermocoupleId\":1,\"thermocoupleCount\":18,\"angle\":330,\"radius\":7.5,\"xPosition\":null,\"yPosition\":null,\"name\":2,\"length\":130,\"switchType\":0,\"multiplexerId\":4},{\"id\":556,\"connectionId\":9,\"firstThermocoupleId\":1,\"thermocoupleCount\":18,\"angle\":210,\"radius\":7.5,\"xPosition\":null,\"yPosition\":null,\"name\":3,\"length\":130,\"switchType\":0,\"multiplexerId\":4}],\"bins\":null},{\"id\":66,\"multiplexerId\":0,\"switchType\":1,\"ipAddress\":\"192.168.1.1\",\"port\":502,\"portRemote\":0,\"name\":\"25\",\"binType\":1,\"height\":130,\"width\":30,\"depth\":30,\"yPosition\":40,\"xPosition\":120,\"zIndex\":0,\"cables\":[{\"id\":528,\"connectionId\":2,\"firstThermocoupleId\":1,\"thermocoupleCount\":18,\"angle\":150,\"radius\":7.5,\"xPosition\":null,\"yPosition\":null,\"name\":2,\"length\":130,\"switchType\":0,\"multiplexerId\":3},{\"id\":557,\"connectionId\":1,\"firstThermocoupleId\":1,\"thermocoupleCount\":18,\"angle\":270,\"radius\":7.5,\"xPosition\":null,\"yPosition\":null,\"name\":1,\"length\":130,\"switchType\":0,\"multiplexerId\":3},{\"id\":558,\"connectionId\":3,\"firstThermocoupleId\":1,\"thermocoupleCount\":18,\"angle\":30,\"radius\":7.5,\"xPosition\":null,\"yPosition\":null,\"name\":3,\"length\":130,\"switchType\":0,\"multiplexerId\":3}],\"bins\":null}]}]}';\r\n\r\n private getFakeCompaniesWithLocations(): CompanyViewModel[] {\r\n const data = [\r\n {\r\n id: 1,\r\n name: 'Company1',\r\n locations: [\r\n {\r\n id: 1,\r\n name: 'Location 1',\r\n bins: [{ id: 1, name: 'Bin1.1' }, { id: 2, name: 'Bin1.2' }, { id: 3, name: 'Bin1.3' }],\r\n },\r\n ],\r\n },\r\n {\r\n id: 2,\r\n name: 'Company2',\r\n locations: [\r\n {\r\n id: 2,\r\n name: 'Location 2',\r\n bins: [{ id: 4, name: 'Bin2.1' }, { id: 5, name: 'Bin2.2' }, { id: 6, name: 'Bin2.3' }],\r\n },\r\n {\r\n id: 3,\r\n name: 'Location 3',\r\n bins: [{ id: 7, name: 'Bin3.1' }, { id: 8, name: 'Bin3.2' }, { id: 9, name: 'Bin3.3' }],\r\n },\r\n ],\r\n },\r\n {\r\n id: 3,\r\n name: 'Company3',\r\n locations: [\r\n {\r\n id: 4,\r\n name: 'Location 4',\r\n bins: [{ id: 10, name: 'Bin2.1' }, { id: 11, name: 'Bin2.2' }, { id: 12, name: 'Bin2.3' }],\r\n },\r\n {\r\n id: 5,\r\n name: 'Location 5',\r\n bins: [{ id: 13, name: 'Bin5.1' }, { id: 14, name: 'Bin5.2' }, { id: 15, name: 'Bin5.3' }],\r\n },\r\n {\r\n id: 6,\r\n name: 'Location 6',\r\n },\r\n ],\r\n },\r\n {\r\n id: 4,\r\n name: 'Company4',\r\n locations: [\r\n { id: 7, name: 'Location 7' },\r\n { id: 8, name: 'Location 8' },\r\n { id: 9, name: 'Location 9' },\r\n ],\r\n },\r\n {\r\n id: 5,\r\n name: 'Company5',\r\n locations: [\r\n {\r\n id: 10, name: 'Location 10',\r\n bins: [{ id: 16, name: 'Bin10.1' }, { id: 17, name: 'Bin10.2' }, { id: 18, name: 'Bin10.3' }],\r\n },\r\n ],\r\n },\r\n ] as CompanyViewModel[];\r\n\r\n return data;\r\n };\r\n\r\n public getFakeBinScheme(locationId: number, binId: number): BinSchemeViewModel {\r\n const temperatureRanges = this.generateTemperatureRangeAlarm(locationId);\r\n const binSchema = {\r\n alarm: temperatureRanges.alarm,\r\n temperatureRanges: temperatureRanges.temperatureRanges,\r\n locationId: locationId,\r\n id: binId,\r\n bins: null,\r\n binType: 1,\r\n name: '41',\r\n height: 85,\r\n width: 105,\r\n depth: 105,\r\n yPosition: 20,\r\n xPosition: 85,\r\n zIndex: 0,\r\n isDecorBin: false,\r\n cables: this.generateCircleCables(10, 105 / 2, 85),\r\n displaySchemes: true,\r\n wasDeviceInitialized: true,\r\n isDeviceInitialized: true,\r\n } as BinSchemeGetModel;\r\n return BinSchemeGetModel.toViewMode(binSchema);\r\n }\r\n\r\n public getFakeLocationScheme(locationId: number): LocationKtxSchemeViewModel {\r\n const binSchemes = this.getFakeBinSchemes();\r\n const temperatureRanges = this.generateTemperatureRangeAlarm(locationId)\r\n const fakeLocation: LocationKtxSchemeViewModel = {\r\n locationId: locationId ? locationId : 1,\r\n locationName: 'Location 1',\r\n width: 845,\r\n height: 60,\r\n depth: 210,\r\n binSchemes: binSchemes,\r\n wasDeviceInitialized: true,\r\n displayScheme: true,\r\n modelType: ModelsTypes.locationKtxSchemeViewModel,\r\n forLocationView: true,\r\n alarm: temperatureRanges.alarm,\r\n temperatureRanges: temperatureRanges.temperatureRanges,\r\n };\r\n\r\n return fakeLocation;\r\n }\r\n\r\n getFakeBinSchemes(): BinSchemeViewModel[] {\r\n const bins: BinViewModel[] = [\r\n {\r\n locationId: 0,\r\n binWithinUnitName: 0,\r\n displaySchemes: false,\r\n wasDeviceInitialized: false,\r\n isDeviceInitialized: false,\r\n sysId: 0,\r\n id: 26,\r\n multiplexerId: 0,\r\n switchType: 1,\r\n ipAddress: '172.20.240.1',\r\n port: 502,\r\n portRemote: 0,\r\n name: '41',\r\n binType: 1,\r\n height: 85,\r\n width: 105,\r\n depth: 105,\r\n yPosition: 20,\r\n xPosition: 85,\r\n zIndex: 0,\r\n isDecorBin: false,\r\n cables: this.generateCircleCables(10, 105 / 2, 85),\r\n bins: null,\r\n binColor: '#40E0D0',\r\n averageBinTemperature: this.randomInteger(-18, 92),\r\n cablesAverageAlarm: SensorStatusEnum.HighLimit,\r\n },\r\n {\r\n locationId: 0,\r\n binWithinUnitName: 0,\r\n displaySchemes: false,\r\n wasDeviceInitialized: false,\r\n isDeviceInitialized: false,\r\n sysId: 0,\r\n id: 27,\r\n multiplexerId: 0,\r\n switchType: 1,\r\n ipAddress: '172.20.240.1',\r\n port: 502,\r\n portRemote: 0,\r\n name: '42',\r\n binType: 1,\r\n height: 85,\r\n width: 105,\r\n depth: 105,\r\n yPosition: 105,\r\n xPosition: 0,\r\n zIndex: 0,\r\n isDecorBin: false,\r\n cables: [\r\n {\r\n id: 264,\r\n connectionId: 5,\r\n firstThermocoupleId: 1,\r\n thermocoupleCount: 12,\r\n angle: 10,\r\n radius: 26.25,\r\n xPosition: null,\r\n yPosition: null,\r\n name: 5,\r\n length: 85,\r\n sensors: [],\r\n multiplexerId: 6,\r\n },\r\n {\r\n id: 265,\r\n connectionId: 4,\r\n firstThermocoupleId: 1,\r\n thermocoupleCount: 12,\r\n angle: 285,\r\n radius: 13.125,\r\n xPosition: null,\r\n yPosition: null,\r\n name: 4,\r\n length: 85,\r\n sensors: [],\r\n multiplexerId: 6,\r\n },\r\n {\r\n id: 266,\r\n connectionId: 3,\r\n firstThermocoupleId: 1,\r\n thermocoupleCount: 12,\r\n angle: 195,\r\n radius: 13.125,\r\n xPosition: null,\r\n yPosition: null,\r\n name: 3,\r\n length: 85,\r\n sensors: [],\r\n multiplexerId: 6,\r\n },\r\n {\r\n id: 267,\r\n connectionId: 2,\r\n firstThermocoupleId: 1,\r\n thermocoupleCount: 12,\r\n angle: 105,\r\n radius: 13.125,\r\n xPosition: null,\r\n yPosition: null,\r\n name: 2,\r\n length: 85,\r\n sensors: [],\r\n multiplexerId: 6,\r\n },\r\n {\r\n id: 268,\r\n connectionId: 1,\r\n firstThermocoupleId: 1,\r\n thermocoupleCount: 12,\r\n angle: 15,\r\n radius: 13.125,\r\n xPosition: null,\r\n yPosition: null,\r\n name: 1,\r\n length: 85,\r\n sensors: [],\r\n multiplexerId: 6,\r\n },\r\n {\r\n id: 277,\r\n connectionId: 6,\r\n firstThermocoupleId: 1,\r\n thermocoupleCount: 12,\r\n angle: 55,\r\n radius: 26.25,\r\n xPosition: null,\r\n yPosition: null,\r\n name: 6,\r\n length: 85,\r\n sensors: [],\r\n multiplexerId: 6,\r\n },\r\n {\r\n id: 293,\r\n connectionId: 7,\r\n firstThermocoupleId: 1,\r\n thermocoupleCount: 12,\r\n angle: 100,\r\n radius: 26.25,\r\n xPosition: null,\r\n yPosition: null,\r\n name: 7,\r\n length: 85,\r\n sensors: [],\r\n multiplexerId: 6,\r\n },\r\n {\r\n id: 294,\r\n connectionId: 8,\r\n firstThermocoupleId: 1,\r\n thermocoupleCount: 12,\r\n angle: 145,\r\n radius: 26.25,\r\n xPosition: null,\r\n yPosition: null,\r\n name: 8,\r\n length: 85,\r\n sensors: [],\r\n multiplexerId: 6,\r\n },\r\n {\r\n id: 295,\r\n connectionId: 9,\r\n firstThermocoupleId: 1,\r\n thermocoupleCount: 12,\r\n angle: 190,\r\n radius: 26.25,\r\n xPosition: null,\r\n yPosition: null,\r\n name: 9,\r\n length: 85,\r\n sensors: [],\r\n multiplexerId: 6,\r\n },\r\n {\r\n id: 310,\r\n connectionId: 24,\r\n firstThermocoupleId: 1,\r\n thermocoupleCount: 12,\r\n angle: 329,\r\n radius: 39.375,\r\n xPosition: null,\r\n yPosition: null,\r\n name: 24,\r\n length: 85,\r\n sensors: [],\r\n multiplexerId: 6,\r\n },\r\n {\r\n id: 311,\r\n connectionId: 23,\r\n firstThermocoupleId: 1,\r\n thermocoupleCount: 12,\r\n angle: 299,\r\n radius: 39.375,\r\n xPosition: null,\r\n yPosition: null,\r\n name: 23,\r\n length: 85,\r\n sensors: [],\r\n multiplexerId: 6,\r\n },\r\n {\r\n id: 312,\r\n connectionId: 22,\r\n firstThermocoupleId: 1,\r\n thermocoupleCount: 12,\r\n angle: 269,\r\n radius: 39.375,\r\n xPosition: null,\r\n yPosition: null,\r\n name: 22,\r\n length: 85,\r\n sensors: [],\r\n multiplexerId: 6,\r\n },\r\n {\r\n id: 313,\r\n connectionId: 21,\r\n firstThermocoupleId: 1,\r\n thermocoupleCount: 12,\r\n angle: 239,\r\n radius: 39.375,\r\n xPosition: null,\r\n yPosition: null,\r\n name: 21,\r\n length: 85,\r\n sensors: [],\r\n multiplexerId: 6,\r\n },\r\n {\r\n id: 314,\r\n connectionId: 20,\r\n firstThermocoupleId: 1,\r\n thermocoupleCount: 12,\r\n angle: 209,\r\n radius: 39.375,\r\n xPosition: null,\r\n yPosition: null,\r\n name: 20,\r\n length: 85,\r\n sensors: [],\r\n multiplexerId: 6,\r\n },\r\n {\r\n id: 315,\r\n connectionId: 19,\r\n firstThermocoupleId: 1,\r\n thermocoupleCount: 12,\r\n angle: 189,\r\n radius: 39.375,\r\n xPosition: null,\r\n yPosition: null,\r\n name: 19,\r\n length: 85,\r\n sensors: [],\r\n multiplexerId: 6,\r\n },\r\n {\r\n id: 316,\r\n connectionId: 18,\r\n firstThermocoupleId: 1,\r\n thermocoupleCount: 12,\r\n angle: 159,\r\n radius: 39.375,\r\n xPosition: null,\r\n yPosition: null,\r\n name: 18,\r\n length: 85,\r\n sensors: [],\r\n multiplexerId: 6,\r\n },\r\n {\r\n id: 317,\r\n connectionId: 17,\r\n firstThermocoupleId: 1,\r\n thermocoupleCount: 12,\r\n angle: 129,\r\n radius: 39.375,\r\n xPosition: null,\r\n yPosition: null,\r\n name: 17,\r\n length: 85,\r\n sensors: [],\r\n multiplexerId: 6,\r\n },\r\n {\r\n id: 318,\r\n connectionId: 16,\r\n firstThermocoupleId: 1,\r\n thermocoupleCount: 12,\r\n angle: 99,\r\n radius: 39.375,\r\n xPosition: null,\r\n yPosition: null,\r\n name: 16,\r\n length: 85,\r\n sensors: [],\r\n multiplexerId: 6,\r\n },\r\n {\r\n id: 319,\r\n connectionId: 15,\r\n firstThermocoupleId: 1,\r\n thermocoupleCount: 12,\r\n angle: 69,\r\n radius: 39.375,\r\n xPosition: null,\r\n yPosition: null,\r\n name: 15,\r\n length: 85,\r\n sensors: [],\r\n multiplexerId: 6,\r\n },\r\n {\r\n id: 320,\r\n connectionId: 14,\r\n firstThermocoupleId: 1,\r\n thermocoupleCount: 12,\r\n angle: 39,\r\n radius: 39.375,\r\n xPosition: null,\r\n yPosition: null,\r\n name: 14,\r\n length: 85,\r\n sensors: [],\r\n multiplexerId: 6,\r\n },\r\n {\r\n id: 321,\r\n connectionId: 13,\r\n firstThermocoupleId: 1,\r\n thermocoupleCount: 12,\r\n angle: 9,\r\n radius: 39.375,\r\n xPosition: null,\r\n yPosition: null,\r\n name: 13,\r\n length: 85,\r\n sensors: [],\r\n multiplexerId: 6,\r\n },\r\n {\r\n id: 322,\r\n connectionId: 12,\r\n firstThermocoupleId: 1,\r\n thermocoupleCount: 12,\r\n angle: 325,\r\n radius: 26.25,\r\n xPosition: null,\r\n yPosition: null,\r\n name: 12,\r\n length: 85,\r\n sensors: [],\r\n multiplexerId: 6,\r\n },\r\n {\r\n id: 323,\r\n connectionId: 11,\r\n firstThermocoupleId: 1,\r\n thermocoupleCount: 12,\r\n angle: 280,\r\n radius: 26.25,\r\n xPosition: null,\r\n yPosition: null,\r\n name: 11,\r\n length: 85,\r\n sensors: [],\r\n multiplexerId: 6,\r\n },\r\n {\r\n id: 324,\r\n connectionId: 10,\r\n firstThermocoupleId: 1,\r\n thermocoupleCount: 12,\r\n angle: 235,\r\n radius: 26.25,\r\n xPosition: null,\r\n yPosition: null,\r\n name: 10,\r\n length: 85,\r\n sensors: [],\r\n multiplexerId: 6,\r\n },\r\n ],\r\n bins: null,\r\n binColor: '#40E0D0',\r\n cablesAverageAlarm: SensorStatusEnum.NoError, averageBinTemperature: this.randomInteger(-18, 92),\r\n },\r\n {\r\n locationId: 0,\r\n binWithinUnitName: 0,\r\n displaySchemes: false,\r\n wasDeviceInitialized: false,\r\n isDeviceInitialized: false,\r\n sysId: 0,\r\n id: 28,\r\n multiplexerId: 0,\r\n switchType: 1,\r\n ipAddress: '172.20.240.1',\r\n port: 502,\r\n portRemote: 0,\r\n name: '100',\r\n binType: 1,\r\n height: 85,\r\n width: 105,\r\n depth: 105,\r\n yPosition: 10,\r\n xPosition: 625,\r\n zIndex: 0,\r\n isDecorBin: false,\r\n cables: [\r\n {\r\n id: 236,\r\n connectionId: 23,\r\n firstThermocoupleId: 1,\r\n thermocoupleCount: 12,\r\n angle: 300,\r\n radius: 39.375,\r\n xPosition: null,\r\n yPosition: null,\r\n name: 23,\r\n length: 85,\r\n sensors: [],\r\n multiplexerId: 7,\r\n },\r\n {\r\n id: 237,\r\n connectionId: 24,\r\n firstThermocoupleId: 1,\r\n thermocoupleCount: 12,\r\n angle: 330,\r\n radius: 39.375,\r\n xPosition: null,\r\n yPosition: null,\r\n name: 24,\r\n length: 85,\r\n sensors: [],\r\n multiplexerId: 7,\r\n },\r\n {\r\n id: 239,\r\n connectionId: 22,\r\n firstThermocoupleId: 1,\r\n thermocoupleCount: 12,\r\n angle: 270,\r\n radius: 39.375,\r\n xPosition: null,\r\n yPosition: null,\r\n name: 22,\r\n length: 85,\r\n sensors: [],\r\n multiplexerId: 7,\r\n },\r\n {\r\n id: 240,\r\n connectionId: 21,\r\n firstThermocoupleId: 1,\r\n thermocoupleCount: 12,\r\n angle: 240,\r\n radius: 39.375,\r\n xPosition: null,\r\n yPosition: null,\r\n name: 21,\r\n length: 85,\r\n sensors: [],\r\n multiplexerId: 7,\r\n },\r\n {\r\n id: 241,\r\n connectionId: 20,\r\n firstThermocoupleId: 1,\r\n thermocoupleCount: 12,\r\n angle: 210,\r\n radius: 39.375,\r\n xPosition: null,\r\n yPosition: null,\r\n name: 20,\r\n length: 85,\r\n sensors: [],\r\n multiplexerId: 7,\r\n },\r\n {\r\n id: 242,\r\n connectionId: 19,\r\n firstThermocoupleId: 1,\r\n thermocoupleCount: 12,\r\n angle: 190,\r\n radius: 39.375,\r\n xPosition: null,\r\n yPosition: null,\r\n name: 19,\r\n length: 85,\r\n sensors: [],\r\n multiplexerId: 7,\r\n },\r\n {\r\n id: 259,\r\n connectionId: 18,\r\n firstThermocoupleId: 1,\r\n thermocoupleCount: 12,\r\n angle: 160,\r\n radius: 39.375,\r\n xPosition: null,\r\n yPosition: null,\r\n name: 18,\r\n length: 85,\r\n sensors: [],\r\n multiplexerId: 7,\r\n },\r\n {\r\n id: 262,\r\n connectionId: 17,\r\n firstThermocoupleId: 1,\r\n thermocoupleCount: 12,\r\n angle: 130,\r\n radius: 39.375,\r\n xPosition: null,\r\n yPosition: null,\r\n name: 17,\r\n length: 85,\r\n sensors: [],\r\n multiplexerId: 7,\r\n },\r\n {\r\n id: 263,\r\n connectionId: 15,\r\n firstThermocoupleId: 1,\r\n thermocoupleCount: 12,\r\n angle: 70,\r\n radius: 39.375,\r\n xPosition: null,\r\n yPosition: null,\r\n name: 15,\r\n length: 85,\r\n sensors: [],\r\n multiplexerId: 7,\r\n },\r\n {\r\n id: 296,\r\n connectionId: 14,\r\n firstThermocoupleId: 1,\r\n thermocoupleCount: 12,\r\n angle: 40,\r\n radius: 39.375,\r\n xPosition: null,\r\n yPosition: null,\r\n name: 14,\r\n length: 85,\r\n sensors: [],\r\n multiplexerId: 7,\r\n },\r\n {\r\n id: 297,\r\n connectionId: 13,\r\n firstThermocoupleId: 1,\r\n thermocoupleCount: 12,\r\n angle: 10,\r\n radius: 39.375,\r\n xPosition: null,\r\n yPosition: null,\r\n name: 13,\r\n length: 85,\r\n sensors: [],\r\n multiplexerId: 7,\r\n },\r\n {\r\n id: 298,\r\n connectionId: 12,\r\n firstThermocoupleId: 1,\r\n thermocoupleCount: 12,\r\n angle: 325,\r\n radius: 26.25,\r\n xPosition: null,\r\n yPosition: null,\r\n name: 12,\r\n length: 85,\r\n sensors: [],\r\n multiplexerId: 7,\r\n },\r\n {\r\n id: 299,\r\n connectionId: 11,\r\n firstThermocoupleId: 1,\r\n thermocoupleCount: 12,\r\n angle: 290,\r\n radius: 26.25,\r\n xPosition: null,\r\n yPosition: null,\r\n name: 11,\r\n length: 85,\r\n sensors: [],\r\n multiplexerId: 7,\r\n },\r\n {\r\n id: 300,\r\n connectionId: 10,\r\n firstThermocoupleId: 1,\r\n thermocoupleCount: 12,\r\n angle: 235,\r\n radius: 26.25,\r\n xPosition: null,\r\n yPosition: null,\r\n name: 10,\r\n length: 85,\r\n sensors: [],\r\n multiplexerId: 7,\r\n },\r\n {\r\n id: 301,\r\n connectionId: 9,\r\n firstThermocoupleId: 1,\r\n thermocoupleCount: 12,\r\n angle: 190,\r\n radius: 26.25,\r\n xPosition: null,\r\n yPosition: null,\r\n name: 9,\r\n length: 85,\r\n sensors: [],\r\n multiplexerId: 7,\r\n },\r\n {\r\n id: 302,\r\n connectionId: 8,\r\n firstThermocoupleId: 1,\r\n thermocoupleCount: 12,\r\n angle: 145,\r\n radius: 26.25,\r\n xPosition: null,\r\n yPosition: null,\r\n name: 8,\r\n length: 85,\r\n sensors: [],\r\n multiplexerId: 7,\r\n },\r\n {\r\n id: 303,\r\n connectionId: 7,\r\n firstThermocoupleId: 1,\r\n thermocoupleCount: 12,\r\n angle: 100,\r\n radius: 26.25,\r\n xPosition: null,\r\n yPosition: null,\r\n name: 7,\r\n length: 85,\r\n sensors: [],\r\n multiplexerId: 7,\r\n },\r\n {\r\n id: 304,\r\n connectionId: 6,\r\n firstThermocoupleId: 1,\r\n thermocoupleCount: 12,\r\n angle: 55,\r\n radius: 26.25,\r\n xPosition: null,\r\n yPosition: null,\r\n name: 6,\r\n length: 85,\r\n sensors: [],\r\n multiplexerId: 7,\r\n },\r\n {\r\n id: 305,\r\n connectionId: 5,\r\n firstThermocoupleId: 1,\r\n thermocoupleCount: 12,\r\n angle: 10,\r\n radius: 26.25,\r\n xPosition: null,\r\n yPosition: null,\r\n name: 5,\r\n length: 85,\r\n sensors: [],\r\n multiplexerId: 7,\r\n },\r\n {\r\n id: 306,\r\n connectionId: 4,\r\n firstThermocoupleId: 1,\r\n thermocoupleCount: 12,\r\n angle: 280,\r\n radius: 13.125,\r\n xPosition: null,\r\n yPosition: null,\r\n name: 4,\r\n length: 85,\r\n sensors: [],\r\n multiplexerId: 7,\r\n },\r\n {\r\n id: 307,\r\n connectionId: 3,\r\n firstThermocoupleId: 1,\r\n thermocoupleCount: 12,\r\n angle: 190,\r\n radius: 13.125,\r\n xPosition: null,\r\n yPosition: null,\r\n name: 3,\r\n length: 85,\r\n sensors: [],\r\n multiplexerId: 7,\r\n },\r\n {\r\n id: 308,\r\n connectionId: 2,\r\n firstThermocoupleId: 1,\r\n thermocoupleCount: 12,\r\n angle: 100,\r\n radius: 13.125,\r\n xPosition: null,\r\n yPosition: null,\r\n name: 2,\r\n length: 85,\r\n sensors: [],\r\n multiplexerId: 7,\r\n },\r\n {\r\n id: 309,\r\n connectionId: 1,\r\n firstThermocoupleId: 1,\r\n thermocoupleCount: 12,\r\n angle: 10,\r\n radius: 13.125,\r\n xPosition: null,\r\n yPosition: null,\r\n name: 1,\r\n length: 85,\r\n sensors: [],\r\n multiplexerId: 7,\r\n },\r\n {\r\n id: 325,\r\n connectionId: 16,\r\n firstThermocoupleId: 1,\r\n thermocoupleCount: 12,\r\n angle: 100,\r\n radius: 39.375,\r\n xPosition: null,\r\n yPosition: null,\r\n name: 16,\r\n length: 85,\r\n sensors: [],\r\n multiplexerId: 7,\r\n },\r\n ],\r\n bins: null,\r\n binColor: '#40E0D0',\r\n cablesAverageAlarm: SensorStatusEnum.NoError, averageBinTemperature: this.randomInteger(-18, 92),\r\n },\r\n {\r\n locationId: 0,\r\n binWithinUnitName: 0,\r\n displaySchemes: false,\r\n wasDeviceInitialized: false,\r\n isDeviceInitialized: false,\r\n sysId: 0,\r\n id: 29,\r\n multiplexerId: 0,\r\n switchType: 1,\r\n ipAddress: '172.20.240.1',\r\n port: 502,\r\n portRemote: 0,\r\n name: '200',\r\n binType: 1,\r\n height: 85,\r\n width: 105,\r\n depth: 105,\r\n yPosition: 10,\r\n xPosition: 740,\r\n zIndex: 0,\r\n isDecorBin: false,\r\n cables: [\r\n {\r\n id: 231,\r\n connectionId: 6,\r\n firstThermocoupleId: 1,\r\n thermocoupleCount: 12,\r\n angle: 320,\r\n radius: 26.25,\r\n xPosition: null,\r\n yPosition: null,\r\n name: 6,\r\n length: 85,\r\n sensors: [],\r\n multiplexerId: 8,\r\n },\r\n {\r\n id: 232,\r\n connectionId: 5,\r\n firstThermocoupleId: 1,\r\n thermocoupleCount: 12,\r\n angle: 275,\r\n radius: 26.25,\r\n xPosition: null,\r\n yPosition: null,\r\n name: 5,\r\n length: 85,\r\n sensors: [],\r\n multiplexerId: 8,\r\n },\r\n {\r\n id: 233,\r\n connectionId: 4,\r\n firstThermocoupleId: 1,\r\n thermocoupleCount: 12,\r\n angle: 185,\r\n radius: 13.125,\r\n xPosition: null,\r\n yPosition: null,\r\n name: 4,\r\n length: 85,\r\n sensors: [],\r\n multiplexerId: 8,\r\n },\r\n {\r\n id: 234,\r\n connectionId: 3,\r\n firstThermocoupleId: 1,\r\n thermocoupleCount: 12,\r\n angle: 95,\r\n radius: 13.125,\r\n xPosition: null,\r\n yPosition: null,\r\n name: 3,\r\n length: 85,\r\n sensors: [],\r\n multiplexerId: 8,\r\n },\r\n {\r\n id: 235,\r\n connectionId: 2,\r\n firstThermocoupleId: 1,\r\n thermocoupleCount: 12,\r\n angle: 5,\r\n radius: 13.125,\r\n xPosition: null,\r\n yPosition: null,\r\n name: 2,\r\n length: 85,\r\n sensors: [],\r\n multiplexerId: 8,\r\n },\r\n {\r\n id: 238,\r\n connectionId: 7,\r\n firstThermocoupleId: 1,\r\n thermocoupleCount: 12,\r\n angle: 5,\r\n radius: 26.25,\r\n xPosition: null,\r\n yPosition: null,\r\n name: 7,\r\n length: 85,\r\n sensors: [],\r\n multiplexerId: 8,\r\n },\r\n {\r\n id: 243,\r\n connectionId: 1,\r\n firstThermocoupleId: 1,\r\n thermocoupleCount: 12,\r\n angle: 275,\r\n radius: 13.125,\r\n xPosition: null,\r\n yPosition: null,\r\n name: 1,\r\n length: 85,\r\n sensors: [],\r\n multiplexerId: 8,\r\n },\r\n {\r\n id: 244,\r\n connectionId: 8,\r\n firstThermocoupleId: 1,\r\n thermocoupleCount: 12,\r\n angle: 50,\r\n radius: 26.25,\r\n xPosition: null,\r\n yPosition: null,\r\n name: 8,\r\n length: 85,\r\n sensors: [],\r\n multiplexerId: 8,\r\n },\r\n {\r\n id: 245,\r\n connectionId: 12,\r\n firstThermocoupleId: 1,\r\n thermocoupleCount: 12,\r\n angle: 230,\r\n radius: 26.25,\r\n xPosition: null,\r\n yPosition: null,\r\n name: 12,\r\n length: 85,\r\n sensors: [],\r\n multiplexerId: 8,\r\n },\r\n {\r\n id: 246,\r\n connectionId: 10,\r\n firstThermocoupleId: 1,\r\n thermocoupleCount: 12,\r\n angle: 140,\r\n radius: 26.25,\r\n xPosition: null,\r\n yPosition: null,\r\n name: 10,\r\n length: 85,\r\n sensors: [],\r\n multiplexerId: 8,\r\n },\r\n {\r\n id: 247,\r\n connectionId: 11,\r\n firstThermocoupleId: 1,\r\n thermocoupleCount: 12,\r\n angle: 185,\r\n radius: 26.25,\r\n xPosition: null,\r\n yPosition: null,\r\n name: 11,\r\n length: 85,\r\n sensors: [],\r\n multiplexerId: 8,\r\n },\r\n {\r\n id: 248,\r\n connectionId: 13,\r\n firstThermocoupleId: 1,\r\n thermocoupleCount: 12,\r\n angle: 273,\r\n radius: 39.375,\r\n xPosition: null,\r\n yPosition: null,\r\n name: 13,\r\n length: 85,\r\n sensors: [],\r\n multiplexerId: 8,\r\n },\r\n {\r\n id: 249,\r\n connectionId: 14,\r\n firstThermocoupleId: 1,\r\n thermocoupleCount: 12,\r\n angle: 303,\r\n radius: 39.375,\r\n xPosition: null,\r\n yPosition: null,\r\n name: 14,\r\n length: 85,\r\n sensors: [],\r\n multiplexerId: 8,\r\n },\r\n {\r\n id: 250,\r\n connectionId: 15,\r\n firstThermocoupleId: 1,\r\n thermocoupleCount: 12,\r\n angle: 333,\r\n radius: 39.375,\r\n xPosition: null,\r\n yPosition: null,\r\n name: 15,\r\n length: 85,\r\n sensors: [],\r\n multiplexerId: 8,\r\n },\r\n {\r\n id: 251,\r\n connectionId: 16,\r\n firstThermocoupleId: 1,\r\n thermocoupleCount: 12,\r\n angle: 3,\r\n radius: 39.375,\r\n xPosition: null,\r\n yPosition: null,\r\n name: 16,\r\n length: 85,\r\n sensors: [],\r\n multiplexerId: 8,\r\n },\r\n {\r\n id: 252,\r\n connectionId: 18,\r\n firstThermocoupleId: 1,\r\n thermocoupleCount: 12,\r\n angle: 63,\r\n radius: 39.375,\r\n xPosition: null,\r\n yPosition: null,\r\n name: 18,\r\n length: 85,\r\n sensors: [],\r\n multiplexerId: 8,\r\n },\r\n {\r\n id: 253,\r\n connectionId: 19,\r\n firstThermocoupleId: 1,\r\n thermocoupleCount: 12,\r\n angle: 93,\r\n radius: 39.375,\r\n xPosition: null,\r\n yPosition: null,\r\n name: 19,\r\n length: 85,\r\n sensors: [],\r\n multiplexerId: 8,\r\n },\r\n {\r\n id: 254,\r\n connectionId: 20,\r\n firstThermocoupleId: 1,\r\n thermocoupleCount: 12,\r\n angle: 123,\r\n radius: 39.375,\r\n xPosition: null,\r\n yPosition: null,\r\n name: 20,\r\n length: 85,\r\n sensors: [],\r\n multiplexerId: 8,\r\n },\r\n {\r\n id: 255,\r\n connectionId: 21,\r\n firstThermocoupleId: 1,\r\n thermocoupleCount: 12,\r\n angle: 153,\r\n radius: 39.375,\r\n xPosition: null,\r\n yPosition: null,\r\n name: 21,\r\n length: 85,\r\n sensors: [],\r\n multiplexerId: 8,\r\n },\r\n {\r\n id: 256,\r\n connectionId: 22,\r\n firstThermocoupleId: 1,\r\n thermocoupleCount: 12,\r\n angle: 183,\r\n radius: 39.375,\r\n xPosition: null,\r\n yPosition: null,\r\n name: 22,\r\n length: 85,\r\n sensors: [],\r\n multiplexerId: 8,\r\n },\r\n {\r\n id: 257,\r\n connectionId: 23,\r\n firstThermocoupleId: 1,\r\n thermocoupleCount: 12,\r\n angle: 213,\r\n radius: 39.375,\r\n xPosition: null,\r\n yPosition: null,\r\n name: 23,\r\n length: 85,\r\n sensors: [],\r\n multiplexerId: 8,\r\n },\r\n {\r\n id: 258,\r\n connectionId: 24,\r\n firstThermocoupleId: 1,\r\n thermocoupleCount: 12,\r\n angle: 243,\r\n radius: 39.375,\r\n xPosition: null,\r\n yPosition: null,\r\n name: 24,\r\n length: 85,\r\n sensors: [],\r\n multiplexerId: 8,\r\n },\r\n {\r\n id: 260,\r\n connectionId: 9,\r\n firstThermocoupleId: 1,\r\n thermocoupleCount: 12,\r\n angle: 95,\r\n radius: 26.25,\r\n xPosition: null,\r\n yPosition: null,\r\n name: 9,\r\n length: 85,\r\n sensors: [],\r\n multiplexerId: 8,\r\n },\r\n {\r\n id: 261,\r\n connectionId: 17,\r\n firstThermocoupleId: 1,\r\n thermocoupleCount: 12,\r\n angle: 33,\r\n radius: 39.375,\r\n xPosition: null,\r\n yPosition: null,\r\n name: 17,\r\n length: 85,\r\n sensors: [],\r\n multiplexerId: 8,\r\n },\r\n ],\r\n bins: null,\r\n binColor: '#40E0D0',\r\n cablesAverageAlarm: SensorStatusEnum.NoError, averageBinTemperature: this.randomInteger(-18, 92),\r\n },\r\n {\r\n locationId: 0,\r\n binWithinUnitName: 0,\r\n displaySchemes: false,\r\n wasDeviceInitialized: false,\r\n isDeviceInitialized: false,\r\n sysId: 0,\r\n id: 30,\r\n multiplexerId: 0,\r\n switchType: 0,\r\n ipAddress: null,\r\n port: 0,\r\n portRemote: 0,\r\n name: 'Concrete 1',\r\n binType: 3,\r\n height: 0,\r\n width: 0,\r\n depth: 0,\r\n yPosition: 0,\r\n xPosition: 450,\r\n zIndex: null,\r\n isDecorBin: false,\r\n cables: null,\r\n binColor: null,\r\n cablesAverageAlarm: SensorStatusEnum.NoError, averageBinTemperature: null,\r\n bins: [\r\n {\r\n locationId: 0,\r\n binWithinUnitName: 0,\r\n displaySchemes: false,\r\n wasDeviceInitialized: false,\r\n isDeviceInitialized: false,\r\n sysId: 0,\r\n id: 34,\r\n multiplexerId: 0,\r\n switchType: 1,\r\n ipAddress: '172.20.240.1',\r\n port: 502,\r\n portRemote: 0,\r\n name: '2',\r\n binType: 1,\r\n height: 130,\r\n width: 35,\r\n depth: 35,\r\n yPosition: 35,\r\n xPosition: 37.5,\r\n zIndex: 0,\r\n isDecorBin: false,\r\n binColor: null,\r\n cablesAverageAlarm: SensorStatusEnum.NoError, averageBinTemperature: null,\r\n cables: [\r\n {\r\n id: 479,\r\n connectionId: 6,\r\n firstThermocoupleId: 1,\r\n thermocoupleCount: 18,\r\n angle: 60,\r\n radius: 8.75,\r\n xPosition: null,\r\n yPosition: null,\r\n name: 23,\r\n length: 130,\r\n sensors: [],\r\n multiplexerId: 1,\r\n },\r\n {\r\n id: 481,\r\n connectionId: 5,\r\n firstThermocoupleId: 1,\r\n thermocoupleCount: 18,\r\n angle: 180,\r\n radius: 8.75,\r\n xPosition: null,\r\n yPosition: null,\r\n name: 22,\r\n length: 130,\r\n sensors: [],\r\n multiplexerId: 1,\r\n },\r\n {\r\n id: 526,\r\n connectionId: 4,\r\n firstThermocoupleId: 1,\r\n thermocoupleCount: 18,\r\n angle: 300,\r\n radius: 8.75,\r\n xPosition: null,\r\n yPosition: null,\r\n name: 21,\r\n length: 130,\r\n sensors: [],\r\n multiplexerId: 1,\r\n },\r\n ],\r\n bins: null,\r\n },\r\n {\r\n locationId: 0,\r\n binWithinUnitName: 0,\r\n displaySchemes: false,\r\n wasDeviceInitialized: false,\r\n isDeviceInitialized: false,\r\n sysId: 0,\r\n id: 35,\r\n multiplexerId: 0,\r\n switchType: 1,\r\n ipAddress: '172.20.240.1',\r\n port: 502,\r\n portRemote: 0,\r\n name: '3',\r\n binType: 1,\r\n height: 130,\r\n width: 35,\r\n depth: 35,\r\n yPosition: 35,\r\n xPosition: 0,\r\n zIndex: 0,\r\n isDecorBin: false,\r\n cables: [\r\n {\r\n id: 477,\r\n connectionId: 8,\r\n firstThermocoupleId: 1,\r\n thermocoupleCount: 18,\r\n angle: 180,\r\n radius: 8.75,\r\n xPosition: null,\r\n yPosition: null,\r\n name: 32,\r\n length: 130,\r\n sensors: [],\r\n multiplexerId: 1,\r\n },\r\n {\r\n id: 478,\r\n connectionId: 7,\r\n firstThermocoupleId: 1,\r\n thermocoupleCount: 18,\r\n angle: 300,\r\n radius: 8.75,\r\n xPosition: null,\r\n yPosition: null,\r\n name: 31,\r\n length: 130,\r\n sensors: [],\r\n multiplexerId: 1,\r\n },\r\n {\r\n id: 482,\r\n connectionId: 9,\r\n firstThermocoupleId: 1,\r\n thermocoupleCount: 18,\r\n angle: 60,\r\n radius: 8.75,\r\n xPosition: null,\r\n yPosition: null,\r\n name: 33,\r\n length: 130,\r\n sensors: [],\r\n multiplexerId: 1,\r\n },\r\n ],\r\n bins: null,\r\n binColor: null,\r\n cablesAverageAlarm: SensorStatusEnum.NoError, averageBinTemperature: null,\r\n },\r\n {\r\n locationId: 0,\r\n binWithinUnitName: 0,\r\n displaySchemes: false,\r\n wasDeviceInitialized: false,\r\n isDeviceInitialized: false,\r\n sysId: 0,\r\n id: 36,\r\n multiplexerId: 0,\r\n switchType: 1,\r\n ipAddress: '172.20.240.1',\r\n port: 502,\r\n portRemote: 0,\r\n name: '4',\r\n binType: 1,\r\n height: 130,\r\n width: 35,\r\n depth: 35,\r\n yPosition: 0,\r\n xPosition: 75,\r\n zIndex: 0,\r\n isDecorBin: false,\r\n cables: [\r\n {\r\n id: 472,\r\n connectionId: 11,\r\n firstThermocoupleId: 1,\r\n thermocoupleCount: 18,\r\n angle: 180,\r\n radius: 8.75,\r\n xPosition: null,\r\n yPosition: null,\r\n name: 42,\r\n length: 130,\r\n sensors: [],\r\n multiplexerId: 1,\r\n },\r\n {\r\n id: 474,\r\n connectionId: 12,\r\n firstThermocoupleId: 1,\r\n thermocoupleCount: 18,\r\n angle: 300,\r\n radius: 8.75,\r\n xPosition: null,\r\n yPosition: null,\r\n name: 43,\r\n length: 130,\r\n sensors: [],\r\n multiplexerId: 1,\r\n },\r\n {\r\n id: 475,\r\n connectionId: 10,\r\n firstThermocoupleId: 1,\r\n thermocoupleCount: 18,\r\n angle: 60,\r\n radius: 8.75,\r\n xPosition: null,\r\n yPosition: null,\r\n name: 41,\r\n length: 130,\r\n sensors: [],\r\n multiplexerId: 1,\r\n },\r\n ],\r\n bins: null,\r\n binColor: '#DE3163',\r\n cablesAverageAlarm: SensorStatusEnum.NoError, averageBinTemperature: this.randomInteger(-18, 92),\r\n },\r\n {\r\n locationId: 0,\r\n binWithinUnitName: 0,\r\n displaySchemes: false,\r\n wasDeviceInitialized: false,\r\n isDeviceInitialized: false,\r\n sysId: 0,\r\n id: 37,\r\n multiplexerId: 0,\r\n switchType: 1,\r\n ipAddress: '172.20.240.1',\r\n port: 502,\r\n portRemote: 0,\r\n name: '5',\r\n binType: 1,\r\n height: 130,\r\n width: 35,\r\n depth: 35,\r\n yPosition: 0,\r\n xPosition: 37.5,\r\n zIndex: 0,\r\n isDecorBin: false,\r\n cables: [\r\n {\r\n id: 471,\r\n connectionId: 13,\r\n firstThermocoupleId: 1,\r\n thermocoupleCount: 18,\r\n angle: 60,\r\n radius: 8.75,\r\n xPosition: null,\r\n yPosition: null,\r\n name: 51,\r\n length: 130,\r\n sensors: [],\r\n multiplexerId: 1,\r\n },\r\n {\r\n id: 473,\r\n connectionId: 14,\r\n firstThermocoupleId: 1,\r\n thermocoupleCount: 18,\r\n angle: 180,\r\n radius: 8.75,\r\n xPosition: null,\r\n yPosition: null,\r\n name: 52,\r\n length: 130,\r\n sensors: [],\r\n multiplexerId: 1,\r\n },\r\n {\r\n id: 480,\r\n connectionId: 15,\r\n firstThermocoupleId: 1,\r\n thermocoupleCount: 18,\r\n angle: 300,\r\n radius: 8.75,\r\n xPosition: null,\r\n yPosition: null,\r\n name: 53,\r\n length: 130,\r\n sensors: [],\r\n multiplexerId: 1,\r\n },\r\n ],\r\n bins: null,\r\n binColor: '#DE3163',\r\n cablesAverageAlarm: SensorStatusEnum.NoError, averageBinTemperature: this.randomInteger(-18, 92),\r\n },\r\n {\r\n locationId: 0,\r\n binWithinUnitName: 0,\r\n displaySchemes: false,\r\n wasDeviceInitialized: false,\r\n isDeviceInitialized: false,\r\n sysId: 0,\r\n id: 38,\r\n multiplexerId: 0,\r\n switchType: 1,\r\n ipAddress: '172.20.240.1',\r\n port: 502,\r\n portRemote: 0,\r\n name: '6',\r\n binType: 1,\r\n height: 130,\r\n width: 35,\r\n depth: 35,\r\n yPosition: 0,\r\n xPosition: 0,\r\n zIndex: 0,\r\n isDecorBin: false,\r\n cables: [\r\n {\r\n id: 483,\r\n connectionId: 16,\r\n firstThermocoupleId: 1,\r\n thermocoupleCount: 18,\r\n angle: 60,\r\n radius: 8.75,\r\n xPosition: null,\r\n yPosition: null,\r\n name: 61,\r\n length: 130,\r\n sensors: [],\r\n multiplexerId: 1,\r\n },\r\n {\r\n id: 485,\r\n connectionId: 18,\r\n firstThermocoupleId: 1,\r\n thermocoupleCount: 18,\r\n angle: 300,\r\n radius: 8.75,\r\n xPosition: null,\r\n yPosition: null,\r\n name: 63,\r\n length: 130,\r\n sensors: [],\r\n multiplexerId: 1,\r\n },\r\n {\r\n id: 505,\r\n connectionId: 17,\r\n firstThermocoupleId: 1,\r\n thermocoupleCount: 18,\r\n angle: 180,\r\n radius: 8.75,\r\n xPosition: null,\r\n yPosition: null,\r\n name: 62,\r\n length: 130,\r\n sensors: [],\r\n multiplexerId: 1,\r\n },\r\n ],\r\n bins: null,\r\n binColor: null,\r\n cablesAverageAlarm: SensorStatusEnum.NoError, averageBinTemperature: this.randomInteger(-18, 92),\r\n },\r\n {\r\n locationId: 0,\r\n binWithinUnitName: 0,\r\n displaySchemes: false,\r\n wasDeviceInitialized: false,\r\n isDeviceInitialized: false,\r\n sysId: 0,\r\n id: 39,\r\n multiplexerId: 0,\r\n switchType: 1,\r\n ipAddress: '172.20.240.1',\r\n port: 502,\r\n portRemote: 0,\r\n name: '7',\r\n binType: 2,\r\n height: 130,\r\n width: 37.5,\r\n depth: 35,\r\n yPosition: 17.5,\r\n xPosition: 55,\r\n zIndex: -1,\r\n isDecorBin: false,\r\n cables: [\r\n {\r\n id: 380,\r\n connectionId: 19,\r\n firstThermocoupleId: 1,\r\n thermocoupleCount: 18,\r\n angle: null,\r\n radius: null,\r\n xPosition: 18.75,\r\n yPosition: 17.5,\r\n name: 7,\r\n length: 130,\r\n sensors: [],\r\n multiplexerId: 1,\r\n },\r\n ],\r\n bins: null,\r\n binColor: '#DE3163',\r\n cablesAverageAlarm: SensorStatusEnum.NoError, averageBinTemperature: this.randomInteger(-18, 92),\r\n },\r\n {\r\n locationId: 0,\r\n binWithinUnitName: 0,\r\n displaySchemes: false,\r\n wasDeviceInitialized: false,\r\n isDeviceInitialized: false,\r\n sysId: 0,\r\n id: 40,\r\n multiplexerId: 0,\r\n switchType: 1,\r\n ipAddress: '172.20.240.1',\r\n port: 502,\r\n portRemote: 0,\r\n name: '8',\r\n binType: 2,\r\n height: 130,\r\n width: 37.5,\r\n depth: 35,\r\n yPosition: 17.5,\r\n xPosition: 17.5,\r\n zIndex: -1,\r\n isDecorBin: false,\r\n cables: [\r\n {\r\n id: 394,\r\n connectionId: 20,\r\n firstThermocoupleId: 1,\r\n thermocoupleCount: 18,\r\n angle: null,\r\n radius: null,\r\n xPosition: 18.75,\r\n yPosition: 17.5,\r\n name: 8,\r\n length: 130,\r\n sensors: [],\r\n multiplexerId: 1,\r\n },\r\n ],\r\n bins: null,\r\n binColor: '#DE3163',\r\n cablesAverageAlarm: SensorStatusEnum.NoError, averageBinTemperature: this.randomInteger(-18, 92),\r\n },\r\n {\r\n locationId: 0,\r\n binWithinUnitName: 0,\r\n displaySchemes: false,\r\n wasDeviceInitialized: false,\r\n isDeviceInitialized: false,\r\n sysId: 0,\r\n id: 49,\r\n multiplexerId: 0,\r\n switchType: 1,\r\n ipAddress: '172.20.240.1',\r\n port: 502,\r\n portRemote: 0,\r\n name: '1',\r\n binType: 1,\r\n height: 130,\r\n width: 35,\r\n depth: 35,\r\n yPosition: 35,\r\n xPosition: 75,\r\n zIndex: 0,\r\n isDecorBin: false,\r\n cables: [\r\n {\r\n id: 484,\r\n connectionId: 3,\r\n firstThermocoupleId: 1,\r\n thermocoupleCount: 18,\r\n angle: 60,\r\n radius: 8.75,\r\n xPosition: null,\r\n yPosition: null,\r\n name: 13,\r\n length: 130,\r\n sensors: [],\r\n multiplexerId: 1,\r\n },\r\n {\r\n id: 508,\r\n connectionId: 1,\r\n firstThermocoupleId: 1,\r\n thermocoupleCount: 18,\r\n angle: 300,\r\n radius: 8.75,\r\n xPosition: null,\r\n yPosition: null,\r\n name: 11,\r\n length: 130,\r\n sensors: [],\r\n multiplexerId: 1,\r\n },\r\n {\r\n id: 509,\r\n connectionId: 2,\r\n firstThermocoupleId: 1,\r\n thermocoupleCount: 18,\r\n angle: 180,\r\n radius: 8.75,\r\n xPosition: null,\r\n yPosition: null,\r\n name: 12,\r\n length: 130,\r\n sensors: [],\r\n multiplexerId: 1,\r\n },\r\n ],\r\n bins: null,\r\n binColor: \"#252525\",\r\n cablesAverageAlarm: SensorStatusEnum.NoError, averageBinTemperature: this.randomInteger(-18, 92),\r\n },\r\n ],\r\n },\r\n {\r\n locationId: 0,\r\n binWithinUnitName: 0,\r\n displaySchemes: false,\r\n wasDeviceInitialized: false,\r\n isDeviceInitialized: false,\r\n sysId: 0,\r\n id: 31,\r\n multiplexerId: 0,\r\n switchType: 0,\r\n ipAddress: null,\r\n port: 0,\r\n portRemote: 0,\r\n name: 'Concrete 2',\r\n binType: 3,\r\n height: 0,\r\n width: 0,\r\n depth: 0,\r\n yPosition: 7.5,\r\n xPosition: 365,\r\n zIndex: null,\r\n isDecorBin: false,\r\n cables: null,\r\n binColor: null,\r\n cablesAverageAlarm: SensorStatusEnum.NoError, averageBinTemperature: null,\r\n bins: [\r\n {\r\n locationId: 0,\r\n binWithinUnitName: 0,\r\n displaySchemes: false,\r\n wasDeviceInitialized: false,\r\n isDeviceInitialized: false,\r\n sysId: 0,\r\n id: 41,\r\n multiplexerId: 0,\r\n switchType: 1,\r\n ipAddress: '172.20.240.1',\r\n port: 502,\r\n portRemote: 0,\r\n name: '15',\r\n binType: 1,\r\n height: 130,\r\n width: 25,\r\n depth: 25,\r\n yPosition: 15,\r\n xPosition: 50,\r\n zIndex: -1,\r\n isDecorBin: false,\r\n cables: [\r\n {\r\n id: 393,\r\n connectionId: 15,\r\n firstThermocoupleId: 1,\r\n thermocoupleCount: 18,\r\n angle: 0,\r\n radius: 6,\r\n xPosition: null,\r\n yPosition: null,\r\n name: 15,\r\n length: 130,\r\n sensors: [],\r\n multiplexerId: 2,\r\n },\r\n ],\r\n bins: null,\r\n binColor: '#000080',\r\n cablesAverageAlarm: SensorStatusEnum.NoError, averageBinTemperature: this.randomInteger(-18, 92),\r\n },\r\n {\r\n locationId: 0,\r\n binWithinUnitName: 0,\r\n displaySchemes: false,\r\n wasDeviceInitialized: false,\r\n isDeviceInitialized: false,\r\n sysId: 0,\r\n id: 42,\r\n multiplexerId: 0,\r\n switchType: 1,\r\n ipAddress: '172.20.240.1',\r\n port: 502,\r\n portRemote: 0,\r\n name: '16',\r\n binType: 2,\r\n height: 130,\r\n width: 8.333,\r\n depth: 30,\r\n yPosition: 12.5,\r\n xPosition: 54.1667,\r\n zIndex: -1,\r\n isDecorBin: false,\r\n cables: [\r\n {\r\n id: 392,\r\n connectionId: 16,\r\n firstThermocoupleId: 1,\r\n thermocoupleCount: 18,\r\n angle: null,\r\n radius: null,\r\n xPosition: 4.1667,\r\n yPosition: 15,\r\n name: 16,\r\n length: 130,\r\n sensors: [],\r\n multiplexerId: 2,\r\n },\r\n ],\r\n bins: null,\r\n binColor: '#000080',\r\n cablesAverageAlarm: SensorStatusEnum.NoError, averageBinTemperature: this.randomInteger(-18, 92),\r\n },\r\n {\r\n locationId: 0,\r\n binWithinUnitName: 0,\r\n displaySchemes: false,\r\n wasDeviceInitialized: false,\r\n isDeviceInitialized: false,\r\n sysId: 0,\r\n id: 43,\r\n multiplexerId: 0,\r\n switchType: 1,\r\n ipAddress: '172.20.240.1',\r\n port: 502,\r\n portRemote: 0,\r\n name: '17',\r\n binType: 2,\r\n height: 130,\r\n width: 8.333,\r\n depth: 15,\r\n yPosition: 12.5,\r\n xPosition: 45.8333,\r\n zIndex: -1,\r\n isDecorBin: false,\r\n cables: [\r\n {\r\n id: 391,\r\n connectionId: 17,\r\n firstThermocoupleId: 1,\r\n thermocoupleCount: 18,\r\n angle: null,\r\n radius: null,\r\n xPosition: 4.1667,\r\n yPosition: 10,\r\n name: 17,\r\n length: 130,\r\n sensors: [],\r\n multiplexerId: 2,\r\n },\r\n ],\r\n bins: null,\r\n binColor: '#000080',\r\n cablesAverageAlarm: SensorStatusEnum.NoError, averageBinTemperature: this.randomInteger(-18, 92),\r\n },\r\n {\r\n locationId: 0,\r\n binWithinUnitName: 0,\r\n displaySchemes: false,\r\n wasDeviceInitialized: false,\r\n isDeviceInitialized: false,\r\n sysId: 0,\r\n id: 44,\r\n multiplexerId: 0,\r\n switchType: 1,\r\n ipAddress: '172.20.240.1',\r\n port: 502,\r\n portRemote: 0,\r\n name: '18',\r\n binType: 2,\r\n height: 130,\r\n width: 8.333,\r\n depth: 15,\r\n yPosition: 27.5,\r\n xPosition: 45.8333,\r\n zIndex: -1,\r\n isDecorBin: false,\r\n cables: [\r\n {\r\n id: 390,\r\n connectionId: 18,\r\n firstThermocoupleId: 1,\r\n thermocoupleCount: 18,\r\n angle: null,\r\n radius: null,\r\n xPosition: 4.16667,\r\n yPosition: 5,\r\n name: 18,\r\n length: 130,\r\n sensors: [],\r\n multiplexerId: 2,\r\n },\r\n ],\r\n bins: null,\r\n binColor: '#000080',\r\n cablesAverageAlarm: SensorStatusEnum.NoError, averageBinTemperature: this.randomInteger(-18, 92),\r\n },\r\n {\r\n locationId: 0,\r\n binWithinUnitName: 0,\r\n displaySchemes: false,\r\n wasDeviceInitialized: false,\r\n isDeviceInitialized: false,\r\n sysId: 0,\r\n id: 45,\r\n multiplexerId: 0,\r\n switchType: 1,\r\n ipAddress: '172.20.240.1',\r\n port: 502,\r\n portRemote: 0,\r\n name: '19',\r\n binType: 2,\r\n height: 130,\r\n width: 8.333,\r\n depth: 30,\r\n yPosition: 12.5,\r\n xPosition: 37.5,\r\n zIndex: -1,\r\n isDecorBin: false,\r\n cables: [\r\n {\r\n id: 389,\r\n connectionId: 19,\r\n firstThermocoupleId: 1,\r\n thermocoupleCount: 18,\r\n angle: null,\r\n radius: null,\r\n xPosition: 4.16667,\r\n yPosition: 15,\r\n name: 19,\r\n length: 130,\r\n sensors: [],\r\n multiplexerId: 2,\r\n },\r\n ],\r\n bins: null,\r\n binColor: '#000080',\r\n cablesAverageAlarm: SensorStatusEnum.NoError, averageBinTemperature: this.randomInteger(-18, 92),\r\n },\r\n {\r\n locationId: 0,\r\n binWithinUnitName: 0,\r\n displaySchemes: false,\r\n wasDeviceInitialized: false,\r\n isDeviceInitialized: false,\r\n sysId: 0,\r\n id: 46,\r\n multiplexerId: 0,\r\n switchType: 1,\r\n ipAddress: '172.20.240.1',\r\n port: 502,\r\n portRemote: 0,\r\n name: '20',\r\n binType: 2,\r\n height: 130,\r\n width: 8.333,\r\n depth: 30,\r\n yPosition: 12.5,\r\n xPosition: 29.1667,\r\n zIndex: -1,\r\n isDecorBin: false,\r\n cables: [\r\n {\r\n id: 395,\r\n connectionId: 20,\r\n firstThermocoupleId: 1,\r\n thermocoupleCount: 18,\r\n angle: null,\r\n radius: null,\r\n xPosition: 4.1667,\r\n yPosition: 15,\r\n name: 20,\r\n length: 130,\r\n sensors: [],\r\n multiplexerId: 2,\r\n },\r\n ],\r\n bins: null,\r\n binColor: '#000080',\r\n cablesAverageAlarm: SensorStatusEnum.NoError, averageBinTemperature: this.randomInteger(-18, 92),\r\n },\r\n {\r\n locationId: 0,\r\n binWithinUnitName: 0,\r\n displaySchemes: false,\r\n wasDeviceInitialized: false,\r\n isDeviceInitialized: false,\r\n sysId: 0,\r\n id: 47,\r\n multiplexerId: 0,\r\n switchType: 1,\r\n ipAddress: '172.20.240.1',\r\n port: 502,\r\n portRemote: 0,\r\n name: '21',\r\n binType: 2,\r\n height: 130,\r\n width: 8.333,\r\n depth: 15,\r\n yPosition: 12.5,\r\n xPosition: 20.83333,\r\n zIndex: -1,\r\n isDecorBin: false,\r\n cables: [\r\n {\r\n id: 388,\r\n connectionId: 21,\r\n firstThermocoupleId: 1,\r\n thermocoupleCount: 18,\r\n angle: null,\r\n radius: null,\r\n xPosition: 4.16667,\r\n yPosition: 10,\r\n name: 21,\r\n length: 130,\r\n sensors: [],\r\n multiplexerId: 2,\r\n },\r\n ],\r\n bins: null,\r\n binColor: '#FFFF00',\r\n cablesAverageAlarm: SensorStatusEnum.NoError, averageBinTemperature: this.randomInteger(-18, 92),\r\n },\r\n {\r\n locationId: 0,\r\n binWithinUnitName: 0,\r\n displaySchemes: false,\r\n wasDeviceInitialized: false,\r\n isDeviceInitialized: false,\r\n sysId: 0,\r\n id: 48,\r\n multiplexerId: 0,\r\n switchType: 1,\r\n ipAddress: '172.20.240.1',\r\n port: 502,\r\n portRemote: 0,\r\n name: '22',\r\n binType: 2,\r\n height: 130,\r\n width: 8.333,\r\n depth: 15,\r\n yPosition: 27.5,\r\n xPosition: 20.8333,\r\n zIndex: -1,\r\n isDecorBin: false,\r\n cables: [\r\n {\r\n id: 386,\r\n connectionId: 22,\r\n firstThermocoupleId: 1,\r\n thermocoupleCount: 18,\r\n angle: null,\r\n radius: null,\r\n xPosition: 4.16667,\r\n yPosition: 5,\r\n name: 22,\r\n length: 130,\r\n sensors: [],\r\n multiplexerId: 2,\r\n },\r\n ],\r\n bins: null,\r\n binColor: '#FFFF00',\r\n cablesAverageAlarm: SensorStatusEnum.NoError, averageBinTemperature: this.randomInteger(-18, 92),\r\n },\r\n {\r\n locationId: 0,\r\n binWithinUnitName: 0,\r\n displaySchemes: false,\r\n wasDeviceInitialized: false,\r\n isDeviceInitialized: false,\r\n sysId: 0,\r\n id: 50,\r\n multiplexerId: 0,\r\n switchType: 1,\r\n ipAddress: '172.20.240.1',\r\n port: 502,\r\n portRemote: 0,\r\n name: '24',\r\n binType: 1,\r\n height: 130,\r\n width: 25,\r\n depth: 25,\r\n yPosition: 15,\r\n xPosition: 0,\r\n zIndex: -2,\r\n isDecorBin: false,\r\n cables: [\r\n {\r\n id: 384,\r\n connectionId: 24,\r\n firstThermocoupleId: 1,\r\n thermocoupleCount: 18,\r\n angle: 180,\r\n radius: 6,\r\n xPosition: null,\r\n yPosition: null,\r\n name: 24,\r\n length: 130,\r\n sensors: [],\r\n multiplexerId: 2,\r\n },\r\n ],\r\n bins: null,\r\n binColor: '#FFFF00',\r\n cablesAverageAlarm: SensorStatusEnum.NoError, averageBinTemperature: this.randomInteger(-18, 92),\r\n },\r\n {\r\n locationId: 0,\r\n binWithinUnitName: 0,\r\n displaySchemes: false,\r\n wasDeviceInitialized: false,\r\n isDeviceInitialized: false,\r\n sysId: 0,\r\n id: 51,\r\n multiplexerId: 0,\r\n switchType: 1,\r\n ipAddress: '172.20.240.1',\r\n port: 502,\r\n portRemote: 0,\r\n name: '23',\r\n binType: 2,\r\n height: 130,\r\n width: 8.333,\r\n depth: 30,\r\n yPosition: 12.5,\r\n xPosition: 12.5,\r\n zIndex: -1,\r\n isDecorBin: false,\r\n cables: [\r\n {\r\n id: 385,\r\n connectionId: 23,\r\n firstThermocoupleId: 1,\r\n thermocoupleCount: 18,\r\n angle: null,\r\n radius: null,\r\n xPosition: 4.16667,\r\n yPosition: 15,\r\n name: 23,\r\n length: 130,\r\n sensors: [],\r\n multiplexerId: 2,\r\n },\r\n ],\r\n bins: null,\r\n binColor: '#FFFF00',\r\n cablesAverageAlarm: SensorStatusEnum.NoError, averageBinTemperature: this.randomInteger(-18, 92),\r\n },\r\n {\r\n locationId: 0,\r\n binWithinUnitName: 0,\r\n displaySchemes: false,\r\n wasDeviceInitialized: false,\r\n isDeviceInitialized: false,\r\n sysId: 0,\r\n id: 83,\r\n multiplexerId: 0,\r\n switchType: 1,\r\n ipAddress: '172.20.240.1',\r\n port: 502,\r\n portRemote: 0,\r\n name: '14',\r\n binType: 1,\r\n height: 130,\r\n width: 25,\r\n depth: 25,\r\n yPosition: 0,\r\n xPosition: 0,\r\n zIndex: 0,\r\n isDecorBin: false,\r\n cables: [\r\n {\r\n id: 684,\r\n connectionId: 12,\r\n firstThermocoupleId: 1,\r\n thermocoupleCount: 18,\r\n angle: 90,\r\n radius: 6.25,\r\n xPosition: null,\r\n yPosition: null,\r\n name: 1,\r\n length: 130,\r\n sensors: [],\r\n multiplexerId: 2,\r\n },\r\n {\r\n id: 699,\r\n connectionId: 13,\r\n firstThermocoupleId: 1,\r\n thermocoupleCount: 18,\r\n angle: 330,\r\n radius: 6.25,\r\n xPosition: null,\r\n yPosition: null,\r\n name: 2,\r\n length: 130,\r\n sensors: [],\r\n multiplexerId: 2,\r\n },\r\n {\r\n id: 700,\r\n connectionId: 14,\r\n firstThermocoupleId: 1,\r\n thermocoupleCount: 18,\r\n angle: 210,\r\n radius: 6.25,\r\n xPosition: null,\r\n yPosition: null,\r\n name: 3,\r\n length: 130,\r\n sensors: [],\r\n multiplexerId: 2,\r\n },\r\n ],\r\n bins: null,\r\n binColor: '#FFFF00',\r\n cablesAverageAlarm: SensorStatusEnum.NoError, averageBinTemperature: this.randomInteger(-18, 92),\r\n },\r\n {\r\n locationId: 0,\r\n binWithinUnitName: 0,\r\n displaySchemes: false,\r\n wasDeviceInitialized: false,\r\n isDeviceInitialized: false,\r\n sysId: 0,\r\n id: 84,\r\n multiplexerId: 0,\r\n switchType: 1,\r\n ipAddress: '172.20.240.1',\r\n port: 502,\r\n portRemote: 0,\r\n name: '13',\r\n binType: 1,\r\n height: 130,\r\n width: 25,\r\n depth: 25,\r\n yPosition: 0,\r\n xPosition: 25,\r\n zIndex: 0,\r\n isDecorBin: false,\r\n cables: [\r\n {\r\n id: 685,\r\n connectionId: 11,\r\n firstThermocoupleId: 1,\r\n thermocoupleCount: 18,\r\n angle: 210,\r\n radius: 6.25,\r\n xPosition: null,\r\n yPosition: null,\r\n name: 3,\r\n length: 130,\r\n sensors: [],\r\n multiplexerId: 2,\r\n },\r\n {\r\n id: 686,\r\n connectionId: 10,\r\n firstThermocoupleId: 1,\r\n thermocoupleCount: 18,\r\n angle: 330,\r\n radius: 6.25,\r\n xPosition: null,\r\n yPosition: null,\r\n name: 2,\r\n length: 130,\r\n sensors: [],\r\n multiplexerId: 2,\r\n },\r\n {\r\n id: 687,\r\n connectionId: 9,\r\n firstThermocoupleId: 1,\r\n thermocoupleCount: 18,\r\n angle: 90,\r\n radius: 6.25,\r\n xPosition: null,\r\n yPosition: null,\r\n name: 1,\r\n length: 130,\r\n sensors: [],\r\n multiplexerId: 2,\r\n },\r\n ],\r\n bins: null,\r\n binColor: '#FFFF00',\r\n cablesAverageAlarm: SensorStatusEnum.NoError, averageBinTemperature: this.randomInteger(-18, 92),\r\n },\r\n {\r\n locationId: 0,\r\n binWithinUnitName: 0,\r\n displaySchemes: false,\r\n wasDeviceInitialized: false,\r\n isDeviceInitialized: false,\r\n sysId: 0,\r\n id: 85,\r\n multiplexerId: 0,\r\n switchType: 1,\r\n ipAddress: '172.20.240.1',\r\n port: 502,\r\n portRemote: 0,\r\n name: '12',\r\n binType: 1,\r\n height: 130,\r\n width: 25,\r\n depth: 25,\r\n yPosition: 0,\r\n xPosition: 50,\r\n zIndex: 0,\r\n isDecorBin: false,\r\n cables: [\r\n {\r\n id: 688,\r\n connectionId: 8,\r\n firstThermocoupleId: 1,\r\n thermocoupleCount: 18,\r\n angle: 210,\r\n radius: 6.25,\r\n xPosition: null,\r\n yPosition: null,\r\n name: 3,\r\n length: 130,\r\n sensors: [],\r\n multiplexerId: 2,\r\n },\r\n {\r\n id: 689,\r\n connectionId: 7,\r\n firstThermocoupleId: 1,\r\n thermocoupleCount: 18,\r\n angle: 330,\r\n radius: 6.25,\r\n xPosition: null,\r\n yPosition: null,\r\n name: 2,\r\n length: 130,\r\n sensors: [],\r\n multiplexerId: 2,\r\n },\r\n {\r\n id: 690,\r\n connectionId: 6,\r\n firstThermocoupleId: 1,\r\n thermocoupleCount: 18,\r\n angle: 90,\r\n radius: 6.25,\r\n xPosition: null,\r\n yPosition: null,\r\n name: 1,\r\n length: 130,\r\n sensors: [],\r\n multiplexerId: 2,\r\n },\r\n ],\r\n bins: null,\r\n binColor: '#FFFF00',\r\n cablesAverageAlarm: SensorStatusEnum.NoError, averageBinTemperature: this.randomInteger(-18, 92),\r\n },\r\n {\r\n locationId: 0,\r\n binWithinUnitName: 0,\r\n displaySchemes: false,\r\n wasDeviceInitialized: false,\r\n isDeviceInitialized: false,\r\n sysId: 0,\r\n id: 86,\r\n multiplexerId: 0,\r\n switchType: 1,\r\n ipAddress: '172.20.240.1',\r\n port: 502,\r\n portRemote: 0,\r\n name: '11',\r\n binType: 1,\r\n height: 130,\r\n width: 25,\r\n depth: 25,\r\n yPosition: 30,\r\n xPosition: 0,\r\n zIndex: 0,\r\n isDecorBin: false,\r\n cables: [\r\n {\r\n id: 691,\r\n connectionId: 5,\r\n firstThermocoupleId: 1,\r\n thermocoupleCount: 18,\r\n angle: 30,\r\n radius: 6.25,\r\n xPosition: null,\r\n yPosition: null,\r\n name: 3,\r\n length: 130,\r\n sensors: [],\r\n multiplexerId: 2,\r\n },\r\n {\r\n id: 692,\r\n connectionId: 4,\r\n firstThermocoupleId: 1,\r\n thermocoupleCount: 18,\r\n angle: 150,\r\n radius: 6.25,\r\n xPosition: null,\r\n yPosition: null,\r\n name: 2,\r\n length: 130,\r\n sensors: [],\r\n multiplexerId: 2,\r\n },\r\n {\r\n id: 693,\r\n connectionId: 3,\r\n firstThermocoupleId: 1,\r\n thermocoupleCount: 18,\r\n angle: 270,\r\n radius: 6.25,\r\n xPosition: null,\r\n yPosition: null,\r\n name: 1,\r\n length: 130,\r\n sensors: [],\r\n multiplexerId: 2,\r\n },\r\n ],\r\n bins: null,\r\n binColor: '#FF0000',\r\n cablesAverageAlarm: SensorStatusEnum.NoError, averageBinTemperature: this.randomInteger(-18, 92),\r\n },\r\n {\r\n locationId: 0,\r\n binWithinUnitName: 0,\r\n displaySchemes: false,\r\n wasDeviceInitialized: false,\r\n isDeviceInitialized: false,\r\n sysId: 0,\r\n id: 87,\r\n multiplexerId: 0,\r\n switchType: 1,\r\n ipAddress: '172.20.240.1',\r\n port: 502,\r\n portRemote: 0,\r\n name: '10',\r\n binType: 1,\r\n height: 130,\r\n width: 25,\r\n depth: 25,\r\n yPosition: 30,\r\n xPosition: 25,\r\n zIndex: 0,\r\n isDecorBin: false,\r\n cables: [\r\n {\r\n id: 694,\r\n connectionId: 2,\r\n firstThermocoupleId: 1,\r\n thermocoupleCount: 18,\r\n angle: 30,\r\n radius: 6.25,\r\n xPosition: null,\r\n yPosition: null,\r\n name: 3,\r\n length: 130,\r\n sensors: [],\r\n multiplexerId: 2,\r\n },\r\n {\r\n id: 695,\r\n connectionId: 1,\r\n firstThermocoupleId: 1,\r\n thermocoupleCount: 18,\r\n angle: 150,\r\n radius: 6.25,\r\n xPosition: null,\r\n yPosition: null,\r\n name: 2,\r\n length: 130,\r\n sensors: [],\r\n multiplexerId: 2,\r\n },\r\n {\r\n id: 696,\r\n connectionId: 24,\r\n firstThermocoupleId: 1,\r\n thermocoupleCount: 18,\r\n angle: 270,\r\n radius: 6.25,\r\n xPosition: null,\r\n yPosition: null,\r\n name: 1,\r\n length: 130,\r\n sensors: [],\r\n multiplexerId: 1,\r\n },\r\n ],\r\n bins: null,\r\n binColor: '#FF0000',\r\n cablesAverageAlarm: SensorStatusEnum.NoError, averageBinTemperature: this.randomInteger(-18, 92),\r\n },\r\n {\r\n locationId: 0,\r\n binWithinUnitName: 0,\r\n displaySchemes: false,\r\n wasDeviceInitialized: false,\r\n isDeviceInitialized: false,\r\n sysId: 0,\r\n id: 88,\r\n multiplexerId: 0,\r\n switchType: 1,\r\n ipAddress: '172.20.240.1',\r\n port: 502,\r\n portRemote: 0,\r\n name: '9',\r\n binType: 1,\r\n height: 130,\r\n width: 25,\r\n depth: 25,\r\n yPosition: 30,\r\n xPosition: 50,\r\n zIndex: 0,\r\n isDecorBin: false,\r\n cables: [\r\n {\r\n id: 683,\r\n connectionId: 21,\r\n firstThermocoupleId: 1,\r\n thermocoupleCount: 18,\r\n angle: 270,\r\n radius: 6.25,\r\n xPosition: null,\r\n yPosition: null,\r\n name: 1,\r\n length: 130,\r\n sensors: [],\r\n multiplexerId: 1,\r\n },\r\n {\r\n id: 697,\r\n connectionId: 23,\r\n firstThermocoupleId: 1,\r\n thermocoupleCount: 18,\r\n angle: 30,\r\n radius: 6.25,\r\n xPosition: null,\r\n yPosition: null,\r\n name: 3,\r\n length: 130,\r\n sensors: [],\r\n multiplexerId: 1,\r\n },\r\n {\r\n id: 698,\r\n connectionId: 22,\r\n firstThermocoupleId: 1,\r\n thermocoupleCount: 18,\r\n angle: 150,\r\n radius: 6.25,\r\n xPosition: null,\r\n yPosition: null,\r\n name: 2,\r\n length: 130,\r\n sensors: [],\r\n multiplexerId: 1,\r\n },\r\n ],\r\n bins: null,\r\n binColor: '#FF0000',\r\n cablesAverageAlarm: SensorStatusEnum.NoError, averageBinTemperature: this.randomInteger(-18, 92),\r\n },\r\n ],\r\n },\r\n {\r\n locationId: 0,\r\n binWithinUnitName: 0,\r\n displaySchemes: false,\r\n wasDeviceInitialized: false,\r\n isDeviceInitialized: false,\r\n sysId: 0,\r\n id: 32,\r\n multiplexerId: 0,\r\n switchType: 0,\r\n ipAddress: null,\r\n port: 0,\r\n portRemote: 0,\r\n name: 'Concrete 3',\r\n binType: 3,\r\n height: 0,\r\n width: 0,\r\n depth: 0,\r\n yPosition: 2.5,\r\n xPosition: 210,\r\n zIndex: null,\r\n isDecorBin: false,\r\n cables: null,\r\n binColor: null,\r\n cablesAverageAlarm: SensorStatusEnum.NoError, averageBinTemperature: null,\r\n bins: [\r\n {\r\n locationId: 0,\r\n binWithinUnitName: 0,\r\n displaySchemes: false,\r\n wasDeviceInitialized: false,\r\n isDeviceInitialized: false,\r\n sysId: 0,\r\n id: 33,\r\n multiplexerId: 0,\r\n switchType: 1,\r\n ipAddress: '172.20.240.1',\r\n port: 502,\r\n portRemote: 0,\r\n name: '40',\r\n binType: 1,\r\n height: 130,\r\n width: 30,\r\n depth: 30,\r\n yPosition: 20,\r\n xPosition: 0,\r\n zIndex: -2,\r\n isDecorBin: false,\r\n cables: [\r\n {\r\n id: 396,\r\n connectionId: 20,\r\n firstThermocoupleId: 1,\r\n thermocoupleCount: 18,\r\n angle: 180,\r\n radius: 7,\r\n xPosition: null,\r\n yPosition: null,\r\n name: 40,\r\n length: 130,\r\n sensors: [],\r\n multiplexerId: 4,\r\n },\r\n ],\r\n bins: null,\r\n binColor: '#FF0000',\r\n cablesAverageAlarm: SensorStatusEnum.NoError, averageBinTemperature: this.randomInteger(-18, 92),\r\n },\r\n {\r\n locationId: 0,\r\n binWithinUnitName: 0,\r\n displaySchemes: false,\r\n wasDeviceInitialized: false,\r\n isDeviceInitialized: false,\r\n sysId: 0,\r\n id: 52,\r\n multiplexerId: 0,\r\n switchType: 1,\r\n ipAddress: '172.20.240.1',\r\n port: 502,\r\n portRemote: 0,\r\n name: '38',\r\n binType: 2,\r\n height: 130,\r\n width: 30,\r\n depth: 40,\r\n yPosition: 15,\r\n xPosition: 45,\r\n zIndex: -1,\r\n isDecorBin: false,\r\n cables: [\r\n {\r\n id: 511,\r\n connectionId: 16,\r\n firstThermocoupleId: 1,\r\n thermocoupleCount: 18,\r\n angle: null,\r\n radius: null,\r\n xPosition: 20,\r\n yPosition: 20,\r\n name: 381,\r\n length: 130,\r\n sensors: [],\r\n multiplexerId: 4,\r\n },\r\n {\r\n id: 512,\r\n connectionId: 17,\r\n firstThermocoupleId: 1,\r\n thermocoupleCount: 18,\r\n angle: null,\r\n radius: null,\r\n xPosition: 10,\r\n yPosition: 20,\r\n name: 382,\r\n length: 130,\r\n sensors: [],\r\n multiplexerId: 4,\r\n },\r\n ],\r\n bins: null,\r\n binColor: '#00FFFF',\r\n cablesAverageAlarm: SensorStatusEnum.NoError, averageBinTemperature: this.randomInteger(-18, 92),\r\n },\r\n {\r\n locationId: 0,\r\n binWithinUnitName: 0,\r\n displaySchemes: false,\r\n wasDeviceInitialized: false,\r\n isDeviceInitialized: false,\r\n sysId: 0,\r\n id: 53,\r\n multiplexerId: 0,\r\n switchType: 1,\r\n ipAddress: '172.20.240.1',\r\n port: 502,\r\n portRemote: 0,\r\n name: '37',\r\n binType: 2,\r\n height: 130,\r\n width: 30,\r\n depth: 40,\r\n yPosition: 15,\r\n xPosition: 75,\r\n zIndex: -1,\r\n isDecorBin: false,\r\n cables: [\r\n {\r\n id: 513,\r\n connectionId: 19,\r\n firstThermocoupleId: 1,\r\n thermocoupleCount: 18,\r\n angle: null,\r\n radius: null,\r\n xPosition: 20,\r\n yPosition: 20,\r\n name: 371,\r\n length: 130,\r\n sensors: [],\r\n multiplexerId: 3,\r\n },\r\n {\r\n id: 514,\r\n connectionId: 20,\r\n firstThermocoupleId: 1,\r\n thermocoupleCount: 18,\r\n angle: null,\r\n radius: null,\r\n xPosition: 10,\r\n yPosition: 20,\r\n name: 372,\r\n length: 130,\r\n sensors: [],\r\n multiplexerId: 3,\r\n },\r\n ],\r\n bins: null,\r\n binColor: '#00FFFF',\r\n cablesAverageAlarm: SensorStatusEnum.NoError, averageBinTemperature: this.randomInteger(-18, 92),\r\n },\r\n {\r\n locationId: 0,\r\n binWithinUnitName: 0,\r\n displaySchemes: false,\r\n wasDeviceInitialized: false,\r\n isDeviceInitialized: false,\r\n sysId: 0,\r\n id: 54,\r\n multiplexerId: 0,\r\n switchType: 1,\r\n ipAddress: '172.20.240.1',\r\n port: 502,\r\n portRemote: 0,\r\n name: '36',\r\n binType: 2,\r\n height: 130,\r\n width: 30,\r\n depth: 40,\r\n yPosition: 15,\r\n xPosition: 105,\r\n zIndex: -1,\r\n isDecorBin: false,\r\n cables: [\r\n {\r\n id: 527,\r\n connectionId: 17,\r\n firstThermocoupleId: 1,\r\n thermocoupleCount: 18,\r\n angle: null,\r\n radius: null,\r\n xPosition: 20,\r\n yPosition: 20,\r\n name: 1,\r\n length: 130,\r\n sensors: [],\r\n multiplexerId: 3,\r\n },\r\n {\r\n id: 529,\r\n connectionId: 18,\r\n firstThermocoupleId: 1,\r\n thermocoupleCount: 18,\r\n angle: null,\r\n radius: null,\r\n xPosition: 10,\r\n yPosition: 20,\r\n name: 2,\r\n length: 130,\r\n sensors: [],\r\n multiplexerId: 3,\r\n },\r\n ],\r\n bins: null,\r\n binColor: '#00FFFF',\r\n cablesAverageAlarm: SensorStatusEnum.NoError, averageBinTemperature: this.randomInteger(-18, 92),\r\n },\r\n {\r\n locationId: 0,\r\n binWithinUnitName: 0,\r\n displaySchemes: false,\r\n wasDeviceInitialized: false,\r\n isDeviceInitialized: false,\r\n sysId: 0,\r\n id: 55,\r\n multiplexerId: 0,\r\n switchType: 1,\r\n ipAddress: '172.20.240.1',\r\n port: 502,\r\n portRemote: 0,\r\n name: '35',\r\n binType: 1,\r\n height: 130,\r\n width: 30,\r\n depth: 30,\r\n yPosition: 20,\r\n xPosition: 120,\r\n zIndex: -1,\r\n isDecorBin: false,\r\n cables: [\r\n {\r\n id: 359,\r\n connectionId: 16,\r\n firstThermocoupleId: 1,\r\n thermocoupleCount: 18,\r\n angle: 0,\r\n radius: 7,\r\n xPosition: null,\r\n yPosition: null,\r\n name: 35,\r\n length: 130,\r\n sensors: [],\r\n multiplexerId: 3,\r\n },\r\n ],\r\n bins: null,\r\n binColor: '#00FFFF',\r\n cablesAverageAlarm: SensorStatusEnum.NoError, averageBinTemperature: this.randomInteger(-18, 92),\r\n },\r\n {\r\n locationId: 0,\r\n binWithinUnitName: 0,\r\n displaySchemes: false,\r\n wasDeviceInitialized: false,\r\n isDeviceInitialized: false,\r\n sysId: 0,\r\n id: 56,\r\n multiplexerId: 0,\r\n switchType: 1,\r\n ipAddress: '172.20.240.1',\r\n port: 502,\r\n portRemote: 0,\r\n name: '34',\r\n binType: 1,\r\n height: 130,\r\n width: 30,\r\n depth: 30,\r\n yPosition: 0,\r\n xPosition: 0,\r\n zIndex: 0,\r\n isDecorBin: false,\r\n cables: [\r\n {\r\n id: 530,\r\n connectionId: 13,\r\n firstThermocoupleId: 1,\r\n thermocoupleCount: 18,\r\n angle: 90,\r\n radius: 7.5,\r\n xPosition: null,\r\n yPosition: null,\r\n name: 1,\r\n length: 130,\r\n sensors: [],\r\n multiplexerId: 4,\r\n },\r\n {\r\n id: 531,\r\n connectionId: 14,\r\n firstThermocoupleId: 1,\r\n thermocoupleCount: 18,\r\n angle: 330,\r\n radius: 7.5,\r\n xPosition: null,\r\n yPosition: null,\r\n name: 2,\r\n length: 130,\r\n sensors: [],\r\n multiplexerId: 4,\r\n },\r\n {\r\n id: 532,\r\n connectionId: 15,\r\n firstThermocoupleId: 1,\r\n thermocoupleCount: 18,\r\n angle: 210,\r\n radius: 7.5,\r\n xPosition: null,\r\n yPosition: null,\r\n name: 3,\r\n length: 130,\r\n sensors: [],\r\n multiplexerId: 4,\r\n },\r\n ],\r\n bins: null,\r\n binColor: '#00FFFF',\r\n cablesAverageAlarm: SensorStatusEnum.NoError, averageBinTemperature: this.randomInteger(-18, 92),\r\n },\r\n {\r\n locationId: 0,\r\n binWithinUnitName: 0,\r\n displaySchemes: false,\r\n wasDeviceInitialized: false,\r\n isDeviceInitialized: false,\r\n sysId: 0,\r\n id: 57,\r\n multiplexerId: 0,\r\n switchType: 1,\r\n ipAddress: '172.20.240.1',\r\n port: 502,\r\n portRemote: 0,\r\n name: '33',\r\n binType: 1,\r\n height: 130,\r\n width: 30,\r\n depth: 30,\r\n yPosition: 0,\r\n xPosition: 30,\r\n zIndex: 0,\r\n isDecorBin: false,\r\n cables: [\r\n {\r\n id: 533,\r\n connectionId: 10,\r\n firstThermocoupleId: 1,\r\n thermocoupleCount: 18,\r\n angle: 90,\r\n radius: 7.5,\r\n xPosition: null,\r\n yPosition: null,\r\n name: 1,\r\n length: 130,\r\n sensors: [],\r\n multiplexerId: 4,\r\n },\r\n {\r\n id: 534,\r\n connectionId: 11,\r\n firstThermocoupleId: 1,\r\n thermocoupleCount: 18,\r\n angle: 330,\r\n radius: 7.5,\r\n xPosition: null,\r\n yPosition: null,\r\n name: 2,\r\n length: 130,\r\n sensors: [],\r\n multiplexerId: 4,\r\n },\r\n {\r\n id: 535,\r\n connectionId: 12,\r\n firstThermocoupleId: 1,\r\n thermocoupleCount: 18,\r\n angle: 210,\r\n radius: 7.5,\r\n xPosition: null,\r\n yPosition: null,\r\n name: 3,\r\n length: 130,\r\n sensors: [],\r\n multiplexerId: 4,\r\n },\r\n ],\r\n bins: null,\r\n binColor: '#00FFFF',\r\n cablesAverageAlarm: SensorStatusEnum.NoError, averageBinTemperature: this.randomInteger(-18, 92),\r\n },\r\n {\r\n locationId: 0,\r\n binWithinUnitName: 0,\r\n displaySchemes: false,\r\n wasDeviceInitialized: false,\r\n isDeviceInitialized: false,\r\n sysId: 0,\r\n id: 58,\r\n multiplexerId: 0,\r\n switchType: 1,\r\n ipAddress: '172.20.240.1',\r\n port: 502,\r\n portRemote: 0,\r\n name: '39',\r\n binType: 2,\r\n height: 130,\r\n width: 30,\r\n depth: 40,\r\n yPosition: 15,\r\n xPosition: 15,\r\n zIndex: -1,\r\n isDecorBin: false,\r\n cables: [\r\n {\r\n id: 476,\r\n connectionId: 19,\r\n firstThermocoupleId: 1,\r\n thermocoupleCount: 18,\r\n angle: null,\r\n radius: null,\r\n xPosition: 10,\r\n yPosition: 20,\r\n name: 392,\r\n length: 130,\r\n sensors: [],\r\n multiplexerId: 4,\r\n },\r\n {\r\n id: 510,\r\n connectionId: 18,\r\n firstThermocoupleId: 1,\r\n thermocoupleCount: 18,\r\n angle: null,\r\n radius: null,\r\n xPosition: 20,\r\n yPosition: 20,\r\n name: 391,\r\n length: 130,\r\n sensors: [],\r\n multiplexerId: 4,\r\n },\r\n ],\r\n bins: null,\r\n binColor: '#00FFFF',\r\n cablesAverageAlarm: SensorStatusEnum.NoError, averageBinTemperature: this.randomInteger(-18, 92),\r\n },\r\n {\r\n locationId: 0,\r\n binWithinUnitName: 0,\r\n displaySchemes: false,\r\n wasDeviceInitialized: false,\r\n isDeviceInitialized: false,\r\n sysId: 0,\r\n id: 59,\r\n multiplexerId: 0,\r\n switchType: 1,\r\n ipAddress: '172.20.240.1',\r\n port: 502,\r\n portRemote: 0,\r\n name: '31',\r\n binType: 1,\r\n height: 130,\r\n width: 30,\r\n depth: 30,\r\n yPosition: 0,\r\n xPosition: 90,\r\n zIndex: 0,\r\n isDecorBin: false,\r\n cables: [\r\n {\r\n id: 536,\r\n connectionId: 4,\r\n firstThermocoupleId: 1,\r\n thermocoupleCount: 18,\r\n angle: 90,\r\n radius: 7.5,\r\n xPosition: null,\r\n yPosition: null,\r\n name: 1,\r\n length: 130,\r\n sensors: [],\r\n multiplexerId: 4,\r\n },\r\n {\r\n id: 537,\r\n connectionId: 5,\r\n firstThermocoupleId: 1,\r\n thermocoupleCount: 18,\r\n angle: 330,\r\n radius: 7.5,\r\n xPosition: null,\r\n yPosition: null,\r\n name: 2,\r\n length: 130,\r\n sensors: [],\r\n multiplexerId: 4,\r\n },\r\n {\r\n id: 538,\r\n connectionId: 6,\r\n firstThermocoupleId: 1,\r\n thermocoupleCount: 18,\r\n angle: 210,\r\n radius: 7.5,\r\n xPosition: null,\r\n yPosition: null,\r\n name: 3,\r\n length: 130,\r\n sensors: [],\r\n multiplexerId: 4,\r\n },\r\n ],\r\n bins: null,\r\n binColor: '#00FFFF',\r\n cablesAverageAlarm: SensorStatusEnum.NoError, averageBinTemperature: this.randomInteger(-18, 92),\r\n },\r\n {\r\n locationId: 0,\r\n binWithinUnitName: 0,\r\n displaySchemes: false,\r\n wasDeviceInitialized: false,\r\n isDeviceInitialized: false,\r\n sysId: 0,\r\n id: 60,\r\n multiplexerId: 0,\r\n switchType: 1,\r\n ipAddress: '172.20.240.1',\r\n port: 502,\r\n portRemote: 0,\r\n name: '30',\r\n binType: 1,\r\n height: 130,\r\n width: 30,\r\n depth: 30,\r\n yPosition: 0,\r\n xPosition: 120,\r\n zIndex: 0,\r\n isDecorBin: false,\r\n cables: [\r\n {\r\n id: 539,\r\n connectionId: 1,\r\n firstThermocoupleId: 1,\r\n thermocoupleCount: 18,\r\n angle: 90,\r\n radius: 7.5,\r\n xPosition: null,\r\n yPosition: null,\r\n name: 1,\r\n length: 130,\r\n sensors: [],\r\n multiplexerId: 4,\r\n },\r\n {\r\n id: 540,\r\n connectionId: 2,\r\n firstThermocoupleId: 1,\r\n thermocoupleCount: 18,\r\n angle: 330,\r\n radius: 7.5,\r\n xPosition: null,\r\n yPosition: null,\r\n name: 2,\r\n length: 130,\r\n sensors: [],\r\n multiplexerId: 4,\r\n },\r\n {\r\n id: 541,\r\n connectionId: 3,\r\n firstThermocoupleId: 1,\r\n thermocoupleCount: 18,\r\n angle: 210,\r\n radius: 7.5,\r\n xPosition: null,\r\n yPosition: null,\r\n name: 3,\r\n length: 130,\r\n sensors: [],\r\n multiplexerId: 4,\r\n },\r\n ],\r\n bins: null,\r\n binColor: '#00FFFF',\r\n cablesAverageAlarm: SensorStatusEnum.NoError, averageBinTemperature: this.randomInteger(-18, 92),\r\n },\r\n {\r\n locationId: 0,\r\n binWithinUnitName: 0,\r\n displaySchemes: false,\r\n wasDeviceInitialized: false,\r\n isDeviceInitialized: false,\r\n sysId: 0,\r\n id: 61,\r\n multiplexerId: 0,\r\n switchType: 1,\r\n ipAddress: '172.20.240.1',\r\n port: 502,\r\n portRemote: 0,\r\n name: '29',\r\n binType: 1,\r\n height: 130,\r\n width: 30,\r\n depth: 30,\r\n yPosition: 40,\r\n xPosition: 0,\r\n zIndex: 0,\r\n isDecorBin: false,\r\n cables: [\r\n {\r\n id: 542,\r\n connectionId: 13,\r\n firstThermocoupleId: 1,\r\n thermocoupleCount: 18,\r\n angle: 270,\r\n radius: 7.5,\r\n xPosition: null,\r\n yPosition: null,\r\n name: 1,\r\n length: 130,\r\n sensors: [],\r\n multiplexerId: 3,\r\n },\r\n {\r\n id: 543,\r\n connectionId: 14,\r\n firstThermocoupleId: 1,\r\n thermocoupleCount: 18,\r\n angle: 150,\r\n radius: 7.5,\r\n xPosition: null,\r\n yPosition: null,\r\n name: 2,\r\n length: 130,\r\n sensors: [],\r\n multiplexerId: 3,\r\n },\r\n {\r\n id: 544,\r\n connectionId: 15,\r\n firstThermocoupleId: 1,\r\n thermocoupleCount: 18,\r\n angle: 30,\r\n radius: 7.5,\r\n xPosition: null,\r\n yPosition: null,\r\n name: 3,\r\n length: 130,\r\n sensors: [],\r\n multiplexerId: 3,\r\n },\r\n ],\r\n bins: null,\r\n binColor: '#00FFFF',\r\n cablesAverageAlarm: SensorStatusEnum.NoError, averageBinTemperature: this.randomInteger(-18, 92),\r\n },\r\n {\r\n locationId: 0,\r\n binWithinUnitName: 0,\r\n displaySchemes: false,\r\n wasDeviceInitialized: false,\r\n isDeviceInitialized: false,\r\n sysId: 0,\r\n id: 62,\r\n multiplexerId: 0,\r\n switchType: 1,\r\n ipAddress: '172.20.240.1',\r\n port: 502,\r\n portRemote: 0,\r\n name: '28',\r\n binType: 1,\r\n height: 130,\r\n width: 30,\r\n depth: 30,\r\n yPosition: 40,\r\n xPosition: 30,\r\n zIndex: 0,\r\n isDecorBin: false,\r\n cables: [\r\n {\r\n id: 545,\r\n connectionId: 10,\r\n firstThermocoupleId: 1,\r\n thermocoupleCount: 18,\r\n angle: 270,\r\n radius: 7.5,\r\n xPosition: null,\r\n yPosition: null,\r\n name: 1,\r\n length: 130,\r\n sensors: [],\r\n multiplexerId: 3,\r\n },\r\n {\r\n id: 546,\r\n connectionId: 11,\r\n firstThermocoupleId: 1,\r\n thermocoupleCount: 18,\r\n angle: 150,\r\n radius: 7.5,\r\n xPosition: null,\r\n yPosition: null,\r\n name: 2,\r\n length: 130,\r\n sensors: [],\r\n multiplexerId: 3,\r\n },\r\n {\r\n id: 547,\r\n connectionId: 12,\r\n firstThermocoupleId: 1,\r\n thermocoupleCount: 18,\r\n angle: 30,\r\n radius: 7.5,\r\n xPosition: null,\r\n yPosition: null,\r\n name: 3,\r\n length: 130,\r\n sensors: [],\r\n multiplexerId: 3,\r\n },\r\n ],\r\n bins: null,\r\n binColor: '#00FFFF',\r\n cablesAverageAlarm: SensorStatusEnum.NoError, averageBinTemperature: this.randomInteger(-18, 92),\r\n },\r\n {\r\n locationId: 0,\r\n binWithinUnitName: 0,\r\n displaySchemes: false,\r\n wasDeviceInitialized: false,\r\n isDeviceInitialized: false,\r\n sysId: 0,\r\n id: 63,\r\n multiplexerId: 0,\r\n switchType: 1,\r\n ipAddress: '172.20.240.1',\r\n port: 502,\r\n portRemote: 0,\r\n name: '27',\r\n binType: 1,\r\n height: 130,\r\n width: 30,\r\n depth: 30,\r\n yPosition: 40,\r\n xPosition: 60,\r\n zIndex: 0,\r\n isDecorBin: false,\r\n cables: [\r\n {\r\n id: 548,\r\n connectionId: 7,\r\n firstThermocoupleId: 1,\r\n thermocoupleCount: 18,\r\n angle: 270,\r\n radius: 7.5,\r\n xPosition: null,\r\n yPosition: null,\r\n name: 1,\r\n length: 130,\r\n sensors: [],\r\n multiplexerId: 3,\r\n },\r\n {\r\n id: 549,\r\n connectionId: 8,\r\n firstThermocoupleId: 1,\r\n thermocoupleCount: 18,\r\n angle: 150,\r\n radius: 7.5,\r\n xPosition: null,\r\n yPosition: null,\r\n name: 2,\r\n length: 130,\r\n sensors: [],\r\n multiplexerId: 3,\r\n },\r\n {\r\n id: 550,\r\n connectionId: 9,\r\n firstThermocoupleId: 1,\r\n thermocoupleCount: 18,\r\n angle: 30,\r\n radius: 7.5,\r\n xPosition: null,\r\n yPosition: null,\r\n name: 3,\r\n length: 130,\r\n sensors: [],\r\n multiplexerId: 3,\r\n },\r\n ],\r\n bins: null,\r\n binColor: '#00FFFF',\r\n cablesAverageAlarm: SensorStatusEnum.NoError, averageBinTemperature: this.randomInteger(-18, 92),\r\n },\r\n {\r\n locationId: 0,\r\n binWithinUnitName: 0,\r\n displaySchemes: false,\r\n wasDeviceInitialized: false,\r\n isDeviceInitialized: false,\r\n sysId: 0,\r\n id: 64,\r\n multiplexerId: 0,\r\n switchType: 1,\r\n ipAddress: '172.20.240.1',\r\n port: 502,\r\n portRemote: 0,\r\n name: '26',\r\n binType: 1,\r\n height: 130,\r\n width: 30,\r\n depth: 30,\r\n yPosition: 40,\r\n xPosition: 90,\r\n zIndex: 0,\r\n isDecorBin: false,\r\n cables: [\r\n {\r\n id: 551,\r\n connectionId: 4,\r\n firstThermocoupleId: 1,\r\n thermocoupleCount: 18,\r\n angle: 270,\r\n radius: 7.5,\r\n xPosition: null,\r\n yPosition: null,\r\n name: 1,\r\n length: 130,\r\n sensors: [],\r\n multiplexerId: 3,\r\n },\r\n {\r\n id: 552,\r\n connectionId: 5,\r\n firstThermocoupleId: 1,\r\n thermocoupleCount: 18,\r\n angle: 150,\r\n radius: 7.5,\r\n xPosition: null,\r\n yPosition: null,\r\n name: 2,\r\n length: 130,\r\n sensors: [],\r\n multiplexerId: 3,\r\n },\r\n {\r\n id: 553,\r\n connectionId: 6,\r\n firstThermocoupleId: 1,\r\n thermocoupleCount: 18,\r\n angle: 30,\r\n radius: 7.5,\r\n xPosition: null,\r\n yPosition: null,\r\n name: 3,\r\n length: 130,\r\n sensors: [],\r\n multiplexerId: 3,\r\n },\r\n ],\r\n bins: null,\r\n binColor: '#00FFFF',\r\n cablesAverageAlarm: SensorStatusEnum.NoError, averageBinTemperature: this.randomInteger(-18, 92),\r\n },\r\n {\r\n locationId: 0,\r\n binWithinUnitName: 0,\r\n displaySchemes: false,\r\n wasDeviceInitialized: false,\r\n isDeviceInitialized: false,\r\n sysId: 0,\r\n id: 65,\r\n multiplexerId: 0,\r\n switchType: 1,\r\n ipAddress: '172.20.240.1',\r\n port: 502,\r\n portRemote: 0,\r\n name: '32',\r\n binType: 1,\r\n height: 130,\r\n width: 30,\r\n depth: 30,\r\n yPosition: 0,\r\n xPosition: 60,\r\n zIndex: 0,\r\n isDecorBin: false,\r\n cables: [\r\n {\r\n id: 554,\r\n connectionId: 7,\r\n firstThermocoupleId: 1,\r\n thermocoupleCount: 18,\r\n angle: 90,\r\n radius: 7.5,\r\n xPosition: null,\r\n yPosition: null,\r\n name: 1,\r\n length: 130,\r\n sensors: [],\r\n multiplexerId: 4,\r\n },\r\n {\r\n id: 555,\r\n connectionId: 8,\r\n firstThermocoupleId: 1,\r\n thermocoupleCount: 18,\r\n angle: 330,\r\n radius: 7.5,\r\n xPosition: null,\r\n yPosition: null,\r\n name: 2,\r\n length: 130,\r\n sensors: [],\r\n multiplexerId: 4,\r\n },\r\n {\r\n id: 556,\r\n connectionId: 9,\r\n firstThermocoupleId: 1,\r\n thermocoupleCount: 18,\r\n angle: 210,\r\n radius: 7.5,\r\n xPosition: null,\r\n yPosition: null,\r\n name: 3,\r\n length: 130,\r\n sensors: [],\r\n multiplexerId: 4,\r\n },\r\n ],\r\n bins: null,\r\n binColor: '#00FFFF',\r\n cablesAverageAlarm: SensorStatusEnum.NoError, averageBinTemperature: this.randomInteger(-18, 92),\r\n },\r\n {\r\n locationId: 0,\r\n binWithinUnitName: 0,\r\n displaySchemes: false,\r\n wasDeviceInitialized: false,\r\n isDeviceInitialized: false,\r\n sysId: 0,\r\n id: 66,\r\n multiplexerId: 0,\r\n switchType: 1,\r\n ipAddress: '172.20.240.1',\r\n port: 502,\r\n portRemote: 0,\r\n name: '25',\r\n binType: 1,\r\n height: 130,\r\n width: 30,\r\n depth: 30,\r\n yPosition: 40,\r\n xPosition: 120,\r\n zIndex: 0,\r\n isDecorBin: false,\r\n cables: [\r\n {\r\n id: 528,\r\n connectionId: 2,\r\n firstThermocoupleId: 1,\r\n thermocoupleCount: 18,\r\n angle: 150,\r\n radius: 7.5,\r\n xPosition: null,\r\n yPosition: null,\r\n name: 2,\r\n length: 130,\r\n sensors: [],\r\n multiplexerId: 3,\r\n },\r\n {\r\n id: 557,\r\n connectionId: 1,\r\n firstThermocoupleId: 1,\r\n thermocoupleCount: 18,\r\n angle: 270,\r\n radius: 7.5,\r\n xPosition: null,\r\n yPosition: null,\r\n name: 1,\r\n length: 130,\r\n sensors: [],\r\n multiplexerId: 3,\r\n },\r\n {\r\n id: 558,\r\n connectionId: 3,\r\n firstThermocoupleId: 1,\r\n thermocoupleCount: 18,\r\n angle: 30,\r\n radius: 7.5,\r\n xPosition: null,\r\n yPosition: null,\r\n name: 3,\r\n length: 130,\r\n sensors: [],\r\n multiplexerId: 3,\r\n },\r\n ],\r\n bins: null,\r\n binColor: '#00FFFF',\r\n cablesAverageAlarm: SensorStatusEnum.NoError, averageBinTemperature: this.randomInteger(-18, 92),\r\n },\r\n ],\r\n },\r\n ];\r\n\r\n const binSchemes = bins.map((bin) => BinViewModel.toSchemeViewModel(bin));\r\n\r\n return binSchemes;\r\n }\r\n}","import { Injectable } from '@angular/core';\r\nimport { Router } from '@angular/router';\r\n\r\nimport { HttpService, ErrorModel } from '../../../common';\r\nimport { ApiRoutes } from '../../constants';\r\nimport { LocationViewModel, LocationGetModel, LocationPostModel, BtxKtxItxLocationsViewModel, BtxKtxItxLocationsGetModel, LocationItxViewModel, BTXLocationConfiguration, BtxLocationEquipmentConfiguration, BtxLocationSensorConfiguration } from '../../models';\r\nimport { stringify } from 'querystring';\r\n\r\n@Injectable()\r\nexport class LocationsApiService {\r\n constructor(\r\n private _httpService: HttpService,\r\n private _router: Router,\r\n ) { }\r\n\r\n public async getAll(): Promise {\r\n try {\r\n if (this._router.url.indexOf('/back-door') > -1) {\r\n return this.getFakeData();\r\n }\r\n\r\n const result = await this._httpService.get(ApiRoutes.Location.getAll);\r\n return result.map((item) => {\r\n return LocationGetModel.toViewModel(item);\r\n });\r\n } catch (error) {\r\n return this.processError(error);\r\n }\r\n }\r\n\r\n public async getAllForCompany(companyId: number): Promise {\r\n try {\r\n if (this._router.url.indexOf('/back-door') > -1) {\r\n return this.getFakeData();\r\n }\r\n\r\n const result = await this._httpService.get(ApiRoutes.Location.getAllForCompany, { companyId: companyId });\r\n return result.map((item) => {\r\n return LocationGetModel.toViewModel(item);\r\n });\r\n } catch (error) {\r\n return this.processError(error);\r\n }\r\n }\r\n\r\n public async getKtxBtxItxLocationForCompany(companyId: number): Promise {\r\n try {\r\n if (this._router.url.indexOf('/back-door') > -1) {\r\n return this.getFakeBtxKtxItxData();\r\n }\r\n\r\n const result = await this._httpService.get(ApiRoutes.Location.getKtxBtxItxLocationsForCompany, { companyId: companyId });\r\n return result;\r\n } catch (error) {\r\n return this.processError(error);\r\n }\r\n }\r\n\r\n public async add(location: LocationPostModel): Promise {\r\n try {\r\n const result = await this._httpService.post(ApiRoutes.Location.add, location);\r\n\r\n const locationViewModel = LocationGetModel.toViewModel(result);\r\n return locationViewModel;\r\n } catch (error) {\r\n return this.processError(error);\r\n }\r\n }\r\n\r\n public async edit(location: LocationPostModel): Promise {\r\n try {\r\n const result = await this._httpService.put(ApiRoutes.Location.edit, location);\r\n\r\n const locationViewModel = LocationGetModel.toViewModel(result);\r\n return locationViewModel;\r\n } catch (error) {\r\n return this.processError(error);\r\n }\r\n }\r\n\r\n public async delete(locationId: number): Promise {\r\n try {\r\n const result = await this._httpService.delete(ApiRoutes.Location.delete, { locationId });\r\n return result;\r\n } catch (error) {\r\n return this.processError(error);\r\n }\r\n }\r\n\r\n private processError(error: any) {\r\n if (error instanceof ErrorModel) {\r\n return Promise.reject(error);\r\n }\r\n\r\n console.log(error);\r\n return null;\r\n }\r\n\r\n public getFakeData(): LocationViewModel[] {\r\n const data = [\r\n { id: 1, name: 'locationName1', companyId: 1, companyName: 'company1', serviceEmail: 'somemail1@gmail.com', servicePhone: '+8024242342343', emergencyPhone: '+802343423545435', sitePhone: '+843534539584535', siteEmail: 'siteEmailEmailEmail@email.com' },\r\n { id: 2, name: 'locationName2', companyId: 2, companyName: 'company2', serviceEmail: 'somemail2@gmail.com', servicePhone: '+8024242342343', emergencyPhone: '+802343423545435', sitePhone: '+843534539584535', siteEmail: 'siteEmailEmailEmail@email.com' },\r\n { id: 3, name: 'locationName3', companyId: 3, companyName: 'company3', serviceEmail: 'somemail3@gmail.com', servicePhone: '+8024242342343', emergencyPhone: '+802343423545435', sitePhone: '+843534539584535', siteEmail: 'siteEmailEmailEmail@email.com' },\r\n { id: 4, name: 'locationName4', companyId: 4, companyName: 'company4', serviceEmail: 'somemail4@gmail.com', servicePhone: '+8024242342343', emergencyPhone: '+802343423545435', sitePhone: '+843534539584535', siteEmail: 'siteEmailEmailEmail@email.com' },\r\n { id: 5, name: 'locationName5', companyId: 4, companyName: 'company4', serviceEmail: 'somemail4@gmail.com', servicePhone: '+8024242342343', emergencyPhone: '+802343423545435', sitePhone: '+843534539584535', siteEmail: 'siteEmailEmailEmail@email.com' },\r\n { id: 6, name: 'locationName6', companyId: 4, companyName: 'company4', serviceEmail: 'somemail4@gmail.com', servicePhone: '+8024242342343', emergencyPhone: '+802343423545435', sitePhone: '+843534539584535', siteEmail: 'siteEmailEmailEmail@email.com' },\r\n { id: 7, name: 'locationName7', companyId: 4, companyName: 'company4', serviceEmail: 'somemail4@gmail.com', servicePhone: '+8024242342343', emergencyPhone: '+802343423545435', sitePhone: '+843534539584535', siteEmail: 'siteEmailEmailEmail@email.com' },\r\n { id: 8, name: 'locationName8', companyId: 4, companyName: 'company4', serviceEmail: 'somemail4@gmail.com', servicePhone: '+8024242342343', emergencyPhone: '+802343423545435', sitePhone: '+843534539584535', siteEmail: 'siteEmailEmailEmail@email.com' },\r\n { id: 9, name: 'locationName9', companyId: 4, companyName: 'company4', serviceEmail: 'somemail4@gmail.com', servicePhone: '+8024242342343', emergencyPhone: '+802343423545435', sitePhone: '+843534539584535', siteEmail: 'siteEmailEmailEmail@email.com' },\r\n { id: 10, name: 'locationName10', companyId: 4, companyName: 'company4', serviceEmail: 'somemail4@gmail.com', servicePhone: '+8024242342343', emergencyPhone: '+802343423545435', sitePhone: '+843534539584535', siteEmail: 'siteEmailEmailEmail@email.com' },\r\n { id: 11, name: 'locationName11', companyId: 5, companyName: 'company5', serviceEmail: 'somemail4@gmail.com', servicePhone: '+8024242342343', emergencyPhone: '+802343423545435', sitePhone: '+843534539584535', siteEmail: 'siteEmailEmailEmail@email.com' },\r\n { id: 12, name: 'locationName12', companyId: 4, companyName: 'company4', serviceEmail: 'somemail4@gmail.com', servicePhone: '+8024242342343', emergencyPhone: '+802343423545435', sitePhone: '+843534539584535', siteEmail: 'siteEmailEmailEmail@email.com' },\r\n { id: 13, name: 'locationName13', companyId: 4, companyName: 'company4', serviceEmail: 'somemail4@gmail.com', servicePhone: '+8024242342343', emergencyPhone: '+802343423545435', sitePhone: '+843534539584535', siteEmail: 'siteEmailEmailEmail@email.com' },\r\n { id: 14, name: 'locationName14', companyId: 4, companyName: 'company4', serviceEmail: 'somemail4@gmail.com', servicePhone: '+8024242342343', emergencyPhone: '+802343423545435', sitePhone: '+843534539584535', siteEmail: 'siteEmailEmailEmail@email.com' },\r\n { id: 15, name: 'locationName15', companyId: 4, companyName: 'company4', serviceEmail: 'somemail4@gmail.com', servicePhone: '+8024242342343', emergencyPhone: '+802343423545435', sitePhone: '+843534539584535', siteEmail: 'siteEmailEmailEmail@email.com' },\r\n { id: 16, name: 'locationName16', companyId: 4, companyName: 'company4', serviceEmail: 'somemail4@gmail.com', servicePhone: '+8024242342343', emergencyPhone: '+802343423545435', sitePhone: '+843534539584535', siteEmail: 'siteEmailEmailEmail@email.com' }\r\n ] as LocationViewModel[];\r\n return data;\r\n }\r\n\r\n public getFakeBtxKtxItxData(): BtxKtxItxLocationsViewModel {\r\n const data = {\r\n ktxLocations: [{ id: 1, locationName: 'Location1' }, { id: 2, locationName: 'Location2' }],\r\n btxLocations: [{ locationId: 1, locationName: 'Location1' }, { locationId: 2, locationName: 'Location2' }],\r\n itxLocations: [{ id: 1, locationName: 'Location1' }, { id: 2, locationName: 'Location2' }],\r\n } as BtxKtxItxLocationsViewModel;\r\n\r\n return data;\r\n }\r\n}","import { Injectable } from '@angular/core';\r\nimport { Router } from '@angular/router';\r\nimport { BtxReportLiveDataFilter, KtxReportCurrentDataFilter, KtxReportHistoricalDataFilterForPeriod, NotificationReportPostModel, ReportDataFileFilterPost, ReportDataFilterPost, ReportHistoricalDataResponse, ReportLiveDataFilterPost } from '@models';\r\nimport { ErrorModel, HttpService } from 'src/app/common';\r\nimport { ApiRoutes } from '../../constants';\r\nimport { BtxHistoricalDataReportFilterRequest } from '../../models/btx-reports.model';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class ReportApiService {\r\n\r\n constructor(private _httpService: HttpService,\r\n private _router: Router) { }\r\n\r\n public async getItxReportHistoricalDataByFilter(filter: ReportDataFilterPost): Promise {\r\n try {\r\n if (this._router.url.indexOf('/back-door') > -1) {\r\n return this.getFakeReportData(filter);\r\n }\r\n const result = await this._httpService.post(ApiRoutes.Report.getItxReportHistoricalDataByFilter, filter)\r\n return result;\r\n } catch (error) {\r\n return this.processError(error);\r\n }\r\n }\r\n\r\n public async downloadKtxHistoricalReportFile(filter: KtxReportHistoricalDataFilterForPeriod): Promise {\r\n try {\r\n const result = await this._httpService.postArrayBuffer(ApiRoutes.Report.getKtxReportHistoricalByFilterForPeriod, filter);\r\n return result;\r\n } catch (error) {\r\n return this.processError(error);\r\n }\r\n }\r\n\r\n public async downloadBtxHistoricalDataReportFile(filter: BtxHistoricalDataReportFilterRequest): Promise {\r\n try {\r\n const result = await this._httpService.postArrayBuffer(ApiRoutes.Report.getBtxReportHistoricalDataByFilter, filter);\r\n return result;\r\n } catch (error) {\r\n return this.processError(error);\r\n }\r\n }\r\n\r\n public async downloadKtxCurrentDataReportFile(filter: KtxReportCurrentDataFilter): Promise {\r\n try {\r\n const result = await this._httpService.postArrayBuffer(ApiRoutes.Report.getKtxReportCurrentDataByFilter, filter);\r\n return result;\r\n } catch (error) {\r\n return this.processError(error);\r\n }\r\n }\r\n\r\n public async downloadItxHistoricalReportFile(filter: ReportDataFileFilterPost): Promise {\r\n try {\r\n const result = await this._httpService.postArrayBuffer(ApiRoutes.Report.getItxReportFile, filter);\r\n return result;\r\n } catch (error) {\r\n return this.processError(error);\r\n }\r\n }\r\n\r\n public async downloadItxLiveDataReportFile(filter: ReportLiveDataFilterPost): Promise {\r\n try {\r\n const result = await this._httpService.postArrayBuffer(ApiRoutes.Report.getItxReportLiveDataByFilter, filter);\r\n return result;\r\n } catch (error) {\r\n return this.processError(error);\r\n }\r\n }\r\n\r\n public async downloadBtxLiveDataReportFile(filter: BtxReportLiveDataFilter): Promise {\r\n try {\r\n const result = await this._httpService.postArrayBuffer(ApiRoutes.Report.getBtxReportLiveDataByFilter, filter);\r\n return result;\r\n } catch (error) {\r\n return this.processError(error);\r\n }\r\n }\r\n\r\n public async downloadNotificationReport(model: NotificationReportPostModel): Promise {\r\n try {\r\n const result = await this._httpService.postArrayBuffer(ApiRoutes.Report.getNotificationReport, model);\r\n return result;\r\n } catch (error) {\r\n return this.processError(error);\r\n }\r\n }\r\n\r\n private processError(error: any) {\r\n if (error instanceof ErrorModel) {\r\n return Promise.reject(error);\r\n }\r\n console.log(error);\r\n return null;\r\n }\r\n\r\n private getFakeReportData(filter: ReportDataFilterPost): ReportHistoricalDataResponse {\r\n\r\n let minut5: number = 5 * 60;\r\n let min = 0;\r\n let max = 100;\r\n let value: number = 1;\r\n let increment: number = 1;\r\n let data1: { timestamp: number, value: number }[] = [];\r\n let data2: { timestamp: number, value: number }[] = [];\r\n let data3: { timestamp: number, value: number }[] = [];\r\n let dateFrom = filter.dateFrom + minut5;\r\n let i = 0;\r\n let dateTo = filter.dateTo + 86400;\r\n do {\r\n let d1 = value - 3;\r\n if (d1 < min) d1 = min;\r\n if (i < 30 || i > 60) {\r\n data1.push({ timestamp: dateFrom, value: 20 });\r\n\r\n data2.push({ timestamp: dateFrom, value: 30 });\r\n data3.push({ timestamp: dateFrom, value: 40 })\r\n }\r\n\r\n dateFrom += minut5;\r\n i++;\r\n } while (dateFrom <= dateTo)\r\n\r\n let data = {\r\n reportData: [\r\n {\r\n reportDataTelemetry: data1,\r\n radarId: filter.radarIds ? 1 : null,\r\n\r\n },\r\n ]\r\n } as ReportHistoricalDataResponse;\r\n if (filter.radarIds) {\r\n data.reportData.push({ reportDataTelemetry: data2, radarId: 2 });\r\n data.reportData.push({ reportDataTelemetry: data3, radarId: 3 });\r\n }\r\n return data;\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { Router } from '@angular/router';\r\n\r\nimport { UserStatusEnum } from '../../enums';\r\nimport { SalesUserGetModel, SalesUserViewModel, SalesUserPostModel, ServiceUserInviteModel } from '../../models';\r\nimport { ApiRoutes, ErrorModel, HttpService } from './../../../common';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class SalesUsersApiService {\r\n\r\n constructor(\r\n private _httpService: HttpService,\r\n private _router: Router) { }\r\n\r\n public async loadAll(): Promise {\r\n try {\r\n if (this._router.url.indexOf('/back-door') > -1) {\r\n return this.getFakeData();\r\n }\r\n const data = await this._httpService.get(ApiRoutes.Account.getAllSalesUser) as SalesUserGetModel[];\r\n if (data) {\r\n const viewModels = data.map(user => SalesUserGetModel.toViewModel(user));\r\n return viewModels;\r\n }\r\n } catch (error) {\r\n return this.processError(error);\r\n }\r\n }\r\n\r\n public async edit(salesUser: SalesUserPostModel): Promise {\r\n try {\r\n const getModel = await this._httpService.post(ApiRoutes.Account.editSalesUser, salesUser) as SalesUserViewModel;\r\n if (getModel != null) {\r\n const viewModel = SalesUserGetModel.toViewModel(getModel);\r\n return Promise.resolve(viewModel);\r\n }\r\n } catch (error) {\r\n return this.processError(error);\r\n }\r\n }\r\n\r\n public async invite(salesUser: ServiceUserInviteModel): Promise {\r\n try {\r\n const result = await this._httpService.post(ApiRoutes.Account.addSalesUser, salesUser) as SalesUserGetModel;\r\n const viewModel = SalesUserGetModel.toViewModel(result);\r\n return Promise.resolve(viewModel);\r\n } catch (error) {\r\n return this.processError(error);\r\n }\r\n }\r\n\r\n \r\n public async delete(serviceUserId: number) : Promise {\r\n try {\r\n const result = await this._httpService.post(ApiRoutes.Account.deleteUser, { id: serviceUserId })\r\n if (result){\r\n return Promise.resolve(serviceUserId);\r\n }\r\n } catch (error) {\r\n return this.processError(error);\r\n }\r\n }\r\n\r\n private processError(error: any) {\r\n if (error instanceof ErrorModel) {\r\n return Promise.reject(error);\r\n }\r\n\r\n console.log(error);\r\n return null;\r\n }\r\n\r\n private getFakeData(): SalesUserViewModel[] {\r\n const data = [\r\n { id: 1, firstName: 'firstName', lastName: 'lastName', email: 'email', lastLoginDate: new Date, status: UserStatusEnum.Unlocked },\r\n { id: 2, firstName: 'firstName2', lastName: 'lastName2', email: 'email2', lastLoginDate: new Date, status: UserStatusEnum.Locked }\r\n ] as SalesUserViewModel[];\r\n return data;\r\n }\r\n}\r\n\r\n","import { Injectable } from '@angular/core';\r\n\r\nimport { HttpService, ErrorModel, ApiRoutes } from '../../../common';\r\nimport { ServiceUserViewModel, ServiceUserInviteModel, ServiceUserPostModel, ServiceUserDeleteModel, ServiceUserGetModel } from '../../models';\r\nimport { Router } from '@angular/router';\r\n\r\n@Injectable()\r\nexport class ServiceUsersApiService {\r\n constructor(\r\n private _httpService: HttpService,\r\n private _router: Router) { }\r\n\r\n public async loadAll() : Promise {\r\n try {\r\n if (this._router.url.indexOf('/back-door') > -1) {\r\n return this.getFakeData();\r\n }\r\n const data = await this._httpService.get(ApiRoutes.Account.getAllServiceUser) as ServiceUserGetModel[];\r\n if (data) {\r\n const viewModels = data.map(user => ServiceUserGetModel.toViewModel(user));\r\n return viewModels;\r\n }\r\n } catch (error) {\r\n return this.processError(error);\r\n }\r\n }\r\n\r\n public async invite(serviceUser: ServiceUserInviteModel) : Promise {\r\n try {\r\n const result = await this._httpService.post(ApiRoutes.Account.addServiceUser, serviceUser) as ServiceUserGetModel; \r\n const viewModel = ServiceUserGetModel.toViewModel(result);\r\n return Promise.resolve(viewModel);\r\n } catch (error) {\r\n return this.processError(error);\r\n }\r\n }\r\n\r\n public async edit(serviceUser: ServiceUserPostModel) : Promise {\r\n try {\r\n const getModel = await this._httpService.post(ApiRoutes.Account.editServiceUser, serviceUser) as ServiceUserGetModel;\r\n if (getModel != null) {\r\n const viewModel = ServiceUserGetModel.toViewModel(getModel);\r\n return Promise.resolve(viewModel);\r\n }\r\n } catch (error) {\r\n return this.processError(error);\r\n }\r\n }\r\n\r\n public async delete(serviceUserId: number) : Promise {\r\n try {\r\n const result = await this._httpService.post(ApiRoutes.Account.deleteUser, { id: serviceUserId })\r\n if (result){\r\n return Promise.resolve(serviceUserId);\r\n }\r\n } catch (error) {\r\n return this.processError(error);\r\n }\r\n }\r\n\r\n private processError(error: any) {\r\n if (error instanceof ErrorModel) {\r\n return Promise.reject(error);\r\n }\r\n\r\n console.log(error);\r\n return null;\r\n }\r\n\r\n public getFakeData(): ServiceUserViewModel[] {\r\n const data = [\r\n { id: 1, firstName: 'firstName', lastName: 'lastName', email: 'email', lastLoginDate: new Date },\r\n { id: 2, firstName: 'firstName2', lastName: 'lastName2', email: 'email2', lastLoginDate: new Date }\r\n ] as ServiceUserViewModel[];\r\n return data;\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\n\r\nimport { ErrorModel, HttpService } from '../../../common';\r\nimport { Router } from '@angular/router';\r\nimport { CancelUpdateFirmwarePostModel, CancelUpdateModel, CheckProjectsGetModel, GetInstalledProjectFirmwareInfo, GetLocationUpdatersFilterModel, InstallProjectPostModel, LocationUpdaterViewModel, ProjectFirmwareViewModel, UpdateDeviceViewModel, UpdateFirmwarePostModel, UpdateFirmwareResultModel, UpdateFirmwaresPostModel, UpdateProjectDeviceState, VersionHistoryResponseModel as VersionHistoryViewModel } from '../../models';\r\nimport { ApiRoutes } from '../../constants';\r\nimport { ProjectEnum, UpdateProjectStateEnum } from '../../enums';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class UpdaterDeviceService {\r\n\r\n constructor(private _httpService: HttpService,\r\n private _router: Router) { }\r\n\r\n public async getByFilter(request: GetLocationUpdatersFilterModel): Promise {\r\n try {\r\n if (this._router.url.indexOf('/back-door') > -1) {\r\n return this.getFakeData();\r\n }\r\n const result = await this._httpService.post(ApiRoutes.UpdaterDevice.getByFilter, request) as LocationUpdaterViewModel[];\r\n return result;\r\n } catch (error) {\r\n return this.processError(error);\r\n }\r\n }\r\n\r\n public async add(updater: { locationId: number, projectsAvailable: number }): Promise {\r\n try {\r\n const result = await this._httpService.post(ApiRoutes.UpdaterDevice.addUpdaterDevice, updater) as UpdateDeviceViewModel;\r\n return result;\r\n } catch (error) {\r\n return this.processError(error);\r\n }\r\n }\r\n\r\n public async edit(id: string, updaterEdit: { projectsAvailable: number }): Promise {\r\n try {\r\n const result = await this._httpService.put(ApiRoutes.UpdaterDevice.editUpdaterDevice + `/${id}`, updaterEdit) as UpdateDeviceViewModel;\r\n return result;\r\n } catch (error) {\r\n return this.processError(error);\r\n }\r\n }\r\n\r\n public async initializeDeviceConfiguration(id: string): Promise {\r\n try {\r\n const result = await this._httpService.post(ApiRoutes.UpdaterDevice.initializeDeviceConfiguration, id) as boolean;\r\n return result;\r\n } catch (error) {\r\n return this.processError(error);\r\n }\r\n }\r\n\r\n public async downloadConnectionFile(id: string): Promise {\r\n try {\r\n const result = await this._httpService.getArrayBuffer(ApiRoutes.UpdaterDevice.downloadConnectionFile, {\r\n updaterId: id\r\n });\r\n\r\n return result;\r\n } catch (error) {\r\n return this.processError(error);\r\n }\r\n }\r\n\r\n public async delete(id: string): Promise {\r\n try {\r\n const result = await this._httpService.delete(ApiRoutes.UpdaterDevice.deleteUpdaterDevice, {\r\n updaterId: id,\r\n }) as boolean;\r\n return result;\r\n } catch (error) {\r\n return this.processError(error);\r\n }\r\n }\r\n\r\n public async getBlobFirmwareFiles(folder: string): Promise {\r\n try {\r\n if (this._router.url.indexOf('/back-door') > -1) {\r\n return this.getFakeFirmwareData();\r\n }\r\n const result = await this._httpService.get(ApiRoutes.UpdaterDevice.getBlobFirmwareFiles, {\r\n directoryName: folder,\r\n }) as ProjectFirmwareViewModel[];\r\n return result;\r\n } catch (error) {\r\n return this.processError(error);\r\n }\r\n }\r\n\r\n public async downloadFirmwareFile(request: { directoryName: string, fileName: string }): Promise {\r\n try {\r\n const result = await this._httpService.getArrayBuffer(ApiRoutes.UpdaterDevice.downloadFirmwareFile, {\r\n directoryName: request.directoryName,\r\n fileName: request.fileName\r\n });\r\n\r\n return result;\r\n } catch (error) {\r\n return this.processError(error);\r\n }\r\n }\r\n\r\n public async downloadFirmwareFiles(request: { directoryName: string, fileNames: string[] }): Promise {\r\n try {\r\n const result = await this._httpService.postArrayBuffer(ApiRoutes.UpdaterDevice.downloadFirmwareFiles, request);\r\n return result;\r\n } catch (error) {\r\n return this.processError(error);\r\n }\r\n }\r\n\r\n public async deleteSelectedFirmwares(request: { directoryName: string, fileNames: string[] }): Promise {\r\n try {\r\n const result = await this._httpService.postArrayBuffer(ApiRoutes.UpdaterDevice.deleteSelectedFirmwares, request);\r\n return result;\r\n } catch (error) {\r\n return this.processError(error);\r\n }\r\n }\r\n\r\n public async uploadFirmware(request: { directoryName: string, insertFile: File }): Promise {\r\n try {\r\n const formData: FormData = new FormData();\r\n formData.append('directoryName', request.directoryName);\r\n formData.append('insertFile', request.insertFile, request.insertFile.name);\r\n\r\n const result = await this._httpService.postDataWithContent(ApiRoutes.UpdaterDevice.uploadFirmware, formData) as ProjectFirmwareViewModel;\r\n return result;\r\n } catch (error) {\r\n return this.processError(error);\r\n }\r\n }\r\n\r\n public async installProjectFirmware(request: InstallProjectPostModel): Promise {\r\n try {\r\n const formData: FormData = new FormData();\r\n formData.append('locationId', request.locationId.toString());\r\n formData.append('updaterId', request.updaterDeviceId);\r\n formData.append('projectId', request.projectDeviceId);\r\n formData.append('project', request.project.toString());\r\n formData.append('overwriteConfig', `${request.overwriteConfig}`);\r\n formData.append('insertFile', request.file, request.file.name);\r\n\r\n const result = await this._httpService.postDataWithContent(ApiRoutes.UpdaterDevice.installProjectFirmware, formData) as UpdateFirmwareResultModel;\r\n return result;\r\n } catch (error) {\r\n return this.processError(error);\r\n }\r\n }\r\n\r\n public async updateDeviceFiemware(request: UpdateFirmwarePostModel): Promise {\r\n try {\r\n if (this._router.url.indexOf('/back-door') > -1) {\r\n return this.getFakeUpdate(request);\r\n }\r\n const result = await this._httpService.post(ApiRoutes.UpdaterDevice.updateDeviceFirmware, request);\r\n return result;\r\n } catch (error) {\r\n return this.processError(error);\r\n }\r\n }\r\n\r\n public async cancelUpdateDeviceFirmware(request: CancelUpdateFirmwarePostModel): Promise {\r\n try {\r\n const result = await this._httpService.post(ApiRoutes.UpdaterDevice.cancelUpdateDeviceFirmware, request);\r\n return result;\r\n } catch (error) {\r\n return this.processError(error);\r\n }\r\n }\r\n\r\n public async getInstalledProjectFirmwareInformation(request: CheckProjectsGetModel): Promise {\r\n try {\r\n const result = await this._httpService.get(ApiRoutes.UpdaterDevice.getInstalledProjectFirmware, request);\r\n return result;\r\n } catch (error) {\r\n return this.processError(error);\r\n }\r\n }\r\n\r\n public async updateDeviceFiemwares(request: UpdateFirmwaresPostModel): Promise {\r\n try {\r\n if (this._router.url.indexOf('/back-door') > -1) {\r\n return this.getFakeBulkUpdates(request);\r\n }\r\n const result = await this._httpService.post(ApiRoutes.UpdaterDevice.updateDeviceFirmwares, request);\r\n return result;\r\n } catch (error) {\r\n return this.processError(error);\r\n }\r\n }\r\n\r\n public async getUpdateHistoryVersions(deviceId: string, locationId: string): Promise {\r\n try {\r\n if (this._router.url.indexOf('/back-door') > -1) {\r\n return this.getFakeUpdateHistoryData();\r\n }\r\n const request: { deviceId: string, locationId: string } = { deviceId: deviceId, locationId: locationId };\r\n const result = await this._httpService.get(ApiRoutes.UpdaterDevice.getUpdateHistoryVersions, request);\r\n return result;\r\n } catch (error) {\r\n return this.processError(error);\r\n }\r\n }\r\n\r\n public async getUpdaterStates(deviceIds: string[]): Promise {\r\n try {\r\n const result = await this._httpService.post(ApiRoutes.UpdaterDevice.getUpdateStates, deviceIds) as UpdateProjectDeviceState[];\r\n return result;\r\n } catch (error) {\r\n return this.processError(error);\r\n }\r\n }\r\n\r\n private processError(error: any) {\r\n if (error instanceof ErrorModel) {\r\n return Promise.reject(error);\r\n }\r\n\r\n console.log(error);\r\n return null;\r\n }\r\n\r\n private getFakeUpdate(request: UpdateFirmwarePostModel) {\r\n let result = {\r\n locationId: request.locationId,\r\n projectDeviceId: request.projectDeviceId,\r\n updaterDeviceId: request.updaterDeviceId,\r\n status: this.getFakeStatus(),\r\n payLoadSuccess: true,\r\n payLoadMessage: ''\r\n } as UpdateFirmwareResultModel;\r\n if (result.status != 100 || request.project == ProjectEnum.Itx) {\r\n result.payLoadSuccess = false;\r\n result.payLoadMessage = this.getFakeMessages();\r\n result.status = 500;\r\n }\r\n return result;\r\n }\r\n\r\n private getFakeBulkUpdates(request: UpdateFirmwaresPostModel) {\r\n let result: UpdateFirmwareResultModel[] = [];\r\n request.devices.forEach(item => {\r\n let response = {\r\n locationId: item.locationId,\r\n projectDeviceId: item.projectDeviceId,\r\n updaterDeviceId: item.updaterDeviceId,\r\n status: this.getFakeStatus(),\r\n payLoadSuccess: true,\r\n payLoadMessage: ''\r\n } as UpdateFirmwareResultModel;\r\n if (response.status != 100 || request.project == ProjectEnum.Itx) {\r\n response.payLoadSuccess = false;\r\n response.payLoadMessage = this.getFakeMessages();\r\n response.status = 500;\r\n }\r\n result.push(response);\r\n })\r\n\r\n return result;\r\n }\r\n\r\n private getFakeStatus() {\r\n let statuses: number[] = [100, 500];\r\n return statuses[Math.floor(Math.random() * (2))];\r\n }\r\n\r\n private getFakeMessages() {\r\n let messages: string[] = ['Exception while handling method callback: Update already active.', 'Device offline', 'Udater device unexpected device error'];\r\n return messages[Math.floor(Math.random() * (3))];\r\n }\r\n\r\n private getFakeUpdateHistoryData(): VersionHistoryViewModel[] {\r\n const data = [\r\n {\r\n currentVersion: '1.0.1',\r\n lastErrorMessage: '',\r\n realUpdateTime: new Date(2024, 7, 25),\r\n status: 'ok',\r\n targetVersion: ''\r\n },\r\n {\r\n currentVersion: '1.0.2',\r\n lastErrorMessage: '',\r\n realUpdateTime: new Date(2024, 7, 25),\r\n status: 'updating',\r\n targetVersion: ''\r\n },\r\n {\r\n currentVersion: '1.0.2',\r\n lastErrorMessage: '',\r\n realUpdateTime: new Date(2024, 7, 25),\r\n status: 'updaiting',\r\n targetVersion: '1.1.0'\r\n },\r\n {\r\n currentVersion: '1.0.1',\r\n lastErrorMessage: \"Exception while updating: (500): execution of 'setsid' '-w' 'env' 'PROJECT_NAME=BTX' '/usr/local/bin/azure_updater/tmp/scripts/update.sh' '-v' '-v' exited with failure: 1\",\r\n realUpdateTime: new Date(2024, 7, 25),\r\n status: 'error',\r\n targetVersion: '',\r\n }\r\n ] as VersionHistoryViewModel[];\r\n return data;\r\n }\r\n\r\n private getFakeFirmwareData(): ProjectFirmwareViewModel[] {\r\n const data = [\r\n {\r\n name: '/firmware-one12335569f938274967902834770235775920283745899208293704.zip',\r\n size: 12345,\r\n sizeLabel: \"12.345 Kb\",\r\n createdOn: new Date(2024, 7, 15),\r\n lastModified: new Date(2024, 7, 15),\r\n },\r\n {\r\n name: '/firmware-two.zip',\r\n size: 12345,\r\n sizeLabel: \"12.345 Kb\",\r\n createdOn: new Date(2024, 7, 15),\r\n lastModified: new Date(2024, 7, 15),\r\n },\r\n {\r\n name: '/firmware-three.zip',\r\n size: 12345,\r\n sizeLabel: \"12.345 Kb\",\r\n createdOn: new Date(2024, 7, 15),\r\n lastModified: new Date(2024, 7, 15),\r\n },\r\n {\r\n name: '/firmware-four.zip',\r\n size: 12345,\r\n sizeLabel: \"12.345 Kb\",\r\n createdOn: new Date(2024, 7, 15),\r\n lastModified: new Date(2024, 7, 15),\r\n },\r\n {\r\n name: '/firmware-five.zip',\r\n size: 12345,\r\n sizeLabel: \"12.345 Kb\",\r\n createdOn: new Date(2024, 7, 15),\r\n lastModified: new Date(2024, 7, 15),\r\n },\r\n {\r\n name: '/firmware-six.zip',\r\n size: 12345,\r\n sizeLabel: \"12.345 Kb\",\r\n createdOn: new Date(2024, 7, 15),\r\n lastModified: new Date(2024, 7, 15),\r\n },\r\n {\r\n name: '/firmware-seven.zip',\r\n size: 12345,\r\n sizeLabel: \"12.345 Kb\",\r\n createdOn: new Date(2024, 7, 15),\r\n lastModified: new Date(2024, 7, 15),\r\n },\r\n {\r\n name: '/firmware-eight.zip',\r\n size: 12345,\r\n sizeLabel: \"12.345 Kb\",\r\n createdOn: new Date(2024, 6, 15),\r\n lastModified: new Date(2024, 6, 15),\r\n }\r\n ] as ProjectFirmwareViewModel[];\r\n\r\n return data;\r\n }\r\n\r\n private getFakeData(): LocationUpdaterViewModel[] {\r\n const data = [\r\n {\r\n id: 1,\r\n name: 'Fake location 182749-19274789598718181389293807875911',\r\n companyName: 'Fake Company',\r\n projectsAvailable: ProjectEnum.Btx | ProjectEnum.Itx,\r\n locationDevices: [\r\n {\r\n deviceId: 'e535495b-e874-4eb4-91d6-34df11d2d04d',\r\n isInitialized: true,\r\n project: ProjectEnum.Btx,\r\n },\r\n {\r\n deviceId: 'e535495b-e874-4eb4-91d6-34df11d2d02d',\r\n isInitialized: true,\r\n project: ProjectEnum.Itx,\r\n },\r\n ],\r\n updaterDevices: [\r\n {\r\n id: 'e535495b-e874-4eb4-91d6-34df11d2d021',\r\n isInitialized: false,\r\n locationId: 1,\r\n projectsAvailable: ProjectEnum.Btx,\r\n projectDevices: [{\r\n deviceId: 'e535495b-e874-4eb4-91d6-34df11d2d04d',\r\n project: ProjectEnum.Btx,\r\n currentVersion: null,\r\n lastUpdate: null,\r\n }]\r\n },\r\n {\r\n id: 'e535495b-e874-4eb4-91d6-345f11d2d021',\r\n isInitialized: true,\r\n locationId: 1,\r\n projectsAvailable: ProjectEnum.Itx,\r\n projectDevices: [{\r\n deviceId: 'e535495b-e874-4eb4-91d6-34df11d2d02d',\r\n project: ProjectEnum.Itx,\r\n currentVersion: \"1.2.1\",\r\n lastUpdate: new Date().getTime() / 1000,\r\n }]\r\n }\r\n ]\r\n },\r\n {\r\n id: 2,\r\n name: 'Fake location 2',\r\n companyName: 'Fake Company',\r\n projectsAvailable: ProjectEnum.Btx | ProjectEnum.Itx | ProjectEnum.Ktx,\r\n locationDevices: [\r\n {\r\n deviceId: '60e7e135-3d7d-4beb-bcbc-5297378c3e2f',\r\n isInitialized: true,\r\n project: ProjectEnum.Btx,\r\n },\r\n {\r\n deviceId: 'e5351bd4-7e09-4f65-a51a-af8815c6c539',\r\n isInitialized: true,\r\n project: ProjectEnum.Itx,\r\n },\r\n {\r\n deviceId: 'dcb05793-7596-407f-b6e6-d9041e37b8c9',\r\n isInitialized: true,\r\n project: ProjectEnum.Ktx,\r\n },\r\n ],\r\n updaterDevices: [\r\n {\r\n id: 'e535495b-e874-4eb4-91d6-34df11d2d021',\r\n isInitialized: true,\r\n locationId: 2,\r\n projectsAvailable: ProjectEnum.Btx,\r\n projectDevices: [{\r\n deviceId: '60e7e135-3d7d-4beb-bcbc-5297378c3e2f',\r\n project: ProjectEnum.Btx,\r\n currentVersion: \"1.0.1\",\r\n lastUpdate: new Date().getTime() / 1000,\r\n state: UpdateProjectStateEnum.Updating,\r\n }]\r\n },\r\n {\r\n id: '9041a40a-9eb0-4075-b21e-72abc65122e3',\r\n isInitialized: true,\r\n locationId: 2,\r\n projectsAvailable: ProjectEnum.Itx,\r\n projectDevices: [{\r\n deviceId: 'e5351bd4-7e09-4f65-a51a-af8815c6c539',\r\n project: ProjectEnum.Itx,\r\n currentVersion: \"1.2.1\",\r\n lastUpdate: new Date().getTime() / 1000,\r\n state: UpdateProjectStateEnum.Failed,\r\n errorMessage: \"Exception while updating: (500): execution of 'setsid' '-w' 'env' 'PROJECT_NAME=BTX' '/usr/local/bin/azure_updater/tmp/scripts/update.sh' '-v' '-v' exited with failure: 1\",\r\n }]\r\n },\r\n {\r\n id: 'f2e98bd0-151d-4a86-9c16-b05e291ebc67',\r\n isInitialized: true,\r\n locationId: 2,\r\n projectsAvailable: ProjectEnum.Ktx,\r\n projectDevices: [{\r\n deviceId: 'dcb05793-7596-407f-b6e6-d9041e37b8c9',\r\n project: ProjectEnum.Ktx,\r\n currentVersion: \"1.29.1.1\",\r\n lastUpdate: new Date().getTime() / 1000,\r\n state: UpdateProjectStateEnum.Updating,\r\n }]\r\n },\r\n ]\r\n },\r\n {\r\n id: 3,\r\n name: 'Fake location 3',\r\n companyName: 'Fake Company',\r\n projectsAvailable: ProjectEnum.Btx | ProjectEnum.Itx | ProjectEnum.Ktx,\r\n locationDevices: [\r\n {\r\n deviceId: '7ed6b028-a190-4353-bc7e-a407ed058aa8',\r\n isInitialized: true,\r\n project: ProjectEnum.Btx,\r\n },\r\n {\r\n deviceId: 'f484a8e2-9500-4609-95d0-0e531b65625f',\r\n isInitialized: true,\r\n project: ProjectEnum.Itx,\r\n },\r\n {\r\n deviceId: '39cfccba-fe53-4d2d-945f-8feeaf2a80b2',\r\n isInitialized: true,\r\n project: ProjectEnum.Ktx,\r\n },\r\n ],\r\n updaterDevices: [],\r\n },\r\n {\r\n id: 4,\r\n name: 'Fake location 4',\r\n companyName: 'Fake Company',\r\n projectsAvailable: ProjectEnum.Btx | ProjectEnum.Itx | ProjectEnum.Ktx,\r\n locationDevices: [\r\n {\r\n deviceId: '7ed6b028-a190-4353-bc7e-a407ed058ab8',\r\n isInitialized: true,\r\n project: ProjectEnum.Btx,\r\n },\r\n {\r\n deviceId: 'f484a8e2-9500-4609-95d0-0e531b65626f',\r\n isInitialized: true,\r\n project: ProjectEnum.Itx,\r\n },\r\n {\r\n deviceId: '39cfccba-fe53-4d2d-945f-8feeaf2a8012',\r\n isInitialized: true,\r\n project: ProjectEnum.Ktx,\r\n },\r\n ],\r\n updaterDevices: [\r\n {\r\n id: 'f434a8e2-9500-4609-95d0-0e531b65626f',\r\n isInitialized: true,\r\n locationId: 4,\r\n projectsAvailable: ProjectEnum.Btx | ProjectEnum.Itx | ProjectEnum.Ktx,\r\n projectDevices: [\r\n {\r\n deviceId: '7ed6b028-a190-4353-bc7e-a407ed058ab8',\r\n isInitialized: true,\r\n project: ProjectEnum.Btx,\r\n currentVersion: \"1.0.1\",\r\n lastUpdate: new Date().getTime() / 1000,\r\n state: UpdateProjectStateEnum.Failed,\r\n errorMessage: \"Exception while updating: (500): execution of 'setsid' '-w' 'env' 'PROJECT_NAME=BTX' '/usr/local/bin/azure_updater/tmp/scripts/update.sh' '-v' '-v' exited with failure: 1\",\r\n },\r\n {\r\n deviceId: 'f484a8e2-9500-4609-95d0-0e531b65626f',\r\n isInitialized: true,\r\n project: ProjectEnum.Itx,\r\n currentVersion: \"1.2.1\",\r\n lastUpdate: new Date().getTime() / 1000,\r\n state: UpdateProjectStateEnum.Updating,\r\n },\r\n {\r\n deviceId: '39cfccba-fe53-4d2d-945f-8feeaf2a8012',\r\n isInitialized: true,\r\n project: ProjectEnum.Ktx,\r\n currentVersion: \"1.29.1.1\",\r\n lastUpdate: new Date().getTime() / 1000,\r\n },\r\n ]\r\n }\r\n ]\r\n },\r\n\r\n ] as LocationUpdaterViewModel[];\r\n return data;\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { Router } from '@angular/router';\r\nimport { HttpService, ErrorModel, ApiRoutes } from '../../../common';\r\nimport { UserStatusEnum } from '../../enums';\r\nimport { VendorViewModel, VendorGetModel, VendorInviteModel, VendorEditModel } from '../../models';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class VendorApiService {\r\n\r\n constructor(\r\n private _httpService: HttpService,\r\n private _router: Router) { }\r\n\r\n public async getAllForCompany(companyId: number): Promise {\r\n try {\r\n if (this._router.url.indexOf('/back-door') > -1) {\r\n return this.getFakeData();\r\n }\r\n const data = await this._httpService.get(ApiRoutes.Company.getAllVendorsForCompany, { companyId: companyId });\r\n if (data) {\r\n const vendorView = data.map(d => VendorGetModel.toViewModel(d));\r\n return vendorView;\r\n }\r\n } catch (error) {\r\n return this.processError(error);\r\n }\r\n }\r\n\r\n public async invite(vendor: VendorInviteModel): Promise {\r\n try {\r\n const result = await this._httpService.post(ApiRoutes.Account.addVendor, vendor);\r\n if (result) {\r\n return Promise.resolve(result);\r\n }\r\n } catch (error) {\r\n return this.processError(error);\r\n }\r\n }\r\n\r\n private processError(error: any) {\r\n if (error instanceof ErrorModel) {\r\n return Promise.reject(error);\r\n }\r\n console.log(error);\r\n return null;\r\n }\r\n\r\n public async editForCompany(vendor: VendorEditModel): Promise {\r\n try {\r\n const result = await this._httpService.post(ApiRoutes.Account.editVendorForCompany, vendor) as VendorGetModel;\r\n if (result) {\r\n const vendorViewModel = VendorGetModel.toViewModel(result);\r\n return Promise.resolve(vendorViewModel);\r\n }\r\n } catch (error) {\r\n return this.processError(error);\r\n }\r\n }\r\n\r\n public async deleteVendor(vendorId: number, companyId: number): Promise {\r\n try {\r\n const result = await this._httpService.post(ApiRoutes.Account.deleteVendor, { vendorId: vendorId, companyId: companyId });\r\n if (result) {\r\n return Promise.resolve(vendorId);\r\n }\r\n } catch (error) {\r\n return this.processError(error);\r\n }\r\n }\r\n\r\n private getFakeData(): VendorViewModel[] {\r\n const data = [\r\n {\r\n id: 0, companyName: 'fakeCom', firstName: 'firstName', lastName: 'lastName', email: 'email', status: UserStatusEnum.Unlocked, countOfBins: 4, itxLocationsNames: ['location1', 'location2'], lastLoginDate: new Date,\r\n itxLocations: [{ id: 1, name: 'Location1', bins: [{ id: 1, name: 'bin1' }, { id: 2, name: 'bin2' }] }, { id: 2, name: 'Location2', bins: [{ id: 3, name: 'bin1' }, { id: 4, name: 'bin2' }] }]\r\n },\r\n {\r\n id: 0, companyName: 'fakeCom', firstName: 'firstName2', lastName: 'lastName2', email: 'email2', status: UserStatusEnum.Locked, countOfBins: 4, itxLocationsNames: ['location3', 'location4'], lastLoginDate: new Date,\r\n itxLocations: [{ id: 3, name: 'Location3', bins: [{ id: 5, name: 'bin1' }, { id: 6, name: 'bin2' }] }, { id: 4, name: 'Location4', bins: [{ id: 7, name: 'bin1' }, { id: 8, name: 'bin2' }] }]\r\n },\r\n ] as VendorViewModel[];\r\n\r\n return data;\r\n }\r\n}","export * from './http';\r\nexport * from './data';\r\nexport * from './helpers';","export * from './password-recover.module';","import { Component, OnInit } from '@angular/core';\r\nimport { FormBuilder, FormGroup, Validators } from '@angular/forms';\r\nimport { Router, ActivatedRoute } from '@angular/router';\r\n\r\nimport { RoutePaths, AccountService, PasswordRecoverModel } from '../common';\r\nimport { emailValidator } from '../common/validators';\r\n\r\n//TODO\r\n//Check invalid messages\r\n@Component({\r\n selector: 'greensleeves-password-recover',\r\n templateUrl: './password-recover.component.html'\r\n})\r\n\r\nexport class PasswordRecoverComponent implements OnInit {\r\n _passwordRecoverFormGroup: FormGroup;\r\n _isSubmit = false;\r\n _isShow = false;\r\n _userEmail: string;\r\n _privacyLink = RoutePaths.PRIVACY;\r\n\r\n constructor(\r\n private formBuilder: FormBuilder,\r\n private route: ActivatedRoute,\r\n private router: Router,\r\n private _accountService: AccountService\r\n ) { }\r\n\r\n ngOnInit() {\r\n this._passwordRecoverFormGroup = this.formBuilder.group({\r\n userEmail: [\r\n '',\r\n Validators.compose(\r\n [Validators.required,\r\n Validators.email,\r\n emailValidator()\r\n ])]\r\n });\r\n }\r\n\r\n get f() { return this._passwordRecoverFormGroup.controls; }\r\n\r\n onSubmit() {\r\n this._isSubmit = true;\r\n const userEmail = this.f.userEmail.value.trim();\r\n\r\n if (this._passwordRecoverFormGroup.invalid) {\r\n return;\r\n }\r\n const passwordRecoverModel = new PasswordRecoverModel(userEmail);\r\n const result = this._accountService.passwordRecover(passwordRecoverModel);\r\n if (result != null)\r\n {\r\n this._isShow = true;\r\n this._userEmail = userEmail;\r\n }\r\n }\r\n}\r\n","import { CommonModule } from '@angular/common';\r\nimport { BrowserModule } from '@angular/platform-browser';\r\nimport { NgModule } from '@angular/core';\r\nimport { RouterModule } from '@angular/router';\r\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\r\n\r\nimport { PasswordRecoverComponent } from './password-recover.component';\r\nimport { RoutePaths } from '../common';\r\n\r\n@NgModule({\r\n declarations: [\r\n PasswordRecoverComponent\r\n ],\r\n imports: [\r\n BrowserModule,\r\n CommonModule,\r\n FormsModule,\r\n ReactiveFormsModule,\r\n RouterModule.forChild([\r\n { path: RoutePaths.PASSWORD_RECOVER, component: PasswordRecoverComponent },\r\n ])\r\n ]\r\n})\r\n\r\nexport class PasswordRecoverModule { }\r\n","export * from './password-update.module';\r\n","import { Component, OnInit } from '@angular/core';\r\nimport { FormBuilder, FormGroup, Validators } from '@angular/forms';\r\nimport { Router, ActivatedRoute } from '@angular/router';\r\n\r\nimport { RoutePaths, PasswordUpdateModel, AccountService } from '../common';\r\n\r\n@Component({\r\n selector: 'greensleeves-password-update',\r\n templateUrl: './password-update.component.html'\r\n})\r\n\r\nexport class PasswordUpdateComponent implements OnInit {\r\n public token: string;\r\n _passwordUpdateFormGroup: FormGroup;\r\n _isSubmit = false;\r\n _isPasswordsMatch: boolean = false;\r\n _isShowPassword: boolean;\r\n _isShowPasswordConfirm: boolean;\r\n _privacyLink = RoutePaths.PRIVACY;\r\n\r\n constructor(\r\n private formBuilder: FormBuilder,\r\n private router: Router,\r\n private _accountService: AccountService,\r\n private activatedRoute: ActivatedRoute\r\n ) { }\r\n\r\n ngOnInit() {\r\n this._passwordUpdateFormGroup = this.formBuilder.group({\r\n password: ['', Validators.compose([Validators.required, Validators.minLength(6), Validators.maxLength(50)])],\r\n confirm: ['', Validators.compose([Validators.required, Validators.minLength(6), Validators.maxLength(50)])]\r\n });\r\n this.activatedRoute.queryParams.subscribe(params => {\r\n this.token = params['token'];\r\n });\r\n }\r\n\r\n get f() { return this._passwordUpdateFormGroup.controls; }\r\n\r\n onSubmit() {\r\n this._isSubmit = true;\r\n this._isPasswordsMatch = false;\r\n\r\n const password = this.f.password.value.trim();\r\n const confirmPassword = this.f.confirm.value.trim();\r\n\r\n if (this._passwordUpdateFormGroup.invalid) {\r\n return;\r\n }\r\n\r\n if (password != confirmPassword) {\r\n this._isPasswordsMatch = true;\r\n return;\r\n }\r\n else{\r\n const passwordUpdateModel = new PasswordUpdateModel(this.token, password, confirmPassword);\r\n const result = this._accountService.passwordUpdate(passwordUpdateModel);\r\n if (result != null)\r\n {\r\n this.router.navigateByUrl(RoutePaths.SIGN_IN);\r\n }\r\n }\r\n }\r\n\r\n onSwitchShowHidePassword(){\r\n this._isShowPassword = !this._isShowPassword;\r\n }\r\n\r\n onSwitchShowHidePasswordConfirmation(){\r\n this._isShowPasswordConfirm = !this._isShowPasswordConfirm;\r\n }\r\n}\r\n","import { CommonModule } from '@angular/common';\r\nimport { BrowserModule } from '@angular/platform-browser';\r\nimport { NgModule } from '@angular/core';\r\nimport { RouterModule } from '@angular/router';\r\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\r\n\r\nimport { PasswordUpdateComponent } from './password-update.component';\r\nimport { RoutePaths } from '../common';\r\n\r\n@NgModule({\r\n declarations: [\r\n PasswordUpdateComponent\r\n ],\r\n imports: [\r\n BrowserModule,\r\n CommonModule,\r\n FormsModule,\r\n ReactiveFormsModule,\r\n RouterModule.forChild([\r\n { path: RoutePaths.PASSWORD_UPDATE, component: PasswordUpdateComponent },\r\n ])\r\n ]\r\n})\r\n\r\nexport class PasswordUpdateModule { }\r\n","export * from './privacy.module';\r\nexport * from './privacy.component';","import { Component, HostListener } from '@angular/core';\r\nimport PerfectScrollbar from 'perfect-scrollbar';\r\n@Component({\r\n selector: 'greensleeves-privacy',\r\n templateUrl: './privacy.component.html'\r\n})\r\n\r\nexport class PrivacyComponent {\r\n private static readonly classForScroll = '.privacy-content';\r\n private perfectScrollbarMain: PerfectScrollbar;\r\n\r\n\r\n ngOnInit() {\r\n const container = document.querySelector(PrivacyComponent.classForScroll) as HTMLElement;\r\n this.reInitMainScrollBar(container);\r\n }\r\n ngAFterViewInit() {\r\n const container = document.querySelector(PrivacyComponent.classForScroll) as HTMLElement;\r\n this.reInitMainScrollBar(container);\r\n }\r\n\r\n @HostListener('window: resize', ['$event.target'])\r\n onResize() {\r\n const container = document.querySelector(PrivacyComponent.classForScroll) as HTMLElement;\r\n this.reInitMainScrollBar(container);\r\n }\r\n\r\n private reInitMainScrollBar(element: HTMLElement, timeout?: number) {\r\n this.perfectScrollbarMain && this.perfectScrollbarMain.destroy();\r\n\r\n const createScrollbarFunc = () => {\r\n this.perfectScrollbarMain = new PerfectScrollbar(element, {\r\n wheelSpeed: 2,\r\n wheelPropagation: true,\r\n minScrollbarLength: 20\r\n });\r\n };\r\n\r\n if (timeout) {\r\n setTimeout(() => {\r\n createScrollbarFunc();\r\n }, timeout);\r\n } else {\r\n createScrollbarFunc();\r\n }\r\n }\r\n}\r\n","import { CommonModule } from '@angular/common';\r\nimport { BrowserModule } from '@angular/platform-browser';\r\nimport { NgModule } from '@angular/core';\r\nimport { RouterModule } from '@angular/router';\r\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\r\n\r\nimport { RoutePaths } from '../common';\r\nimport { PrivacyComponent } from './privacy.component';\r\n\r\n@NgModule({\r\n declarations: [\r\n PrivacyComponent\r\n ],\r\n imports: [\r\n BrowserModule,\r\n CommonModule,\r\n FormsModule,\r\n ReactiveFormsModule,\r\n RouterModule.forChild([\r\n { path: RoutePaths.PRIVACY, component: PrivacyComponent },\r\n ])]\r\n})\r\n\r\nexport class PrivacyModule { }","export * from './sign-in.module';\r\n","import { FormBuilder, FormGroup, Validators } from '@angular/forms';\r\nimport { Component, OnInit } from '@angular/core';\r\n\r\nimport { AuthorizeService } from '../common';\r\nimport { ErrorModel, LoginViewModel, ErrorCodeEnum } from '../common';\r\nimport { emailValidator } from '../common/validators';\r\nimport { RoutePaths } from '../common';\r\n\r\n@Component({\r\n selector: 'greensleeves-sign-in',\r\n templateUrl: './sign-in.component.html'\r\n})\r\n\r\nexport class SignInComponent implements OnInit {\r\n _submitted = false;\r\n _invalidEmailOrPassword = false;\r\n _permissionError = false;\r\n _userLockedError = false;\r\n _isUserEmailFieldActivated = false;\r\n _isUserPasswordFieldActivated = false;\r\n\r\n _showPassword: boolean;\r\n _loginForm: FormGroup;\r\n _privacyLink = RoutePaths.PRIVACY;\r\n\r\n constructor(\r\n private _formBuilder: FormBuilder,\r\n private _authService: AuthorizeService\r\n ) {\r\n this._authService.checkIfAuthorizedAndNavigate();\r\n }\r\n\r\n ngOnInit() {\r\n this._loginForm = this._formBuilder.group({\r\n userEmail: [\r\n '',\r\n Validators.compose([\r\n Validators.required,\r\n emailValidator({ message: \"Incorrect Email format!\", maxDomainLength: -1, maxNameLength: -1 }),\r\n Validators.minLength(3),\r\n Validators.maxLength(50)\r\n ])\r\n ],\r\n password: [\r\n '',\r\n Validators.compose([\r\n Validators.required,\r\n Validators.minLength(6),\r\n Validators.maxLength(50)\r\n ])\r\n ]\r\n });\r\n\r\n this._loginForm.valueChanges.subscribe(() => this._invalidEmailOrPassword = false);\r\n this._loginForm.valueChanges.subscribe(() => this._permissionError = false);\r\n this._loginForm.valueChanges.subscribe(() => this._userLockedError = false);\r\n }\r\n\r\n get f() { return this._loginForm.controls; }\r\n\r\n onSubmit() {\r\n this._submitted = true;\r\n\r\n const userEmail = this.f.userEmail.value.trim();\r\n const password = this.f.password.value.trim();\r\n\r\n if (this._loginForm.invalid && (!this._invalidEmailOrPassword || !this._permissionError)) {\r\n return;\r\n }\r\n this._invalidEmailOrPassword = false;\r\n this._permissionError = false;\r\n\r\n this._authService.login(userEmail, password)\r\n .then((response: LoginViewModel) => {\r\n if (response instanceof ErrorModel) {\r\n if (response.code === ErrorCodeEnum.InvalidUserEmailOrPassword) {\r\n this._invalidEmailOrPassword = true;\r\n } else if (response.code === ErrorCodeEnum.PermissionError) {\r\n this._permissionError = true;\r\n } else if (response.code === ErrorCodeEnum.UserIsLocked) {\r\n this._userLockedError = true;\r\n }\r\n } else if (response) {\r\n this.resetForm();\r\n }\r\n });\r\n }\r\n\r\n onShowHidePassword() {\r\n this._showPassword = !this._showPassword;\r\n }\r\n\r\n private resetForm() {\r\n this._submitted = false;\r\n this._loginForm.reset();\r\n this._loginForm.markAsUntouched();\r\n Object.keys(this._loginForm.controls).forEach((name) => {\r\n const control = this._loginForm.controls[name];\r\n control.setErrors(null);\r\n });\r\n }\r\n}\r\n","import { CommonModule } from '@angular/common';\r\nimport { BrowserModule } from '@angular/platform-browser';\r\nimport { NgModule } from '@angular/core';\r\nimport { RouterModule } from '@angular/router';\r\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\r\n\r\nimport { SignInComponent } from './sign-in.component';\r\nimport { RoutePaths } from '../common';\r\n\r\n@NgModule({\r\n declarations: [\r\n SignInComponent\r\n ],\r\n imports: [\r\n BrowserModule,\r\n CommonModule,\r\n FormsModule,\r\n ReactiveFormsModule,\r\n RouterModule.forChild([\r\n { path: RoutePaths.SIGN_IN, component: SignInComponent },\r\n ])]\r\n})\r\n\r\nexport class SignInModule { }","// This file can be replaced during build by using the `fileReplacements` array.\r\n// `ng build ---prod` replaces `environment.ts` with `environment.prod.ts`.\r\n// The list of file replacements can be found in `angular.json`.\r\n\r\nexport const environment = {\r\n production: false\r\n};\r\n\r\n/*\r\n * In development mode, to ignore zone related error stack frames such as\r\n * `zone.run`, `zoneDelegate.invokeTask` for easier debugging, you can\r\n * import the following file, but please comment it out in production mode\r\n * because it will have performance impact when throw error\r\n */\r\n// import 'zone.js/dist/zone-error'; // Included with Angular CLI.\r\n","module.exports = __webpack_public_path__ + \"add-new-Vendor-button.png\";","module.exports = __webpack_public_path__ + \"add-new-company-admin-button.png\";","module.exports = __webpack_public_path__ + \"add-new-company-admin-popup.png\";","module.exports = __webpack_public_path__ + \"add-new-company-user-button.png\";","module.exports = __webpack_public_path__ + \"add-new-company-user-popup.png\";","module.exports = __webpack_public_path__ + \"add-new-vendor-popup.png\";","module.exports = __webpack_public_path__ + \"btx-historical-date-range-setup.png\";","module.exports = __webpack_public_path__ + \"btx-historical-equipment-setup.png\";","module.exports = __webpack_public_path__ + \"btx-historical-export-button.png\";","module.exports = __webpack_public_path__ + \"btx-historical-generate-report-button.png\";","module.exports = __webpack_public_path__ + \"btx-historical-plot.png\";","module.exports = __webpack_public_path__ + \"btx-live-data-equipment-alerts.png\";","module.exports = __webpack_public_path__ + \"btx-live-data-equipment-export-button.png\";","module.exports = __webpack_public_path__ + \"btx-live-data-equipment-sensors-table.png\";","module.exports = __webpack_public_path__ + \"btx-live-data-equipment-view-button.png\";","module.exports = __webpack_public_path__ + \"btx-live-data-equipment-view.png\";","module.exports = __webpack_public_path__ + \"btx-live-data-export-popup-equipments-tree.png\";","module.exports = __webpack_public_path__ + \"btx-live-data-filter.png\";","module.exports = __webpack_public_path__ + \"btx-live-data-locations-view.png\";","module.exports = __webpack_public_path__ + \"btx-live-data-search-control.png\";","module.exports = __webpack_public_path__ + \"btx-live-data-search-enter.png\";","module.exports = __webpack_public_path__ + \"btx-live-equipment-dropdown.png\";","module.exports = __webpack_public_path__ + \"btx-live-equipment-schema.png\";","module.exports = __webpack_public_path__ + \"btx-notification-active-alert-info-popup.png\";","module.exports = __webpack_public_path__ + \"btx-notification-active-button.png\";","module.exports = __webpack_public_path__ + \"btx-notification-active-info-button.png\";","module.exports = __webpack_public_path__ + \"btx-notification-date-setup.png\";","module.exports = __webpack_public_path__ + \"btx-notification-export-alert-type.png\";","module.exports = __webpack_public_path__ + \"btx-notification-export-button.png\";","module.exports = __webpack_public_path__ + \"btx-notification-export-date.png\";","module.exports = __webpack_public_path__ + \"btx-notification-export-equipment.png\";","module.exports = __webpack_public_path__ + \"btx-notification-filters.png\";","module.exports = __webpack_public_path__ + \"btx-notification-history-alerts.png\";","module.exports = __webpack_public_path__ + \"email-service-add-button.png\";","module.exports = __webpack_public_path__ + \"email-service-alert-types.png\";","module.exports = __webpack_public_path__ + \"email-service-enter-emails.png\";","module.exports = __webpack_public_path__ + \"email-service-overview-expand.png\";","module.exports = __webpack_public_path__ + \"email-service-overview.png\";","module.exports = __webpack_public_path__ + \"email-service-schedule.png\";","module.exports = __webpack_public_path__ + \"itx-live-data-export-button-admin.png\";","module.exports = __webpack_public_path__ + \"itx-live-data-export-button-user.png\";","module.exports = __webpack_public_path__ + \"itx-live-data-export-popup-admin.png\";","module.exports = __webpack_public_path__ + \"itx-live-data-export-popup-user.png\";","module.exports = __webpack_public_path__ + \"itx-live-data-filter-admin.png\";","module.exports = __webpack_public_path__ + \"itx-live-data-filter-user.png\";","module.exports = __webpack_public_path__ + \"itx-live-data-profile-button-admin.png\";","module.exports = __webpack_public_path__ + \"itx-live-data-profile-button-user.png\";","module.exports = __webpack_public_path__ + \"itx-live-data-profile-popup-admin.png\";","module.exports = __webpack_public_path__ + \"itx-live-data-profile-popup-user.png\";","module.exports = __webpack_public_path__ + \"itx-live-data-radar-button-admin.png\";","module.exports = __webpack_public_path__ + \"itx-live-data-radar-button-user.png\";","module.exports = __webpack_public_path__ + \"itx-live-data-radar-popup-admin.png\";","module.exports = __webpack_public_path__ + \"itx-live-data-radar-popup-user.png\";","module.exports = __webpack_public_path__ + \"itx-live-data-search-admin.png\";","module.exports = __webpack_public_path__ + \"itx-live-data-search-user.png\";","module.exports = __webpack_public_path__ + \"itx-live-data-sort-admin.png\";","module.exports = __webpack_public_path__ + \"itx-live-data-sort-user.png\";","module.exports = __webpack_public_path__ + \"itx-live-data-storage-edit-button.png\";","module.exports = __webpack_public_path__ + \"itx-live-data-storage-edit-popup.png\";","module.exports = __webpack_public_path__ + \"itx-live-data-storage-view-admin.png\";","module.exports = __webpack_public_path__ + \"itx-live-data-storage-view-user.png\";","module.exports = __webpack_public_path__ + \"itx-notification-active-alert-button.png\";","module.exports = __webpack_public_path__ + \"itx-notification-active-info-button.png\";","module.exports = __webpack_public_path__ + \"itx-notification-active-info-radar.png\";","module.exports = __webpack_public_path__ + \"itx-notification-date-setup.png\";","module.exports = __webpack_public_path__ + \"itx-notification-export-alert-type.png\";","module.exports = __webpack_public_path__ + \"itx-notification-export-bins.png\";","module.exports = __webpack_public_path__ + \"itx-notification-export-button.png\";","module.exports = __webpack_public_path__ + \"itx-notification-export-date.png\";","module.exports = __webpack_public_path__ + \"itx-notification-filters.png\";","module.exports = __webpack_public_path__ + \"itx-notification-historical-alert-view.png\";","module.exports = __webpack_public_path__ + \"itx-report-date-setup.png\";","module.exports = __webpack_public_path__ + \"itx-report-export-button.png\";","module.exports = __webpack_public_path__ + \"itx-report-export-popup.png\";","module.exports = __webpack_public_path__ + \"itx-report-generate-button.png\";","module.exports = __webpack_public_path__ + \"itx-report-location-setup.png\";","module.exports = __webpack_public_path__ + \"itx-report-plot.png\";","module.exports = __webpack_public_path__ + \"ktx-current-data-bin-details-bin-dropdown.png\";","module.exports = __webpack_public_path__ + \"ktx-current-data-bin-details-measure.png\";","module.exports = __webpack_public_path__ + \"ktx-current-data-bin-details-read-button.png\";","module.exports = __webpack_public_path__ + \"ktx-current-data-bin-details-temperature-legend.png\";","module.exports = __webpack_public_path__ + \"ktx-current-data-bin-details-unit-button.png\";","module.exports = __webpack_public_path__ + \"ktx-current-data-bin-export-button.png\";","module.exports = __webpack_public_path__ + \"ktx-current-data-export-popup-bin-tree-admin.png\";","module.exports = __webpack_public_path__ + \"ktx-current-data-export-popup-bin-tree-user.png\";","module.exports = __webpack_public_path__ + \"ktx-current-data-export-popup-download-button-admin.png\";","module.exports = __webpack_public_path__ + \"ktx-current-data-export-popup-download-button-user.png\";","module.exports = __webpack_public_path__ + \"ktx-current-data-location-dropdown-admin.png\";","module.exports = __webpack_public_path__ + \"ktx-current-data-location-dropdown-user.png\";","module.exports = __webpack_public_path__ + \"ktx-current-data-location-export-button-admin.png\";","module.exports = __webpack_public_path__ + \"ktx-current-data-location-export-button-user.png\";","module.exports = __webpack_public_path__ + \"ktx-current-data-location-select-menu-admin.png\";","module.exports = __webpack_public_path__ + \"ktx-current-data-location-select-menu-user.png\";","module.exports = __webpack_public_path__ + \"ktx-current-data-location-select-schema-admin.png\";","module.exports = __webpack_public_path__ + \"ktx-current-data-location-select-schema-user.png\";","module.exports = __webpack_public_path__ + \"ktx-current-data-scedule-button.png\";","module.exports = __webpack_public_path__ + \"ktx-current-data-scedule-popup.png\";","module.exports = __webpack_public_path__ + \"ktx-current-data-temperature-button.png\";","module.exports = __webpack_public_path__ + \"ktx-current-data-temperature-popup.png\";","module.exports = __webpack_public_path__ + \"ktx-current-data-view-all-cables-button-admin.png\";","module.exports = __webpack_public_path__ + \"ktx-current-data-view-all-cables-button-user.png\";","module.exports = __webpack_public_path__ + \"ktx-current-data-view-all-cables-page.png\";","module.exports = __webpack_public_path__ + \"ktx-historical-data-date-dropdown.png\";","module.exports = __webpack_public_path__ + \"ktx-historical-data-export-button.png\";","module.exports = __webpack_public_path__ + \"ktx-historical-data-location-tree.png\";","module.exports = __webpack_public_path__ + \"ktx-historical-data-specific-date-and-measuring.png\";","module.exports = __webpack_public_path__ + \"ktx-notification-active-button.png\";","module.exports = __webpack_public_path__ + \"ktx-notification-active-info-bin-details.png\";","module.exports = __webpack_public_path__ + \"ktx-notification-active-info-button.png\";","module.exports = __webpack_public_path__ + \"ktx-notification-date-setup.png\";","module.exports = __webpack_public_path__ + \"ktx-notification-export-alert-type.png\";","module.exports = __webpack_public_path__ + \"ktx-notification-export-bins.png\";","module.exports = __webpack_public_path__ + \"ktx-notification-export-button.png\";","module.exports = __webpack_public_path__ + \"ktx-notification-export-date.png\";","module.exports = __webpack_public_path__ + \"ktx-notification-filters.png\";","module.exports = __webpack_public_path__ + \"ktx-notification-history-alerts.png\";","module.exports = __webpack_public_path__ + \"location-management.png\";","import { enableProdMode } from '@angular/core';\r\nimport { platformBrowserDynamic } from '@angular/platform-browser-dynamic';\r\n\r\nimport { AppModule } from './app/app.module';\r\nimport { environment } from './environments/environment';\r\n\r\nexport function getBaseUrl() {\r\n return document.getElementsByTagName('base')[0].href;\r\n}\r\n\r\nconst providers = [\r\n { provide: 'BASE_URL', useFactory: getBaseUrl, deps: [] }\r\n];\r\n\r\nif (environment.production) {\r\n enableProdMode();\r\n}\r\n\r\nplatformBrowserDynamic(providers).bootstrapModule(AppModule)\r\n .catch(err => console.log(err));\r\n"],"sourceRoot":"webpack:///"}